Syndiquer le contenu
Mis à jour : il y a 18 heures 52 min

Cinq ans de projets libres : bilan et retour d'expérience sur la contribution

8 février, 2016 - 11:50

Voilà 5 ans que je produis du logiciel libre. J'ai pris l'habitude de publier chaque année mon retour d'expérience sur ce sujet. J'ai parlé de mes premiers pas, de mes doutes, de ce que j'ai appris sur le code, des présentations publiques, de la communauté et enfin de l'impact du logiciel libre sur l'entreprise. C'est déjà un bon tour de la question.

Sommaire

Voilà 5 ans que je produis du logiciel libre. J'ai pris l'habitude de publier chaque année mon retour d'expérience sur ce sujet. J'ai parlé de mes premiers pas, de mes doutes, de ce que j'ai appris sur le code, des présentations publiques, de la communauté et enfin de l'impact du logiciel libre sur l'entreprise. C'est déjà un bon tour de la question. Alors qu'est ce qui ferait un bon sujet pour cette année ? Et bien je vais simplement vous parler de la contribution. C'est l'essence du projet libre, je ne pouvais passer à côté. À travers cet article, je vais donc vous raconter ce que j'ai ressenti en étant des deux côtés de la barrière. Mais, avant de rentrer plus dans les détails, je vous donne le contexte avec un résumé de mes aventures de l'année passée !

Ce que j'ai fait

J'ai encore beaucoup codé et principalement en Coffeescript pour le navigateur et le serveur (Node.js). Je voulais développer mieux et essayer d'autres langages mais je n'y suis pas arrivé. J'ai beaucoup travaillé dans l'urgence et n'ai pas testé de nouveaux outils.

J'ai surtout focalisé mes efforts sur Cozy. En effet, le projet a pris de l'ampleur. La communauté s'est beaucoup développée. J'ai aussi plus de collègues. Autre fait notable, maintenant je travaille non seulement avec des gens très compétents mais aussi avec des personnalités du milieu ! Parmi eux nous trouvons Tristan Nitot qui a notamment fondé Mozilla Europe, et Bruno Michel qui, entre autres choses, a refait et maintient LinuxFr.org. J'ai donc évolué dans un environnement très stimulant et instructif.

Mais surtout cette année, chez Cozy, nous avons eu à gérer beaucoup de contributions tant internes (des collègues) qu'externes. D'un côté l'équipe Cozy s'est affirmée et a grandi. De l'autre, de nombreuses personnes sont venues contribuer. L'impact n'est donc pas négligeable… Car faire les bonnes choses pour que les gens travaillent bien en équipe est difficile. Mais bien intégrer des contributions diverses et aléatoires l'est encore plus (heureusement que je n'étais pas seul pour y faire face). Malgré ça j'ai quand même pu contribuer à droite et à gauche. Dans la suite, je vais donc vous faire part de comment j'ai vécu l'expérience en tant que contributeur et intégrateur de contributions.

Contribuer Faire un rapport de bug

C'est l'action de transmettre la description d'un bug que l'on a rencontré aux auteurs du logiciel. C'est un acte qui parait anodin mais qui requiert d'être bien fait pour être productif. En effet, si le message rédigé n'est pas compréhensible, il n'est pas traitable. Rédiger un rapport de bug demande de la rigueur sur la rédaction. Cela demande aussi de bien décrire le contexte dans lequel le bug se produit.
J'en ai peu rédigé mais j'étais, à chaque fois, content de le faire. Par contre, j'ai parfois été un peu déçu par les réponses reçues. En effet, les réactions des développeurs sont diverses : dans certains cas, les demandes sont ignorées ou fermées un peu brutalement (les développeurs ont vite fait de mettre ça sur le dos d'une dépendance). Heureusement elles peuvent être bien reçues et traitées. On est alors remercié, ce qui est plutôt sympa.

Exemple : Voici un rapport de bug que j'ai rédigé. L'interaction est intéressante. On me demande de rédiger un test en échec lié à mon bug. Un autre contributeur vient corriger le bug ensuite.

Corriger une documentation

C'est l'action d'ajouter un élément manquant ou de corriger une faute d'orthographe dans une documentation. Encore une fois, cela demande de bien rédiger mais au final cela ne prend pas trop de temps. Ce genre de corrections est toujours bien apprécié et accepté. C'est vraiment un bon moyen de commencer à contribuer à un projet.

Exemple : Là je corrige une documentation. Cela intervient après une discussion pour en savoir plus sur l'état du projet. Le mainteneur intègre vite la modification et me remercie.

Faire une correction de bug

Corriger un bug ne requiert pas de comprendre toute l'architecture de l'application. Ce qui est consommateur de temps c'est de s'assurer que les tests automatiques du projet fonctionnent toujours et d'en ajouter s'il en manque. Enfin, il faut bien commenter sa modification. Généralement cela se passe bien.
Attention, assurez-vous aussi que personne ne travaille déjà sur ce bug avant. Pour cela vous pouvez en discuter sur le ticket concerné.

Je n'ai malheureusement pas retrouvé d'exemple à ce sujet.

Ajouter une fonctionnalité

Je ne me suis lancé là-dedans qu'une fois et, malheureusement, l'expérience fut assez mauvaise. Ayant beaucoup utilisé le framework Express JS pour Node.js, je me suis dit qu'il serait intéressant d'y contribuer. J'ai donc choisi une demande d'amélioration simple de leur côté. Cela m'a demandé beaucoup de boulot. J'ai d'abord dû bien comprendre la demande et me documenter sur la fonctionnalité demandée (permettre au framework d'alimenter un traceur à des fins de debug).
J'ai posé de nombreuses questions pour être sûr que je n'étais pas à côté de la plaque. Ensuite j'ai dû comprendre une partie du code du framework. Enfin j'ai pu développer la fonctionnalité demandée. Au début j'ai eu du feedback intéressant du mainteneur principal sur ce que j'avais réalisé. Mais ensuite d'autres contributeurs sont venus donner leur avis. Pertinents mais un peu perfectionnistes à mon goût. J'ai quand même joué le jeu et ai subi plusieurs allers et retours. Finalement mon code n'a jamais été fusionné.
Conclusion, ajouter une fonctionnalité importante n'est pas toujours bien reçu. Il ne faut pas s'attendre forcément à un retour positif.

Exemple : Pour le projet Express, mon ajout aboutira à une discussion de 49 commentaires sans fusion au final. À l'inverse voici une modification bien reçue par l'auteur de Kresus, une application de gestion bancaire. Cette fois l'auteur est très content !

Faire une présentation sur une techno pas à soi.

J'ai fait deux présentations concernant la base de données dans le navigateur PouchDB. Les auteurs étaient très contents. Je me suis senti utile : c'était motivant pour eux et ça faisait découvrir une belle techno à plein de gens.

Exemple : Voilà la vidéo de ma présentation aux Human talks sur PouchDB. Les auteurs ont aussi manifesté leur joie sur les réseaux sociaux suite à ma contribution sur cette présentation faite à DotJS.

Faire un don

Des fois le moyen le plus simple d'aider est de faire un don. Cela peut permettre à un groupe ou organisation d'améliorer ses conditions de travail ou les services qu'il propose. Ainsi j'ai aidé l'April et le projet Salut à Toi. J'ai encore vu des gens contents !

Bénévolat

J'ai fait un peu de bénévolat au FOSDEM. Cela consistait à réaliser des actions simples comme m'occuper du vestiaire. C'est une contribution qui a permis de rendre l'événement un peu mieux. En plus, c'est à la portée de tout le monde. Pareil que pour le talk, le niveau de satisfaction était élevé ! C'est le genre de contributions auxquelles on ne pense pas toujours mais bien utile. Les gens de l'événement m'ont chaleureusement remercié et j'ai gagné du karma et un tee-shirt FOSDEM Volunteer.

.

C'est fini pour la partie contributeur. Passons maintenant à la partie recevoir une contribution. Mais avant ça, je voulais décerner une mention spéciale au projet PouchDB. L'accueil des auteurs et leur rigueur m'ont bien motivé !

Recevoir une contribution Recevoir une traduction

La traduction est une belle contribution car elle permet à des gens non techniques de participer. C'est très stimulant d'en recevoir une. Bien la gérer par contre n'est pas évident. Car lorsque les messages de l'application bougent, les traductions sont perdues. De plus les gens non techniques ne sont pas familiers des outils de gestion de version. Il faut donc souvent se tourner vers des outils en ligne dédiés à la traduction collaborative.

Ce que je fais : je remercie la personne et la renvoie vers Transifex, la plateforme que nous utilisons chez Cozy. Utiliser un outil dédié est beaucoup plus pratique que demander aux gens d'utiliser Git et Github.

Recevoir un rapport de bug

Une autre contribution à la portée de tous… Enfin de ceux familiers avec les outils de gestion de tickets ! C'est très satisfaisant d'en recevoir une car elle vous démontre que d'autres personnes se servent ou veulent se servir de votre application. Toutefois le rapport de bug se doit d'être bien rédigé pour ne pas faire perdre trop de temps en aller et retours. Recevoir beaucoup de rapports de bugs peut s'avérer oppressant.

Ce que je fais : je remercie la personne. Ensuite, je demande des détails si nécessaire. Lorsque le travail est terminé et livré, je vérifie avec la personne que le bug est bien résolu. Si c'est ok ou si je n'ai pas de nouvelles dans les semaines qui suivent je ferme le bug.

Exemple: Un rapport de bug simple et bien traité (remerciements et confirmation inclus).

Recevoir une demande d'amélioration, un feedback

De même que précédemment, c'est très satisfaisant et requiert au contributeur de maitriser un outil de gestion de tickets. Toutefois ces demandes sont généralement difficiles à prendre en compte. La liste des bugs et des idées est souvent déjà suffisante. Là où ça devient très parlant, c'est quand la demande se répète, on comprend donc qu'il faut faire quelque chose.

Ce que je fais : je remercie la personne et laisse le ticket ouvert jusqu'à implémentation de la fonctionnalité.
Plus récemment j'ai demandé aux contributeurs de plussoyer une demande si elle leur plait. C'est un bon moyen d'évaluer la popularité de celle-ci.

Exemple : Voilà une simple demande d'amélioration que j'ai traitée pour la lib request-json. Par contre des fois la demande est automatiquement fermée par Github suite à l'intégration du correctif, ce qui n'est pas très sympa pour le contributeur.

Recevoir une correction de bug

C'est une très bonne contribution à recevoir. Par contre, si le correctif n'est pas parfait, c'est délicat de demander d'améliorer des modifications (ajout de commentaires ou de tests par exemple). Heureusement, les contributeurs sont assez contents de bien faire le travail, donc on peut être exigeant. Une fois intégré, c'est une petite victoire. Le bug a été corrigé sans votre intervention et la communauté du logiciel se renforce !

Ce que je fais : Suite aux remerciements, je fais une revue du correctif et fusionne les changements si tout est ok. Je rajoute le nom du contributeur à la liste des contributeurs (quand j'y pense).

Exemple : Ici je remercie le contributeur et intègre ses changements. Il apparait ensuite dans liste des contributeurs.
Certains associent systématiquement une modification à un ticket. Même si je ne le fais pas, il faut bien admettre que c'est une bonne pratique.

Recevoir une correction de documentation

Très agréable aussi, ces corrections se valident très rapidement et rendent le projet plus crédible.

Ce que je fais : Je vérifie, je remercie, j'intègre des modifications et rajoute à la liste des contributeurs.

Exemple : Ici j'intègre des corrections d'anglais sur la doc de Cozy. Je montre ma joie et j'intègre.

Recevoir une fonctionnalité

Cette contribution est plus délicate. En effet d'un côté c'est très plaisant de la recevoir. De l'autre l'implémentation n'est pas toujours satisfaisante. En effet, pour le contributeur c'est difficile de coder dans le style du ou des mainteneurs principaux et de bien faire l'implémentation. Par contre si c'est bien fait, ce n'est que du bonheur !

Ce que je fais : Ma réaction est très variable. Ça n'arrive pas si souvent et c'est vraiment du cas par cas. Si j'ai une recommandation, c'est de bien expliquer dans un ticket avant de coder ce que vous comptez faire.
Pour les contributions mal fichues, je demande au contributeur de corriger. Pour les détails, je les prends à ma charge pour ne pas le décourager. Intégrer ce genre de modifications prend du temps dans tous les cas.

Exemple : Voici un ajout de fonctionnalité qui a demandé du boulot aux deux parties. Le code ne nous convenait pas tant dans l'architecture que dans le style. Nous avons fait la revue de code pour apprendre le style attendu. Ensuite nous avons aidé le contributeur à revoir son architecture pour qu'elle nous satisfasse.

Recevoir beaucoup de code

Cela n'arrive pas souvent mais quand c'est le cas, il n'y a pas à dire, on est très content ! Malheureusement, parfois ça devient difficile. Car intégrer toutes les modifications impose un certain rythme qui n'est pas facile à tenir.

Ce que je fais : ce n'est arrivé qu'une fois et j'ai fini par refuser les modifications qui m'étaient envoyées. Au début je faisais de mon mieux pour tout intégrer et faire en sorte que ça respecte la philosophie du projet. Mais je n'ai pas pu tenir le rythme. J'ai fini par fermer une demande de modifications. Le code n'était pas commenté, les commits étaient peu clairs et je n'avais plus le temps de remettre le tout au propre. Le contributeur s'est vexé et a arrêté de faire des modifications.

Exemple : Ce cas m'est arrivé pour le projet expérimental Cozy Light. Après de nombreux échanges, j'ai refusé cette modification. Je dois avouer que je ne savais pas du tout comment gérer la situation. Et l'effet s'est bien ressenti. Après ça le contributeur s'est vexé et a arrêté de contribuer.

Voir une app se développer sur la plateforme

Celle-ci est le genre de contribution qui n'existe pas pour tous les projets. Au mieux, les projets proposent au contributeur de faire des greffons. Mais le projet Cozy permet de réaliser des applications complètes. Pour les plateformes, c'est un peu la contribution ultime. En effet on voit un autre projet se développer au dessus d'un autre. Ensuite, le nouveau projet se constitue à son tour sa propre communauté !

Exemple : L'application Kresus est partie d'un fork d'une app existante. Un an après, voici le sujet Kresus sur le forum de Cozy. L'auteur y annonce ses nouveautés. Le sujet engendre une discussion de près de 200 messages. Tout le monde est content !

Voir un contributeur en aider un autre

Là on voit la communauté du projet qu'on a initié devenir autonome. C'est un peu l'extase pour le mainteneur !

Exemple : un contributeur se pose une question sur le processus d'installation. Un autre vient lui fournir une explication.

Recevoir des encouragements

Cela arrive par courriel, via le forum ou via IRC. Encore une fois c'est génial de recevoir ce type de message. Ça coûte pas grand chose, donc ne vous retenez pas si vous aimez bien un projet ! J'en ai encore reçu un hier. C'est très encourageant.

Conclusion

Et voilà, le bilan se termine ici. La contribution est le moment le plus exaltant du projet libre. Les esprits se connectent pour réaliser un travail collaboratif. La magie se crée. Quand j'ai commencé à écrire du code libre, ce qui m'attirait le plus était de faire les choses enfin proprement et à ma manière. Aujourd'hui, ce qui me motive le plus c'est de voir le projet vivre sa vie et d'observer les interactions des contributeurs.

L'acte de contribuer permet de faire avancer significativement les projets que vous aimez. Les mainteneurs gagnent du temps, sont aiguillés dans la bonne direction et sont plus motivés. C'est aussi l'occasion pour vous de progresser techniquement et sur le plan rédactionnel. Bref, c'est une bonne source de points de karma à portée de main. N'hésitez pas à en abuser !

Ce bilan est aussi l'occasion de clore un premier cycle exploratoire du monde du logiciel libre. J'ai couvert les thèmes principaux que sont la mise en place d'un projet, son évangélisation, le rapport à la communauté, comment il s'intègre dans une entreprise et enfin comment se vit une contribution.
Pour les cinq prochaines années, rien est décidé mais j'ai déjà quelques idées. En dehors de continuer à travailler sur Cozy et Newebe, je vais essayer de découvrir d'autres langages (Go et Lua probablement). Et ce en contribuant plutôt qu'en montant un nouveau projet. Une autre chose que j'aimerais bien faire est de tester un développement écrit en Espéranto plutôt qu'en anglais (au moins dans les commentaires). Je n'en dis pas plus pour le moment, car je réserve cette histoire pour un prochain épisode !

Télécharger ce contenu au format Epub

Lire les commentaires

Travailler avec des expressions rationnelles

8 février, 2016 - 07:55

Les expressions rationnelles sont un outil d'analyse de texte par un ordinateur. Elles permettent de décrire des enchaînements de caractères d'une complexité suffisamment grande pour être réellement utiles mais suffisamment faible pour être implémentées efficacement. Elles sont d'une importance capitale pour le théoricien des langages comme pour l'UNIX power-user.

Dans cette dépêche, nous :

  • décrivons brièvement la notion abstraite d'expression rationnelle et recensons les implémentations les plus courantes sur un système Unix ;
  • présentons quelques commandes permettant de rechercher des motifs décrits par une expression rationnelle dans un texte, réécrire des fichiers automatiquement ou transformer et analyser des fichiers structurés automatiquement en utilisant des expressions rationnelles ;
  • montrons comment améliorer votre productivité avec Emacs grâce aux expressions rationnelles.

Dans cette dépêche, nous allons nous pencher sur les expressions rationnelles (souvent nommées abusivement expressions régulières suite à une traduction littérale de regular expression). Elles permettent de représenter formellement un motif de recherche, par exemple : 1 caractère alphabétique majuscule suivi de 4 caractères minuscules, puis 2 chiffres, 1 point à la fin. Les expressions rationnelles représentent un outil puissant pour qui sait les utiliser à bon escient mais nécessitent une phase d'apprentissage non négligeable. La diversité des moteurs et des syntaxes n'aide pas non plus à leur simplicité, et les confusions entre les différents outils peuvent parfois donner des résultats surprenants.

    Sommaire

    Source: original en VO XKCD, traduction en VF

    Description abstraite et implémentations principales

    Les expressions rationnelles sont souvent utilisées comme brique de l'analyse des textes, pour faire de l'analyse lexicale. Elles sont issues des théories mathématiques des langages formels.

    Le concept ayant montré sa pertinence, il faut faire face à une richesse des implémentations : POSIX, puis chaque Unix à sa version, GNU, FreeBSD, puis Perl et Emacs pour les plus répandues. Certaines apportent des extensions (sucre syntaxique +, répétitions, groupes, et backtracking).

    Wikipédia fournit divers exemples illustratifs. Pour citer quelques exemples variés ici :

    • recherche de motif avec grep pour avoir un filtre pour sélectionner des lignes, pour identifier des fichiers, pour sélectionner des logs à une certaine date ou pour rechercher dans les pages de manuel, etc.
    • avec sed, transformation de logs en format Apache en format tabulaire, transformation de la sortie de docker ps, etc.
    • dans Emacs, mettre en valeur un motif dans du code pour une revue ou pour l'édition, extraire des listes d'un fichier avec re-search, etc.
    Les expressions rationnelles Posix basiques

    Les Expressions Rationelles Posix génèrent des machines à état fini déterministe. Elle ne sont ainsi pas capables de faire des retours en arrière.

    La commande grep

    Le premier usage des expressions rationnelles pour les utilisateurs de systèmes basés sur Linux ou Unix est en général la commande grep, qui permet de trouver toutes les lignes correspondant à une expression rationnelle. La syntaxe de la commande grep est simplement :

    grep <options> <expression rationnelle> <liste de fichiers>

    Pour les exemples ci-dessous, nous ferons des recherches dans le fichier french d'une Debian stable (informations de licence), ce fichier contenant la liste des mots de la langue française à raison d'un mot par ligne

    Dans une expression rationnelle, la première règle est que chaque caractère représente lui-même, par exemple l'expression rationnelle « rationnelles » correspond à « toute ligne contenant un r, suivi d'un a, suivi d'un t, suivi d'un i, suivi d'un o, suivi d'un n, suivi d'un autre n, suivi d'un e, suivi d'un l, suivi d'un autre l, suivi d'un e, suivi d'un s » :

    Chaque caractère ne représente pas vraiment lui-même, il existe des exceptions avec des méta-caractères qui décrivent autre chose qu'eux-mêmes. Un des plus utilisés de ces méta-caractères est le point, qui signifie « un caractère quelconque », par exemple l'expression rationnelle « rationnelle. » correspond à « toute ligne contenant un r, suivi d'un a, suivi d'un t, suivi d'un i, suivi d'un o, suivi d'un n, suivi d'un autre n, suivi d'un e, suivi d'un l, suivi d'un autre l, suivi d'un e, suivi d'un caractère quelconque » :

    Le problème des métacaractères est qu'on peut vouloir chercher du texte les contenant, par exemple dans notre dictionnaire il y a des abréviations terminant par un point. Pour qu'un métacaractère ne soit pas interprété, il faut le précéder d'un « \ », par exemple « \. » représente le caractère point. On peut alors s'amuser à chercher les abréviations d'au moins six caractères, en les décrivant comme « un caractère quelconque, suivi d'un autre caractère quelconque, suivi d'un troisième caractère quelconque, suivi d'un quatrième caractère quelconque, suivi d'un cinquième caractère quelconque, suivi d'un sixième caractère quelconque, suivi d'un point » :

    On remarquera que le point lui-même est un caractère quelconque.

    Un autre métacaractère utile est le crochet, qui permet de décrire un caractère pouvant correspondre à plusieurs valeurs, par exemple une voyelle non accentuée peut être représentée par « [aeiouy] » (qu'on peut lire comme « n'importe quel caractère étant soit un a, soit un e, soit un i, soit un u, soit un y »). Par exemple si vous voulez briller en société en citant des mots comportant 6 voyelles non accentuées à la suite :

    Deux métacaractères particuliers sont utiles entre crochets :

    • le tiret situé entre deux caractères permet de définir une liste de caractères qui se suivent, par exemple « [a-f] » définit « soit un a, soit un b, soit un c, soit un d, soit un e, soit un f »
    • l'accent circonflexe situé au début permet de définir une exclusion de caractères, par exemple « [^aeiouy] définit « un quelconque caractère qui ne soit ni un a, ni un e, ni un i, ni o, ni un u, ni un y ») Ces deux métacaractères sont cumulables, par exemple « [^a-z] » définit « un quelconque caractère qui ne soit pas une lettre », ce qui peut nous permettre de trouver tous les mots qui ont à la suite deux caractères qui ne sont pas des lettres :

    On peut économiser les copier/coller lorsque l'on veut chercher plusieurs fois la même information, en utilisant le symbole « \{min,max\} » qui permet d'indiquer que l'on cherche la présence d'un caractère successivement entre min et max fois, par exemple si vous cherchez les mots contenant deux « q » séparés par 5 à 7 lettres [1] :

    Il est possible avec certaines versions de grep de spécifier un seul chiffre entre accolades :

    • si on cherche exactement X occurrences on indique : « \{x\} »
    • si on cherche de 0 à X occurrences on indique : « \{,x\} »
    • si on cherche au moins X occurrences on indique : « \{x,\} » Ainsi, on pourrait donc abréger la recherche des mots contenant 6 voyelles non accentuées ainsi :

    Si on veut répéter plusieurs caractères au lieu d'un seul, il faut encadrer la recherche avec des « \( \) », Par exemple si vous bloquez dans une grille de mots croisés sur la définition « mot contenant 7 fois à la suite une consonne suivie d'une voyelle » :

    Le contenu trouvé à partir d'une expression entre parenthèses est dit « capturé », cela signifie qu'il est gardé en mémoire et peut être réutilisé dans l'expression rationnelle. La contenu capturé est accessible en utilisant « \1 », « \2 », « \3 », etc. (en général on ne peut pas dépasser \9). Le numéro de capture est défini en comptant le nombre de parenthèses ouvrantes précédant l'expression capturée. Cela permet par exemple de lister les mots contenant un palindrome de 4 lettres :

    On peut encore affiner les recherches en utilisant les ancres, qui permettent de situer où se situe une expression rationnelle dans la ligne :

    • le dollar, lorsqu'il est situé à la fin de l'expression rationnelle, représente la fin de la ligne
    • l'accent circonflexe, lorsqu'il est situé au début de l'expression rationnelle, représente le début de la ligne

    On peut cumuler les deux ancres dans la même expression, par exemple si on veut chercher les vrais palindromes de 4 lettres :

    Pour en terminer avec les expressions rationnelles Posix basiques, il ne reste plus qu'un métacaractère à présenter, qui est l’astérisque. Ce caractère est équivalent à « {0,} ».

    Utiliser dans vi

    VimRegex détaille largement le sujet.

    Extension des expressions rationnelles

    Les extensions rationnelles basiques étant peu lisibles, la norme Posix a évolué pour intégrer les expressions rationnelles étendues, aussi appelées « ERE ».

    grep est mieux avec -E

    Les versions récentes de grep permettent d'utiliser les expressions rationnelles étendues avec l'option -E. Si vous ajoutez l'option -E à grep, vous devez modifier votre expression rationnelle ainsi :

    • \{ et \} deviennent { et }
    • \( et \) deviennent ( et )
    • tous les autres métacaractères (« . », « [ », «  ] », « - », « ^ », « $ », « * », « \1 », etc.) sont inchangés

    Outre cette suppression des « \ » superflus, les ERE apportent trois nouveaux métacaractères. Le premier est « ? » qui est un synonyme de « {0,1} », qui permet par exemple de chercher les palindromes de 4 ou 6 lettres avec une seule expression :

    On dispose aussi de « + » qui est un synonyme de {1,}

    Enfin le dernier métacaractère spécifique aux ERE est le « | » qui permet de séparer plusieurs options :

    Les classes de caractères

    Posix prévoit des classes de caractère, qui sont des notations spécifiques entre crochets. À noter que les classes de caractères sont aussi bien gérées par les expressions rationnelles basiques que étendues (il n'y a donc pas besoin d'utiliser l'option -E pour en bénéficier), mais il existe des implémentations d'expressions rationnelles basiques non compatibles Posix qui ne les acceptent pas.

    Les classes de caractères sont des mots ou abréviations en anglais désignant ce à quoi ils correspondent et encadrés par « [: :] ».

    • [:digit:] : désigne un chiffre décimal (équivalent à [0-9])
    • [:lower:] : désigne une lettre minuscule (équivalent à [a-z])
    • [:upper:] : désigne une lettre majuscule (équivalent à [A-Z])
    • [:alpha:] : désigne une lettre minuscule ou majuscule (équivalent à [A-Za-z])
    • [:alnum:] : désigne une lettre minuscule ou majuscule ou un chiffre (équivalent à [A-Za-z0-9])
    • [:xdigit:] : désigne un chiffre hexadécimal (équivalent à [a-fA-F0-9])
    • [:space:] : désigne un caractère d'espacement (espace, tabulation, retour chariot, etc.)
    • [:blank:] : désigne un espace ou une tabulation horizontale (à ne pas confondre avec [:space:])
    • [:punct:] : désigne à un crochet ou un caractère de la classe suivante : ['!"#$%&()*+,./:;<=>?@^_`{|}~-]
    • [:cntrl:] : désigne un Caractère de contrôle
    • [:print:] : désigne un caractère affichable (ainsi qu'une espace), cette classe est à peu près le contraire de [:cntrl:]
    • [:graph:]: désigne l'ensemble des caractères visibles sauf les espaces, les caractères de contrôle, etc. Équivalent à [\x21-\x7E].
    Pour aller plus loin Attention au GLOB

    Dans les exemples précédents, il était important d'utiliser de simples apostrophes pour éviter l'interprétation de caractères spéciaux par le shell.

    Outils pour tester vos expressions rationnelles

    Plusieurs outils s'offrent à vous pour tester et triturer dans tous les sens vos expressions rationnelles comme par exemple le site Regexpal qui propose notamment de la coloration syntaxique et se veut "temps réel" dans les modifications, ou regex101 permet de tester des expressions rationnelles Python, javascript ou pcre.

    Ne pas toujours utiliser les expressions rationnelles

    Les expressions rationnelles ne sont par exemple pas l'outil idéal pour analyser du XML ou de l'HTML.

    Jouer avec les expressions rationnelles

    Voir la dépêche Regexcrossword : un subtil mélange de sudoku et de mots croisés, à la sauce Regex, ainsi que la chasse au trésor du MIT en 2014, etc.

    Un peu de théorie Les automates finis

    La base théorique des expressions rationnelles se trouve dans la théorie des langages. Notamment elles permettent de décrire les langages rationnels. Elles sont fortement liées aux automates finis.

    Pour illustrer le parallèle nous allons utiliser les caractères et les quantificateurs de base :

    • a qui permet de reconnaitre la lettre a ;
    • ? qui permet de définir un groupe optionnel ;
    • * qui permet de définir un groupe se répétant zéro fois ou plus ;
    • + qui permet de définir un groupe se répétant une fois ou plus.
    Littérature

    [1] avec ça vous allez vraiment briller en société, il faudra juste trouver un moyen d'intégrer ça dans la conversation

    Télécharger ce contenu au format Epub

    Lire les commentaires

    Un système d'exploitation français pour la souveraineté numérique

    7 février, 2016 - 14:48

    C'est passé à l'Assemblée nationale française (en attendant le Sénat), au sein d'un texte comportant plusieurs volets : l'État français veut se doter d'un système d'exploitation afin d'obtenir une certaine souveraineté numérique. Le texte vise à la production d'un rapport envisageant la « possibilité créer un Commissariat à la souveraineté numérique » et précisant « les conditions de mise en place, sous l’égide de ce commissariat, d’un système d’exploitation souverain » (article 16 ter dans la version adoptée à l'Assemblée nationale).
    Si le sujet suscite des critiques, la France n'est pas le seul pays à vouloir en quelque sorte protéger sa souveraineté numérique. Il y a des précédents, tous basés sur Linux. Tour d'horizon en seconde partie.

    Des précédents en France

    Déjà l'année dernière, on avait assisté à la création d'un Institut pour la souveraineté numérique. Le Conseil national du numérique, lors d'une de ses sessions de travail, avait abordé cette thématique. Même si la tentation est forte de dire que GNU/Linux serait la solution, ce n'est pas si évident.

    L'opérateur télécom Orange avait déjà envisagé d'avoir son propre système d'exploitation en 2010 (et avait sorti sa tablette Tabbee sous GNU/Linux). Et le ministre français de l’Économie, du Redressement productif et du Numérique Arnaud Montebourg avait déjà évoqué un système d'exploitation bleu, blanc, rouge en 2014 (en se basant sur le concept de « résogiciel français » du président de Skyrock, Pierre Bellanger).

    Ajoutons qu'il existe déjà un système « souverain » CLIP, basé sur Linux, développé par l'ANSSI, depuis 2005 pour les opérateurs d'importance vitale (OIV), prévu pour des cas d'usage spécifiques et pas pour une utilisation par le grand public ou les administrations en général. Il est « en phase préliminaire de déploiement ».

    Des précédents dans d'autres pays

    D'autres pays ont déjà créé des distributions pour garantir leur indépendance. En Espagne, l'Andalousie produit GuadaLinex et l'Argentine propose Huayra (ces deux distributions sont basées sur Debian). L'article de ZDNet cite aussi la Chine, l'Inde, le Brésil et la Turquie.

    On notera que tout le monde semble avoir opté pour une base Linux. Est-ce que la souveraineté numérique peut exister en dehors de Linux ? C'est le sujet de la dissertation à laquelle vous allez participer par vos commentaires.

    Et des critiques de toute part

    Le Monde rappelle que « La secrétaire d’Etat au numérique "ne croit pas à la possibilité d’un système d’exploitation souverain, qui serait peu opérant" » et des députés de la majorité et de l'opposition l'ont qualifié d'« erreur » et de « ridicule ». Et le directeur général de l'ANSSI l'a qualifié de « non-sens » et refuser l'idée d'un système noyauté (« plein de saletés ») pour les services de renseignement.

    Les critiques sont nombreuses : travail gigantesque, coût exhorbitant, usine à gaz en préparation, lubie du « made in France », fiascos précédents dans le secteur éducatif français et du « cloud souverain », railleries multiples via Twitter.

    En tout cas le projet de loi « Économie : pour une République numérique » a permis d'évoquer largement les logiciels libres au sein de l'Hémicycle.

    Télécharger ce contenu au format Epub

    Lire les commentaires

    Firefox 44 débarque

    7 février, 2016 - 10:32

    Firefox 44 a débarqué le 26 janvier 2016 (NdA : 44, débarquer, toussa…). Nous proposons dans cette dépêche les nouveautés pour les versions de bureau et mobile, ainsi que pour les développeurs.

    NdA : nous avons toujours besoin de toute aide afin de publier régulièrement les dépêches liées aux sorties de Firefox, rendez-vous sur l’espace de rédaction collaborative de LinuxFr.org (linuxfr.org/redaction).

    Sommaire Firefox bureau

    Commençons par ce qui ne change finalement pas : depuis la version précédente, seules les extensions signées par Mozilla sont acceptées par le navigateur. Ce comportement peut toutefois être désactivé à l’aide d’un réglage du navigateur qui devait disparaître avec la présente version. La suppression de ce réglage est repoussée.

    NB : La décision de n’accepter que les extensions signées dans Firefox, pour des raisons de sécurité selon Mozilla, fait débat parmi les utilisateurs de Firefox, et ce jusque dans les rangs de la distribution GNU/Linux Fedora. Elle a été temporairement désactivée dans le paquet.

    Quelques améliorations :

    • amélioration de la page d’avertissement dans les cas d’erreurs de certificats et de connexions non certifiées ;
    • lecture des vidéos avec le codec H.264 sous GNU/Linux lorsque FFmpeg est disponible ;
    • lecture des vidéos en WebM/VP9 sur les systèmes d’exploitation qui n’intègrent pas le MP4/H.264.
    • dans la chronologie de l'inspecteur d'animation, l'icône éclair à côté des animations tourne dans la partie compositeur
    • pour les connexions HTTPS seulement, les données peuvent être compressé avec la bibliothèque Brotli. Ce format de compression est en cours de normalisation au sein de l’IETF (plus d’informations)
    • les commandes de capture d'écran permettent le choix du rapport d'aspect de pixel dans les outils développeurs
    • la gestion des fontes web sous Linux utilise désormais le même code que sur les autres plateformes ;
    • utilisation d’une signature électronique SHA-256 pour les versions destinées à Windows afin de suivre les nouvelles recommandations pour les signatures ;
    • validation plus stricte des polices web ;
    • désactivation du clavier à l'écran pour Windows 8 et Windows 8.1.
    Firefox Mobile

    Quelques améliorations :

    • Les utilisateurs peuvent maintenant choisir une page d’accueil à afficher au démarrage au lieu du panneau Top Sites ;
    • Ajout de la prise en charge des URI avec le protocole mms: ;
    • Page des comptes Firefox basée sur le web ;
    • Montrer les suggestions d’historique de recherche ;
    • Demander aux utilisateurs avant d’ouvrir une URI d’Intent dans un onglet de navigation privée ;
    • Onglets améliorés sur les téléphones ;
    • Utilisation du service d’impression Android pour la possibilité d’impression dans le cloud.
    Changements commun au bureau et Android Améliorations pour les développeurs

    Au menu :

    • Un clic droit sur un objet journalisé dans la console permet de le stocker comme une variable globale sur la page ;
    • Nouvel outil de mémoire pour inspecter le tas ;
    • API pour les Services Workers ;
    • Lecteur de JSON intégré pour voir, rechercher, copier et sauver intuitivement les données sans extensions ;
    • Sauter aux définitions de fonctions dans le débogueur avec Cmd-Clic ;
    • Extension et API de déboggage des WebSockets ;
    • La vue des règles montre désormais les styles en utilisant le texte de leur auteur, et les éditions dans la vue des règles sont désormais liées à l’éditeur de style ;
    • Obligation des signatures d’extensions.

    Outils visuels pour Animation :

    • visualiser et éditer les règles d’animations CSS keyframes directement depuis l’inspecteur ;
    • modifier visuellement les courbes cubic-bezier qui dirigent la manière dont les animations progressent à travers le temps ;
    • découvrir et inspecter les animations CSS et les transitions jouées dans la page ;
    • pour en savoir plus, rendez.vous sur http://devtoolschallenger.com/.

    Outils visuels pour les mises en forme et les styles :

    • montrer les règles dans la vue (?) pour vérifier la taille et la position et utiliser l’outil de mesure pour facilement détecter les problèmes d’espacement et d’alignement ;
    • utiliser les filtres CSS pour prévisualiser et créer des effets temps-réel comme les drop-shadows, sépia, etc. ;
    • en apprendre plus : http://devtoolschallenger.com/.
    Prochaines versions Firefox 46

    Poursuite de la mise en avant des connexions HTTPS : si vous entrez un couple identifiant/mots de passe sans passer par TLS, Firefox 46 affiche une alerte (Voir la page informative anglophone).
    (Crédit NextInpact)

    Firefox 46 acceptera les préfixes webkit (bug 1213126). On ne dira pas merci aux webmestres qui ne se préoccupent que des IPhones et nuisent à l'interopérabilité (Microsoft avec Edge a dû faire les mêmes concessions).

    Firefox 48 et suivants

    Les WebExtensions vont descendre progressivement dans Firefox, à partir de la version 45 et avec la version 48 pour objectif (vous pouvez suivre l’avancement du projet). Rappelons qu’elles sont déjà à l’honneur dans Firefox OS 2.5.

    Mozilla travaille à l’intégration de l’API Web Speech, logiquement l’approche est un peu moins centralisée que dans Chrome (voir la traduction du billet).

    WebGL 2 arrive dans Firefox Nigtly, faites chauffer vos GPU ;-)

    La navigation classique pourrait bénéficier de la même option de protection contre le traçage que celle introduite dans la version 42 au sein de la navigation privée, voir bug 1231359 et bug 1231373.

    Firefox (Bureau et Android) permettait de lancer des pseudo-applications qui s'appuient sur Firefox pour fonctionner, ce mode WebRT pourrait être retiré. Avec le retrait de Firefox OS du monde des ordiphones, c'est l'idée que le HTML pourrait servir de base à tout programme qui est moins promue chez Mozilla.

    Pendant ce temps là, chez Mozilla…

    La feuille de route de Servo a été mise à jour en ce début d’année. Il se dit par ailleurs dans les milieux autorisés que le maintien de la prise en charge de Windows XP par Firefox repousse l’intégration de morceaux de Servo dans ce dernier (processus nommé Oxidation), « vu que le support de Windows XP par Rust n’est pas complet ».

    Télécharger ce contenu au format Epub

    Lire les commentaires

    Présentation technique de Canopsis

    7 février, 2016 - 09:41

    Supervision et visualisation des données : des domaines de l'informatique qui nous permettent de surveiller, analyser une infra, des données afin de comprendre et éventuellement prédire des dysfonctionnements.

    De nombreux outils existent et excellent dans chacune de ces tâches. Les accorder ensemble afin d'unifier l'information permet ainsi de faciliter la prise de décision.

    C'est ce que l'on appelle l'hypervision.

    Canopsis se veut une solution d'hypervision (on évite l'appellation hyperviseur qui reste dans le langage courant spécifique à la virtualisation). Solution open-source sous licence AGPL3 développée par la société française Capensis, elle se veut simple d'utilisation, et suffisamment souple pour répondre à un maximum de besoin.

    Sommaire La problématique

    Dans une infra hétérogène, on dispose de nombreuses sources d'information :

    • côté supervision, on peut avoir un mélange de :
      • Nagios/Icinga
      • Centreon
      • Shinken
      • HPOV
      • Zabbix
      • SNMP
    • côté récolte de données, on peut avoir :
      • CollectD
      • Logstash
      • Munin
      • Telegraf (de la pile TICK)
    • ou encore :
      • des logs
      • des données stockées en base de données
      • un résultat de tests unitaires et fonctionnels (jMeter, Sikuli…)

    La mise en place d'un accès à l'ensemble de ces informations peut être fastidieuse, et dans la plupart des cas, l'utilisateur (l'administrateur technique et/ou fonctionnel) devra accéder à plusieurs interfaces et maîtriser plusieurs outils.

    Cela empêche d'avoir une vue d'ensemble cohérente et rend difficile l'anticipation ainsi que la prise de décision.

    Objectif : la solution

    C'est là que Canopsis intervient.

    Étape 1 : les connecteurs

    Dans un premier temps, nous devons récupérer les informations produites par cet ensemble hétérogène.

    Ainsi, pour chaque source de données, nous sommes en mesure de développer un connecteur, capable d'extraire les informations voulues, et de les transmettre à Canopsis sous la forme d'événements standardisés.

    Un certain nombre de connecteurs sont déjà disponibles sur le Gitlab.

    Le cas le plus simple est donc celui ci :

    #!/usr/bin/env python from time import time # lib qui nous permet de nous connecter au bus de données (cf étape 2) from kombu import Connection # module qui sera utilisé pour envoyer les événements from kombu.pools import producers # construction de l'événement selon le standard Canopsis event = { "timestamp": int(time()), # émetteur de l'événement "connector": "myconnector", "connector_name": "myconnector-instance0", # nature de l'événement "event_type": "check", # source de l'événement "source_type": "resource", "component": "<hostname>", "resource": "<job's name>", # données portées par l'événement "state": 0, # 0 = INFO, 1 = MINOR, 2 = MAJOR, 3 = CRITICAL "output": "<message>" } # construction de la routing_key, qui sert à identifier l'événement et à le router routing_key = "{0}.{1}.{2}.{3}.{4}".format( event['connector'], event['connector_name'], event['event_type'], event['source_type'], event['component'] ) if event['source_type'] == "resource": routing_key = "{0}.{1}".format( routing_key, event['resource'] ) # Connexion uri = 'amqp://cpsrabbit:canopsis@localhost:5672/canopsis' with Connection(uri) as conn: # Création de l'émetteur with producers[conn].acquire(block=True) as producer: # Publication producer.publish( event, serializer='json', exchange='canopsis.events', routing_key=routing_key )

    Bien évidemment, du moment qu'un connecteur envoie ses événements, il peut être développé dans n'importe quel langage, c'est le cas du connecteur Nagios qui se présente comme un Nagios Event Broker, et est donc développé en C.

    Étape 2 : le bus de données et les moteurs

    Les événements produits par les connecteurs sont transmis au bus de données de Canopsis, basé sur RabbitMQ.

    Source : http://igm.univ-mlv.fr/~dr/XPOSE2011/rabbitmq/usages.html

    Ces événements vont être consommés par des daemons que nous appelons moteurs.

    Leur but est simple :

    • traiter la donnée
    • enregistrer les informations pertinentes en base de données
    • transmettre, si nécessaire, l'événement à un ou plusieurs autres moteurs

    Nous avons, par exemple :

    • le moteur event_filter qui se charge de filtrer/modifier les événements entrants
    • le moteur context qui se charge d'enregistrer les informations sur l'entité cible de l'événement (connecteur source, composant/ressource qui a produit l'événement…)
    • le moteur perfdata qui s'occupe d'historiser les données de performance (comme remontées par Nagios ou CollectD)

    Comme pour les connecteurs, les moteurs peuvent être développés dans n'importe quel langage, bien que pour le moment nous les avons tous faits en Python.

    Étant un daemon, un moteur dispose de 2 fonctions :

    • une pour consommer les événements (dans un thread à part)
    • une pour exécuter une tâche régulièrement (recharger la configuration, envoyer des stats…)

    Ainsi que la configuration suivante :

    [engine:myengine] # chemin Python de la méthode de consommation event_processing=canopsis.myfeature.process.event_processing # chemin Python de la méthode exécutée régulièrement beat_processing=canopsis.myfeature.process.beat_processing # nom de l'exchange AMQP sur lequel écouter (par défaut: amq.direct) exchange_name=canopsis.event # RK à consommer routing_keys=nagios.#,shinken.# # intervalle entre 2 exécutions du beat_processing (en secondes) beat_interval=60 # liste des moteurs sur lesquels retransmettre l'événement reçu, possiblement modifié (par défaut: aucun) next=myengine2,myengine3

    Et donc l'implémentation se résume à :

    def event_processing(engine, event, **_): # traiter l'événement return event def beat_processing(engine, **_): # faire des choses Étape 3 : les schémas

    Toutes les données qui véhiculent dans le bus et qui sont sauvegardées en base sont munies de schémas les décrivant.

    Ces schémas servent à plusieurs choses :

    • valider que la donnée est bien formatée
    • décrire comment la donnée sera représentée
    • décrire comment la donnée sera éditée

    Ces deux derniers points permettent de générer une partie du code de l'UI (cf étape 5).

    À terme, ils serviront également à :

    • décrire comment la donnée sera utilisée
    • décrire comment la donnée pourra être transformée

    Ce qui permettra de générer une partie du code backend (cf étape 4).

    Le formalisme qui permet d'écrire un schéma est actuellement inspiré du standard JSON Schema :

    { "title": "MyData", "description": "Schéma décrivant la donnée, comment l'afficher et l'éditer" // description de la donnée "type": "object", "properties": { "color": { "type": "string", "required": true, /* comment la donnée sera affichée/éditée * le rôle 'color' : * - affichera un carré de couleur lorsqu'on l'affichera * - affichera un colorpicker lorsqu'on l'éditera */ "role": "color", // les champs suivants servent pour le formulaire "title": "Couleur de la donnée", "description": "Tooltip d'aide" } }, // les champs suivants aident à générer le formulaire d'édition "categories": [ { "title": "General", "keys": ["color"] } ] }

    L'id d'un schéma est construit de la manière suivante :

    • mydata
    • mydata.mydata2 : ici mydata2 hérite de mydata

    On obtient donc en base de données :

    { "_id": "<id du schema>", "schema": // le schéma à proprement parler } Étape 4 : gérer et servir la donnée

    Maintenant que nous avons la structure pour récupérer la donnée, et que nous sommes en mesure de la schématiser, il faut mettre en place les mécanismes permettant d'interagir avec et de la servir à l'UI.

    A. Les managers

    La gestion de la donnée est prise en charge par ce que l'on appelle les managers. Pour bien comprendre son rôle, il faut plonger un peu dans le code.

    Un configurable est un objet Python dont les propriétés sont définies par son fichier de configuration :

    from canopsis.configuration.configurable import Configurable from canopsis.configuration.configurable.decorator import conf_paths from canopsis.configuration.configurable.decorator import add_category from canopsis.configuration.model import Parameter CONF_PATH = 'myfeature/manager.conf' # {sys.prefix}/etc/{CONF_PATH} CATEGORY = 'MYFEATURE' # Définition du contenu de la catégorie CONTENT = [ Parameter('foo'), Parameter('bar', parser=int) ] # ajoute un fichier de configuration à lire par le configurable @conf_paths(CONF_PATH) # permet de spécifier la catégorie de configuration depuis laquelle on peut lire les paramètres @add_category(CATEGORY, content=CONTENT) class MyFeatureManager(Configurable): pass

    Ainsi, avec le fichier de configuration suivant :

    [MYFEATURE] foo=bar bar=42

    Ou :

    { "MYFEATURE": { "foo": "bar", "bar": 42 } }

    En effet, le configurable va tester différents drivers, actuellement on dispose de INI et JSON mais il est envisageable d'avoir un driver MongoDB ou autre

    Lorsque l'on instanciera la classe, on obtiendra :

    obj = MyFeatureManager() assert obj.foo == "bar" assert obj.bar == 42

    Et à partir de cette classe Configurable on va définir l'arbre d'héritage suivant :

    Un ConfigurableRegistry permet de spécifier, dans un paramètre de configuration, un autre Configurable à instancier :

    otherconfigurable_value = canopsis.myotherfeature.manager.MyOtherFeatureManager

    Et on y accèdera, dans l'instance, de la manière suivante :

    assert isinstance(self['otherconfigurable'], MyOtherFeatureManager)

    Le MiddlewareRegistry fait de même pour les Middleware (qui identifient un protocole ainsi qu'un type de données) :

    mymiddleware_uri = protocol-datatype-datascope://

    De même que pour le ConfigurableRegistry, on y accède de la manière suivante :

    assert self['mymiddleware'].connected()

    En général, un manager sera un MiddlewareRegistry, ce qui permettra de changer de techno utilisée, sans modifier le code :

    [MYFEATURE] mystorage_uri = mongodb-timed-mydata:// # mystorage_uri = influxdb-timed-mydata:// mymanager_value = canopsis.myotherfeature.manager.MyOtherFeatureManager # mymanager_value = canopsis.myotherfeature.manager2.MyOtherFeatureManager2

    Et ce manager sera utilisé par le moteur et le webservice.

    En reprenant l'exemple du moteur :

    from canopsis.common.utils import singleton_per_scope from canopsis.myfeature.manager import MyFeatureManager def event_processing(engine, event, manager=None, **_): if manager is None: # instancie la classe une seule fois par module manager = singleton_per_scope(MyFeatureManager) # faire des choses avec l'événement et le manager return event def beat_processing(engine, event, manager=None, **_): if manager is None: manager = singleton_per_scope(MyFeatureManager) # faire des choses avec le manager B. Les webservices

    Afin de servir la donnée à l'UI, on dispose d'une application WSGI découpée en modules, que l'on appelle webservice.

    Ces derniers se trouvent dans le paquet Python canopsis.webcore.services.

    Et grâce au code suivant (à placer dans le __init__.py), on peut avoir plusieurs paquets Python fournissant du code à cet emplacement :

    from pkgutil import extend_path __path__ = extend_path(__path__, __name__)

    Bref, un webservice s'écrit très simplement :

    # couche d'abstraction qui nous permettra de passer de Bottle à Flask from canopsis.common.ws import route from canopsis.common.utils import singleton_per_scope from canopsis.myfeature.manager import MyFeatureManager # Sera appelé par l'application WSGI pour charger les routes HTTP def exports(ws): # ici `ws` désigne donc le webserver manager = singleton_per_scope(MyFeatureManager) # ici on créé la route /foo qui accepte la méthode GET @route(ws.application.get) def foo(): return manager.foo # l'API retournera : # { # "total": 1, # "data": ["bar"], # "success": true # } # cette fois ci, on créé la route /bar/:baz @route(ws.application.get) def bar(baz): return (manager.bar == baz) Étape 5 : l'application web

    Côté backend, on dispose désormais du nécessaire pour fournir à l'UI tout ce dont elle a besoin.
    Ainsi, nous avons également travaillé la modularité de cette UI, basée sur Ember, au maximum.

    A. Les briques

    Afin de répondre à cette problématique de modularité, nous avons mis en place un système de briques, permettant de sélectionner les fonctionnalités effectivement chargées.

    Concrètement, on peut voir une brique comme étant un addon apportant plusieurs fonctionnalités telles que :

    • nouveaux éléments graphiques (composants)
    • nouveaux outils de rendus (widgets, renderers)
    • nouveaux outils d'éditions (éditors)

    Pour construire une brique, il suffit de créer un paquet NPM avec le package.json suivant :

    { "name": "<nom de la brique>", "description": "<description de la brique>", "version": "0.1.0", // il s'agit du fichier principal de la brique, il pointera vers la version de dev ou minifiée "main": "init.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1", "compile": "rm -Rf tmp/build && broccoli build tmp/build && cp tmp/build . -RT", "lint": "eslint src", "doc": "./node_modules/canopsis-ui-toolbelt/scripts/buildDoc", "minify": "node node_modules/canopsis-ui-toolbelt/scripts/minify.js" }, "repository": { "type": "git", "url": "<url du dépôt>" }, "author": "<auteur>", "license": "AGPL-3.0", "devDependencies": { "broccoli": "^0.16.9", "broccoli-funnel": "^1.0.1", "broccoli-merge-trees": "^1.0.0", "broccoli-sourcemap-concat": "^1.1.6", "broccoli-template": "^0.1.1", "broccoli-uglify-js": "^0.1.3", // outil de gestion des briques Canopsis "canopsis-ui-toolbelt": "https://git.canopsis.net/canopsis/canopsis-ui-toolbelt/repository/archive.tar.gz?ref=<branche git de canopsis-ui-toolbelt>", "jsdoc": "^3.3.0", "pre-commit": "^1.1.1" }, "pre-commit": [ "lint", "doc" ] }

    Puis, dans un dossier src on placera le code source de la brique :

    • components/mycomponent/component.js
    • components/mycomponent/template.hbs
    • renderers/renderer-myrole.hbs
    • editors/editor-myrole.hbs
    • widgets/mywidget/controller.js
    • widgets/mywidget/mywidget.hbs
    • mixins/mymixin.js

    L'outil canopsis-ui-toolbelt se charge de :

    • récupérer récursivement tout le code JS dans le dossier src
    • référencer le code JS dans le fichier init.js qui représente la brique
    • récupérer récursivement tout les templates (*.hbs) dans le dossier src
    • référencer les templates également dans le fichier init.js
    • référencer les templates dans Ember.TEMPLATES :
      • pour un composant, il est requis d'avoir le dossier components/<mycomponent>, afin que le template soit reconnu comme étant un template de composant
      • pour le reste, le nom du template dans Ember sera le nom du fichier sans extension

    NB: Le découpage n'est donc obligatoire que pour les composants, le reste peut être mis en vrac dans src.

    Une fois que l'on a créé tout cela (ou récupéré le dépôt Git), on peut finaliser la brique :

    $ npm install $ npm run compile

    Chaque fichier source contiendra au moins un Ember Initializer :

    Ember.Application.initializer({ name: 'MyModule', after: ['Dependency1', 'Dependency2'], initialize: function(container, application) { var Dependency1 = container.lookupFactory('deptype:dependency1'), Dependency2 = container.lookupFactory('deptype:dependency2'); // do stuff application.register('modtype:mymodule', /* stuff */); } });

    Cela permet ainsi de s'assurer du bon chargement de chaque module.

    Au final, pour installer une brique, il suffit de :

    • cloner le dépôt finalisé dans : /opt/canopsis/var/www/canopsis
    • lancer la commande webmodulemanager enable mybrick afin de l'activer au chargement de l'UI

    L'ensemble des briques existantes (hormis celle par défaut livrées avec Canopsis) sont disponible ici.

    B. Les composants

    Le composant, l'élément le plus basique de l'UI, sera utilisé par tout les autres éléments.
    Il s'agit simplement d'un composant Ember avec un template à fournir.

    On définira notre composant dans src/components/mycomponent/component.js :

    Ember.Application.initializer({ name: 'MyComponent', after: [], initialize: function(container, application) { var MyComponent = Ember.Component.extend({ init: function() { this._super.apply(this, arguments); // faire des choses }, actions: { // on implémente les actions, déclenchable depuis le template foo: function() { alert('bar'); } } }); application.register('component:component-mycomponent', MyComponent); } });

    Et le template dans src/components/mycomponent/template.hbs :

    <h1>My awesome component</h1> <a {{action foo}}>Launch action</a> C. Les renderers/éditeurs

    Une fois nos composants définis, on est en mesure de les utiliser dans des renderers ou des éditeurs.

    Le but de ces éléments est simple :

    • lorsqu'on demande l'affichage d'une donnée avec le composant renderer :
      • le champ role du schéma JSON est également lu
      • si un renderer du même nom est trouvé, il est utilisé dans le template
      • sinon, on affiche la donnée telle quelle
    • lorsqu'un formulaire d'édition est généré à partir du schéma JSON, en utilisant le composant editor :
      • le champ role est lu
      • si un éditeur du même nom est trouvé, il est utilisé dans le formulaire
      • sinon, on utilise l'éditeur par défaut

    Les renderers/éditeurs ne sont donc que de simple templates HTMLBars.

    On aura le renderer dans src/renderers/renderer-myrole.hbs :

    <p>My rendered data: {{value}}</p> {{component-mycomponent}}

    Et l'éditeur dans src/editors/editor-myrole.hbs :

    <p>My data is being edited :</p> {{input type="password" value=attr.value}} {{component-mycomponent}} D. Les widgets

    Enfin, on aura les widgets, qui seront en mesure d'utiliser composants et
    renderers afin d'implémenter des outils de visualisation de données plus complexes.

    Un widget est un MVC complet :

    • on implémente un contrôleur
    • on implémente des mixins qui viendront s'appliquer à la vue
    • on écrit un template

    Ce qui donne :

    Ember.Application.initializer({ name: 'MyWidget', after: ['WidgetFactory'], initialize: function(container, application) { var WidgetFactory = container.lookupFactory('factory:widget'); var widgetOptions = {}; var MyWidgetViewMixin = Ember.Mixin.create({ didInsertElement: function() { this._super.apply(this, arguments); // faire des choses }, willDestroyElement: function() { this._super.apply(this, arguments); // faire des choses }, actions: { // actions de la vue } }); var widget = WidgetFactory('mywidget', { viewMixins: [ MyWidgetViewMixin ], actions: { // actions du contrôleur }, init: function() { // faire des choses }, findItems: function() { // méthode appelée lors de la récupération des données pour le template } }, widgetOptions); application.register('widget:mywidget'); } });

    Ensuite, il est nécessaire de créer un schéma widget.mywidget.json qui sera utilisé pour configurer le widget lors de son ajout dans une vue :

    { "title": "MyWidget", "description": "Schéma de configuration de MyWidget", "metadata": { // icône dans le formulaire d'ajout de widget "icon": "fa fa-cog" }, "categories": [ { "title": "General", "keys": ["foo"] } ], "type": "object", "properties": { "foo": { "title": "Foo", // nom du champ dans le formulaire "description": "Foo field", // tooltip dans le formulaire "type": "string", "role": "myrole" } } } E. Les mixins

    Lorsque l'on a des fonctionnalités communes à plusieurs widgets (comme le PeriodicRefresh qui actualise le widget régulièrement), il convient de factoriser le code en un mixin.

    Ce dernier pourra être ajouté et configuré au widget via l'UI, et ensuite appliquer la-dite configuration au contrôleur du widget :

    Ember.Application.initializer({ name:'MyMixin', after: ['MixinFactory'], initialize: function(container, application) { var Mixin = container.lookupFactory('factory:mixin'); var get = Ember.get; var MyMixin = Mixin('mymixin', { mixinsOptionsReady: function() { this._super.apply(this, arguments); var mixinOptions = get('mixinOptions.mymixin'); // faire des choses } }); application.register('mixin:mymixin', MyMixin); } });

    Et il ne manque plus que le schéma mixin.mymixin.json décrivant la configuration du mixin :

    { "title": "MyMixin", "description": "Schéma de configuration de MyMixin", "metadata": { // description affiché dans l'UI "description": "Add stuff to widget" }, "categories": [ { "title": "General", "keys": ["bar"] } ], "type": "object", "properties": { "bar": { "title": "Bar", "description": "Bar field", "type": "string" } } } F. Les vues

    Tout les outils sont désormais à notre disposition pour construire nos dashboards.

    Donc si on résume :

    • une vue est composée de widgets
    • un widget est composé de composants et de mixins

    L'UI fournit les outils qui permettent de construire ces vues, le résultat final est un document JSON stocké en base :

    { "_id": "id de ma vue", "description": "description de ma vue" "crecord_name": "nom de ma vue", "crecord_type": "view", "author": "<user qui a créé la vue>", "enable": true, "internal": false, "tags": [], // le widget initial de la vue "containerwidget": { // identifiant du widget "xtype": "widgetcontainer", "title": "container title vbox", // le widget "widgetcontainer" s'attend à avoir un champ "items" "items": [ { // le widget "widgetwrapper" sert à inclure des widgets dans un container pour les placer correctement "xtype": "widgetwrapper", "title": "wrapper", // le widget encapsulé : "widget": { "xtype": "mywidget", "title": "My awesome widget", // configuration spécifique au widget "foo": "bar", // mixins appliqués via l'UI : "mixins": [ { "name": "periodicrefresh", // paramètres du mixin "refreshInterval": 60 }, { "name": "mymixin", // paramètres du mixin "bar": "baz" } ] } } ], // le container de base de la vue à un widget de layout par défaut "mixins": [ { "name": "lightlayout" } ] } }

    La totalité de l'UI est générée à partir de ces vues JSON, et est donc complètement personnalisable.

    Le bac à événements

    Parmi les vues par défaut qui sont livrées avec Canopsis, on trouve le Bac à événements.

    Cette vue fournit un dashboard de supervision commun, unifiant ainsi la totalité des superviseurs remontant des informations à Canopsis.

    Depuis ce bac, on voit apparaître les différentes alarmes avec comme informations :

    • leurs sources d'émission (le connecteur)
    • leurs sources cible (composant/ressource, qui dans la plupart des cas correspond au couple host/service)
    • le dernier message associé à un check (Nagios, Shinken, Centreon, …)
    • le statut de l'alarme associé au check :
      • Off : aucune alarme n'est présente
      • On Going : un problème a été remonté et n'est toujours pas résolu
      • Stealthy : une alarme a été remontée et est immédiatement repassée OK (durée paramétrable)
      • Flapping : il y a eu X changements d'état en 1h sur l'alarme (durée et fréquence paramétrable)
      • Cancelled : l'alarme a été annulée par un utilisateur (pour éviter les faux-positifs)
    • l'état du check :
      • INFO : tout va bien
      • MINOR : équivalent au Warning de Nagios
      • MAJOR : équivalent au Critical de Nagios
      • CRITICAL : les Unknown de Nagios sont remontés en tant que tel, mais cela ne se limite pas à cette notion
      • UNKNOWN : état non pris en charge à l'heure actuelle, c'est tout ce qui est supérieur à CRITICAL (3)
    • la présence d'un acquittement et/ou d'un ticket :
      • les connecteurs pour Nagios, Shinken, etc… peuvent remonter les acquittements posés
      • depuis Canopsis, on peut en poser manuellement
    • la date du dernier changement d'état

    Sur chaque alarme, on peut réaliser différentes actions :

    • l'acquittement (permet de déverrouiller les autres actions), cela émettra le même événement qui serait remonté par un superviseur, soit un événement de type ack
    • une suppression de l'acquittement, cela émettra un événement de type ackremove
    • une annulation de l'alarme, cela émettra un événement de type cancel
    • une fois l'alarme annulée, on peut annuler cette action, cela émettra un événement de type uncancel
    • une déclaration de ticket :
      • cela émettra un événement de type declareticket
      • cet événement pourra être capturé par le moteur event_filter pour déclencher un job (voir plus bas) qui communiquera le ticket à un outil tiers (par exemple iTop)
    • une association de ticket existant :
      • cela émettra un événement de type assocticket
      • on peut imaginer que le job qui communique la déclaration du ticket à l'outil tiers récupère le numéro du ticket nouvellement créé, et l'associe automatiquement
    • une requalification de l'événement :
      • cela changera l'état du check manuellement, et ce dernier gardera cet état jusqu'à la résolution de l'alarme
      • cela émettra un événement de type check, comme le superviseur
      • la seule différence est la présence d'un champ keep_state qui vaut true dans l'événement

    Toutes ces actions permettent ainsi d'unifier une supervision hétérogène, et l'administrateur (technique) ne devra utiliser/maîtriser qu'un seul outil.

    Sélecteur et widget météo : simplifier la supervision

    Lorsque l'on supervise une grosse infrastructure, les informations remontées via les checks deviennent tout de suite beaucoup plus conséquentes. C'est pourquoi nous avons mis en place la possibilité d'agréger ces checks afin d'avoir une visibilité plus simple sur l'infra.

    Cette agrégation se fait à l'aide des sélecteurs :

    • on créé un filtre d'événements
    • on applique un algorithme à l'état de chaque check qui matche le filtre (actuellement seul l'algo Worst State est disponible)
    • on produit un événement de type selector qui contient :
      • l'état agrégé
      • le champ output qui est le rendu du template spécifié dans la configuration du sélecteur
    • si le sélecteur est configuré pour, on déclenche le calcul des SLA :
      • sur une période de temps (spécifiée dans la configuration du sélecteur)
      • on calcule le pourcentage de temps passé sur chaque état possible
      • on produit une métrique pour chacune de ces métriques, ainsi qu'un événement de type sla
      • l'état remonté par l'événement correspond aux seuils de SLA configurés dans le sélecteur

    Le résultat est finalement affichable avec un widget weather :

    NB: Le sélecteur peut afficher également des checks unitairement

    On peut ainsi noter les couleurs suivantes :

    • vert : l'état du sélecteur est INFO
    • jaune : l'état du sélecteur est MINOR
    • orange : l'état du sélecteur est MAJOR
    • rouge : l'état du sélecteur est CRITICAL
    • violet : toutes les alarmes du sélecteur ont été acquittée
    • la couleur du widget est celle du pire état des sélecteurs positionnés dans celui ci

    Un clic sur le sélecteur dans le widget nous redirigera sur le Bac à événements, filtré avec le filtre du sélecteur.

    Monitoring et séries

    Chaque connecteur, moteur, et sélecteur produisent des données de performances :

    • temps d'exécution d'un check
    • usage CPU/RAM/Disque
    • temps moyen passé sur un événement
    • nombre moyen d'événements par seconde
    • donnée de SLA

    Tout cela est remonté dans Canopsis dans un événement via le champ perf_data_array :

    { // info de l'événement classique "perf_data_array": [ { "metric": "nom_de_ma_metrique", "value": 42.1337, "type": "GAUGE", // GAUGE, COUNTER, ABSOLUTE ou DERIVE // champs optionnels "unit": "...", "min": 0, "max": 1337.42, "warn": 1000, "crit": 1300 } ] }

    Ces données vont être historisée dans Canopsis. On peut donc noter 4 types de métriques :

    • GAUGE : on historise la valeur telle quelle
    • COUNTER : lorsque l'on récupère la valeur, on fait l'addition des valeurs historisées
    • ABSOLUTE : on historise la valeur absolue
    • DERIVE : il s'agit de la valeur dérivée par rapport au temps

    Une métrique est ensuite identifiée par :

    • le composant de l'événement
    • la ressource de l'événement
    • le nom de la métrique dans le tableau de perfdata

    Le tout peut être affiché dans un chart :

    On est ainsi en mesure de sélectionner un ensemble de métrique avec un filtre basé sur des expressions régulières :

    • co:.*\.myhost re:cpu-.* me:system me:user me:wait

    Qui se traduit en filtre MongoDB :

    { '$and': [ {'component': {'$regex': '.*\.myhost'}}, {'resource': {'$regex': 'cpu.*'}}, { '$or': [ {'name': {'$regex': 'system'}}, {'name': {'$regex': 'user'}}, {'name': {'$regex': 'wait'}} ] } ] }

    Une fois les identifiants de métriques récupérés, on peut aller demander les points stockés en base, dans une fenêtre de temps bien définie.

    Une série est donc munie :

    • d'un filtre de métrique
    • d'une période d'agrégation avec un opérateur d'agrégation (le manager de perfdata nous retournera les données agrégées)
    • d'une période de consolidation
    • d'une formule de consolidation

    Ici la partie consolidation sert à consolider les différents points agrégés en un seul, afin de produire une nouvelle métrique.

    La formule se construit de la manière suivante :

    • on a des opérateurs qui prennent en paramètre un filtre de métrique qui sera appliqué sur l'ensemble de métriques déjà sélectionnées
    • ces opérateurs retournent un point consolidé
    • on peut les utiliser dans une expression mathématique classique

    Par exemple, SUM("me:.*") / COUNT("me:.*"), permet de réaliser une moyenne.

    Les tâches ordonnancées et les notifications

    Parmi les moteurs de Canopsis, certains sont dédiés à une fonction précise : exécuter une tâche.

    Il y a donc un moteur scheduler qui, régulièrement, va chercher à exécuter des jobs configurés selon une règle de récurrence.
    En fonction du type de job, ce dernier sera redirigé au moteur correspondant, que l'on appellera un taskhandler.

    Cela permet de construire un équivalent de crontab au sein de Canopsis.

    Ces taskhandlers ne servent pas uniquement à l'exécution de tâches ordonnancées, ils peuvent être utilisés en tant que notification :

    • une règle du moteur event_filter peut déclencher l'exécution d'un job si l'événement reçu matche le filtre de la règle
    • par exemple, à la réception d'un événement declareticket, on peut lancer l'exécution d'un job réalisant une requête d'insertion de ticket à un outil tiers
    Conclusion

    Grâce à tout ces éléments, Canopsis est en mesure de répondre à de nombreux besoins, allant de la supervision simple, à l'analyse poussée de données afin de générer des rapports sur une infrastructure (ou autre).

    Notre objectif premier est la modularité du projet, afin de pouvoir fournir une solution sur mesure et de ne pas transformer l'outil en énorme usine à gaz. Pour résumer, on a répondu à cette problématique avec :

    • le découpage du backend en projets Python embarquant : un manager, éventuellement un moteur et un webservice
    • le découpage du frontend en briques embarquant : des composants, des renderers, des éditeurs, des mixins, des widgets
    • la schématisation des données et à l'avenir des actions possibles sur cette dernière (transformation, schématisation de l'API des managers, …)
    • le développement d'API générique permettant le changement de technologies sans modification du code

    Beaucoup de choses ont été faites, et beaucoup de travail reste à faire, notamment :

    • la finalisation des rôles Ansible
    • l'intégration d'une notion de graphe pour les entités qui sont le centre de toutes les données stockées par Canopsis, afin de rendre le système complètement réflexif
    • une séparation totale du backend et du frontend, permettant d'utiliser l'un sans l'autre
    • génération de code à partir des schémas

    Bref, Canopsis est en constante évolution, et touche à de nombreuses problématiques toutes plus intéressantes les unes que les autres.

    Télécharger ce contenu au format Epub

    Lire les commentaires

    Agenda du Libre pour la semaine 6 de l'année 2016

    7 février, 2016 - 00:18

    Calendrier web, regroupant des évènements liés au Libre (logiciel, salon, atelier, install party, conférence) en France, annoncés par leurs organisateurs. Voici un récapitulatif de la semaine à venir. Le détail de chacun de ces 28 événements est en seconde partie de dépêche.

    Sommaire Agenda du Libre pour la semaine 6 de l'année 2016 [Kunheim] Formation Linux - Le lundi 8 février 2016 de 18h00 à 22h00.

    Tous les lundis à partir de 18h00 jusqu'à 22h00 venez découvrir ou vous former sur Linux et les logiciels libres.
    Ces séances de formation ont lieu à la salle "Kegreiss" au 56 rue principale - Kuhneim - face à la mairie - cette salle est accessible aux personnes à mobilité réduite.
    Nous vous attendons nombreux. Le Team Linux

    [Paris] Atelier OpenData - Le lundi 8 février 2016 de 19h00 à 22h00.

    L'atelier « Opendata : les enjeux des données ouvertes » est organisé par Ritimo et animé par Regards Citoyens.
    Il est à destination du monde associatif (venir avec son portable). L'entrée est libre et l'inscription obligatoire.
    Extrait de la présentation :

    [Teyran] Notions PC - Le mardi 9 février 2016 de 09h00 à 10h00.

    Réaliser une carte d’invitation avec le traitement de texte LibreOffice Writer
    Writer est le composant de traitement de texte de LibreOffice. En plus des fonctionnalités habituelles d’un traitement de texte (correcteur orthographique, dictionnaire des synonymes et de coupure de mots, autocorrection, rechercher et remplacer, génération automatique de table des matières et d’index, mailing et autres) Writer fournit des modèles et styles, des méthodes de mise en page incluant les cadres, les colonnes et les tableaux, incorporer ou lie des images, des feuilles de calcul et d’autres objets, il a des outils de dessins natifs, possède un suivi de modification, exporte en PDF, incluant les repères de texte…
    La participation aux ateliers nécessite :

    [Castelnau-le-Lez] Section GNU/Linux - Le mardi 9 février 2016 de 10h00 à 12h00.

    Rendez-vous hebdomadaire, tous les mardis, salle 38 de la mjc (hors vacances scolaires).
    L’équipe de Montpel’libre vous propose une permanence de dépannages pour vous aider à vous familiariser avec votre système GNU/Linux au quotidien.
    Le contenu de l’atelier s’adapte aux problèmes des personnes présentes et permet ainsi d’adapter l’acquisition de nouvelles compétences au rythme de chacun.

    [Castelnau-le-Lez] Atelier de développement et programmation - Le mardi 9 février 2016 de 10h00 à 12h00.

    Rendez-vous hebdomadaire, tous les mardis, salle 40 de la mjc (fermé pendant les vacances).
    Cet atelier de développement est essentiellement axé sur les langages du Web : html, css (même si ce ne sont pas des langages à proprement parler) javascript et PHP, possibilité aussi d’utiliser Ajax, Jquery, Sqlite et MySql.
    Notre équipe vous attend pour répondre à vos questions et satisfaire votre curiosité.

    [Brignoles] Atelier Libre - Le mardi 9 février 2016 de 18h30 à 21h30.

    Les membres de l'association GULLIVAR (Groupe d'Utilisateurs de Logiciels Libres de l'Intérieur du Var) vous invitent à une soirée atelier / présentation logiciel libre qui aura lieu le 9 février 2016, dans la salle des Saint Anges, chemin de San Sumian à Brignoles à partir de 18h30.
    À 19h30, l'atelier / présentation.
    Cette soirée est ouverte à tous, adhérents et sympathisants.

    [Bordeaux] Atelier CLI - Le mardi 9 février 2016 de 19h00 à 21h00.

    Damien Goutte-Gattat, post-doctorant à l'Institut Européen de Chimie et Biologie, présentera GnuPG (GNU Privacy Guard) pour les utilisateurs avancés.
    Déjà habitué avec ses articles, tel que « De la gestion des clefs OpenPGP », postés dans son journal sur linuxfr.org, cet atelier sera certainement très instructif. On pourra, en autre, créer sa clé GPG et la partager :)
    L'atelier sera suivi d'un apéritif permettant aux participants de se rencontrer et de poursuivre la discussion.

    [Paris] Tuppervim #43 - Le mardi 9 février 2016 de 20h00 à 22h00.

    Le tuppervim est un évènement mensuel organisé dans les locaux de Mozilla.
    Il a lieu un mardi du mois (généralement le premier).
    Le texte suivant a été honteusement copié du site http://tuppervim.org

    [Teyran] Notions PC - Le mercredi 10 février 2016 de 09h30 à 10h30.

    Ajouter de la profondeur de champ à une photographie avec Gimp
    Gimp offre de nombreuses fonctionnalités. Il peut être utilisé comme un simple programme de dessin, comme un programme de retouche photo, comme un système en ligne de traitement par lot, comme un générateur d’image pour la production en masse, pour convertir un format d’image en un autre. GIMP est extensible. On peut lui ajouter de nombreux « Greffons » (plug-ins). Une interface de scripts bien développée permet de créer des procédures, les scripts, regroupant plusieurs opérations.
    La participation aux ateliers nécessite :

    [Nantes] Quadr'apéro - Le mercredi 10 février 2016 de 19h00 à 23h00.

    Venez discuter des libertés et d'Internet au quadr'apéro mensuel.
    Venez nombreux.
    Entrée Libre. Tout Public.

    [Paris] Atelier design : les couleurs - Le mercredi 10 février 2016 de 19h00 à 21h00.

    Atelier Do It Yourself Design : 16,8 Millions de couleurs, et moi et moi!
    Dans la série des atelier Do it yourself, l’association Silex Labs vous propose un nouvel atelier pour découvrir l’importance des couleurs dans les projets numériques. Cet atelier sera animé par Pol Goasdoué designer professionnel spécialiste de l’UX UI Président de l’entreprise UFO et co-fondateur du projet Silex.
    Au programme de cet atelier

    [Paris] Apéro des nouveaux mozilliens - Le mercredi 10 février 2016 de 19h00 à 21h00.

    L'apéro des nouveaux aura lieu le 10 février à partir de 19h chez Mozilla (16 bis boulevard Montmartre, 75009 Paris).
    Ça sera bien évidement l'occasion pour les nouveaux de rencontrer une partie de la communauté mozfr et pour tous de (re)découvrir comment il est possible de participer. Plus largement, ça serait chouette qu'on profite de l'occasion pour se dire sur quoi on bosse et sur quoi on aimerai bosser. Ça permet de mieux savoir qui est intéressé par quoi et de faciliter la participation de nouvelles personnes. Tout cela se faisant bien sûr  de manière informelle et dans la bonne humeur.
    Afin de gérer l'intendance, veuillez-vous inscrire sur le pad:https://public.etherpad-mozilla.org/p/aperoNouveaux

    [Proposition en ligne] Appel à communications AgoraCMS 2016 - Du jeudi 11 février 2016 à 00h00 au vendredi 12 février 2016 à 00h00.

    La 3ème édition d'AgoraCMS, premier événement européen dédié aux CMS se tient à Paris le 1er avril prochain.
    L'appel à communications pour les conférences vient d'être lancé: http://agoracms.com/appel-a-communication.
    Vous pouvez y proposer vos idées de conférences, de retours d'expérience, de vos projets.

    [Mauguio] Infolibres - Le jeudi 11 février 2016 de 17h00 à 19h00.

    Rendez-vous salle de formation informatique de la médiathèque.
    L’équipe de Montpel’libre vous propose une permanence de dépannages pour vous aider à apprivoiser votre système GNU/Linux au quotidien. Le contenu de l’atelier s’adapte aux problèmes des personnes présentes.
    Vous pourrez y aborder entre autre :

    [Paris] Mapathon Missing Maps - Le jeudi 11 février 2016 de 19h00 à 22h00.

    Venez découvrir comment contribuer à OpenStreetMap, le "Wikipedia de la carte", durant un « mapathon » !
    (un événement convivial où l'on se retrouve pour cartographier, échanger et apprendre à utiliser les outils permettant de contribuer à OSM).
    Cet événement s'inscrit dans le cadre de l'initiative globale Missing Maps, projet humanitaire qui vise à cartographier en amont les parties du mondes vulnérables aux catastrophes naturelles, crises sanitaires, environnementales, aux conflits et à la pauvreté.

    [Lyon] Jeudi du Graphisme - Le jeudi 11 février 2016 de 19h00 à 21h00.

    L'Association Lyonnaise pour le Développement de l'Informatique Libre organise un atelier découverte du logiciel : Darktable : Corrections et profils d’effet qui est animé par les étudiants de la licence CoLibre.
    Darktable est un logiciel de développement et retouche de photo. L’application pour les photographes passionnés. Cette année, nous appliquerons à voir quelques techniques de retouche simple et utile et surtout comment créer des profils d’effets qui seront la signature de votre touche personnelle.
    Entrée Libre et gratuite

    [Paris] Soirée de Contribution au Libre - Le jeudi 11 février 2016 de 19h30 à 23h00.

    Parinux propose aux utilisateurs de logiciels libres de se réunir régulièrement afin de contribuer à des projets libres. En effet, un logiciel libre est souvent porté par une communauté de bénévoles et dépend d'eux pour que le logiciel évolue.
    Nous nous réunissons donc tous les jeudis soirs dans un environnement propice au travail (pas de facebook, pas de télé, pas de jeux vidéos, pas de zombies)).
    Vous aurez très probablement besoin d'un ordinateur portable, mais électricité et réseau fournis.

    [Montpellier] Formation sécurité informatique et cryptographie - Le vendredi 12 février 2016 de 09h00 à 13h00.

    Montpel’libre a le plaisir de vous proposer un nouveau cycle de formation, cryptographie et sécurité informatique.
    Merci d’avoir choisi de participer aux ateliers « Sécurité Informatique et Cryptographie » organisés par Le Club de la Presse et Montpel’libre. Les trois ateliers auront lieu les vendredis 5, 12 et 19 février 2016 de 9h00 à 13h00 à l’Atelier des Pigistes du Club de la Presse de Montpellier.
    Formation Crypto, séance de préparation, premier module :

    [Paris] Locasprint MozFR n°4 - Du vendredi 12 février 2016 à 14h00 au dimanche 14 février 2016 à 20h00.

    La communauté Mozilla francophone organise son 4e évènement autour de la traduction. La communauté Mozilla de bénévoles francophones est à l’origine de l’ensemble du contenu en français publié par Mozilla (logiciels, sites web, documentation, pages d’assistance, etc.)
    Cet évènement est ouvert à toute personne qui souhaite nous aider à produire des traductions françaises de qualité. Vous avez juste besoin de venir avec un ordinateur et de la motivation.
    Ce week-end de travail est l’occasion d’accueillir de nouveaux contributeurs, de leur expliquer notre façon de travailler, nos outils, nos bonnes pratiques…

    [Montpellier] Permanence Les logiciels libres - Le vendredi 12 février 2016 de 17h00 à 19h00.

    Le Faubourg Marché, qu’est-ce que c’est ?
    Le Faubourg Marché est une permanence partagée qui permet aux associations d’accueillir ensemble, les publics de ces associations une fois par semaine, le vendredi entre 17h00 et 19h00 (ou au delà sous réserve d’accord préalable), au 19, rue du Faubourg de Nîmes, 34000 Montpellier.
    Si vous avez un peu de temps le vendredi soir, voici une occupation qui me semble très intéressante et si vous êtes intéressés par la promotion des logiciels libres, des biens communs, de l’accessibilité, de l’économie sociale et solidaire, de l’innovation sociale et numérique, de l’éducation populaire, ou encore du développement durable.

    [Villeneuve d'Ascq] Libre à Vous - Le samedi 13 février 2016 de 09h00 à 12h00.

    Vous souhaitez tester GNU/Linux sur votre ordinateur, vous recherchez un logiciel pour une fonction précise, des conseils ou de l'aide sur les logiciels libres ?
    Libre à Vous est une permanence destinée à vous faciliter l'utilisation de l'informatique. Vous repartirez avec « le plein » de logiciels libres, fiables, évolutifs, performants et gratuits.
    C'est chaque samedi matin au Centre d'Infos Jeunes à la ferme Dupire, 80 rue Yves Decugis à Villeneuve d'Ascq (métro Triolo) de 9h00 à 12h00.

    [Castelnau-le-Lez] Café Numérique GNU/Linux & Logiciels Libres - Le samedi 13 février 2016 de 09h00 à 11h00.

    Samedi 13 février 2016 de 9h00 à 11h00 MJC Centre André Malraux 10, avenue de la Moutte, 34170 Castelnau-le-Lez
    Bus Ligne 35 arrêt Collège Frédéric Bazille Tramway ligne 2 arrêt La Galine
    GPS : Latitude : 43.633946 | Longitude : 3.905794

    [Teyran] Notions PC - Le samedi 13 février 2016 de 09h30 à 10h30.

    Enregistrer, importer, manipuler des fichiers sonores avec Audacity
    Audacity est un logiciel libre4 pour la manipulation de données audio numériques. Audacity permet d’enregistrer du son numérique par le biais des entrées ligne/micro/cd des cartes sons. Il permet d’éditer (copier, coller, sectionner…) les sons sur plusieurs pistes, et il est accompagné de divers filtres et effets : pitch, tempo, réduction de bruit, égaliseur, filtres de Fourier, augmentation de fréquences précises, compression, amplification, normalisation, écho, phaser, wahwah, inversion…
    La participation aux ateliers nécessite :

    [Toulouse] Atelier Blender pour tous - Le samedi 13 février 2016 de 10h00 à 18h00.

    La communauté toulousaine des utilisateurs de Blender est l'une des plus actives de France.
    Elle se retrouve régulièrement pour organiser des ateliers, des repas, des soirées.
    C'est donc dans ce cadre que le Blender User Group toulousain organise, en coopération avec Toulibre, environ un samedi par mois, de 10h à 18h dans les locaux de l'espace Ékito, 15 rue Gabriel Péri à Toulouse.

    [Saint-Denis] Assemblée générale de l'April - Du samedi 13 février 2016 à 13h00 au dimanche 14 février 2016 à 19h00.

    L'assemblée générale de l'April aura lieu le samedi 13 février 2016 de 14h à 18h (accueil à partir de 13h00) à l'université Paris 8 à Saint-Denis (bien que l'AG se tienne en 2016, elle concerne le bilan de l'année 2015 mais bien sûr les perspectives 2016 seront abordées).
    Il s'agit d'un des événements importants de la vie de l'association, l'occasion de voter les rapports moral et financier, faire un point sur l'année qui vient de s'écouler, de rencontrer les autres adhérents et d'élire le conseil d'administration.
    L'assemblée générale est l'occasion d'organiser un week-end de réunion des membres. Le dimanche sera consacré à des ateliers en petits groupes ou discussions en plénière. Ce week-end est en cours d'organisation, plus de détails bientôt. Cette partie atelier est ouverte à tout le monde et aura lieu à la Fondation pour le Progrès de l'Homme à Paris. Une soirée festive est prévue le samedi soir et des ateliers sont prévus le dimanche. Le lieu pour la soirée n'est pas encore fixé.

    [Ramonville Saint Agne] Atelier web: les squelettes sous SPIP - Le samedi 13 février 2016 de 14h00 à 18h00.

    Deux nouvelles animations organisées très prochainement par le Projet Internet et Citoyenneté à la Maison des Associations de Ramonville. Ces deux animations sont complémentaires: c'est une bonne idée de participer aux deux, mais ce n'est pas obligatoire.
    1/ SAMEDI 30 JANVIER 2016: Personnaliser son site Web avec les CSS: Initiation aux CSS. À partir de la version distribuée de SPIP, personnaliser son site en modifiant les fichiers CSS.
    2/ SAMEDI 13 FEVRIER 2016: Initiation à l’écriture/modification des squelettes qui conditionnent les fonctionnalités présentes dans les pages d’un site sous SPIP. Modifier le squelette des articles, rubriques, etc. pour changer l’aspect et les fonctionnalités présentes dans les pages du site.

    [Saint-Aunès] Permanence Emmabuntüs et Logiciels Libres - Le samedi 13 février 2016 de 14h00 à 18h00.

    Samedi 13 févier 2016 de 14h00 à 18h00 Communauté Emmaüs Montpellier-Saint-Aunès La Vieille Cadoule 34130 Saint-Aunès
    GPS Latitude : 43.649363 | Longitude : 3.991591
    Rendez-vous mensuel, le deuxième samedi. Pour les animateurs, réservez les repas et le covoiturage le jeudi au plus tard.

    [Marseille] Atelier « Découverte des Logiciels Libres Firefox » - Le samedi 13 février 2016 de 14h30 à 18h00.

    L’association CercLL vous invite à l’ Atelier du Samedi Libre qui se déroule le samedi 13 février 2016 de 14h30 à 18h00, à la Fabulerie 4 rue de la Bibliothèque 13001 Marseille.
    Ces ateliers se déroulent, en général, sur une séquence hebdomadaire, de 2 à 3 séances de travail et sur un thème déterminé.
    Comme le mot atelier le laisse présumer, dans ce cadre, nous proposons une approche pratique des outils libres.

    Télécharger ce contenu au format Epub

    Lire les commentaires

    Mais où est donc la révolution des imprimantes 3D ?

    6 février, 2016 - 12:54

    Depuis quelques temps déjà on nous annonce la révolution des imprimantes 3D. Mais, dans notre vie quotidienne, toujours rien ! Mais où est donc cette révolution ?

    Ceux qui possèdent une imprimante 3D ont une approche un peu différente de la consommation. Par exemple, quelqu'un de chez Ckab s'est fabriquée un autre bouton de pantalon, certains ont facilement réparé leur chasse d'eau ou un autre objet en plastique. La plupart des objets deviennent réparables :-)

    Pour les professionnels aussi c'est une approche différente, par exemple en cuisine, remplacer le plastique par une pâte, comme la pâte à pain ou une pâte de chocolat.

    Et cette révolution est d'autant plus importante qu'elle est animée par l'esprit du partage et de l'open hardware.

    Sommaire La révolution en marche

    De plus en plus de particuliers s'offrent une imprimante 3D (~1000€), de plus en plus d'entreprises se créent sur ce secteur, les passionnés s'organisent en fablabs et des objets libres peuvent être dupliqués :

    Il y a aussi la possibilité de faire du prototypage rapide pour les projets industriels, beaucoup plus facilement et rapidement. Par exemple, le projet de caméra cinéma ouverte Apertus AXIOM a pu créer des prototypes de son futur boîtier en taille réelle.
    Cela ouvre la création hardware, même à objectif final professionnel et industriel, à bien plus de gens.

    Bientôt, au lieu de jeter un appareil électroménager, nous pourrons fabriquer la pièce défectueuse… À condition que les plans des objets soient librement disponibles. (Oui c'est vrai : combien de fois, un petit élément en plastique se casse, comme dans sa chasse d'eau, et plus rien ne fonctionne correctement).

    Et c'est bien cet esprit de matériel ouvert qui permet d'éviter que des industriels monopolisent l'innovation en brevetant les systèmes. Ainsi le projet RepRap partage sous licence libre des imprimantes 3D qui sont capables de s'auto-dupliquer, excepté les tiges métalliques et circuits électroniques (mais cela viendra peut-être).

    En pas libre, des sociétés proposent d'imprimer des objets proposés par des créateurs très geeks matheux comme des fractales 3D, des polygones réguliers, et autres pavages hexagonaux projetés à la bougie … Il devient aussi possibles d'imprimer des figurines pour les geeks de types board game … ouvrant la voix à un modèle économique pour le jeu de plateau libre ?

    Retour aux sources

    Les RepRaps sont nées de l'idée d'un professeur anglais qui a décidé que cette impression 3D, inventée même avant le noyau Linux, devait l'être pour tous. L'engouement des passionnés a fait le reste et, devant ce succès, sont nées des machines grand public prêtes à l'emploi. Mais ce sont bien les RepRaps qui ont permis deux choses :

    • Rassembler des citoyens pour défendre la liberté de créer des objets
    • Définir les standards techniques

    Dans ce domaine, le monde du Libre joue, avec des leviers considérables, de tous ces atouts (rapidité et flexibilité des modèles, contributions ultra-actives, recherches pointues et audacieuses !), laissant souvent derrière les industriels les plus motivés. Et c'est tant mieux car cela a déjà permis d'imposer le consommable sous forme de bobine et non pas en cartouches munies de puces ! Rien que ça, c'est une titanesque victoire !

    États des lieux entre brevets et communautés libres

    D'un côté nous avons de plus en plus d'entreprises qui se créent pour répondre aux besoins d'autres entreprises et institutions de créer des objets décoratifs, intelligents et connectés. C'est le cas de la jeune start-up CKAB qui a bien voulu répondre à nos questions.

    Il y a aussi les fabricants d'imprimantes 3D qui sont tentés de déposer des brevets pour affaiblir les marges d'innovation des concurrents, puis monopoliser le marché pour pratiquer ses propres tarifs, et ainsi pérenniser/augmenter leurs revenus. Tous les industriels n'ont pas ce comportement, mais comme d'autres le pratiquent (et que c'est légal), pourquoi s'en priver ?

    Parmi les concurrents, de l'autre côté, nous avons les particuliers qui s'émancipent et partagent librement leur passion. Ce sont des communautés rassemblées le plus souvent en fablabs. Mais aussi, des particuliers qui s'équipent chez eux tels des artisans.

    Tous ne viennent pas du monde du logiciel libre (pour ne pas dire presque pas). Mais tous ont goûté la satisfaction de l'entraide, du partage des sources et des bienfaits de l'open hardware.

    Entretien avec Romain Pouzol, directeur des opérations de la société CKAB

    Cette jeune start-up CKAB est revendeur officiel de la marque d'imprimantes 3D Makerbot et propose également la conception et la fabrication d'objets plus ou moins complexes.

    D'où est venue l'idée de créer CKAB ?

    Lorsque le matériel open-source (ou libre, attention #troll_inside) est apparu, porté par l’émergence du financement participatif, non seulement on a relativement1 décloisonné certaines technologies mais en plus et surtout, on a ouvert un univers d’usages collaboratifs, circulaires, inédits et virtuellement infinis.
    En d’autres termes, l’OSHW nous a donné le pouvoir de dématérialiser, de transformer et de re-matérialiser notre environnement physique.

    Dès lors, nous avons commencé à explorer cet univers des possibles, d’abord par la voie de la petite électronique open-source par le biais de notre e-shop Hackable-Devices (transféré et intégré depuis sur CKAB.io) puis par la voie des imprimantes 3D de bureau.
    Pour être tout à fait clair, ce n’est pas la Technologie en tant que telle qui nous intéresse au premier plan, ce sont les usages que l’on peut en faire et sur ce point, je ne vois pas comment le monde privatif pourrait rivaliser, à terme, avec le monde ouvert.

    À titre plus personnel, ce sont plus particulièrement les répercussions au plan politique — au sens strict du terme — qui m’intéressent. Je vois en l’impression 3D la même lame de fond « d’empowerment » des masses que celle que l’on a connue avec les médias sociaux, à la différence près que cette fois, on fait disparaître toute frontière entre environnement matériel et immatériel. Ma conviction est que si les ténors du secteur n’embrassent pas dès maintenant le phénomène de la fabrication numérique, les consommateurs le feront pour eux et là, oui, les industriels souffriront.

    CKAB se définit aujourd’hui comme « l’agence de la fabrication numérique et des objets intelligents » et il suffit de nous rendre visite (1 place Saint-Gervais – 75004 Paris) pour se rendre compte que, si nous sommes une entreprise commerciale et non un FabLab, notre environnement ressemble plus au laboratoire du professeur Tournesol qu’à de cliniques bureaux d’import/export d’électronique.

    Quelle est la première activité ou l'activité la plus lucrative ?

    Au début de l’activité, les ventes d’imprimantes 3D portaient la société. Sauf erreur de ma part, CKAB a été, avec notre partenaire belge de l’époque, l’importateur historique de MakerBot en Europe. On a donc la petite fierté de compter parmi les rares à avoir mis les mains sur les cinq générations de machine… et à les avoir bien modifiées.
    Aussi fou que cela puisse paraître, je crois que nous sommes les seuls à avoir pris la peine de, par exemple, traduire l’interface de la machine en français. Ce n’était clairement pas un immense exploit mais le plus cocasse est qu’aucun de nos confrères ne semble s’être donné la peine de reprendre notre travail pour un portage en allemand, espagnol, etc.
    C’est assez révélateur de l’état d’esprit du marché. Cela était prévisible mais reste dommage.

    Aujourd’hui, ce sont nos activités de conseil et d’évènementiel qui sont les plus importantes. Non pas que nous ne vendons plus de machines mais plutôt que l’acquisition du matériel intervient en fin de parcours.
    Nous avons dorénavant affaire au responsable du bureau d’étude, au CTO voire à des achats stratégiques décidés au niveau de la direction générale. Dans le secteur public, nous sommes passés d’achats isolés de tel ou tel collège/lycée à des investissements portés par des Régions, des académies ou encore des Ministères.

    Les équipements sont donc plus réfléchis mais ne nous y trompons pas, les entreprises restent très souvent perdues dans la jungle.
    C’est sur ce point que nous intervenons : établir la (non-)pertinence directe de ces technologies pour l’entreprise, les accompagner dans une phase exploratoire en prototypant produit ou service, et enfin, si nécessaire, les équiper avec le matériel adéquat et former les collaborateurs.
    CKAB représente aujourd’hui une cellule de veille technologique qui performe parce qu’elle dispose d’un savoir et d’un savoir-faire tant du côté software que du côté hardware.

    Pour autant, si l’on a travaillé dur pour gagner la confiance de groupes tels que Safran, Air Liquide, Chanel, Auchan, Renault (…), nous ne voulons surtout pas perdre les relations que nous entretenons avec les PME et les artisans car ce sont aussi voire surtout ces entreprises qui, de par leur souplesse inhérente à leur taille, sont à la source de l’innovation dans notre cher pays.
    Et quitte à paraître un peu prétentieux, je pense qu’assez rares sont les entreprises qui peuvent se permettre ce grand écart…surtout quand on est une équipe qui vient tout juste de passer à 3 personnes :-)

    À quel point le secteur est-il en croissance ?

    La recherche est très active, en particulier dans le domaine de la santé. L’avenir (15~25 ans) nous réserve de très belles choses.
    On parle d’impressions de tissus vivants, d’organes, de prothèses et si l’on a un peu d’imagination et que l’on associe la bio-impression 3D aux nanotechnologies, on verse rapidement dans l’humain augmenté, le trans-humanisme, la fameuse singularité.
    À ce niveau expérimental, l’open-source fonctionne à plein régime et m’est avis que si 2016 verra de nombreux FabLabs et assimilés fermer, on verra également un essor de lieux tiers orientés biologie tels que le bio-hackerspace « La Paillasse » à Paris.

    La recherche un peu plus appliquée est également en ébullition depuis quelques années. Il reste de nombreux obstacles à lever et tous ne sont pas de nature technique mais, globalement, les efforts sont portés sur le passage du prototypage à celui de la production d’objet fini ; qu’il s’agisse d’outillage rapide ou de sous-ensembles présents dans des biens de consommation.

    Au niveau des particuliers, certes les machines s’améliorent et peuvent se simplifier — ce qui est souvent synonyme d’un enfermement dans une prison dorée avec une perte de contrôle conséquente sur le matériel — mais il n’y a pas de révolution. On reste par exemple toujours ou presque sur du dépôt de filament fondu donc une seule matière et une seule couleur.
    À ce niveau, l’Open-Source est moteur avec tout ce que cela sous-entend en termes de collaboration. Il suffit d’examiner l’arbre généalogique du mouvement RepRap pour s’en rendre compte : plus de 400 projets et encore, cela ne couvre que 2006-2012 !

    Et je ne parle même pas des machines qui tirent parti du firmware open-source Marlin mais qui ne sont pas des RepRap pour autant car pas OSHW.

    À côté de cela, je fais partie des personnes qui ne pensent pas que chaque famille Michu aura une imprimante 3D chez soi à court voire à moyen terme.
    En effet, même si l’on pose l’hypothèse que le matériel sera accessible financièrement et techniquement parlant, même si l’on admet que les matériaux seront disponibles pour tous, reste la question de la CAO.
    Dessiner un objet véritablement utile en 3D est quelque peu plus complexe que d’ouvrir son traitement de texte…
    Certes des solutions logicielles apparaissent mais ce n’est pas la panacée.
    En ce sens, les machines qui clament haut et fort un comportement plug’n play sont soit de quasi-jouets soit sont techniquement capables mais tellement castrées par un logiciel privatif que leur usage est des plus restreints.
    Au niveau de cette dernière strate, on voit donc beaucoup d’agitation mais beaucoup moins de choses réellement innovantes, fonctionnelles et pérennes ; ce qui est normal car elles appellent un marché qui ne répond pas.

    De là à dire que l’impression 3D n’impactera jamais le grand public, il y a un pas que je me garde bien de franchir. Nous avons quelques idées mais ça, c’est une autre question… ;-)

    Y a-t-il de la place pour d'autres entreprises dans ce secteur ?

    Le marché de la distribution de matériel est devenu très concurrentiel, malheureusement parce que certains ont évidemment fait le choix de la chasse au dernier euro au détriment de la qualité du matériel et du service, ce qui a tiré une bonne partie du marché vers le bas.
    Démarrer aujourd’hui une activité de revente de machines me semble donc compliqué.

    Par contre, il y a encore de la place dans le secteur de la conception de machines même si partir la fleur au bout du fusil avec un produit minimum viable (MVP) financé par crowdfunding est aujourd’hui relativement illusoire.

    Quelle est la philosophie de Makerbot ?

    Avant son rachat par Stratasys (2e acteur mondial) en 2012 pour 400 M$, Makerbot travaillait pour et avec les Makers. Grosso-modo, on peut dire que si l’on cherchait une machine de bureau qui fonctionne bien pour en faire un usage professionnel, il n’y avait que MakerBot qui comptait.

    Depuis le rachat, il y a eu de nombreux changements de stratégie et de direction générale, la ligne directrice est plus floue. Trop souvent les produits n’ont pas été en phase avec le marketing.
    En guise d’exemple, CKAB ne vend quasiment pas d’imprimante 3D MakerBot de 5e génération, nous préférons l’avant-dernière génération : moins chère, plus silencieuse, plus rapide, plus évolutive, plus performante.
    Ces machines de 4e génération sont par ailleurs toujours open-source au niveau du firmware et nous les avons bien transformées au niveau matériel ce qui fait que même 3 ans après leur sortie, les Replicator2 améliorées par CKAB comptent toujours parmi les meilleures machines du marché.

    Je ne vais pas m’attarder sur les dessous de l’affaire, je vous conseille de lire ces quelques articles :

    Quelle est la part de marché de Makerbot ?

    Je ne saurais dire précisément. Je pense qu’ils sont toujours les premiers au plan mondial même si la 5e génération de machines leur a fait du mal. Quoi qu’il en soit, ils ont les ressources pour atteindre leurs objectifs.

    Quelles relations avec l'open hardware, les licences libres, les forums d'entraide, les fablabs ?

    Si l’on parle de MakerBot, plus aucune à ma connaissance depuis le rachat par Stratasys.

    Si l’on parle de CKAB, nous ne sommes pas des sectaires du Libre ou du propriétaire mais tant que faire se peut, on essaye de travailler avec des composants ouverts, qu’il s’agisse de logiciel ou de matériel.
    Quand on développe des prototypes d’objets intelligents pour nos clients, il ne s’agit pas forcément de payer moins cher telle ou telle brique logicielle ou matérielle mais plutôt de bénéficier de documentation, de souplesse d’utilisation, de partage (…) bref d’efficacité.

    Quant à donner en retour, on privilégie les actions concrètes sur le terrain plutôt qu’en ligne : atelier de soudure, prix doux pour fablabs, etc.

    Que conseiller aux lecteur de LinuxFr.org pour s'y mettre ?

    Tout dépend de ce que vous cherchez. Si vous souhaitez vous amuser à bidouiller – au sens noble du terme – une imprimante 3D, alors on pourra vous conseiller mais CKAB ne sera probablement pas votre interlocuteur commercial.
    Par contre, si vous préférez avoir un outil stable bien qu’ouvert donc évolutif et vous concentrer sur les objets qui sortiront de votre machine, alors on sera probablement beaucoup plus en phase.

    En ce qui concerne l’électronique, nous avons quelques joyeusetés en boutique mais nous ne cherchons pas à concurrencer selectronics ou sparkfun. Nous avons des compétences de sourcing, de dev soft et hard donc on peut accompagner pas mal de projets.

    En tout état de cause, je recommanderais une bonne dose de patience enrobée de logique, quelques épices de passion voire de folie, le tout baignant dans un nuage d’imagination.

    N’hésitez pas à nous rendre visite, sur rendez-vous :

    • 1 place Saint-Gervais – 75004 Paris, chez les Compagnons du Devoir,
    • Métro Pont-Marie ou Hôtel de ville.
    • Tel : 01 85 09 96 42
    • Courriel : contact@ckab.io
    Faire ses premiers pas, la communauté, les fablabs Avantages et inconvénients de l'impression 3D Technologies actuelles

    Les imprimantes 3D sont utilisées depuis plusieurs décennies pour la réalisation de prototypes. En effet, de manière générale, une pièce mécanique est d'abord conçue en CAO, prototypée, puis modifiée pour pouvoir la produire grâce aux méthodes traditionnelles (extrusion, moulage, etc.).

    Aujourd'hui, que ce soit par stéréolithographie ou SLA, frittage sélectif par laser ou SLS, ou tout autre procédé dit additifs, voici les avantages :

    • possibilité de créer des pièces infaisables autrement (sphères internes, porosité pré-calculée, etc.)
    • rapidité relative pour la création de pièces à petit tirage ;
    • coûts en chute libre ;

    Néanmoins, les impressions 3D ne sont pas très utilisées pour produire massivement pour plusieurs raisons :

    • lenteur pour produire des pièces à la chaîne ;
    • consommation énergétique très élevée ;
    • sécurité particulière (atmosphère sous Argon pour certains processus, toxicité des poudres nanométriques nécessaires en intrants, etc.).

    En outre, toutes les technologies additives fabriquent des pièces non-isotropes, et mécaniquement peu viables. En effet, une pièce mécanique possède ainsi une résistance différente dans la direction perpendiculaire au plan d'impression par rapport au plan d’impression. L'état de surface est rugueux par définition, mais l'état interne est identique.

    Or, il est connu des mécaniciens que tout angle vif est le siège le plus propice d'un développement d'une fracture de la pièce : il est possible d'utiliser cette propriété pour faire en sorte qu'une pièce casse à un endroit privilégié, et ainsi augmenter la sécurité. Mais avec une pièce contenant des irrégularités internes partout, il est impossible de faire confiance à cette pièce.

    Demain

    Ne nous voilons pas la face : tant qu'il faudra plusieurs heures ou jours pour fabriquer un produit, il est peu probable que cette technique s'impose pour la production de masse.

    Néanmoins, on voit émerger de nouveaux produits tels ceux de l'entreprise Carbon3D qui permettent de produire des objets en polymères quelconques (même élastiques), de manière continue (aucune strate affaiblissante), et surtout de 25 à 100 fois plus rapidement (inspiré par Terminator 2).

    Bref, les possibilités restent limitées par l'imagination humaine, mais j'attends personnellement que quelqu'un vienne avec une batterie où les anodes et cathodes sont des fractales tridimensionnelles pour faire un petit bond en densité d'énergie !

    Conclusion : gare aux brevets !

    Les années 90 ont vu le grand public s'équiper d'imprimantes 2D (encre sur papier). Un phénomène similaire peut aussi de se produire avec les imprimantes 3D, propulsant le grand public dans l'économie du partage. La révolution serait alors la possibilité de créer/partager pour un coût "abordable".

    Comme pour le logiciel libre, le succès viendra des réseaux sociaux de partage des sources comme github. Mais comme le logiciel libre, la menace est celle des brevets qui risquent de verrouiller l'innovation.

    C'est déjà le cas avec les codecs : nous en sommes toujours au JPEG standardisé en 1992 et le grand public ne profite pas librement des avancées majeures des Jpeg2000/…/HEVC car quelques pays puissants (USA, Japon) autorisent les brevets logiciels.

    Et dans le monde des imprimantes 3D c'est pire, car les brevets matériels sont autorisés, même en Europe.

    Donc ce sont les libertés des citoyens qui se jouent dans cette révolution. Est-ce que le grand public s'appropriera ces nouvelles technologies des imprimantes 3D et entrera dans l'économie du partage. Ou est-ce que nos gouvernements se laisseront séduire par les lobbies pour verrouiller le marché ?

    Télécharger ce contenu au format Epub

    Lire les commentaires

    Présentation d’OpenStack

    5 février, 2016 - 07:15

    OpenStack, vous connaissez ? Virtualisation et nuage/cloud, ça vous dit quelque chose ? Si vous n’êtes pas un expert, vous voulez sans doute en savoir un peu plus. Cet article est fait pour vous.

    Nous allons rappeler ce qu’est un cloud, les différents types de clouds, et où se situe OpenStack. Ensuite, nous ferons une présentation d’OpenStack et de ses différents services.

    La version d’OpenStack baptisée Kilo est sortie le 30 avril 2015. Elle incluait à cette date un nouveau service : Ironic. Le 16 octobre 2015, ce fut le tour de la version Liberty. D’autres sont à venir, à commencer par Mitaka, annoncé pour le 7 avril 2016. Pour mémoire, la première lettre du nom de version suit l’alphabet latin.

    Cet article a pour but de faire une présentation assez rapide d’OpenStack et de servir de référence aux prochains articles, en particulier lors de la sortie de Mitaka en avril.

    NdM. : Cette dépêche est incomplète, elle a longtemps traîné en rédaction. Elle a cependant le mérite de proposer un rare tour d’horizon. Les modérateurs la publient en comptant sur l’excellence de vos commentaires pour nous raconter les évolutions depuis la version Kilo.

    Sommaire Les différents clouds Qu’est‐ce que le Cloud computing ?

    Le Cloud computing est un concept fourre‐tout. C’est le fait d’utiliser de la puissance de calcul ou de stockage de serveurs informatiques distants par l’intermédiaire d’un réseau, avec certaines caractéristiques comme la disponibilité, l’élasticité, la mutualisation et le paiement à l’usage.

    Le plus souvent il s'agit d'un service informatique extérieur à l'entreprise. Cela est donc une façon d'économiser des moyens humains en informaticiens et de les remplacer par un service externe qui peut gérer au besoin une demande importante.

    Prenons un exemple pour bien comprendre : le cas d'une suite bureautique. Pour l'entreprise, il y a 2 manières de gérer l'utilisation d'un traitement de texte :

    • Installer sur les postes clients un traitement de texte et payer éventuellement les licences qui vont avec (Microsoft Office 2013, LibreOffice).
    • Utiliser un traitement de texte via un navigateur web (exemple : Microsoft Office 365, Google Doc, Etherpad instancié sur le Framapad).

    La première méthode est moins souple, car l'entreprise paie les licences même si le logiciel n'est pas utilisé ; alors qu'avec la seconde, le paiement est à la demande. Par ailleurs, il n'y a pas la phase d'installation du logiciel qui permet d'économiser du temps. Par contre les données sont externalisées, ce qui peut poser des problèmes de sécurité et de confidentialité.

    L'exemple qui vient d'être évoqué est un SaaS : Software as a Service/logiciel en tant que service

    Mais il y a différents degrés d'informatique en nuage.

    On peut faire l'analogie pour manger une pizza :

    • La méthode "à la maison" : on achète les ingrédients, on les cuisine et on met la table. C'est la méthode traditionnelle. L'acheteur (entreprise ou particulier) contrôle tout et en a les compétences.
    • La méthode "à emporter puis cuisiner" : on te fournit les ingrédients. C'est à toi de les cuisiner à ta manière et de s'occuper du reste. L'entreprise en tant qu'utilisateur n'a pas à s'occuper des matières premières mais elle a le contrôle du reste. En cloud, c'est IaaS : Infrastructure as a Service/infrastructure en tant que service, avec les compétences afférentes
    • La méthode "pizza 30 minutes" : on appelle un vendeur de pizza. Il ne reste plus qu'à s'occuper de l'accompagnement et de la table. Dans le nuage, c'est PaaS : Platform as a Service/ plate-forme en tant que service
    • La méthode "pizzeria" : on entre dans une pizzeria et on n'a rien à prendre en charge (ou presque). En cloud, c'est SaaS : Software as a Service/logiciel en tant que service.

    OpenStack est un ensemble de logiciels libres permettant de déployer un cloud orienté IaaS, mais il est de plus en plus possible de faire un PaaS.

    Cloud privé vs public

    Le cloud public est un cloud qui permet à l'entreprise d'externaliser ses moyens. Il y a donc moins d'informaticiens à embaucher. L'entreprise doit par contre payer une autre entreprise et perd le contrôle de l'infrastructure et les données.

    Exemple IaaS public connu : Amazon EC2, Windows Azure, RackSpace et CloudWatt.

    Le cloud privé est un cloud qui permet de ne pas perdre le contrôle de l'infrastructure et des données tout en améliorant la qualité de service. Ce type de cloud est de plus en plus utilisé dans les grandes entreprises. Cela demande des compétences en interne.

    Exemple IaaS privé connu : OpenStack, OpenNebula.

    Il y a aussi le cloud hybride qui permet d'utiliser les avantages du cloud privé et du cloud public.

    Avec un cloud hybride, une possibilité est de mettre les données sensibles et importantes dans le cloud privé et le reste dans le cloud public. Une autre possibilité dans l'optique de réduire ses coûts d'exploitation est de dimensionner son cloud privé pour une charge moyenne et d'utiliser le cloud public afin d'absorber les surcharges ponctuelles.

    OpenStack Présentation

    GNU/Linux est né entre deux projets : le noyau Linux créé par Linus Torvalds et des outils systèmes du projet GNU. De la même manière, l'entreprise Rackspace a créé un service de stockage (Swift) et a besoin d'un système pour la gestion de la virtualisation automatique. Des employés de la NASA créent une solution toute trouvée : Nova. Ainsi, en 2010, OpenStack est né de 2 services : Nova et Swift.

    OpenStack est sous licence Apache 2.0, licence de logiciel libre. Elle n'est pas Copyleft.

    Historique des versions

    Avec un rythme de quatre mois puis de six mois, les versions d'OpenStack sont sorties.

    En 2011, le service Nova s'est séparé du service de gestion d'image de machine virtuelle pour créer un nouveau service : Glance.

    En avril 2012, un nouveau service apparaît : Horizon. C'est l'interface web qui permet de visualiser les différents services d'OpenStack. Par ailleurs Nova se sépare du service d'identification pour créer un nouveau service : Keystone.

    En septembre 2012, la gestion réseau de Nova (nova network) commence à prendre beaucoup trop de place. Un nouveau service apparaît : Quantum. Il sera appelé par la suite Neutron. Par ailleurs, la gestion du stockage bloc de Nova explose et un nouveau service naît : Cinder.

    En 2013, deux nouveaux services apparaissent : Heat et Ceilometer. Heat est un service de gestion de l'orchestration. Ceilometer est un service de calcul de consommation de chaque client.

    En avril 2014, le service Trove apparaît. C'est un service de gestion d'instance de base de données.

    En octobre 2014, le service Sahara apparaît. C'est un service dédié au Big Data.

    Technologies communes

    Tous les services utilisent Python 2.7. Il y a un projet pour porter vers Python 3.

    Chaque service utilise une base de données relationnelle. Par défaut, il utilise MySQL mais il est possible d'utiliser une autre base de données. OpenStack utilise comme ORM : SQLAlchemy.

    Pour accéder, modifier une ressource, OpenStack utilise l'API REST qui est basée sur HTTP.

    Pour la communication entre les services et à l'intérieur des services, OpenStack utilise AMQP. Par défaut, il utilise l'implémentation en Erlang : RabbitMQ.

    Les différents composants Nova

    Développé à l'origine par la NASA, c'est le cœur d'OpenStack. Il s'occupe principalement de la gestion des hyperviseurs (ordonnanceur et gestion des machines virtuelles) et du contrôle des ressources (CPU, RAM, réseaux et stockages).

    Glance

    Glance a été extrait rapidement de Nova pour en faire un composant à entière. Il permet la gestion des images de machine virtuelles (découverte, enregistrement, récupération et états des images).

    Keystone

    Keystone permet la gestion de l'identification. L'utilisation d'un autre composant dépend de Keystone (accréditation).

    Neutron

    À l'origine ce composant s'appelait Quantum, il permet la gestion du réseau dans OpenStack. Il a des fonctionnalités réseaux avancées (tunneling, QoS, Réseaux virtuels et équilibrage de charge, etc.).

    Avec Nova, Neutron est l'élément où le développement est le plus important (voir les statistiques de stackalystics grâce notamment à l'arrivé de Cisco dans le projet.

    Swift

    Ce composant permet la gestion du stockage objet. Il a été développé avant OpenStack par Rackspace. Il est ainsi indépendant d'OpenStack et est considéré comme le composant le plus stable. Il peut s'utiliser comme frontend avec le composant Glance.

    Le stockage objet est une notion bien différente d'un stockage classique qu'on connaît sur les ordinateurs de bureau. Il n'y a pas de notion de montage de partition par exemple. Mais l'avantage principale de ce type de stockage est la disponibilité, la tolérance aux pannes et un agrandissement du stockage à l'infini. En contre-partie, il est considéré moins performant et beaucoup plus compliqué à paramétrer qu'un stockage classique. Un concurrent à Swift que vous connaissez certainement est Ceph.

    Cinder

    Ce composant permet la gestion du stockage de type bloc.

    Ironic

    Ironic est un nouveau composant du projet OpenStack. Il permet la gestion du Bare Metal c'est à dire des véritables ordinateurs et non des machines virtuelles. Il s'occupe ainsi le démarrage et l'extinction des ordinateurs. Il va utiliser des technologies comme PXE, TFTP ou IPMI par exemple.

    Horizon

    Horizon est une interface web pour la gestion d'OpenStack. Il utilise comme framework Django. Il permet ainsi de visualiser les différents composants d'OpenStack et d'agir dessus.

    Heat

    Heat est le composant d'orchestration d'OpenStack. Il permet par exemple de demander à Nova de démarrer une machine virtuelle supplémentaire en cas de charge importante de façon automatique.

    Ceilometer

    Ceilometer est le composant de facturation d'OpenStack. Il permet de calculer la consommation (CPU, RAM, données, etc) de chaque client (utile pour créer un cloud public)

    Trove

    Trove est le composant de provisionnement de bases de données d'OpenStack. Il prend en charge MySQL, PostgreSQL, MongoDB. Depuis kilo, il prend par ailleurs en charge Vertica et Vertica Cluster, DB2 et CouchDB.

    Sahara

    Sahara est le composant pour le Big Data d'OpenStack. Il permet d'utiliser Hadoop avec OpenStack.

    Télécharger ce contenu au format Epub

    Lire les commentaires

    Loi de finances 2016 en France : des nouvelles du front

    4 février, 2016 - 19:43

    La loi de finances 2016 en France dispose d’un article 88 qui vise à réglementer le secteur des logiciels d’encaissement.

    Citons‐en la partie essentielle :

    Lorsqu’elle enregistre les règlements de ses clients au moyen d’un logiciel de comptabilité ou de gestion ou d’un système de caisse, utiliser un logiciel ou un système satisfaisant à des conditions d’inaltérabilité, de sécurisation, de conservation et d’archivage des données en vue du contrôle de l’administration fiscale, attestées par un certificat délivré par un organisme accrédité dans les conditions prévues à l’article L115-28 du code de la consommation ou par une attestation individuelle de l’éditeur, conforme à un modèle fixé par l’administration.

    Alerté au début de l’été 2015, votre humble serviteur a entamé depuis octobre 2015 une action vis‐à‐vis de cet article potentiellement nuisible au logiciel libre et qui entrerait en vigueur le 1er janvier 2018.

    La coordination principale a lieu sur la liste comptabilite@ de l’April, liste ouverte à tous sans besoin d’adhésion à l’association.

    TL;DR

    Nous avons été reçus par Infocert, société de certification, et le Gouvernement. Nous avons reçu une écoute attentive. Les problèmes que nous soulevons ont été reconnus comme vrais. Le front est situé autour de la liberté de modification et de la notion d’éditeur d’un logiciel communautaire.

    Aucun engagement concret n’a cependant été pris.

    Où en étions‐nous ?

    La dernière fois que je me suis exprimé en ce lieu, la loi n’était pas votée. Je n’avais rencontré personne, l’action se cantonnant à des contacts téléphoniques avec le cabinet du secrétaire d’État au budget.
    Beaucoup des conclusions présentes dans les commentaires, renforcées par des échanges sur la liste comptabilité se sont avérées.

    Accélération et préparation

    Alerté par du remous sur Internet, le Gouvernement a pris contact. Un échange rapide a conclu à un engagement de rencontre en janvier, engagement qui s’est réalisé.
    Je suis également rentré en contact avec Infocert, seul organisme proposant une certification en rapport à cette loi. Il y a eu deux rencontres fin janvier.

    Une intervention dans l’Écho des gnous, émission FM sur radio Campus Lille, avait mobilisé la communauté.
    Les échanges sur comptabilite@ mais, aussi surprenant que ce soit, également sur LinuxFr.org, ont été productifs.
    Un article sur Numerama a donné de la visibilité au sujet, produisant des retours.

    Je me suis mis en rapport avec l’April qui, mixé aux analyses juridiques de l’avocate de Scil (éditeur du logiciel Pastèque), a été indispensable sur le plan juridique et politique.

    Rencontre avec Infocert

    Infocert confirme : la norme Logiciel de gestion et d’encaissement a précédé la loi.

    Infocert reconnaît qu’en l’état, les sujets du logiciel libre, du cloud et des tablettes (dans cet ordre) sont à creuser. Infocert a indiqué que la certification serait revue aux lumières des précisions apportées par le Gouvernement autour de la loi.

    Infocert invite les acteurs du monde libre à rejoindre son Club Access (ce n’est pas gratuit) afin de débattre du sujet.

    Rencontre avec le Gouvernement

    L’équipe de l’April et moi‐même avons été reçus au ministère des finances. Les participants du côté de l’État soulignent a minima une considération sérieuse pour le sujet.

    Nous venions avec trois points principaux et des sujets connexes.

    Les trois points principaux :

    1. Protection des éditeurs de logiciels libres en cas de dévoiement du logiciel par un utilisateur. A priori, ce point est déjà assuré par plusieurs principes juridiques. Pour résumer, un constructeur de vélos ne sera jamais mis en cause pour un problème lié aux bricolages d’une personne sur son vélo.
    2. Protection du droit à modifier un logiciel : la loi ne doit pas empêcher un utilisateur d’apporter des modifications à un logiciel, y compris aux sections concernant les données. Nous avons émis des propositions, elles ont été prises en note.
    3. Proposition de télétransmission des données en temps réel (déclarations TVA, signatures comptables) : cela a été repoussé à après la mise en œuvre de la loi actuelle. Ce point est une manœuvre pour réduire la complexité de la vérification de l’intégrité des données locales dans un environnement logiciel totalement ouvert.

    Les sujet connexes :

    • Définition de la notion d’éditeur de logiciel. Rien n’existe dans la loi à ce propos, cela a été reconnu. Ce point est pourtant plein de conséquences pour les projets libres communautaires et, mais on s’en fout, pour les systèmes d’information propriétaires complexes avec plusieurs intervenants.
    • Question du commerce électronique : est‐il concerné ? Si oui, la masse de personnes concernées serait énorme.
    • Retour sur la loi de 2013 de lutte contre la fraude, qui contient des dispositions récusées par l’April.
    • Retour sur le rejet de la priorité au logiciel libre.

    Nous n’avons pas abordé la question de la conservation de données privées. Nous passerons le sujet à la Quadrature du Net quand cette dernière aura un peu plus d’air ; l’état d’urgence est toujours l’actualité.

    Le Gouvernement lancera prochainement une consultation dans le but de clarifier tous les points flous de la loi d’ici au mois de juin 2016. Nous l’avons invité à le faire en ligne.

    Piste bonus

    Nous en sommes restés coi : un de nos interlocuteurs, inspecteur général des impôts, nous a dit avoir lu les commentaires de la dépêche LinuxFr.org précédente.

    Télécharger ce contenu au format Epub

    Lire les commentaires

    saloon : débuter simplement une application web avec erlang et angular

    4 février, 2016 - 09:41
    Le problème des piles pour applications web

    Si vous avez déjà cherché à développer une appli web moderne, vous avez déjà dû vous heurter à la question de choisir les bons composants parmi la foultitude de ceux existants… et surtout les faire fonctionner.

    Premièrement, quand je parle d'applis web modernes, il faut savoir qu'elles partagent en général cette architecture :

    • un serveur HTTP,
    • un cadriciel pour exposer des API REST,
    • un cadriciel JavaScript pour la partie frontend: il consomme les API REST et met en forme les données en HTML,
    • un système de construction (build), ou plutôt des, la partie serveur et la partie frontend utilisant en général un système différent.

    Bref, il fait fonctionner tout cela ensemble, vérifier les incompatibilités, etc.

    Les générateurs d'applications yeoman

    Le projet yeoman vise à fournir des générateurs d'applications qui intègrent des piles complètes et prêtes à l'emploi dans le domaine des applis web. Même si le projet est issu de la communauté node.js, on peut aisément écrire des générateurs pour n'importe quelle techno.

    saloon, faites entrer le cowboy

    Le générateur saloon (licence Apache v2) est un générateur yeoman pour débuter simplement une application web avec erlang et angular.

    Il intègre les composants suivants:

    • partie serveur:
    • partie frontend:
      • bootstrap pour des composants graphiques pas trop moches,
      • angular.js, le cadriciel bien connu pour faire des applis web dynamiques,
      • Sass pour faciliter l'écriture de CSS,
    • intégration / construction: un projet généré avec saloon est construit avec make et intègre:
      • pour la partie serveur: erlang.mk, l'excellent Makefile pour erlang,
      • pour la partie javascript:
      • Bower pour les dépendances javascript,
      • Grunt pour la partie javascript qui a besoin d'être construite.
    Comment se lancer ?

    Il vous suffit de lancer yo saloon dans un répertoire vide, puis de lancer make. Vous avez alors une appli prête à l'emploi que vous pouvez modifier / étendre comme bon vous semble. Mais toutes les bases sont là et fonctionnelles.

    Télécharger ce contenu au format Epub

    Lire les commentaires

    Wikipédia a soufflé ses 15 bougies

    2 février, 2016 - 23:03

    L’encyclopédie collaborative libre Wikipédia a fêté ses 15 ans mi‐janvier. Forte de cinq millions d’articles en anglais, de dix autres langues avec plus d’un million d’articles chacune (dont l’allemand avec 1,8 millions et le français avec 1,7 millions) et globalement plus de 35 millions de pages en 291 langues, ce recueil d’informations et de connaissances, tour à tour adulé et décrié, devenu L’encyclopédie, poursuit son chemin. 28 % des Terriens n’ont jamais connu un monde sans ce commun informationnel (source Fondation Wikimédia).

    Quelques informations en vrac :

    • la Fondation Wikimédia a mis en ligne un site dédié aux 15 ans, comportant de nombreux témoignages ;
    • pour soutenir l’encyclopédie en cas de problème, elle a aussi annoncé la création d’un fonds de 100 millions de dollars sur dix ans ;
    • le budget annuel est d’environ 76 millions de dollars, à 95 % financé par les dons privés ;
    • courant janvier, une polémique a eu lieu autour d’Arnnon Geshuri, un membre du conseil d’administration de Wikimedia qui a démissionné, suite à des ennuis judiciaires liés à sa carrière dans les ressources humaines chez Google et après un vote de défiance de la communauté ;
    • courant janvier, une autre information largement relayée par la presse : une adresse IP du ministère français de l’Intérieur a été suspendue par Wikipédia pour « attitude non collaborative (…) passage en force et foutage de gueule. » ;
    • Wikimédia France comporte environ 400 membres et emploie une quinzaine de salariés ;
    • Wikimédia France a milité auprès des parlementaires pour la liberté de panorama dans le cadre de la loi sur le numérique d’Axelle Lemaire ;
    • le projet Wikidata de données sémantiques poursuit sa route et devrait bientôt comporter 16 millions d’éléments réutilisables ;
    • le Québec serait un « parent pauvre de Wikipédia » (et un sujet local de polémique) ;
    • Wikipédia manquerait de femmes (près de 90 % des contributeurs seraient des hommes) ;
    • Wikipédia sert de rubrique nécrologique.
    Télécharger ce contenu au format Epub

    Lire les commentaires

    Revue de presse de l'April pour la semaine 4 de l'année 2016

    1 février, 2016 - 14:54

    La revue de presse de l'April est régulièrement éditée par les membres de l'association. Elle couvre l'actualité de la presse en ligne, liée au logiciel libre. Il s'agit donc d'une sélection d'articles de presse et non de prises de position de l'association de promotion et de défense du logiciel libre.

    Sommaire

    [LeDevoir.com] Le logiciel libre, remède à l’opacité des algorithmes

    Par Mathieu Gauthier-Pilote, le vendredi 29 janvier 2016. Extrait:

    Dans un texte publié dans Le Devoir du 12 janvier («Uber et le nécessaire contrôle social des algorithmes»), le chercheur Yves Gingras soulevait la question fort pertinente de l’opacité des algorithmes utilisés par les services numériques auxquels nous sommes de plus en plus habitués dans notre société (par exemple Uber). Le sujet était à nouveau discuté à l’émission de radio Médium large le 14 janvier. Cet enjeu nous interpelle en tant que citoyens et militants de l’informatique libre.

    Lien vers l'article original: http://www.ledevoir.com/societe/science-et-technologie/461474/le-logiciel-libre-remede-pratique-a-l-opacite-des-algorithmes

    [Numerama] Recours et menace de plainte après l'accord entre Microsoft et l'Éducation nationale

    Par Guillaume Champeau, le vendredi 29 janvier 2016. Extrait:

    Un collectif de défense de l'utilisation des logiciels libres dans l'éducation a déposé un recours contre le partenariat signé fin 2015 entre Microsoft France et l'Éducation nationale. Ses avocats menacent de déposer plainte au pénal pour favoritisme contre la ministre Najat Vallaud-Belkacem si l'accord n'est pas annulé.

    Lien vers l'article original: http://www.numerama.com/politique/141873-recours-et-menace-de-plainte-apres-laccord-entre-microsoft-et-leducation-nationale.html

    Et aussi:

    Voir aussi:

    [Le Monde Informatique] Google défend sa licence open source OpenJDK pour Android

    Par John Ribeiro, le mercredi 27 janvier 2016. Extrait:

    Le 24 décembre dernier, Google a discrètement sorti une version d'Android basée sur le code OpenJDK, c'est-à-dire l'implémentation open source de la plate-forme Java Standard Edition, Java SE. Mais pour Oracle, cela ne permet pas à tous les composants d'Android de bénéficier d'une licence open source. L'éditeur a porté l'affaire devant la justice.

    Lien vers l'article original: http://www.lemondeinformatique.fr/actualites/lire-google-defend-sa-licence-open-source-openjdk-pour-android-63727.html

    [Le Monde.fr] «Pretty Easy Privacy», le chiffrement automatique par défaut pour tous

    Par Yves Eudes, le mardi 26 janvier 2016. Extrait:

    Vingt-cinq ans après le PGP (Pretty Good Privacy), une équipe européenne invente le PEP, qui chiffrera tous les messages électroniques, automatiquement.

    Lien vers l'article original: http://www.lemonde.fr/pixels/article/2016/01/26/pretty-easy-privacy-le-chiffrement-automatique-par-defaut-pour-tous_4853782_4408996.html

    Et aussi:

    [Le Telegramme] Ils veulent «dégoogliser» Internet

    Par la rédaction, le mardi 26 janvier 2016. Extrait:

    Big Brother se cache-t-il derrière les géants du web? C'est l'objet des rencontres organisées jusqu'à ce soir à Brest, avec le soutien de la Ville. Parmi les invités, l'association Framasoft, qui souhaite «dégoogliser» Internet.

    Lien vers l'article original: http://www.letelegramme.fr/finistere/brest/forum/ils-veulent-degoogliser-internet-26-01-2016-10934027.php

    [Bloomberg] Get Ready for Patent Wars as IP Europe Consortium Is Unveiled

    Par Marie Mawad, le mardi 26 janvier 2016. Extrait:

    (Certains des plus gros producteurs de propriété intellectuelle forment une équipe afin de battre en faveur de règles qui les aideront à mieux monétiser l'innovation) Some of Europe’s biggest producers of intellectual property are teaming up to battle for rules that’ll help them cash in better on innovation. Telecommunications network builder Ericsson AB, plane maker Airbus Group SE, French phone company Orange SA and train maker Alstom SA are among companies behind IP Europe, a consortium due to be unveiled today in Brussels.

    Lien vers l'article original: http://www.bloomberg.com/news/articles/2016-01-26/get-ready-for-patent-wars-as-ip-europe-consortium-is-unveiled

    [ZDNet France] OS souverain: le choix Linux pour nos lecteurs

    Par la rédaction, le lundi 25 janvier 2016. Extrait:

    Les ambitions françaises de plancher sur un éventuel OS souverain pourraient s'articuler autour de l'approche libre de Linux. D'ailleurs, une version dédiée et sécurisée de l'OS est déjà proposée aux opérateurs d'importance vitale par l'Anssi.

    Lien vers l'article original: http://www.zdnet.fr/actualites/os-souverain-le-choix-linux-pour-nos-lecteurs-39831642.htm

    Et aussi:

    Télécharger ce contenu au format Epub

    Lire les commentaires

    La recherche locale avec OscaR.cbls, expliquée à mon voisin (Belgique, Mons, 18 février 2016)

    1 février, 2016 - 14:40

    Ce jeudi 18 février 2016 à 19h se déroulera la 46e séance montoise des Jeudis du Libre de Belgique.

    Le sujet de cette séance : La recherche locale avec OscaR.cbls, expliquée à mon voisin

    Thématique : algorithmique, optimisation, programmation, développement

    Public : développeurs, étudiants, enseignants

    L’animateur conférencier : Renaud De Landtsheer (CETIC)

    Lieu de cette séance : Université de Mons, Faculté Polytechnique, Site Houdain, Rue de Houdain, 9 – cf. ce plan sur le site de l’UMONS, ou la carte OSM). Entrée par la porte principale, au fond de la cour d’honneur. Suivre le fléchage à partir de là.

    La participation sera gratuite et ne nécessitera que votre inscription nominative, de préférence préalable, ou à l’entrée de la séance. Merci d’indiquer votre intention en vous inscrivant via la page http://jeudisdulibre.fikket.com/. La séance sera suivie d’un verre de l’amitié (le tout sera terminé au plus tard à 22h).

    Description : OscaR est une bibliothèqe libre pour résoudre des problèmes d’optimisation. OscaR propose plusieurs moteurs d’optimisation : la recherche locale basée sur les contraintes, la programmation par contraintes et la programmation linéaire. OscaR est implémenté en Scala.

    Après un aperçu général des différents moteurs d’OscaR, cet exposé se concentrera sur le moteur de recherche locale basée sur les contraintes. Il en présentera d’abord les grands principes et l’architecture du moteur avant de se concentrer sur la couche déclarative permettant de définir aisément les contraintes et la fonction objectif du problème mais aussi d’exprimer de manière compacte des procédures de recherche locale.

    Nous montrerons comment ces mécanismes ouverts et extensibles fournissent un cadre productif pour le développement de solutions efficaces à des problèmes d’optimisation de grande taille, et montreront leur application à un module d’optimisation de routage de véhicules.

    Les Jeudis du Libre à Mons bénéficient aussi du soutien de nos partenaires : CETIC, Normation, OpenSides, MeaWeb et Phonoid.

    Si vous êtes intéressé(e) par ce cycle mensuel, n’hésitez pas à consulter l’agenda et à vous inscrire sur la liste de diffusion afin de recevoir systématiquement les annonces.

    Pour rappel, les Jeudis du Libre se veulent des espaces d’échanges autour de thématiques des Logiciels Libres. Les rencontres montoises se déroulent chaque troisième jeudi du mois, et sont organisées dans des locaux et en collaboration avec des Hautes Écoles et Facultés Universitaires montoises impliquées dans les formations d’informaticiens (UMONS, HEH et Condorcet), et avec le concours de l’A.S.B.L. LoLiGrUB, active dans la promotion des logiciels libres.

    Télécharger ce contenu au format Epub

    Lire les commentaires

    Bibliothèque de génération et de manipulation de formes libsdl2_gfxutils

    1 février, 2016 - 10:42

    J'annonce de part ce présent message, la réécriture de la bibliothèque de génération et de manipulation de formes libSDL2_gfxutils. Elle est publiée sous GPLv3.

    Sommaire SDL2_gfxutils Résumé de la bibliothèque SDL2_gfxutils
    • Version actuelle : 2.0.0
    • Plateformes cibles : Linux, Windows et normalement tous les compatibles Posix (non testé)
    • Compilateurs : gcc, g++, clang, mingw32, mingw-w64-686, mingw-w64-x86_64.
    • Licence : GPLv3
    • Auteur : Eddie Brüggemann (mrcyberfighter CHEZ gmail)
    La petite histoire de SDL2_gfxutils

    SDL2_gfxutils est issue d'une collection de fonctions de génération de formes implémentée pour des besoins personnels.

    À chaque fois que j'avais une idée de forme dans la tête j'essayais de l'implémenter - pendant plusieurs années…

    J'ai commencé par écrire des fonctions Python avec le module pygame qui est basé sur la bibliothèqe SDL, étant parti d'une fonction qui calcule la position d'un pixel selon un rayon et un angle.

    SDL2_gfxutils a été écrit une première fois sous forme de bibliothèque C complémentaire à SDL2_gfx (dont les fonctions sont utilisées uniquement pour l'affichage) et je me suis sacrément trompé en tronquant les données vers le type requis par SDL2_gfx: int16_t.

    Mais SDL2_gfxutils a été entièrement réécrit et amélioré par la même occasion pour nous donner cette nouvelle implémentation, compatible C++.

    La nouvelle implémentation de SDL2_gfxutils

    Toutes les fonctions génératrices de formes retournent un pointeur sur un type spécifique SDL2_gfxutils (Polygon, Star, …) compatible avec le type générique Form.

    Les pointeurs permettent de manipuler les formes générées pour les transformer par rotation, translation, mise à l'échelle et effet miroir, facilement.

    Les pointeurs peuvent bien sur être détruits à volonté et cette mécanique est utilisée massivement dans la génération de forme.

    Le type générique Form a changé pour contenir des coordonnées de type float, à la place de int16_t. Le calcul pour les rotations, translations, mise à l'échelle et effet miroir s'exécute correctement maintenant.

    Avant les int16_t étaient doublés en interne pour les calculs. D'ailleurs si le cœur vous en dit il suffit de remplacer chaque occurrence du mot float par le mot double dans les fichiers source pour opérer en double précision (cela se fait en 5 minutes avec un éditeur de texte).

    Les membres du sous-type Pixel sont de type float maintenant.

    • Certaines fonctions ont été enlevées, devenues inutiles avec la mécanique des pointeurs ;
    • D'autres fonctions ont été ajoutées, pour remplacer les fonctionnalités perdues, avec beaucoup d'avantages, surtout pour l'animation dans la boucle principale d'affichage ;
    • Toutes les fonctions ont été améliorées grâce à la mécanique des pointeurs de libSDL2_gfxutils.
    Présentation de libSDL2_gfxutils.

    SDL2_gfxutils est une extension de SDL2_gfx pour aider à la création et animation (d'images fantastiques que vous pouvez imaginer.) SDL2_gfxutils fournit diverses fonctions pour divers usages:

    Il est facile d'adapter SDL2_gfxutils pour être compatible avec d'autres bibliothèques que SDL2_gfx. Il suffit de changer les fonctions d'affichages_.

    Opérations de transformation de formes

    Il vaut mieux passer des valeurs entières ou de faible précision sinon si l'on boucle cela risque de perturber libsdl2_gfxutil.

    Changement de paramètres de formes: les setters
    • Changer le centre de gravité de la forme (Form) avec translation optionnelle des coordonnées ;
    • Changer le rayon de la forme (Form) ce qui équivaut à une mise a l'échelle en mettant la valeur directement (sans passer par un facteur de mise à l'échelle) ;
    • Assigner une nouvelle couleur à une forme (Form) ou ligne (Line).
    Récupérer les paramètres d'une forme: les getters
    • Récupérer le pixel (Pixel) central courant de la forme (Form) ;
    • Récupérer la couleur (Color) de la forme (Form) ;
    • Récupérer le rayon de la forme ;
    • Récupérer l'orientation courante de la forme ;
    • Récupérer le membre real_length de la forme (Form) qui correspond au point le plus éloigné du centre (utilisable par exemple pour les collisions formes).

    Il n'est pas toujours évident d'associer la notion de rayon à certaines formes.

    Affichage des formes

    Chaque type de forme (Form) a ses propres fonctions d'affichage (sinon vous pouvez vous servir de celle que vous désirez mais le résultat sera indéfini et vous aurez des surprises.
    Pour chaque fonction d'affichage il existe une version anti-crénelage et une version pour assigner l'épaisseur du trait, excepté pour l'affichage en plein.

    Longueur et distance entre 2 pixels
    • Mesurer la longueur d'une ligne (Line)
    • Récupérer le milieu d'une ligne (Line)

    Enfin, cette extension à SDL2_gfx peut, de part sa structure, facilement être adaptée à d'autres bibliothèques que la SDL2.

    Télécharger ce contenu au format Epub

    Lire les commentaires

    Formation OpenCL en contribuant à GIMP

    1 février, 2016 - 09:36

    L'encyclopédie Wikipédia introduit OpenCL ainsi:

    OpenCL (Open Computing Language) est la combinaison d'une API et d'un langage de programmation dérivé du C, proposé comme un standard ouvert par le Khronos Group. OpenCL est conçu pour programmer des systèmes parallèles hétérogènes comprenant par exemple à la fois un CPU multi-cœur et un GPU. OpenCL propose donc un modèle de programmation se situant à l'intersection naissante entre le monde des CPU et des GPU, les premiers étant de plus en plus parallèles, les seconds étant de plus en plus programmables.

    Il s'agit donc d'une API permettant d'améliorer les performances algorithmiques en parallélisant les calculs complexes sur les périphériques divers présents de nos jours sur les ordinateurs (CPU, GPU…).
    Côté pilotes, le support de cette API sur Linux fut notamment détaillé il y a quelques jours dans un autre article. Si vous êtes plutôt intéressé par le côté "utilisation" d'OpenCL, pour l'intégrer par exemple dans vos propres programmes, la société StreamComputing lance l'initiative "OpenCL training" (en français: "formation OpenCL") proposant une formation gratuite (à distance, par Internet interposé), avec GEGL — le nouveau moteur de traitement d'image de GIMP — comme "support de cours".

    La ruse est donc de vous faire contribuer à GEGL tout en vous enseignant la technologie OpenCL. Moi je dis que c'est "double victoire", mais certains pourraient prétendre que les libristes sont fourbes! :P

    Offre limitée

    Le but de l'initiative est d'enseigner OpenCL et d'y intéresser les développeurs. L'initiative accepte pour le moment un maximum de 20 participants (7 sont déjà inscrits).

    "gratuit" n'existe pas

    Le marché est le suivant: l'assurance qu'à la fin de la formation, vous saurez programmer OpenCL en échange de votre contribution à des projets libres utilisant OpenCL.

    À ce jour, le "support de cours", c'est à dire le projet libre auquel vous contribuerez, est la plateforme de traitement d'image GEGL, utilisé notamment par GIMP, G'Mic, GNOME photos (voir cette très cool vidéo pour avoir un aperçu du futur de GNOME photos propulsé par GEGL), MyPaint…
    Il est clairement indiqué sur la plateforme de développement (un projet sur Github) que GIMP/GEGL est le premier projet de portage officiel. D'autres projets similaires pourront donc voir le jour à l'avenir, dans le but d'enseigner OpenCL aux développeurs.

    C'est donc un échange de service, plutôt que financier.

    Organisation

    Le projet est organisé par Vincent Hindriksen et Adel Johar qui souhaitent baser leur enseignement sur la gamification du développement en évaluant les vitesses d'exécution des kernels OpenCL (un kernel est une fonction OpenCL qui sera exécutée sur un périphérique) pour comparer des implémentations, et ainsi faire ressortir des "vainqueurs". Ils souhaitent également travailler l'optimisation des kernels pour pousser aux limites d'OpenCL.

    On peut donc s'attendre à ce que les participants devraient bien connaître OpenCL à la suite de cette formation.

    Victor Oliveira, le développeur GEGL qui a écrit la majeure partie du code OpenCL dans GEGL, participe au projet en tant que "conseiller".

    À propos de StreamComputing

    StreamComputing est une société néerlandaise de développement logiciel, apparemment spécialisé (en se référant au site web) à l'optimisation, aux algorithmes et à la connaissance matérielle.
    Ils fournissent du service, de la consultation logicielle et des formations dans les domaines de la programmation GPU et du traitement parallélisé.

    Note: l'auteur de cette dépêche n'a aucune relation avec cette société et ne la connaissait même pas avant cette annonce. Je ne fais que relayer l'information.

    Télécharger ce contenu au format Epub

    Lire les commentaires

    Les membres du collectif Édunathon demandent l’annulation de l’accord entre Microsoft et l’Éducation

    1 février, 2016 - 09:34

    Les membres du collectif Édunathon ont demandé le jeudi 28 janvier 2016 l’annulation de l’accord entre Microsoft et l’Éducation Nationale française.

    Le 30 novembre 2015, Madame Najat Vallaud-Belkacem, Ministre française de l’Éducation Nationale a signé un accord avec Microsoft France d’un montant de 13 millions d’euros pour fournir "gratuitement" ses logiciels et ses services, notamment en ce qui concerne :

    • L’accompagnement et la formation des élèves et des enseignants ;
    • La mise à disposition de solutions pour une utilisation « intelligente, facile et optimale » des équipements mobiles ;
    • Des solutions de « cloud » ;
    • Une expérimentation pour l’apprentissage du code ;
    • Une aide aux acteurs français de l’e-éducation.

    La contrepartie informelle de cette offre apparemment généreuse est que la majorité des acteurs de l’éducation va désormais commencer à devoir s’équiper en technologies Microsoft, soit parce qu’ils y auront été formés, soit parce qu’ils auront été incités à utiliser le cloud et les autres services de Microsoft. Autrement dit, Microsoft est prêt à vendre à perte – voire à fournir ses services gratuitement – pour expulser les nombreuses entreprises françaises et européennes du secteur et acquérir une position la plus monopolistique possible sur le marché français de l’éducation. À l’heure où le gouvernement se bat péniblement pour imposer le principe « d’autonomie informationnelle » dans la loi numérique portée par Madame Axelle Lemaire, Secrétaire d'État chargée du Numérique, la situation est pour le moins étonnante.

    Ainsi, les nombreuses entreprises françaises qui proposent des services concurrents dans le domaine de la formation, du cloud, des logiciels bureautiques, etc. se retrouvent brutalement exclues de ces marchés en raison du dumping mis en place par le Ministère. C’est d’ailleurs ce qui est en train de se produire au sein de nombreuses directions d’achat du Ministère de l’Éducation qui revoient leurs catalogues pour privilégier désormais les produits Microsoft. Même économiquement, l’équation est négative puisque de nombreux budgets de l’éducation dépendent des collectivités territoriales et non du Ministère lui-même. La gratuité revendiquée par la Ministre n’est qu’une illusion.

    Unanimement dénoncé par le secteur, le choix du Ministère de ne pas suivre les procédures des marchés publics est incompréhensible – et ce d’autant plus que Microsoft France est une société coutumière des redressements fiscaux – 52,5 millions en 2014 et déjà 16,4 millions en 2015. En acceptant qu’un géant international du numérique fournisse gratuitement les mêmes services que ses compétiteurs locaux, en refusant de considérer qu’il s’agit de marchés ayant une valeur, le Ministère dévalorise d’un coup les années de travail de nombreux entrepreneurs et met en danger l’emploi de l’intégralité de ce secteur stratégique pour le futur. Qu’il s’agisse des prestations de formation, des cours de code, du cloud ou des logiciels de bureautique, ces services et ces produits auraient dû faire l’objet d’une mise en concurrence par le Ministère.

    En refusant de la faire, en acceptant d’honorer une pratique déloyale et en signant un accord industriellement dangereux avec Microsoft France, la Ministre, Madame Najat Vallaud Belkacem s’est placée dans l’illégalité au regard du Code des marchés publics. À défaut d’annuler cet accord, elle risque là une condamnation pour atteinte à la liberté d’accès et à l’égalité des candidats dans les marchés publics (article 432-14 du Code Pénal), voire pour favoritisme (article 432-10 du Code Pénal).

    C’est pour cette raison que les membres du collectif EduNathon ont choisi de porter l'affaire en justice. Cette action est engagée pour défendre le service public, pour préserver le droit des élèves et des enseignants à disposer de leurs données et de leur autonomie informationnelle, pour soutenir l’équité des entreprises et acteurs économiques du numérique, et notamment les jeunes entreprises émergentes françaises et européennes sur les grands chantiers portés par l’État français et les institutions publiques.

    Quelques membres du collectif EduNathon :

    • Le CNLL (Conseil National du Logiciel Libre) regroupe 13 associations régionales d’Entreprises du Numérique Libre (ENL) et clusters dédiés aux logiciels libres et à l’open source. Le CNLL représente plus de 400 entreprises dont leurs cœurs de métiers sont les Logiciels Libres et/ou l’Open Source.

    • La Mouette est une association défendant l’économie sociale et solidaire par le biais notamment de l’utilisation des formats ouverts et de solutions bureautiques libres pour le poste de travail dans le monde professionnel, le monde éducatif, comme le monde privé à la maison. Elle regroupe des adhérents dans toute la France et le monde francophone, de type collectivités, prestataires engagés et particuliers.

    • Le Ploss-RA est l’association des professionnels du Numérique Libre de la région Auvergne Rhône-Alpes et membre fondateur du CNLL. L’association regroupe 40 entreprises. Elle a pour objectif de favoriser la coopétition entre ses membres afin de promouvoir et renforcer l’industrie du numérique Libre et Ouvert.

    Télécharger ce contenu au format Epub

    Lire les commentaires

    Les pilotes graphiques libres : rétrospective et vue sur l’avenir

    30 janvier, 2016 - 22:52

    Cette année 2015 fut très riche et très excitante au sujet des pilotes graphiques libres. Grosse nouveauté, Mesa 3D 11 a été annoncée le 12 septembre 2015, avec une prise en charge d’OpenGL 4.2, après une très longue stagnation en version 3.3.

    Cette dépêche fait donc la part belle aux récentes nouveautés de Mesa 3D, mais s’attarde aussi sur les actualités des puces graphiques embarquées, et se permet quelques incursions du côté de certains pilotes propriétaires dans leur collaboration avec les projets libres ou leurs initiatives qui profitent à tous.

    Pour finir, nous nous permettrons d’annoncer quelques actualités à venir ayant pris racine en 2015.

    Merci à tous les contributeurs de cette rétrospective !

    Sommaire

    Après des années de stagnation à n’annoncer que la prise en charge d’OpenGL 3.3, les développeurs de la bibliothèque Mesa 3D ont annoncé fin 2015 la prise en charge d’OpenGL 4.2 ! Actuellement, seuls les pilotes radeonsi et nouveau (pour les processeurs graphiques Fermi NVC0) prennent en charge OpenGL 4.1. Aucun pilote matériel ne prend encore en charge OpenGL 4.2 et les autres pilotes restent encore à OpenGL 3.3. Mais cela arrive vite ! Pourquoi un tel saut ? Qu’est‐ce que cela signifie ? Comment en profiter ? On fait le tour !

    En attendant l’inclusion dans les dépôts officiels des distributions, les plus intrépides peuvent déjà bénéficier de toutes ces avancées en utilisant des dépôts tiers (comme les dépôts padoka et oibaf sur Ubuntu).

    Nouveautés de Mesa 3D à la lumière du trio AMD, Intel & NVIDIA Un peu d’histoire

    Pourquoi la pile graphique Mesa 3D est‐elle passée d’un coup de la prise en charge d’OpenGL 3.3 à OpenGL 4.1 sans passer par l’étape intermédiaire 4.0 ? En réalité, comme on peut le voir sur l’excellente page mesamatrix.net (merci Creak<), chaque version d’OpenGL est une liste de différentes extensions à implémenter. Or, elles ne sont pas nécessairement implémentées dans l’ordre, ou bien elles le sont dans un ordre différent de celui auquel on pourrait s’attendre.

    C’est pourquoi, par exemple, on peut voir que le pilote Intel i965 a une certaine avance sur ses concurrents de chez NVIDIA et AMD concernant la prise en charge d’OpenGL 4.2 (les extensions 4.2 sont toutes implémentées), mais comme il lui reste à implémenter une extension 4.0 et une extension 4.1, il reste bloqué à la version 3.3. Il en était exactement de même pour les pilotes nouveau et radeonsi qui stagnaient en 3.3 malgré de nombreuses extensions 4.0 et 4.1 implémentées.

    C’est pour cette raison que, bien que Mesa 3D annonce déjà la prise en charge d’OpenGL 4.2, en réalité, vous ne pourrez pas en bénéficier, car aucun pilote matériel n’est encore à ce niveau‐là…

    Si Intel est encore en 3.3 (bouh, même les reverseux font mieux !), il faut tout de même noter qu’ils ont la liste d’extensions implémentées la plus complète, ils ont repris la tête du peloton après s’être fait temporairement doubler par le projet nouveau.

    Si l’on est attentif, on remarque qu’en réalité Intel priorise la prise en charge d’OpenGL ES 3.1, qui regroupe un sous‐ensemble d’extensions communes à différentes versions d’OpenGL. On comprend donc pourquoi la prise en charge des extensions semble désordonnée malgré un grand nombre d’extensions développées… Intel est actuellement la seule plate‐forme à prendre entièrement en charge OpenGL ES 3.1, on ne peut pas être partout à la fois !

    Pour bénéficier d’une prise en charge d’OpenGL supérieure à 3.3, il ne suffit pas d’utiliser une version récente de Mesa 3D, il faut que Mesa 3D ait été compilé avec une version récente de LLVM (plus de détails sont fournis ci‐après).

    Mesa 3D 11.0

    De gros changements du côté de Mesa 3D ont fait les titres à l’été 2015.

    Le 23 juillet 2015, Dave Airlie a ajouté à Mesa 3D la prise en charge de l’extension ARB_shader_subroutine, qui était la dernière qui restait à implémenter pour que Mesa 3D annonce la prise en charge d’OpenGL 4.0. Au même moment, Ilia Mirkin envoyait du code pour la prise en charge du pavage (tesselation) pour les cœurs graphiques Intel, et Marek Olšák en faisait de même pour les cœurs et cartes graphiques AMD.

    Mais cela ne s’arrêtait pas là, car à cet instant il ne manquait plus à Mesa 3D qu’une seule extension pour annoncer la prise en charge d’OpenGL 4.1 : GL_ARB_shader_precision, et une seconde extension pour annoncer la prise en charge d’OpenGL 4.2 : ARB_shader_image_load_store.

    Tout cela est arrivé très vite : Dave Airlie annonça la prise en charge d’OpenGL 4.1 le 28 juillet, et l’extension ARB_shader_image_load_store fut ajoutée le 11 août. Ainsi, la liste des extensions nécessaires fut enfin complète pour annoncer la prise en charge d’OpenGL 4.2.

    Jusque‐là, Mesa 3D n’annonçait donc que la prise en charge d’OpenGL 3.3. Certains proposaient de renommer Mesa 3D 10.7 en Mesa 3D 11, qui allait être distribué en septembre. Il faut dire que ça valait le coup ! Emil Velikov sanctionna cette numérotation le premier août et publia Mesa 3D 11.0 le 12 septembre.

    Mais attention, le pilote Gallium3D radeonsi (le pilote qui gère les puces graphiques Radeon basées sur l’architecture Graphics Core Next, ou GCN) utilise un compilateur de shader construit à partir de LLVM. L’architecture GCN étant utilisée par toutes les cartes graphiques d’AMD depuis les Radeon HD 7xxx, pour prendre en charge OpenGL 4.0, Mesa 3D devait être compilé avec LLVM 3.6.2, tandis que pour OpenGL 4.1 et supérieur, Mesa 3D devait être compilé avec LLVM 3.7, qui était alors annoncée pour fin août. C’est finalement le premier septembre qu’Hans Wennborg a annoncé la publication de LLVM 3.7, ce qui a enfin permis au public libriste de bénéficier d’OpenGL 4.x.

    Mesa 3D 11.1

    Mesa 3D 11.1 voit l’arrivée d’un tout nouveau pilote nommé VirGL basé sur Gallium3D. Ce pilote permet à une machine virtuelle de bénéficier de l’accélération matérielle de la machine hôte. Pour en bénéficier, il faut utiliser un noyau Linux 4.4 (qui n’est sorti qu’en janvier 2016) et un QEMU récent.

    Pour rester du côté de la virtualisation, le pilote VMware (VMWgfx) prend désormais en charge OpenGL 3.3.

    Du côté de la bibliothèque de calcul intensif exécuté sur processeurs graphiques, OpenCL, le travail a commencé pour les cartes NVIDIA des générations Tesla NV50 et Fermi NVC0. Très peu de choses sont implémentées pour le moment, mais c’est encourageant.

    Le pilote Intel permet désormais l’anticrénelage 16× MSAA (à partir des processeurs Skylake).

    AMD a contribué à la gestion du décodage H.265/HEVC pour Gallium3D, accessible via l’interface VA-API.

    Côté plate‐forme ARM, le pilote Freedreno prend désormais en charge OpenGL 3.1, et le pilote VC4 pour Raspbery Pi a été beaucoup retravaillé. Vous trouverez plus de détails concernant ces processeurs graphiques plus loin dans la dépêche.

    Adaptive Scalable Texture Compression

    Intel a publié en août 2015 du code pour prendre en charge le format ASTC à partir de la plate‐forme Skylake Gen9. ASTC, pour Adaptive Scalable Texture Compression est un format de compression de texture exempt de brevets destiné à remplacer S3TC (bardé de brevets, lui). Le principe de ces formats de compression est que la décompression est faite par la carte graphique elle‐même. Ainsi, à la différence, par exemple, d’une texture JPEG qui serait décompressée par le processeur généraliste (qui est donc mis à contribution) et qui serait ensuite envoyée décompressée à la carte graphique (ce qui consomme beaucoup de bande passante), la texture est envoyée directement compressée à la carte qui se charge de la décompresser elle‐même, économisant donc les ressources de calcul du processeur généraliste et la bande passante entre la mémoire centrale et la mémoire dédiée du processeur graphique. En plus d’être exempt de brevet, ce nouveau format est bien évidemment meilleur et a la bonne idée d’être officiellement pris en charge par les récentes spécifications OpenGL, OpenGL ES et DirectX. Les fabricants aussi expriment leurs enchantements concernant ce nouveau format, ASTC est donc le format du futur qui met tout le monde d’accord !

    Progression de l’initiative amdgpu

    En octobre 2014, lors de la XDC 2014 (X.Org developer conference), Alex Deucher a annoncé qu’AMD souhaitait augmenter le partage de code sous Linux entre le pilote libre et le pilote propriétaire. Pour cela, les développeurs allaient créer un nouveau pilote noyau nommé AMDGPU qui pourrait être utilisé aussi bien par le pilote libre Mesa 3D/Gallium3D que par un nouveau pilote propriétaire redistribué par AMD, la partie binaire et fermée étant limitée à l’espace utilisateur.

    Le 20 avril 2015, Alex Deucher publie la version initiale du pilote amdgpu. Ce nouveau pilote est créé comme une copie du pilote radeon et est ensuite adapté pour gérer les particularités des nouveaux processeurs graphiques. Il peut gérer les puces CI (Sea Islands) pour tester le pilote, mais celui‐ci est prévu pour les nouvelles cartes (Volcanic Islands et suivantes). Le pilote a été intégré dans le noyau Linux 4.2 et reçoit depuis des améliorations à chaque nouvelle version du noyau. Par exemple, une nouvelle gestion de l’alimentation appelée powerplay, destinée à remplacer DPM (Dynamic Power Management), sera intégrée à la version 4.5 de Linux. Dans le même temps, la partie libdrm a été intégrée et le pilote Gallium3D radeonsi a été mis à jour pour gérer le pilote amdgpu. En revanche, à l’heure actuelle, il n’y a pas d’information sur la publication du pilote propriétaire qui sera basé sur le pilote amdgpu. Le pilote Vulkan d’AMD devrait dans un premier temps être seulement disponible pour Linux sous forme binaire, et il est possible que le premier pilote propriétaire basé sur le pilote amdgpu sera celui intégrant Vulkan.

    Pendant ce temps, AMD a renommé sa suite de pilotes propriétaires et le centre de contrôle Catalyst Control Center en Radeon Software Crimson Edition. Si les utilisateurs de Windows bénéficient déjà de changements sensibles (amélioration des performances et nouvelle interface utilisateur), les utilisateurs de GNU/Linux ne voient que le même pilote et les mêmes outils sous un nouveau nom. Il est fort probable que ce pilote amdgpu fasse partie de cette nouvelle stratégie commerciale et que les améliorations promises par Crimson seront fournies lorsque le pilote propriétaire rebasé sur amdgpu sera publié. Tout comme le pilote amdgpu est prévu pour les cartes de dernière génération, la suite Crimson annonce ne prendre en charge que les cartes basées sur l’architecture GCN (Graphics Core Next), ce qui correspond à peu près au même périmètre.

    NIR (New Intermediate Representation)

    Le code GLSL des jeux ou applications 3D nécessite d’être compilé en langage machine avant de pouvoir être exécuté par les unités de shader du processeur graphique. Mesa 3D utilise une représentation intermédiaire appelé GLSL IR, mais celle‐ci a des défauts difficiles à résoudre. Dans le cadre d’un stage chez Intel, Connor Abbott avait travaillé sur un nouveau langage intermédiaire qui permet de mieux gérer le code des shaders et de meilleures optimisations. C’est ainsi que NIR est né.

    Présenté a la XDC 2014 à Bordeaux, il a été intégré dans Mesa 3D en janvier 2015, grâce au travail de Jason Ekstrand de chez Intel (sa présentation de NIR sur la liste mesa-dev vaut la lecture). NIR a continué de mûrir tout au long de l’année et un nombre croissant de pilotes l’utilisent désormais. NIR est aujourd’hui utilisé par défaut par le pilote Intel, le pilote VC4 (Raspberry Pi 1 et 2) et le pilote Freedreno.

    Un convertisseur SPIR-V vers NIR est également en cours de développement. SPIR-V est un format standard de représentation intermédiaire de shader. C’est un format en bytecode pré‐optimisé qui est ou sera utilisé par OpenCL 2.1 et Vulkan. Avec OpenGL, les shaders GLSL sont fournis au pilote 3D en format texte, le pilote doit donc embarquer un analyseur de texte, un optimiseur de code et enfin un compilateur pour générer le code machine. Avec SPIR-V, le pilote n’a plus besoin que du compilateur final (et éventuellement d’un petit optimiseur), ce qui est plus léger à la fois en empreinte mémoire et en temps de calcul.

    Lentement mais sûrement

    Vous vous souvenez peut‐être de la campagne de financement participatif visant à salarier Timothy Arceri (il n’en est pas à son coup d’essai) pour travailler sur l’implémentation de l’extension Array of array (prérequis de OpenGL ES 3.10 et GLSL 4.30) ? Cela a été long, mais le travail n’a pas été abandonné ! Ce dernier travail de Timothy a été fusionné dans Mesa 3D et la première à en bénéficier est la plate‐forme Intel (depuis le 4 novembre), les autres plates‐formes devraient suivre sous peu. Tout cela a mis beaucoup de temps parce que le processus de revue pour inclusion est assez lent mais, bonne nouvelle, Timothy annonçait en septembre qu’à partir de novembre, il serait embauché par Collabora pour travailler à temps plein sur Mesa 3D. Sa priorité désormais est de travailler sur l’extension GL_ARB_enhanced_layouts, une extension OpenGL 4.4.

    Côté OpenCL, beaucoup de choses sont encore à faire… Comme indiqué précédemment, le développement pour nouveau est balbutiant. Du côté de radeonsi, la version 1.1 de la norme est exploitable, mais la prise en charge des images n’y est pas fonctionnelle. En revanche, le développement de Beignet (Intel) est assez actif, mais a lieu en dehors de Mesa 3D. Pour le moment, si vous souhaitez bénéficier de l’OpenCL (par exemple avec Darktable), il vous faudra encore vous tourner vers les pilotes propriétaires pour les cartes autres qu’Intel. On peut cependant noter que Clover intègre déjà certaines fonctionnalités de la norme 1.2, par exemple clCreateImage. Espérons que les choses seront plus encourageantes en 2016 !

    Évolution du côté de l’écosystème ARM

    Les systèmes monopuces (System On a Chip) ont la particularité d’avoir un découpage explicite en modules des fonctionnalités fournies ensemble par les processeurs graphiques d’ordinateurs de bureau. Là où, grâce à un seul pilote, un processeur graphique de bureau prend en charge la gestion de l’affichage (sortie vidéo), les accélérations 2D et 3D, ainsi que les accélérations de l’encodage et du décodage vidéo, les systèmes monopuces ARM ont souvent des modules et pilotes séparés pour les différentes parties. Modules qui peuvent même venir de concepteurs différents.

    De nombreux moteurs d’affichage utilisés par les systèmes monopuces ARM ont un pilote développé en amont dans le noyau Linux, et de nouveaux pilotes sont régulièrement intégrés. On peut citer omap, imx, etc. Mais beaucoup de modules d’accélération 2D/3D ont un pilote intégré ; pour l’instant, il y a le pilote freedreno, tandis qu’un pilote etnaviv est en développement pour une intégration prochaine (peut‐être pour le noyau 4.5 ?).

    Freedreno

    Les processeurs graphiques Adreno des systèmes monopuces Snapdragon de Qualcomm utilisent un pilote nommé freedreno. Le développement de ce pilote libre a été démarré en rétro‐ingénierie par Rob Clark pendant son temps libre ; Rob a ensuite été embauché par Red Hat pour continuer de travailler dessus et sur la pile graphique Linux par la même occasion. Les processeurs graphiques Adreno ont une base commune avec les processeurs graphiques Radeon (Qualcomm a racheté la branche processeurs graphiques mobiles d’AMD), le fait que les Radeon aient un pilote libre et de la documentation publique aurait aidé la rétro‐ingénierie. Aujourd’hui, le pilote progresse bien, il est actuellement capable de gérer jusqu’à OpenGL ES 3.0 (pour le matériel qui le prend en charge), reçoit la participation de Qualcomm et la prise en charge des nouveaux processeurs graphiques est intégrée peu à peu. Un travail est également en cours pour que ce pilote marche avec Android, et peut‐être même deviendra‐t‐il un jour le pilote officiel pour Android ?

    Etnaviv

    Les modules d’accélération 2D/3D vectoriels de Vivante sont pris en charge par le pilote libre etnaviv. Les processeurs graphiques Vivante bénéficient d’un pilote noyau libre qui utilise l’API fbdev (mais qui n’est pas intégré au noyau Linux en amont) et d’une partie propriétaire en espace utilisateur.

    Initialement nommé etna_viv, le projet a été lancé par Wladimir J. van der Laan et rendu public au début de l’année 2013. Il a créé un pilote libre en espace utilisateur par rétro‐ingénierie. Ensuite, Christian Gmeiner a pris le relai pour créer un pilote noyau KMS et DRM, mais y travaillant uniquement sur son temps libre, la progression était lente. Heureusement, au printemps 2015, Lucas Stach a diffusé une série de modifications correspondant à un pilote KMS. Ce pilote a été créé sur la base du travail de Christian et activement développé par Russell King (Le mainteneur ARM dans le projet Linux) et Lucas dans le cadre de son travail chez Pengutronix.

    Plusieurs mises à jour ont depuis été diffusées sur la liste de diffusion dri-devel, et le code pour la libdrm et Mesa 3D (Gallium3D) progresse avec le travail de Christian, Russell et Lucas. D’ailleurs, Christian maintient sur son profil GitHub un dépôt libdrm et un dépôt Mesa 3D. Les précédentes diffusions sur la liste de de diffusion dri-devel du noyau Linux avaient seulement pour but de recueillir des retours des autres développeurs de pilotes DRM, mais le 4 décembre une série de correctifs de la partie noyau du pilote a été diffusée pour relecture dans le but, cette fois, d’avoir une intégration dans la branche principale. Une deuxième version avec quelques corrections a été diffusée le 9 décembre, et le 15 décembre une demande d’intégration dans le noyau 4.5 a été diffusée sur la liste de diffusion dri-devel.

    On est donc en bonne voie de pouvoir utiliser une Fedora avec bureau GNOME 3 (par exemple) de façon fluide sur une Wandboard ou une Cubox-i dans les mois à venir (ou autre utilisation d’OpenGL).

    VC4

    Le processeur graphique des Raspberry Pi (1 et 2) est le VC4. Broadcom a embauché Eric Anholt pour travailler sur un pilote libre (KMS/DRM + Mesa 3D/Gallium3D). Côté Mesa, le pilote Gallium3D vc4 est intégré en amont depuis quelque temps et continue d’évoluer. Côté noyau, une première version du pilote a été intégrée dans la version 4.4, cette première version permet la prise en charge du module de gestion de l’affichage. Le code permettant l’accélération 3D devrait être intégré dans la version 4.5.

    PowerVR

    Nous n’avons pas d’informations sur un éventuel pilote libre pour processeur graphique PowerVR, mais Imagination cherche un programmeur pour travailler sur un pilote Linux (espérons que ce soit un pilote libre)…

    Lima & Tamil

    Les processeurs graphiques Mali (venant directement d’ARM) ont pour eux le projet libre de pilote Lima. Bien qu’ayant démarré début 2012 et ayant bien progressé (il a réussi à faire fonctionner Quake III Arena), le projet est en pause depuis plus de deux ans. La dernière nouvelle sur le site officiel était de mars 2013, mais un appel à contribution est apparu le 20 décembre 2015, signifiant peut‐être un redémarrage du projet (en tout cas une certaine volonté). Il semblerait qu’ARM ne le voyait pas d’un très bon œil, en effet sur le blog de Luc Verhaegen on peut lire une publication datant du 23 avril 2015 :

    In May 2013, I wrote another proposal to ARM for an open source strategy for Mali (the first was done in Q2 2011 as part of Codethink), hoping that in the meantime sentiments had shifted enough and that the absence of an in‐between company would make the difference this time round. It got the unofficial backing of some people inside ARM, but they just ended up getting their heads chewed off, and I hope that they didn’t suffer too much for trying to do the right thing. The speed with which this proposal was rejected by Jem Davies (ARM MPD VP of Technology), and the undertone of the email reply he sent me, suggests that his mind was made up beforehand and that he wasn’t too happy about my actions this time either.

    Traduction :

    « En mai 2013, j’ai écrit une nouvelle proposition à ARM à propos d’une stratégie open source pour Mali (la première avait été faite au 2e trimestre 2011 dans le cadre de Codethink), espérant qu’entretemps en l’absence de société intermédiaire, leur point de vue aurait significativement évolué. Elle a reçu un soutien non officiel de gens chez ARM, mais ils ont juste obtenu le droit de se taire, et j’espère qu’ils n’ont pas trop souffert d’avoir essayé de faire le bon choix. La vitesse avec laquelle ma proposition a été rejetée par Jem Davies, et le ton de son courriel de réponse, suggérait que son opinion était déjà faite et qu’il n’était toujours pas très emballé par mes actions. »

    Sur ce même blog, on peut lire que l’écriture du pilote Mali lui a causé beaucoup de déboires ; il soupçonne même que son renvoi d’une société fût causé par le lobbying d’ARM :

    When Codethink ran into a cashflow issue in October 2012 (which apparently was resolved quite successfully, as Codethink has grown a lot more since then), I was shown the door. This wasn’t too unreasonable a decision given my increasing disappointment with how Lima was being treated, the customer projects I was being sent on, and the assumption that a high profile developer like me would have an easy time getting another employer. During the phonecall announcing my dismissal, I did however get told that ARM had already been informed about my dismissal, so that business relations between ARM and Codethink could be resumed. I rather doubt that that is standard procedure for dismissing people.

    Traduction :

    « Quand Codethink a eu des problèmes de trésorerie en octobre 2012 (qui apparemment ont été plutôt bien résolus, puisque Codethink s’est beaucoup développé depuis), on m’a mis à la porte. Cela n’était pas une si mauvaise décision vue ma déception grandissante quant à la manière dont a été traité Lima, les projets client sur lesquels j’ai été envoyé, et en considérant qu’un développeur hautement qualifié comme moi aurait de la facilité à trouver un autre employeur. Pendant la conversation téléphonique annonçant mon licenciement, on m’a cependant laissé entendre qu’ARM avait déjà été informé de mon départ, de telle sorte que les relations commerciales entre ARM et Codethink pourraient être restaurées. Je doute que ce soit une procédure standard de licenciement. »

    Tout cela est vraiment dommage, car on peut trouver ce processeur graphique dans une multitude de systèmes monopuces comme, par exemple, les Allwiner A10 et A20, la majorité des Exynos… Luc Verhaegen, l’auteur des pilotes Lima et Tamil (pour les processeurs graphiques Mali T-Series), explique qu’il n’est plus aussi motivé pour nettoyer et faire évoluer le code de ces pilotes. Lima et Tamil existent, mais seul Lima est sorti. Personne n’est suffisamment intéressé pour l’embaucher et financer le travail sur ces pilotes. Beaucoup de monde (personnes, entreprises, organisations) lui expliquent que cela ne sert à rien et que l’existence d’un pilote libre pourrait même être contre‐productif. Linaro, une organisation dont le but est de faire tourner Linux sur ARM, explique qu’elle compte sur le soutien d’ARM pour avancer ; mais Linaro (et certainement d’autres…), ne voulant pas se fâcher avec ARM, ne veut pas subventionner Luc Verhaegen.

    En tout cas, une chose est sure, c’est que le manque de soutien général l’a réellement démotivé pendant pas mal de temps (au moins deux ans), mais il semblerait que cette période soit passée, peut‐être travaillera‐t‐il à nouveau sur Lima :

    When I was putting together the FOSDEM Graphics DevRoom schedule around christmas, I noticed that there was a inexcuseably low amount of talks, and my fingers became itchy again. The consulting job had boosted morale sufficiently to do some code again and showing off some initial renders on Mali T series seemed doable within the 5 or so weeks left. It gave the FOSDEM graphics devroom another nice scoop, and filled in one of the many many gaps in the schedule. This time round i didn’t kid myself that it would change the world or help boost my profile or anything. This time round, i was just going to prove to myself that i have learned a lot since doing Lima, and that i can do these sort of things still, with ease, while having fun doing so and not exerting myself too much. And that’s exactly what I did, nothing more and nothing less.

    Traduction :

    « Lorsque j’étais en train de mettre sur pieds le programme de la conférence des développeurs de pilotes graphiques pour le FOSDEM aux environs de Noël, j’ai remarqué qu’il y avait un manque inexcusable de conférences, et mes doigts se mirent à nouveau à me démanger. Le travail de consultant a suffisamment renforcé mon moral pour coder à nouveau et présenter quelques rendus initiaux sur le Mali série T semblait faisable dans les quelque cinq prochaines semaines restantes. J’ai donné à l’assemblée des développeurs de pilotes graphiques du FOSDEM un scoop sympa, et rempli une des très nombreuses lacunes du programme des conférences. Cette fois, je ne voulais pas jouer à changer le monde ou me faire mousser, mais je voulais me prouver que j’avais beaucoup appris depuis que j’avais travaillé sur Lima, et que je pouvais encore faire ce genre de choses, avec facilité, tout en prenant du plaisir à le faire et sans trop me surmener. Et c’est exactement ce que j’ai fait, ni plus ni moins. »

    Malgré tout, les choses avancent dans la prise en charge des Mali sur Linux. Phoronix avait publié un petit état des lieux en avril, à défaut de code, il faudra s’en contenter pour le moment.

    Tegra

    Les systèmes monopuces de la gamme Tegra semblent avoir leur pilote principal de moteur d’affichage nommé tegra, et NVIDIA a travaillé pour utiliser Nouveau pour les Tegra K1 et X1. Ces systèmes monopuces utilisent des processeurs graphiques directement dérivés de leurs homologues dédiés aux ordinateurs de bureau (respectivement les architectures Kepler et Maxwell). Pour les systèmes monopuces plus anciens Tegra 1 à 4, il existe une documentation partielle, un pilote libre (grate) existe.

    Allwinner

    Le pilote du moteur d’affichage des systèmes monopuces Allwinner est développé par un employé de Free Electrons. En revanche, la partie accélération 3D est gérée par des modules Mali de chez ARM ou PowerVR de chez Imagination Technologies, qui ne possèdent pas de pilotes libres. Ses pilotes sont nommés sun4i et sunxi dans le noyau Linux.

    Les attentes de l’année 2016 Vulkan

    Vulkan est une API poussée par le groupe Khronos (les mêmes derrière OpenGL) qui a pour but affiché de remplacer OpenGL dans le futur et de proposer dès maintenant une interface plus moderne. Vulkan se veut multi‐plate‐forme. Il est soutenue par de nombreux acteurs majeurs du marché, et annonce de bien meilleures performances qu’OpenGL (voir la page Wikipédia Vulkan pour plus de détails et de vulgarisation en français). Connue initialement sous le nom de code glNext, Vulkan a été annoncé lors de la Game Developers’ Conference de 2015. La publication des spécifications était attendue pour fin 2015, mais cela ne devrait plus tarder ! Cependant, si nous savons que certains pilotes propriétaires seront publiés avec la prise en charge de Vulkan dès la publication des spécifications, il faudra certainement attendre plus de temps pour en voir une implémentation dans les pilotes Mesa 3D.

    Mesa 3D 11.2 : quelques prédictions

    Intel est en train de rattraper son (apparent) retard, mais les nouveautés intéressantes sont arrivées trop tard pour faire partie de la version 11.1, comme le code pour le pavage (tesselation), pourtant déjà fonctionnel chez Intel.

    Du côté des radeon R600, le code pour le pavage est là aussi.

    Chose très intéressante, il ne manquera plus que deux extensions (GL_ARB_vertex_attrib_64bit et GL_ARB_gpu_shader_fp64) pour que le pilote Intel fasse le grand saut depuis OpenGL 3.3 vers OpenGL 4.2. Vivement Mesa 3D 11.2 !

    Du côté de chez AMD, les cartes de la génération R600 et celles prises en charge par le pilote radeonsi n’attendent plus que les deux extensions GL_ARB_shader_atomic_counters et GL_ARB_shader_image_load_store pour passer d’OpenGL 4.1 à OpenGL 4.2. Il en est de même pour les cartes NVIDIA de la génération NVC0. Quel pilote activera la gestion d’OpenGL 4.2 le premier ? Intel va‐t‐il laver l’affront ? La course est serrée !

    En revanche, nous le savons déjà, les puces graphiques NV50 n’arriveront jamais à l’OpenGL 4 de par leurs limites matérielles… Dommage, mais que cela ne gâche pas la fête : Mesa 3D 11.2 est très attendu !

    OpenGL Vendor Neutral Dispatch Library

    Le 30 septembre 2015, Kyle Brenneman a annoncé son projet libglvnd (OpenGL Vendor Neutral Dispatch Library) sur la liste de diffusion mesa-dev en vue d’une intégration. C’est une initiative poussée par NVIDIA depuis 2013 et qui semble plutôt bien vue par Mesa 3D, mais à quoi cela sert‐il ? Cela servirait à pouvoir utiliser plusieurs implémentations d’OpenGL en même temps, par exemple la pile OpenGL Mesa 3D sur un écran et la pile propriétaire nvidia sur un autre. Aaron Plattner de chez NVIDIA a publié un premier pilote (bêta) compatible libglvnd le 5 janvier. Cela ne concerne que le pilote propriétaire NVIDIA pour le moment, mais AMD ne cache pas son intérêt et l’on a hâte que libglvnd fasse son petit bout de chemin dans Mesa 3D, et que cela profite à d’autres, ce qui semble bien parti.

    GPUOpen

    AMD a annoncé en décembre 2015 l’initiative GPUOpen qui vise à concurrencer GameWorks de NVIDIA. L’idée de GPUOpen est un partage de code source libre d’un maximum de ressources logicielles (exemples, démos, librairies). Lors du lancement le 26 janvier 2016, du code a commencé à être publié sur GitHub. Plus de détails peuvent être trouvés dans le journal de freejeff et ses commentaires.

    OpenSWR

    Intel travaille sur un nouveau rasterizer logiciel nommé OpenSWR et concurrençant LLVMPipe. Un rasterizer est un logiciel de rendu graphique développé pour se satisfaire d’un processeur généraliste. Bien que forcément moins performant qu’un processeur graphique dédié, cela permet par exemple de simplifier les procédures de test de rendu graphique. Timothy Rowley de chez Intel a annoncé ce projet le 20 octobre dernier (l’annonce est très détaillée et vaut le détour), on retiendra que l’équipe derrière ce projet n’est pas la même que celle développant les pilotes des processeurs graphiques chez Intel et que, contrairement à ce dernier, OpenSWR se base sur Gallium3D. OpenSWR annonce de bien meilleures performances que LLVMpipe (OpenSWR répartit notamment plus de tâches entre les cœurs), et est lui aussi basé sur LLVM. OpenSWR fait partie du projet Software Defined Visualization et le code est libre, bien entendu.

    Bientôt de gros changements du côté des performances chez radeonsi ?

    Grosse surprise de fin d’année 2015, le SI Machine Scheduler, un nouvel ordonnanceur expérimental créé par Axel Davy a fait parler de lui : une fois activé, le pilote libre radeonsi surpasserait Catalyst sur toute la ligne. Cet ordonnanceur est encore expérimental, mais on attend son intégration pour 2016 avec impatience !

    Comme l’a écrit darkbasic dans un article qui compare radeonsi et Catalyst :

    Catalyst got completely humiliated! Radeonsi is so much faster that I will no longer consider Catalyst as a reference for future performance improvements: we aim at the Nvidia performance now.

    Traduction :

    « Catalyst s’est fait complètement humilier ! Le radeonsi est tellement plus rapide que, dorénavant, je ne considérerai plus Catalyst comme une référence pour les futures améliorations de performances : maintenant nous visons les performances du pilote nvidia. »

    N. D. M. : pondération de l’auteur quelques semaines plus tard :

    « As I stated on IRC, the boost was largely due to a big regression reverted in Mesa while doing the first test. Only a little boost is accountable for the SI scheduler. »

    Traduction :

    « Comme je l’ai écrit sur IRC, le gain était largement dû à une grande régression corrigée dans Mesa 3D pendant mon premier test. Seul un petit gain est imputable à l’ordonnanceur SI. »

    L’année 2016 est déjà là, et elle s’annonce comme une année très excitante !

    Télécharger ce contenu au format Epub

    Lire les commentaires

    Agenda du Libre pour la semaine 5 de l'année 2016

    30 janvier, 2016 - 18:57

    Calendrier web, regroupant des évènements liés au Libre (logiciel, salon, atelier, install party, conférence) en France, annoncés par leurs organisateurs. Voici un récapitulatif de la semaine à venir. Le détail de chacun de ces 24 événements est en seconde partie de dépêche.

    Sommaire Agenda du Libre pour la semaine 5 de l'année 2016 [Kunheim] Formation Linux - Le lundi 1 février 2016 de 18h00 à 22h00.

    Tous les lundis à partir de 18h00 jusqu'à 22h00 venez découvrir ou vous former sur Linux et les logiciels libres.
    Ces séances de formation ont lieu à la salle "Kegreiss" au 56 rue principale - Kuhneim - face à la mairie - cette salle est accessible aux personnes à mobilité réduite.
    Nous vous attendons nombreux. Le Team Linux

    [Gardanne] Atelier Linux embarqué - Du mardi 2 février 2016 à 09h00 au jeudi 4 février 2016 à 17h00.

    Si Linux s'impose largement dans le développement d'applications embarquées, son adoption par les PME peut nécessiter une phase d'apprentissage car il diffère largement des Operating Systems traditionnels du monde de l'embarqué (RTOS propriétaires).
    Le programme Captronic, dont la mission est de faciliter l'adoption de l'électronique et du logiciel embarqué dans les PME, propose donc un atelier consacré à Linux embarqué.
    La prochaine édition, animée par CIO Systèmes Embarqués, aura lieu à Gardanne (13) du 2 au 4 Février 2016.

    [Paris] Plénière du GTLL (Logiciel libre et Systèmes d'information) - Le mardi 2 février 2016 de 15h00 à 18h00.

    Le Groupe thématique Logiciel libre organise sa plénière semestrielle comme lieu de rencontre de ses membres (entreprises et laboratoires de recherche oeuvrant dans le libre et l'open source) pour faire émerger des projets de R&D collaboratifs pouvant aboutir à la commercialisation - si possible au niveau mondial - d'un ou plusieurs produits issus d'une R&D collaborative.

    [Reims] Atelier Vie-Privée - Le mardi 2 février 2016 de 18h30 à 20h00.

    De septembre 2015 à juin 2016, un Mardi soir par mois, l'association LoLiCA anime un «Atelier Vie-Privée».
    Le but est d'expliquer de façon très accessible les problématiques autour de la Vie Privée dans notre monde numérique, et des solutions à apporter pour pouvoir la préserver.
    Le mardi 2 février 2016 de 18h30 à 20h30

    [Le-Bourget-du-Lac] Mapathon Missing Maps - Le mercredi 3 février 2016 de 17h30 à 21h00.

    Venez découvrir comment contribuer à OpenStreetMap, le "Wikipedia de la carte", durant un « mapathon » !
    (un événement convivial où l'on se retrouve pour cartographier, échanger et apprendre à utiliser les outils permettant de contribuer à OSM).
    Cet événement s'inscrit dans le cadre de l'initiative globale Missing Maps, projet humanitaire qui vise à cartographier en amont les parties du mondes vulnérables aux catastrophes naturelles, crises sanitaires, environnementales, aux conflits et à la pauvreté.

    [Toulouse] Rencontre Logiciels Libres - Le mercredi 3 février 2016 de 19h30 à 22h30.

    L'association Toulibre organise une rencontre autour des Logiciels Libres le mercredi 03 février, de 19h30 à 22h30 au Centre Culturel Bellegarde, 17 rue Bellegarde à Toulouse.
    Pendant toute la soirée, venez poser vos questions au sujet du Logiciel Libre et trouver de l'aide pour installer ou utiliser des Logiciels Libres sur votre ordinateur.
    Pour cela, vous pouvez si besoin apporter votre ordinateur, un accès Internet est disponible sur place.

    [Magny le Hongre] Formation MAO "LMMS" Part2 - Le mercredi 3 février 2016 de 20h00 à 23h00.

    MODULE « Logiciel de MAO - LMMS » : la présence aux 2 ateliers est requise.
    Module 1 : LES CUIZINES : Mercredi 27 janvier 2016 – Gratuit – 20h-23h Module 2 : FILE7 : Mercredi 03 février 2016 – Gratuit – 20h-23h
    ATELIER « LMMS » Intervenant : Yann COLLETTE

    [Martigues] le traitement de l'image : Gimp - Le jeudi 4 février 2016 de 18h00 à 19h30.

    L’association ULLM (les Utillisateurs de Logiciels Libres du Pays Martégal) en collaboration avec ECM vous présente le programme de ses ateliers du première trimètre 2016.
    Le jeudi 4 février de 18h00 à 19h30
    Le traitement de la photo avec Gimp.

    [Paris] Atelier Javascript - Le jeudi 4 février 2016 de 19h00 à 21h00.

    Atelier Back to Basics : Silex Labs décrypte Javascript ES2015
    Dans la série des ateliers Back to Basics, série d’ateliers pour découvrir les technologies et méthodologies du web Silex Labs vous convie à un atelier Javascript pour découvrir les nouveautés de l’ES2015.
    À propos de Javascript

    [Lyon] Jeudi du Libre - Le jeudi 4 février 2016 de 19h00 à 21h00.

    L'Association Lyonnaise pour le Développement de l'Informatique Libre (ALDIL) organise une soirée de conférence débat sur le thème suivant : *« Et si on dégooglisait internet ? *»
    L’emprise de Google, Apple, Facebook, Amazon ou Microsoft ne cesse de croître. Non seulement sur internet, mais aussi dans bien d’autres domaines (robotique, automobile, santé, presse,média, etc). L’association Framasoft s’est fixée l’ambitieuse mission de montrer qu’il était possible – grâce au logiciel libre – de résister à la colonisation d’internet et à marchandisation de notre vie privée.
    Entrée Libre. Tout Public.

    [Le Mans] Autour d'un verre autour du Libre - Le jeudi 4 février 2016 de 19h00 à 22h30.

    Libristes, hackers, pasionnés ou néophites, ou même simplement curieux, voici venu le 1er jeudi du mois.
    Le HAUM (Hackerspace AU Mans) et LinuXMaine (Association de promotion du logiciel libre en Sarthe) vous donnent rendez-vous "autour d'un verre autour du libre", à partir de 19h à l'épicerie du pré, 31 Rue du Pré, 72100 Le Mans.
    En mode free, à partir de 19h, vous pouvez venir accompagné, avec des bidouilleries, avec de la presse spécialisée, avec un ordi, avec des questions, avec votre curiosité, etc…

    [Rennes] Apéro du Libre - Le jeudi 4 février 2016 de 19h00 à 22h00.

    L'association Actux vous donne rendez-vous pour un nouvel Apéro du Libre, jeudi 4 février 2016 à partir de 19h, au Papier Timbré, 39 rue de Dinan à Rennes (au croisement de la rue d'Échange).
    Les Apéros du Libre sont des rencontres conviviales autour d'un verre, pour discuter, échanger et parfois troller entre utilisateurs et curieux de logiciels et culture libres.
    L'apéro est traditionnellement ponctué d'un quiz sans enjeu autour du Libre.

    [Lyon] Atelier Libre - Le jeudi 4 février 2016 de 19h00 à 21h00.

    L'Association Lyonnaise pour le Développement de l'Informatique Libre organise un atelier pratique et de partage de connaissances.
    Nous faisons appel à vous pour le choix du thème de l'atelier : Bureautique, multimédia (montage vidéo, retouche photos..)…
    Un pad avec des idées de propositions a été créé à cette adresse : https://bimestriel.framapad.org/p/atelierlibre-themes .

    [Paris] Soirée de Contribution au Libre - Le jeudi 4 février 2016 de 19h30 à 23h00.

    Parinux propose aux utilisateurs de logiciels libres de se réunir régulièrement afin de contribuer à des projets libres. En effet, un logiciel libre est souvent porté par une communauté de bénévoles et dépend d'eux pour que le logiciel évolue.
    Nous nous réunissons donc tous les jeudis soirs dans un environnement propice au travail (pas de facebook, pas de télé, pas de jeux vidéos, pas de zombies)).
    Vous aurez très probablement besoin d'un ordinateur portable, mais électricité et réseau fournis.

    [Paris] Les Nouveaux Loups du Web, ciné débat - Le jeudi 4 février 2016 de 20h00 à 23h00.

    Projection du film suivie d’un débat avec André Reinald de la Fondation Mozilla et Frédéric Urbain de l’association Framasoft.
    Vérifiez l’horaire.
    Lieu : Espace saint Michel 7 place Saint-Michel 75005 Paris

    [Montpellier] Formation sécurité informatique et cryptographie - Le vendredi 5 février 2016 de 09h00 à 13h00.

    Montpel’libre a le plaisir de vous proposer un nouveau cycle de formation, cryptographie et sécurité informatique.
    Merci d’avoir choisi de participer aux ateliers « Sécurité Informatique et Cryptographie » organisés par Le Club de la Presse et Montpel’libre. Les trois ateliers auront lieu les mercredis 5, 12 et 19 février 2016 de 9h00 à 13h00 à l’Atelier des Pigistes du Club de la Presse de Montpellier.
    Formation Crypto, séance de préparation, premier module :

    [Villeneuve d'Ascq] Libre à Vous - Le samedi 6 février 2016 de 09h00 à 12h00.

    Vous souhaitez tester GNU/Linux sur votre ordinateur, vous recherchez un logiciel pour une fonction précise, des conseils ou de l'aide sur les logiciels libres ?
    Libre à Vous est une permanence destinée à vous faciliter l'utilisation de l'informatique. Vous repartirez avec « le plein » de logiciels libres, fiables, évolutifs, performants et gratuits.
    C'est chaque samedi matin au Centre d'Infos Jeunes à la ferme Dupire, 80 rue Yves Decugis à Villeneuve d'Ascq (métro Triolo) de 9h00 à 12h00.

    [Beauvais] Initiation à Joomla! - Le samedi 6 février 2016 de 09h00 à 12h00.

    En collaboration avec la MAJI (Maison des Associations de la Jeunesse et des Initiatives) et le Blog-Argentine, l'association Oisux propose 4 samedis du Libre en 2016 à Beauvais au 28 rue de Gascogne.
    Formations gratuites, 9h30 à 12h00.
    Au programme :

    [Aix-en-Provence] Samedi Libre - Le samedi 6 février 2016 de 10h00 à 18h00.

    Ces Samedis libres sont organisés par l'Axul en collaboration avec plusieurs associations de logiciels libres des Bouches-du-Rhône (et souvent du Var).
    Ils proposent des présentations générales et une aide technique pour le dépannage et la mise à jour d'ordinateurs avec des logiciels libres. Ils présentent aussi des démonstrations de matériels libres.
    Adresse : Centre Social et Culturel des Amandiers, 8 allée des Amandiers, Jas-de-Bouffan (cliquer sur ce dernier lien pour avoir un plan détaillé).

    [Annemasse] Install Party GNU/Linux - Le samedi 6 février 2016 de 11h00 à 17h00.

    Nous sommes fiers de vous annoncer notre prochaine manifestation qui se déroulera cette fois ci côté français, le samedi 6 février à Annemasse de 11h à 17h.
    Notre atelier consiste en l'installation de systèmes d'exploitation libres sur des ordinateurs apportés par le public.
    Comme précédemment, nous vous invitons à venir avec un ordinateur prêt à être réinstallé - données préalablement sauvegardées sur un disque dur externe - qui sera ensuite pris en charge par nos soins.

    [Fontenay-le-Fleury] Cinq bonnes raisons de choisir les logiciels libres - Le samedi 6 février 2016 de 14h00 à 17h00.

    Root66 inaugure sa nouvelle saison de conférences et d'ateliers par une présentation traitant des logiciels libres et de Linux, avec comme fil conducteur cinq bonnes raisons de faire ces choix.
    Au menu : explication des notions basiques telles que logiciels libres, open source, logiciels propriétaires, etc… De nombreux exemples de logiciels dits "libre" seront présentés comme alternatives à leurs versions propriétaires et payantes.
    Une séance de questions/réponses conclura la conférence.

    [Paris] Premier Samedi du Libre - Le samedi 6 février 2016 de 14h00 à 18h00.

    Chaque premier samedi de chaque mois, les bénévoles des associations du Libre vous accueillent au Carrefour Numérique² de la Cité des sciences et de l'industrie (CSI) lors de l'install party du Premier Samedi du Libre (PSL).
    L'install party du Premier Samedi du Libre aura lieu le 6 février 2016 de 14h à 18h au Carrefour Numérique², niveau -1 de la Cité des sciences et de l'industrie, Paris 19e.
    Venez aider ou vous faire aider à installer et paramétrer des logiciels libres et toute distribution GNU/Linux avec les associations d'utilisateurs de Fedora, Mageia, Ubuntu ou Debian, sur netbook, portable, ou tour, PC ou Mac, éventuellement à côté de votre système actuel. Idem si vous avez des difficultés avec un périphérique, ou un logiciel libre.

    [Paris] Numérique et Juridique - Le samedi 6 février 2016 de 14h30 à 18h00.

    Atelier de réflexion sur les liens entre le numérique et le juridique:
    Contenus définitifs en cours de validation.
    accès au numérique, réappropriation via le Libre, propriétés monopolistiques, …—droit et obligations …ou comment d'un droit d'accès à des contenus partagés on arriva à des obligations d'utilisations (pour des actes administratifs ou de la vie quotidienne, avec des outils normés voire monopolistiques et une durée de vie écourtée, sans interopérabilité)

    [Brignoles] Dimanche du Libre - Le dimanche 7 février 2016 de 10h00 à 19h30.

    Les membres de l'association GULLIVAR (Groupe d'Utilisateurs de Logiciels Libres de l'Intérieur du Var) vous invitent au dimanche du Libre de Brignoles, le dimanche 7 février 2016, dans la salle des Saint Anges, chemin de San Sumian à Brignoles.
    Programme de la journée du 7 février 2016.
    10h, ouverture de la salle (matinée libre, configuration des pc, install-party, etc..).

    Télécharger ce contenu au format Epub

    Lire les commentaires

    Sortie de la version 3 de SOGo

    30 janvier, 2016 - 18:56

    Inverse, société spécialisée en développement et déploiement de logiciels libres, annonce la sortie de la version 3 de SOGo.

    SOGo est un collecticiel (groupware) libre (GPLv2) axé sur l’extensibilité et le respect des standards ouverts. Il permet aux utilisateurs Mozilla Thunderbird / Lightning, Apple Calendar/Contacts (OS X et iOS) et Microsoft Outlook de collaborer dans un environnement moderne et cohérent. Il propose les composants classiques des collecticiels : carnet d’adresses, gestion des courriers électroniques et calendriers partagés. La compatibilité native avec Microsoft Outlook est possible grâce à l'intégration des projets OpenChange et Samba4. Finalement, SOGo supporte aussi le protocole Enterprise ActiveSync pour la synchronisation des appareils Android, iOS, Windows Phone, BlackBerry et même Microsoft Outlook 2013.

    Cette version apporte une toute nouvelle interface web qui respecte les normes Material Design tout en conservant la maturité de la version 2 relativement aux fonctionnalités telles Enterprise ActiveSync, les protocoles DAV, ainsi que la compatibilité native avec Microsoft Outlook.

    Télécharger ce contenu au format Epub

    Lire les commentaires

    Superpowers sort en libre/opensource

    28 janvier, 2016 - 20:46

    Dépêche réalisée d'après l'article de Korben et modifiée avec son accord, sous licence CC BY-SA

    Si vous vous sentez l'âme d'un créateur de jeux vidéo, voici Superpowers, un outil libre et open source, développé par des Français, qui va vous permettre de concevoir vos jeux 2D et 3D en HTML5 !

    Superpowers est déjà connu des lecteurs de LinuxFr.org puisqu'un article lui a été consacré lors du lancement de sa campagne de financement participatif. Le logiciel est désormais open source depuis le 7 Janvier 2016, nous y reviendrons plus loin.

    Présentation du logiciel

    Superpowers fonctionne grâce à un serveur web que vous lancez en local sous OS X, Linux ou Windows. Vous n'avez donc pas besoin d'avoir une connexion à Internet pour travailler sur votre jeu. Toutefois, si vous êtes connecté, vous pouvez aussi travailler à plusieurs sur le même jeu. Il suffit simplement de donner l'adresse du serveur (IP de votre ordinateur + mot de passe) pour que tout le monde s'y connecte et puisse contribuer au jeu grâce à l'éditeur TypeScript intégré.

    Démo vidéo

    Voici une démo (accélérée) de ce qu'il est possible de faire avec Superpowers : [FR] Introduction à Superpowers (v0.3) — l'outil de création de jeux vidéo HTML5

    HTML5, JS et CSS

    Superpowers utilise les technologies HTML5, JS et CSS et permet d'exporter vos jeux sur toutes les plateformes (Windows, OS X, iOS, Linux, Android) et si votre truc, ce n'est pas le graphisme, sachez qu'il est possible de télécharger gratuitement des packs de sprites, de décors, des effets spéciaux et des musiques sur des thématiques aussi variées que l'espace, la fantasy, la préhistoire, etc.

    Exemples de jeux

    Pour les jeux, si vous voulez voir ce qu'il est possible de faire, voici quelques exemples de jeux réalisés avec Superpowers. Et si vous trouvez ça cool, mais que vous êtes un peu perdu, une communauté prête à vous aider existe et un peu de code avec des jeux tout faits se trouve ici.

    Bref un must pour tous ceux qui veulent se lancer dans la création de jeux vidéos !

    Plus de détails sur le projet Un projet opensource

    Superpowers est publié sous licence ISC compatible avec la licence publique générale GNU, pour fonctionner il utilise de nombreux projets libres comme : Three.js, Socket.IO, TypeScript, Electron, Node.js ainsi que bien d'autres projets Open Source.

    Superpowers met à disposition des packs de ressources graphiques et sonores, ceux-ci sont publiés sous licence CC0 (proche du domaine public) et disponible sur la page de téléchargement de Superpowers.

    Et pour vous aider dans vos développements, les sources des différents jeux réalisés par Sparklin Labs lors de game jam sont disponibles afin que vous puissiez les étudier et les comprendre. Leur code est consultable publiquement mais il n'est pas sous licence libre.

    Des fonctionnalités extensibles à l'aide de modules


    Sont inclus les modules permettant d'importer vos personnages et objets animées ou vos modèles 3D, de créer des jeux multi-joueurs en ligne et bien plus avec Socket.IO, de mettre en place une physique 2D ou 3D avec Cannon.js ou P2.js. Vous pouvez aussi créer des interpolations d'animations avec tween.js, construire des modèles 3D cubique, importer des sons ou éditer les niveaux de votre jeu.

    Construisez ou installez d'autres modules

    Non seulement vous pouvez construire vos propres modules mais Superpowers est réalisé de telle manière qu'il n'est pas dépendant d'un moteur ou d'une technologie particulière. Vous pouvez l'adapter à d'autres moteurs et éditeurs (il y a par exemple un projet de Superpowers pour LÖVE et phaser.js)

    Profiter de la puissance de l'éditeur TypeScript intégré

    TypeScript est un langage qui combine habilement la simplicité du web et la robustesse d'un système de types. Profiter des rapports d'erreurs instantanés, de l'autocomplétion, de la coloration syntaxique et du navigateur d'API pour scripter plus vite.

    Soutenir Sparklin Labs sur Patreon

    Sparklin Labs travaille avec tout son amour sur Superpowers depuis fin 2014.
    Soutenez-les financièrement via Patreon. Merci pour eux! :)

    Télécharger ce contenu au format Epub

    Lire les commentaires