Linux France

S'abonner à flux Linux France
Mis à jour : il y a 1 heure 41 min

G'MIC 1.7.1 : quand les fleurs bourgeonnent, les filtres d'images foisonnent.

Jeudi 5 Mai

La version 1.7.1 « Spring 2016 » de G'MIC (GREYC's Magic for Image Computing), infrastructure libre pour le traitement d'images, a été publiée récemment, le 26 avril 2016. Nous continuons notre série de présentation des possibilités et des avancées de ce logiciel libre, avec la description des nouveautés et des améliorations notables introduites depuis notre dernière dépêche sur ce sujet, datant de décembre 2015, qui avait été rédigée à l'occasion de la sortie de la version 1.6.8. Trois versions successives ont été publiées depuis (les versions 1.6.9, 1.7.0 et 1.7.1).
La deuxième partie de la dépêche détaille quelques uns des nouveaux filtres et effets disponibles dans le greffon G'MIC pour GIMP, qui reste l'interface de G'MIC la plus utilisée à ce jour. Nous abordons aussi les autres évolutions diverses du projet comme l'amélioration et la création d'autres interfaces d'utilisation ainsi que les avancées « techniques » réalisées au cœur du framework.

Sommaire 1. Le projet G'MIC en quelques mots

G'MIC est un projet libre ayant vu le jour en août 2008, dans l'équipe IMAGE du laboratoire GREYC (Unité Mixte de Recherche du CNRS située à Caen / France). Cette équipe est composée de chercheurs et d'enseignant-chercheurs spécialisés dans les domaines de l'algorithmique et des mathématiques du traitement d'images. G'MIC est distribué sous licence libre CeCILL (compatible GPL) pour différentes plateformes (Linux, Mac et Windows). Il fournit un ensemble d'interfaces utilisateurs variées pour la manipulation de données images génériques, à savoir des images ou des séquences d'images hyperspectrales 2D ou 3D à valeurs flottantes (ce qui inclut bien évidemment les images couleurs « classiques »).


Fig.1.1. Logo et (nouvelle) mascotte du projet G'MIC, logiciel libre pour le traitement d'image.

Notons qu'une première nouveauté relative au projet concerne Gmicky, la mascotte, qui a été entièrement redessinée, par David Revoy, artiste français bien connu des amoureux du graphisme libre, puisqu'il est à l'origine du fameux webcomics Pepper&Carott. Un grand merci à lui ! (à comparer avec l'ancien dessin de Gmicky toujours visible ici).

G'MIC s'est fait connaître essentiellement via son greffon disponible pour le logiciel GIMP, apparu en 2009, greffon qui propose plus de 460 différents filtres et effets à appliquer sur vos images, et qui ressemble aujourd'hui à ceci :


Fig.1.2. Aperçu de la version 1.7.1 du greffon G'MIC pour GIMP.

Mais G'MIC n'est pas qu'un greffon pour GIMP. Il fournit également une interface en ligne de commande, qui peut s'utiliser de manière complémentaire aux outils CLI proposés par ImageMagick ou GraphicsMagick. Cette interface CLI est, comme on peut l'imaginer, l'interface la plus puissante et la plus flexible du framework. Il existe aussi un service web G'MIC Online associé, pour appliquer des effets sur vos images directement à partir d'un navigateur web. D'autres interfaces basées sur G'MIC sont également développées (ZArt, un greffon pour Krita, des filtres pour Photoflow…) mais leur usage reste pour le moment plus confidentiel. Toutes ces interfaces se basent sur les bibliothèques C++ CImg et libgmic qui sont portables, thread-safe et multi-threadées (via l'utilisation d'OpenMP). Aujourd'hui, G'MIC possède plus de 900 fonctions différentes de traitement d'images, toutes paramétrables, pour une bibliothèque de seulement 6 Mio correspondant à un peu plus de 150 kloc de code source. Les fonctionnalités proposées couvrent un large spectre du traitement d'images, en proposant des algorithmes pour la manipulation géométrique, les changements colorimétriques, le filtrage d'image (débruitage, rehaussement de détails par méthodes spectrales, variationnelles, non-locales…), l'estimation de mouvement / le recalage, l'affichage de primitives (jusqu'aux objets 3d maillés), la détection de contours/la segmentation, le rendu artistique, etc. C'est donc un outil très générique aux usages variés, très utile d'une part pour convertir, visualiser et explorer des données images, et d'autre part pour construire des pipelines personnalisés et élaborés de traitements d'images (voir ces transparents de présentation du projet pour plus d'information sur les motivations et les buts de ce projet).

2. Sélection de nouveaux filtres et effets

Nous proposons ici un résumé des nouveaux filtres et effets les plus marquants récemment développés, et illustrons leur usage depuis le greffon G'MIC pour GIMP. Ces filtres sont bien sûr utilisables également depuis les autres interfaces disponibles (notamment avec gmic, l'interface en ligne de commande). Nous nous sommes restreints aux filtres les plus intéressants à expliquer et illustrer, car en réalité, ce sont plus d'une vingtaine de nouveaux filtres et effets qui ont fait leur apparition depuis la version 1.6.8.

2.1. Création de peintures à partir de photographies

Le filtre Artistic / Brushify tente de transformer une image en peinture. L'idée ici est de simuler (de manière simplifiée) le processus de création d'une peinture sur une toile blanche. On fournit une image modèle à l'algorithme, qui va dans un premier temps, analyser sa géométrie (principalement le contraste et l'orientation des contours), puis tenter de la repeindre en utilisant comme outil un unique pinceau (brush en anglais, d'où le nom de l'effet) qui va s'orienter localement pour s'adapter à la géométrie des contours de l'image.
En simulant suffisamment de coups de pinceaux, on obtient une image « peinte » plus ou moins fidèle à l'image modèle d'origine, en fonction de la forme et de la taille du pinceau utilisé, du nombre d'orientations autorisées, etc. Tout ceci étant réglable par l'utilisateur comme des paramètres de l'algorithme : ce filtre permet donc d'obtenir une grande variété de rendus différents.


Fig.2.1.1. Apercu du filtre « Brushify » dans le greffon G'MIC pour GIMP. La brosse qui va être utilisée par l'algorithme est visible en haut à gauche.

L'animation ci-dessous illustre cette grande diversité de résultats, avec le traitement d'une même image d'entrée (photographie d'une tête de lion), en variant les types de brosses et les paramètres utilisés par l'algorithme. Brushify peut être assez coûteux en termes de temps de calcul (suivant le nombre de coups de pinceaux à simuler), même si l'implémentation de l'algorithme est déjà parallélisée (les différents coeurs de calcul pouvant donner des coups de pinceaux simultanément).


Fig.2.1.2. Quelques exemples de rendus du filtre « Brushify » à partir d'une même image d'entrée, en utilisant des brosses différentes.

À noter qu'il est amusant d'invoquer ce filtre à partir de la ligne de commande (grâce à la fonction -brushify disponible dans gmic), pour traiter des lots d'images et des vidéos (un exemple de vidéo « brushifiée »).

2.2. Reconstruction de données manquantes à partir d'échantillons épars

G'MIC se dote d'une nouvelle fonctionnalité de reconstruction de données manquantes dans des images. Nous avons déjà évoqué ce problème classique de reconstruction en traitement d'images dans des dépêches précédentes (avec l'inpainting comme illustré ici ou encore ici). La nouvelle méthode d'interpolation ajoutée suppose quant à elle que l'on ne dispose que de données connues éparses, par exemple quelques pixels de couleurs dispersés ça et là dans l'image, plutôt que des blocs entiers de données contiguës connues. L'analyse et la reconstruction de la géométrie des structures présentes dans l'image devient alors un problème particulièrement difficile.

La nouvelle fonction -solidify de G'MIC permet de reconstruire des données images denses à partir de quelques points épars connus, en utilisant une technique de reconstruction multi-échelle basée sur les EDP de diffusion. La figure ci-dessous illustre les capacités de cette méthode, avec un exemple de reconstruction d'une image de goutte d'eau. On ne garde ici que 2,7% des données image (ce qui est vraiment peu !) et l'algorithme reconstruit une image entière, qui ressemble à celle d'origine (même si, bien entendu, tous les détails de l'image originale n'ont pas été reconstruits complètement). Plus on dispose d'échantillons, plus on est capable de reconstruire des détails.


Fig.2.2.1. Reconstruction d'une image à partir d'un échantillonnage épars.

Cette technique de reconstruction étant assez générique, plusieurs filtres différents se basant sur celle-ci ont pu être élaborés et ajoutés dans G'MIC :

  • Le filtre Repair / Solidify permet d'appliquer l'algorithme de reconstruction de manière directe, en reconstruisant par interpolation les zones marquées comme transparentes dans les images d'entrées. L'animation ci-dessous montre l'application de ce filtre pour la réalisation d'un effet de flou artistique sur les bords d'une image.


Fig.2.2.2. Aperçu du filtre « Solidify » dans le greffon G'MIC pour GIMP.

D'un point de vue artistique, les possibilités de ce filtre sont nombreuses. Il est par exemple très utile pour générer simplement des dégradés de couleurs de formes complexes dans des images, comme le montre les deux exemples de la figure ci-dessous (ou encore cette vidéo, qui détaille le processus)


Fig.2.2.3. Utilisation du filtre « Solidify » de G'MIC pour créer simplement des dégradés de couleurs aux structures géométriques complexes (images d'entrées à gauche, résultats du filtre à droite).

  • Le filtre Artistic / Smooth abstract reprend le principe utilisé pour l'image de la goutte d'eau vu précédemment : il échantillonne une image de manière éparse, en plaçant des points clés préférentiellement sur les contours présents dans celle-ci, puis tente de reconstruire l'image entière à partir de ces échantillons seuls. Si le nombre d'échantillons est faible, le filtre va génèrer une image continue par morceaux qui peut donc être vue comme une abstraction lisse de l'image d'origine (voir la figure ci-dessous).


Fig.2.2.4. Aperçu du filtre « Smooth abstract » dans le greffon G'MIC pour GIMP.

  • Le filtre Rendering / Gradient [random] permet quant à lui la création de fonds colorés. Le filtre plaçe des points de couleurs aléatoirement sur une image, et les interpole ensuite spatialement avec l'algorithme de reconstruction. On obtient facilement des fonds d'écrans psychédéliques composés de dégradés de couleurs qui partent dans toutes les directions (voir figure ci-dessous).


Fig.2.2.5. Aperçu du filtre « Gradient [random] » dans le greffon G'MIC pour GIMP.

  • Simulation de films argentiques : ce nouvel algorithme de reconstruction d'images à partir d'échantillons épars a également une grande utilité pour les nombreux filtres de simulation de films argentiques, présents dans G'MIC depuis quelques années déjà. La section Film emulation propose en effet un grand choix de filtres dont le but est d'appliquer des transformations colorimétriques, pour simuler le rendu qu'aurait eu une photo numérique si elle avait été prise avec un appareil argentique muni d'un certain type de pellicule. La figure ci-dessous montre par exemple quelques unes des 300 transformations colorimétriques qu'il est possible d'appliquer à partir de G'MIC.


Fig.2.2.6. Quelques unes des transformations colorimétriques disponibles dans G'MIC (parmi + de 300).

D'un point de vue algorithmique, ces algorithmes de transformation colorimétrique sont très simples à mettre en œuvre : on dispose pour chacune des 300 transformations d'une HaldCLUT, c'est-à-dire d'une fonction définissant pour chaque couleur (R,G,B) des pixels de l'image originale, une nouvelle couleur (R,G,B) à attribuer aux pixels de l'image résultante. Cette fonction n'étant pas forcément analytique, une HaldCLUT est généralement stockée sous forme discrétisée, et donne donc le résultat de la transformation colorimétrique pour toutes les couleurs possibles du cube RGB (soit 224 = 16777216 valeurs si on travaille avec une précision de 8bits par composante). La figure ci-dessous illustre la façon dont une transformation colorimétrique basée HaldCLUT s'applique sur l'ensemble des couleurs du cube RGB.


Fig.2.2.7. Principe d'une transformation colorimétrique utilisant une HaldCLUT.

Autant dire que, même en sous-échantillonnant l'espace RGB (sur 6 bits par composante par exemple) et en compressant sans perte le fichier de transformation colorimétrique correspondant, on se retrouve vite avec un fichier qui est relativement volumineux (entre 200 et 300 Kio par fichier). Multipliez ce nombre par 300 (le nombre de transformations colorimétriques disponibles dans G'MIC), et vous arrivez à un total de 85 Mio environ pour stocker l'ensemble de ces transformations. Un peu lourd à diffuser pour de simples filtres de changement de couleurs !

L'idée était donc de développer une méthode de compression avec pertes qui pourrait s'adapter spécifiquement aux données de type HaldCLUT, c'est-à-dire à des fonctions volumiques discrétisées à valeurs vectorielles, qui sont par nature relativement lisses par morceaux. C'est donc ce qui a été fait, en se basant sur l'algorithme de reconstruction de données images à partir d'échantillons épars. Cet algorithme fonctionne en effet avec des données images pouvant être volumiques. Il suffit donc d'extraire un nombre suffisant de points-clés significatifs dans le cube RGB pour permettre la reconstruction d'une HaldCLUT entière, avec une erreur de reconstruction suffisamment faible pour que le résultat de la transformation colorimétrique résultante soit indistinguable de la transformation colorimétrique originale.


Fig.2.2.8. Principe du codage et de la reconstruction d'une HaldCLUT à partir d'un nuage de points clés définit dans le cube RGB.

Donc, au lieu de stocker l'ensemble des couleurs d'une HaldCLUT, on n'en stocke plus qu'un sous-ensemble épars représenté par une liste de { point-clés, couleurs }, et on laisse l'algorithme de reconstruction faire son travail pour regénérer la HaldCLUT entière, avant de l'appliquer sur l'image à modifier. Suivant la complexité des HaldCLUTs à appliquer, plus ou moins de points clés sont nécessaires (ça peut varier de 30 à 2000).
Résultat des courses : On passe de 85 Mio pour le stockage des 300 HaldCLUTs de G'MIC à 850 Kio, soit un gain de compression de 99% ! D'un point de vue pratique, ce nouveau fichier décrivant toutes les HaldCLUTs compressées est facilement distribuable et installable avec le greffon, et un utilisateur peut donc appliquer toutes les transformations colorimétriques de G'MIC en restant hors-ligne (alors qu'auparavant, chaque HaldClUT était téléchargée lors de l'application d'une nouvelle transformation colorimétrique).

Ce nouvel algorithme de reconstruction d'images à partir d'échantillons épars a donc beaucoup d'intérêt, et nul doute qu'il sera réutilisé dans d'autres filtres prochainement.

2.3. Rendre des textures périodiques

Le filtre Arrays & tiles / Make seamless [patch-based] permet de transformer une texture d'entrée en la rendant tuilable, c'est-à-dire en permettant sa répétition sous forme de tuiles le long des axes horizontaux et verticaux, sans que l'on distingue de discontinuités visibles lorsque les bords de deux tuiles adjacentes sont mises bout à bout. C'est une opération qui peut s'avérer très difficile à réaliser si la texture d'entrée est complexe, par exemple avec peu d'auto-similarité, ou avec des changements de luminosités flagrants.
C'est le cas de l'exemple illustré dans la figure ci-dessous, avec une texture chair de saumon présentée sous forme de 4 tuiles disposées en configuration 2x2. L'éclairage de cette texture varie de gauche à droite (du plus sombre vers le plus clair). L'algorithme proposé permet ici de transformer la texture pour que le recollement devienne quasiment invisible. Notons que l'on cherche ici à préserver la texture d'entrée le plus possible, contrairement à l'algorithme de re-synthèse de texture qui était déja disponible, et qui cherchait plutôt à recréer de toute pièces une instance aléatoire d'une texture de taille quelconque ayant les mêmes caractéristiques que la texture modèle. Essayez de réaliser ceci manuellement, et vous vous rendrez compte de la difficulté du problème (qui pourrait paraître simple au premier abord).


Fig.2.3.1. Aperçu du filtre « Make Seamless » du greffon G'MIC pour GIMP, pour rendre des textures tuilables.

À noter que la création de ce nouveau filtre d'aide au tuilage a été suggérée par rewind dans les commentaires de la dépêche précédente sur G'MIC ! Les grands esprits se rencontrent sur LinuxFr.org :)
On peut imaginer de belles applications à ce type de filtres, notamment dans le domaine du jeu vidéo où tuiler des textures pour créer de grands mondes virtuels est monnaie courante. Un autre exemple de tuilage d'une texture complexe de mousse en (tuilage 2x2) est présenté dans l'animation ci-dessous.


Fig.2.3.2. Résultat du filtre « Make seamless » de G'MIC pour rendre tuilable une texture de mousse.

2.4. Décomposition d'une image en niveaux de détails

Un nouveau filtre de décomposition d'image en plusieurs niveaux de détails nommé Details / Split details [wavelets] a également été ajouté. Il implémente un algorithme de décomposition en ondelettes à trous. Pour les connaisseurs, c'est exactement le même algorithme que celui qui est proposé dans le greffon populaire Wavelet Decompose pour GIMP, avec ici en plus, une prévisualisation des échelles de détails et une implémentation parallélisée, tirant parti du multi-coeurs. La figure ci-dessous illustre son action sur un portrait. L'application de ce filtre décompose une image en plusieurs calques de sortie, de telle manière à ce que chaque calque contienne les détails de l'image à une échelle donnée, et que l'ensemble de ces calques de sortie superposés redonne bien évidemment le rendu de l'image d'origine.


Fig.2.4.1. Aperçu du filtre de décomposition d'image par ondelettes dans le greffon G'MIC pour GIMP.

On peut ainsi travailler sur chaque calque séparément, et ne modifier les détails de l'image que pour une échelle donnée. Il y a de nombreuses applications à ce type de décomposition, l'une des plus spectaculaires étant la possibilité de retoucher la peau dans des photos de portraits : les imperfections de la peau se retrouvent généralement sur les calques correspondant à des échelles de détails moyens, alors que la texture naturelle de la peau (les pores) se retrouvent sur les échelles de détails fins, et on peut donc sélectivement effacer les imperfections tout en conservant une texture de peau naturelle après retouche (voir l'animation ci-dessous ou encore ce lien pour un tutoriel détaillé de la procédure, en utilisant GIMP).
Vous avez sans doute déjà vu des photos publicitaires de mannequins ayant une peau exagérément lisse (façon poupée barbie). Dans ce cas, vous savez maintenant que l'infographiste responsable a vraiment fait une retouche de goret ! (le bien-fondé de l'utilité de telles retouches est un autre débat dans lequel on ne se risquera pas ici).


Fig.2.4.2. Un exemple d'utilisation du filtre de décomposition d'image en ondelettes, pour la retouche réaliste de la peau sur un portrait (suppression des imperfections).

2.5. Débruitage d'images par méthode « Patch-PCA »

G'MIC est aussi connu pour posséder de nombreux algorithmes variés de débruitage et de lissage d'images (plus d'une quinzaine à ce jour). Et bien, il en a maintenant un de plus ! Repair / Smooth [patch-pca] est un nouvel algorithme de débruitage d'image performant, basé patch qui a été ajouté à G'MIC. C'est un algorithme parallélisé, mais très coûteux en temps de calcul (probablement à éviter sur des machines à moins de 8 coeurs…). En contrepartie, il est capable de débruiter certaines images de façon parfois spectaculaire, en supprimant le bruit et préservant les détails de l'image, comme l'illustre la figure ci-dessous, avec une image contenant un niveau de bruit assez important. (En passant, merci à Jérome Boulanger pour ses conseils d'expert sur ce sujet).


Fig.2.5.1. Résultat du nouvel algorithme de débruitage d'image basé « patch » de G'MIC.

2.6. Effet « Droste » : la mise en abyme continue

L'effet Droste (aussi appelé mise en abyme) du nom de la marque de cacao ayant utilisé cet effet dans une de ses publicités, consiste à dessiner une partie de l'image dans elle-même, et ceci de manière récursive. Un filtre Deformations / Continuous droste a été récemment ajouté à G'MIC, mais n'a en réalité rien de très nouveau puisque c'est « juste » une réécriture complète du filtre Droste qui était déjà disponible dans le greffon Mathmap depuis quelques années. Mathmap était un greffon populaire pour GIMP, mais il ne semble plus évoluer, ni même maintenu, et l'effet Droste était l'un de ses filtres les plus complexes et les plus emblématiques. Martin « Souphead », un ancien utilisateur de Mathmap a donc pris le taureau par les cornes et s'est attelé à la conversion de ce filtre pour G'MIC. L'intérêt c'est qu'au passage, l'implémentation devient parallélisée. Pour celles et ceux intéressés par les aspects mathématiques de l'effet Droste, on ne peut que recommander la lecture de cette page didactique rédigée par un chercheur du CNRS, page qui contient des résultats amusants de création de séquences périodiques d'images utilisant cette effet.


Fig.2.6.1. Aperçu du nouveau filtre « Droste » pour la création d'une mise en abyme, dans le greffon G'MIC pour GIMP.

Avec ce filtre, tous les délires artistiques sont permis. Il est par exemple trivial de créer en quelques clics de souris le résultat présenté dans la figure ci-dessous : il suffit de détourer l'horloge, de rendre le fond transparent, et d'appliquer le filtre Droste de G'MIC, et voilà ! (à ne pas montrer aux gens stressés par le temps qui passe…).


Fig.2.6.2. Exemple de transformation d'image possible avec le filtre « Droste » de G'MIC.

2.7. Transformation équirectangulaire <-> zénith/nadir

Le filtre Deformations / Equirectangular to nadir-zenith est également un filtre initialement disponible dans Mathmap et qui a été transposé pour G'MIC. C'est un filtre utilisé dans le domaine assez restreint du traitement d'images de panoramas utilisant une projection cylindrique équidistante. Un tel panorama est en général obtenu comme la fusion de plusieurs photographies prises à des angles différents, la fusion étant effectuée de manière algorithmique (par exemple avec le logiciel libre Hugin). Lors de la fusion, il est très fréquent que des pans entiers d'images manquent dans le panorama généré, notamment au niveau des vues de dessus et de dessous (le zénith et le nadir, voir un exemple dans la figure ci-dessous).


Fig.2.7.1. Panorama obtenu par outil de fusion d'image. Certaines parties de l'image (zénith et nadir) sont manquantes.

Il est souhaitable de pouvoir resynthétiser l'information manquante dans ces zones. Mais comment faire ? La déformation induite par la projection cylindrique équidistante fait que la reconstruction directe est difficile dans ces zones (l'utilisation de l'outil de clonage n'est pas adapté par exemple). C'est là que le filtre de G'MIC intervient, en permettant de recréer des vues applaties du zénith et du nadir.


Fig.2.7.2. Récupération des vues applaties du zénith et du nadir de l'image précédente, grâce au filtre G'MIC du greffon pour GIMP.

Une fois ces vues calculées, il devient plus facile de boucher les trous, en utilisant par exemple un filtre de reconstruction de type Inpainting ou l'outil de clonage si on préfère faire ça manuellement.


Fig.2.7.3. Rebouchage des trous, par une technique quelconque (« inpainting » ou outil de « clonage » par exemple).

Il suffit ensuite d'invoquer ce même filtre, en inversant cette fois la transformation, et de réinsérer les zénith/nadir reconstruits dans l'image panorama originale, et le tour est joué. On obtient une belle image panorama complète (voir figure ci-dessous). Notez comme la déformation de l'image est importante dans ces zones, et comment il aurait été difficile de reboucher les trous en agissant directement sur l'image du panorama original.


Fig.2.7.4. Application de la transformation inverse, et insertion dans le panorama d'origine.

Les images présentées dans cette section ont été aimablement fournies par Morgan Hardwood. Morgan a d'ailleurs écrit un tutoriel détaillé sur cette technique de rebouchage d'images de panoramas, qui est consultable ici.

3. Autres améliorations et faits notables

Pour finir, voici en vrac quelques points marquants concernant le développement du projet G'MIC :

  • Le filtre Rendering / Kitaoka Spin Illusion est une autre conversion d'un filtre Mathmap réalisé par Martin « Souphead ». Il permet de générer un certain type d'illusions d'optiques comme le montre la figure ci-dessous (si vous êtes épileptiques, un conseil, fermez les yeux !)


Fig.3.1. Résultat du filtre « Kitaoka Spin Illusion ».

  • Le filtre Colors / Color blindness transforme une image en simulant différents types de daltonisme. Ce filtre peut être utile pour tester l'accessibilité de sites ou de documents graphiques aux daltoniens. Nous avons repris les transformations colorimétriques dont le lien apparaît sur le site Coblis, site qui propose également ce genre de simulation, en ligne. Les résultats obtenus avec le filtre G'MIC sont donc à priori strictement identiques, mais peuvent s'effectuer facilement sur des lots d'images par exemple.


Fig.3.2. Aperçu du filtre de simulation de différents types de daltonisme dans le greffon G'MIC pour GIMP.

  • Depuis quelques années maintenant, G'MIC intègre un évaluateur d'expressions mathématiques, très commode pour réaliser des calculs lors de l'application de filtres (nous en avions d'ailleurs déjà longuement parlé lors de la dépêche précédente). Cet évaluateur d'expression se dote de nouvelles fonctionnalités intéressantes, en particulier la possibilité de faire du calcul avec des variables de type complexe, vectoriel ou matriciel, mais aussi de créer ses propres fonctions mathématiques personnalisées. Par exemple, l'implémentation classique du rendu de l'ensemble de Mandelbrot, réalisé en estimant la convergence d'une suite complexe, peut s'écrire directement de la façon suivante en ligne de commande:
$ gmic 512,512,1,1,"c = 2.4*[x/w,y/h] - [1.8,1.2]; z = [0,0]; for (iter = 0, cabs(z)<=2 && ++iter<256, z = z**z + c); 6*iter" -map 7,2


Fig.3.3. Utilisation de l'évaluateur d'expression mathématiques de G'MIC pour calculer un rendu de l'ensemble de Mandelbrot.

Les possibilités de calcul en sont grandement développée, puisque l'on n'est plus limité à l'utilisation de variables scalaires, mais qu'on peut définir des filtres qui, pour chaque pixel d'une image d'entrée, vont pouvoir effectuer rapidement des résolutions de systèmes linéaires ou encore des décompositions en valeurs propres/vecteurs propres. C'est un peu comme si on disposait d'un mini-(mini)-Octave à l'intérieur de G'MIC. Le filtre Brushify décrit plus haut utilise d'ailleurs de manière intensive ces nouvelles possibilités. À noter que cet évaluateur d'expression possède son propre JIT pour accélérer le calcul d'une expression lorsqu'elle est réalisée sur plusieurs milliers de valeurs simultanément.

  • Une autre contribution technique importante a été apportée par Tobias Fleischer, avec la création d'une API C pour appeler les fonctions de la bibliothèque libgmic (bibliothèque des fonctionnalités de G'MIC possédant initialement une API C++). Comme l'ABI C est standardisée (contrairement à celle du C++), G'MIC peut donc plus facilement s'interfaçer avec d'autres langages que le C++. On peut par exemple imaginer dans le futur la création d'APIs G'MIC pour des langages, comme Python. En passant : si quelqu'un est motivé pour réaliser ce genre de choses, qu'il n'hésite surtout pas à nous contacter ! Tobias utilise actuellement cette nouvelle API C pour développer des greffons basés sur G'MIC respectant l'API OpenFX. Ces greffons devraient donc être utilisables indifféremment dans des logiciels d'édition vidéo comme After effects, Sony Vegas Pro ou encore Natron (voir figure ci-dessous). C'est un travail qui est toujours en cours.


Fig.3.3. Aperçu des greffons OpenFX basés sur G'MIC, tournant sous Natron.


Fig.3.4. Aperçu du script d'interfaçage G'MIC fonctionnant dans le VSE de Blender.

  • Certaines fonctionnalités de G'MIC ont également fait leur apparition dans le logiciel de montage vidéo non-linéaire Flowblade, grâce au travail acharné de Janne Liljeblad son programmeur principal (voir figure ci-dessous). Là encore, le but est de permettre d'appliquer des effets G'MIC sur des séquences d'images dans un but essentiellement artistique, comme le montre cette vidéo, ou encore celle-ci.


Fig.3.5. Aperçu d'un filtre G'MIC tournant sous Flowblade, éditeur non-linéaire de vidéos.

  • Notons également que de plus en plus de ressources extérieures faisant mention de G'MIC font leur apparition sur la toile : des tutoriaux et des articles de blog (ici, ici, ici…), ou encore des vidéos de démonstrations (ici, ici, ici, ici…). C'est très positif pour la visibilité du projet, et en même temps cela fait vraiment plaisir à voir. Merci donc à tout ces gens qui prennent le temps d'en parler de manière bénévole et désintéressée !
4. Comment tout cela va évoluer ?

Quelques petites observations :

  • Comme vous pouvez le constater, le développement du projet G'MIC se poursuit à un rythme soutenu. Ses fonctionnalités semblent intéresser de plus en plus d'utilisateurs (ce que confirme les statistiques de visites/téléchargements du site web), mais aussi de plus en plus de développeurs : aujourd'hui, on retrouve des intégrations ou des greffons (plus ou moins aboutis) basés sur G'MIC dans des logiciels libres aussi divers que GIMP, Krita, Blender, Photoflow, Flowblade, Veejay, EKD et dans un futur proche (du moins on l'espère) Natron.
  • L'un ne va probablement pas sans l'autre : le fait d'avoir des utilisateurs nous encourage à ajouter de nouvelles fonctionnalités régulièrement, ce qui attire aussi de nouveaux utilisateurs. Tant que ça fonctionne de cette façon, on essayera de continuer ! Car notons tout de même que tout ceci demande pas mal de temps (pour ma part, entre 10 et 15 heures par semaine en dehors de mes heures officielles de travail).
  • Tout ça pour redire un grand merci aux utilisateurs et aux contributeurs (toujours plus nombreux), aux curieux et à ceux qui font de la publicité au projet directement ou indirectement. Ça aide énormément !

En réalité, on ne sait pas encore comment le projet G'MIC va évoluer dans le futur, mais il y a déjà tellement de choses à faire dans le présent qu'on se concentre dessus pour le moment. On vous donne peut-être rendez vous dans quelques mois pour la suite des aventures de G'MIC. On vous invite également à rejoindre la communauté présente sur notre forum officiel sur pixls.us pour obtenir plus de renseignements et répondre à vos questions sur le projet. Et surtout, en attendant, n'hésitez pas à vous mettre au traitement d'images libre !

Télécharger ce contenu au format Epub

Lire les commentaires

LibraZiK 1.2 : Premier pas (20160429)

Mercredi 4 Mai

LibraZiK est un projet qui a pour objectif de fournir un système robuste, prêt à l'emploi, et avec une documentation à jour, aux francophones souhaitant faire de la Musique Assistée par Ordinateur (M.A.O.).

LibraZiK est un studio audio-numérique complet fabriqué à partir de logiciels libres pour les ouvrages musicaux.

Après 3 mois de boulot, j'ai le plaisir de vous annoncer la disponibilité de LibraZiK 1.2 !

Au menu principal : tout LibraZiK a été reconstruit pour fournir une version 64 bits (version 32 bits toujours disponible également).

Regardons tout cela d'un peu plus près.

Sommaire

Alors, quoi de nouveau depuis le dernier billet concernant la version précédente ?

Une nouvelle image amorçable (DVD ou USB)

Avec, entre autres :

  • l'apparition d'une version 64 bits (la version 32 bits est également disponible),
  • une reconstruction de tous les paquets-logiciels de LibraZiK en version 64 bits et 32 bits,
  • une possibilité d'installation de l'image amorçable avec une connexion wifi,
  • de nouvelles documentations et mise à jour de documentations déjà existantes,
  • et pas mal de nouveautés logicielles que nous allons voir ci-dessous.
Côté logiciel : Nouveaux logiciels de musique
  • monobristol : un émulateur de synthétiseurs analogiques et autres orgues mythiques (genre les Rhodes, certains Korg et autres) ! À noter que LibraZiK lui fournit une traduction en français de son interface graphique,
  • patchage: pour faire des connexions entre vos logiciels plus intuitivement qu'avec QjackCtl,
  • lv2vocoder: un greffon "vocodeur" au format LV2,
  • ensemble de greffons cmt: une suite de greffons au format LADSPA,
  • autotalent: un greffon au format LADSPA qui permet de corriger les fausses notes chantées. Il peut bien évidemment être détourné de cette utilisation pour en faire des tas d'autres trucs ! C'est à vous de nous dire comment vous l'utilisez ! À noter que LibraZiK lui fournit une traduction en français de son interface graphique,
  • drumkv1, samplv1et synthv1: en greffons LV2 et en logiciels autonome, une trilogie comprenant un synthétiseur virtuel, un échantillonneur et une boîte à rythme,
  • giada, un boucleur audio et/ou MIDI,
  • mverb, un effet de traitement du son et, plus précisément, une belle petite réverbération, disponible en logiciel autonome ainsi qu'en greffon LV2, DSSI, LADSPA et VST grâce au travail de portage sous Linux de Filipe Coelho. LibraZiK commence à être sérieusement bien équipée du côté des réverbérations.
  • qjackrcd, un petit enregistreur tout simple bien pratique !
Mise à jour de logiciels de musique
  • nouvelle version de jalv.select apportant : une icône dans la zone de notification de la barre des tâches (systray), un tri alphabétique des greffons, des raccourcis-clavier pour plusieurs actions, une possibilité de le démarrer minimisé dans la barre des tâches, une possibilité de sélection des greffons et de leurs pré-réglages par le clavier,
    • playitslowly pour la correction d'un bogue : si vous paramétriez le départ de lecture à autre chose que 0 puis pressiez le bouton de rembobinage, alors la tête de lecture retournait à 0 avant de sauter jusqu'à la position de départ sélectionnée. Ceci pouvait occasionner un genre de ''crrrrounnnch'' du son dans certaines conditions. Maintenant, la tête de lecture va directement à la position de départ sans passer par le 0.
    • ardour4 passe en version 4.6 avec pas mal de nouveautés, voir ici (en anglais),
    • Grosse nouveauté ! nouvelle version 2.5.3 de ZynAddSubFX qui apporte notamment la possibilité d'utiliser certains de ces effets en externe grâce aux versions LV2 ou VST de ces effets, ce qui veut dire que vous allez pouvoir les utiliser partout encore plus facilement. À noter également que cette version voit le retour du greffon DSSI ! Création des pages de documentation pour ces greffons : zynalienwah, zynchorus, zyndistortion, zyndynamicfilter, zynecho, zynphaser, zynreverb.
Logiciels divers
  • ajout de vrms, petit utilitaire pour traquer les paquets non-libres sur votre système,
  • ajout de l'extension adblockplus pour iceweasel permettant de faire disparaître des publicités,
  • ajout de tout un tas d'outils bas-niveau pour le partitionnement des périphériques, et pour la reconnaissance et la manipulation de certains systèmes de fichiers,
  • nouveaux noyaux 4.4.6 en version "normaux", "basse-latence" et "temps-réel", pour système 64 bits et 32 bits (normal et PAE). Voir la page explicative concernant les noyaux,
  • nouvelle version de gparted pour ajouter la francisation de l'élément de menu,
  • ajout d'une optimisation permettant la prévisualisation des fichiers XCF (format natif des images du logiciel de dessin et/ou retouche photo "GIMP") . Ceci permet de voir des vignettes miniatures des fichiers *.xcf (de GIMP) sur votre bureau ou dans votre navigateur de fichiers Caja.
Côté documentation : Mise à jour Nouveaux tutoriels Autres
  • Mise en place d'un outil de suivi des bugs (et adaptation au thème graphique général du site) pour pouvoir remonter et garder une trace des améliorations possibles.
  • Mise à jour des greffons de dokuwiki (le logiciel qui sous-tend la documentation)
  • Création d'une fiche pour LibraZiK sur audiofanzine(merci sub26nico !)
Pour les testeurs
  • audacity 2.1.2 ,
  • drumgizmo 0.9.9 et dgedit (son éditeur de kit de batterie) 0~git20151217 ,
  • reZound et la traduction entière de son interface graphique. Documentation : reZound - tour d'horizon,
  • aseqjoy,
  • ardour4 passe en version 4.7 + support expérimental de l'importation de session ProTools,
  • une version du client de messagerie instantanée internet Pidginavec un ajout du support JACK (merci Janus1 du canal IRC),
  • hydrogen 0.9.7 pré-version de test.
Installer Librazik

Si vous êtes nouveau et que vous n'avez pas encore installé LibraZiK, ou bien, si vous voulez vous refaire un Live à jour, veuillez consulter cette documentation qui vous permettra de l'essayer sans l'installer. Vous pourrez, bien entendu, ensuite installer LibraZiK si vous le souhaitez.

Mettre à jour

À noter que si vous aviez un système 32 bits sur un ordinateur 64 bits et que voulez y mettre un système 64 bits, alors une réinstallation complète est le meilleur conseil qui puisse vous être donné.

Si vous aviez une version 32 bits et que vous restez sur une version 32 bits, alors vous n'avez pas besoin de réinstaller votre système. Il vous suffit de le mettre à jour régulièrement. Cette nouvelle version du Live permet simplement d'intégrer les nouveautés récentes de LibraZiK dans le Live.

Bonne ZiK !

Olivier

Télécharger ce contenu au format Epub

Lire les commentaires

Ancestris est disponible pour Haïku

Mercredi 4 Mai

Conséquence directe de contacts lors des JDLL 2016 la distribution Haïku a intégré dans ses paquets le logiciel de généalogie Ancestris depuis le vendredi 22 avril 2016.

Ancestris est gratuit et libre (GPL v2), et il respecte la spécification GEDCOM version 5.52. Il est disponible pour Linux, BSD, Solaris, MAC et Windows. Il est écrit en langage Java et repose sur la plate-forme NetBeans d'Oracle.

Haïku est la première distribution qui met officiellement Ancestris à disposition et ce en un seul et unique contact alors que pour les autres distributions cela traîne encore.

C'est un responsable de paquets d'applications Java qui a fait un paquet binaire, c'est disponible. Dans Haiku il est accessible sur le dépôt "clasqm".

Attention, la dernière alpha disponible n'a pas encore la gestion des paquets, il faut prendre une nightly build en attendant la bêta.

Merci de la part de l'équipe de développement/communication/diffusion d'Ancestris

Capture d'écran d'Ancestris 0.8 (cliquez dessus pour agrandir) :

Télécharger ce contenu au format Epub

Lire les commentaires

Second Open Source Innovation Spring du 3 mai au 28 juin 2016 #OSIS2016

Mardi 3 Mai

La précédente édition ayant plutôt bien fonctionné, l'IRILL (Institut de Recherche en Informatique et Logiciel Libre) et le GTLL (Groupe Thématique Logiciel Libre du pôle de compétitivité francilien Systematic) remettent le couvert pour un second printemps de l'innovation Open Source, OSIS de son petit nom, en lien avec le Paris Open Source Summit.

Il s'agit de huit conférences sous la même bannière pendant ce printemps (et début d'été !) du 3 mai au 28 juin sur Paris et l'Île-de-France. Le but est de mettre en valeur le travail des équipes de chercheurs français mais aussi la R&D des PME en logiciel libre, notamment auprès des industriels et des institutionnels. L'idée est de faire ressortir des innovation issues de l’Industrie et de la Recherche française, dont le succès et la visibilité se veulent mondial, sur les thèmes porteurs actuels (Big Data, IoT, Cloud, Qualité)

Sommaire Programme de l'OSIS 2016

Plus de quarante conférenciers sur huit conférences portant sur la qualité logicielle, la sureté et sécurité, l'Internet des objets, le déluge des données et l'info-nuagique, etc.

Si les interventions de mai sont déjà bouclées, celles pour juin sont encore en construction. Les informations seront mises à jour si besoin. Pour le programme détaillé, cliquez sur le titre de l'événement.

[IoT] L’Open Source pour l’Internet des Objets

Pour l'industrie des objets connectés, intégrer l'écosystème du libre est une nécessité et une assurance de pérennité.

  • Date : le 3 mai de 14h à 19h
  • Lieu : dans les locaux de Deloitte au 136 av. Charles de Gaulle à Neuilly sur Seine
  • Direction de programme : Pierre Ficheux, directeur technique d'Open Wide Ingénierie (groupe Smile), et Emmanuel Baccelli, directeur de recherche Inria (équipe INFINE) et coordinateur de la communauté RIOT
  • Intervenants : Pierre Ficheux (OpenWide), Emmanuel Baccelli (Inria, RIOT team), Philippe Coval (Samsung), Mark Burton (GREENSOCS), Philippe Krief (Eclipse Foundation), Jean-Paul Smets (NEXEDI) et Christophe.Reithler et Fabrice Dewasmes, (Tarkett/NeoPixl)
  • Informations et inscriptions (il reste très peu de places)
[Qualité Logicielle] Sécurité, sûreté et confidentialité

Le logiciel est devenu partie intégrante de tous les aspects de notre vie et de notre société, et cela pose de nombreux défis : il faut s'assurer qu'un logiciel fait bien ce pour quoi il est prévu (sûreté de fonctionnement), qu'il n'y a pas de comportements non autorisés (sécurité) et qu'il permet le respect de la confidentialité des données. Ce sont autant de défis importants qui sont interconnectés.

Lors de cette journée, académiques et industriels feront le point sur l'état de l'art. Ce sera une occasion unique de comprendre ce que font la recherche et l'industrie dans ces domaines critiques pour notre futur.

  • Date : le 10 mai de 9h à 17h
  • Lieu : Université Paris 13, Institut Galilée, Amphi B, à Villetaneuse
  • Direction de programme : Laure Petrucci, directrice du Laboratoire d'Informatique de Paris Nord (LIPN), Université Paris 13, et Roberto Di Cosmo, directeur de l'Irill, Inria, professeur à l'Université Paris-Diderot
  • Intervenants : Laure Petrucci (LIPN), Stefane Fermigier (GTLL), Jean Mairesse (CNRS), Catuscia Palamidessi (LIX), Benjamin Morin (ANSSI), Tayssir Touili (LIPN), John Regehr (TrustInSoft), Fabrice Kordon (LIP6), Véronique Delebarre (SafeRiver)
  • Informations et inscriptions
[Qualité Logicielle] Langage et outils pour la fiabilité logicielle
  • Date : le 12 mai de 14h à 19h
  • Lieu : locaux de l'IRILL, Université de Jussieu, Paris
  • Direction de programme : Emmanuel Chailloux (LIP6/UPMC, Irill), Roberto Di Cosmo (Irif, Irill, Inria, UPD) et Fabrice Le Fessant (Inria, OCamlPro)
  • Intervenants : Raphaël Amiard (Adacore), Léo Testard (Mozilla), Vincent Balat (BeSport et Université Paris-Diderot), Thierry Lecomte (Clearsy), Antoine Miné (LIP6 - Université Pierre et Marie Curie), Francesco Logozzo (Facebook)
  • Informations et inscriptions
[Cloud] Open Source pour le cloud et les conteneurs

L'Open Source est omniprésent dans les technologies Cloud et conteneur. Cette journée permettra d'apporter un éclairage académique et industriel autour de ces deux technologies. Nous aborderons l'optimisation des ressources gérées par ces technologies, quelles sont les manières d'architecturer les applications en utilisant des microservices, et les problématiques engendrées par la virtualisation de réseau associée aux machines virtuelles et aux conteneurs.

  • Date : le 17 mai de 10h à 19h
  • Lieu : Locaux d'Henix, 23-25 avenue du Docteur Lannelongue, Paris
  • Direction de programme : Frédéric Lepied (Red Hat) et Gilles Muller (Inria / LIP6)
  • Intervenants : Vivien Quéma (IMAG), Gaël Thomas (Telecom Sud-Paris), Pierre Sens, Gauthier Voron et Julien Sopena (LIP6), Olivier Barais et David Bromberg (IRISA), Emile Vauge (Containous), Christophe Sauthier (Objectif Libre), Sylvain Afchain et Chmouel Boudjnah (Red Hat), Hervé Leclerc (Alter Way)
  • Informations et inscriptions
[Big Data] PyData Paris

PyData conferences are a gathering of users and developers of data analysis tools in Python. The goals are to provide Python enthusiasts a place to share ideas and learn from each other about how best to apply the language and tools to ever-evolving challenges in the vast realm of data management, processing, analytics, and visualization.

We aim to be an accessible, community-driven conference, with tutorials for novices, advanced topical workshops for practitioners, and opportunities for package developers and users to meet in person.

A major goal of PyData events and conferences is to provide a venue for users across all the various domains of data analysis to share their experiences and their techniques, as well as highlight the triumphs and potential pitfalls of using Python for certain kinds of problems.

  • Date : le 14 juin de 9h à 18h
  • Lieu : Paris
  • Direction de programme : Alexandre Gramfort (Telecom ParisTech), Stéfane Fermigier (Abilian, GTLL), Gaël Varoquaux (Inria)
  • Intervenants : en cours de validation
  • Informations et inscriptions
[Big Data] Scikit-Learn Day Paris

The Scikit-Learn Day 2016 : for beginners, contributors and startup founders

  • Date : le 15 juin de 9h à 17h:
  • Lieu : Paris
  • Direction de programme : Alexandre Gramfort (Telecom ParisTech) et Gaël Varoquaux (Inria)
  • Intervenants : (en cours de confirmation)
  • Informations et inscriptions
[Qualité Logicielle] Frama-C Day

A one-day workshop by the Frama-C community, gathering both academic & industrial users around shared experiences and new perspectives.

  • Date : le 20 juin de 9h à 17h
  • Lieu : Paris
  • Direction de programme : Florent Kirchner, directeur du laboratoire Sûreté du logiciel, CEA List
  • Intervenants : (en cours de confirmation)
  • Informations et inscriptions
[Qualité Logicielle] Techniques de programmation web à l’état de l’art

Les applications web actuelles sont de plus en plus dynamiques et mélangent un calcul du côté du serveur web (et parfois serveur applicatif ou base de données) et un calcul dans le navigateur. Elles sont donc "multi-tier" c.à.d. à plusieurs étages.
Pour éviter la complexité intrinsèque de codage d'application multi-programmes, la tendance est de méta-programmer, donc de générer du code différent dans le serveur et le navigateur. Un concept fondateur est la notion de continuations. Le système HOP (et quelques autres) propose un langage unique qui mélange les calculs des deux côtés. Enfin, la tendance se dessine d'inverser le contrôle dans le développement Web, au profit du navigateur.
Cette demi-journée devrait intéresser tout développeur Web, notamment ceux qui sont effrayés par la complexité grandissante du flot de contrôle dans les applications Web.

  • Date : le 28 juin de 14h à 18h
  • Lieu : locaux de l'IRILL, Université de Jussieu, Paris
  • Direction de programme : Roberto Di Cosmo, IRILL, Inria, UPD et Basile Starynkevitch, CEA List, Laboratoire Sûreté du logiciel
  • Intervenants : Christian Queinnec (LIP6, UPMC), Manuel Serrano (Inria), Gregory Potdevin (Appcraft.fr) (provisoire)
  • Informations et inscriptions
Télécharger ce contenu au format Epub

Lire les commentaires

Sondage 2016 pour présenter votre GULL

Mardi 3 Mai

Ceci est un sondage 2016 pour connaître l'évolution des activités des GULL, Groupes d'Utilisateurs de Logiciels Libres depuis leur création. Merci de le transmettre à vos membres et non membres durant un atelier, pour le compléter avec votre association. Envoyez-nous vos réponses avant le 25 mai 2016 à vale-pada@gmx.com et t@thlf.me. L'analyse sera publiée sur LinuxFr.org et les sources archivées par l'April.

Pour mieux connaître votre GULL
  • 1 . Quel est le nom de votre GULL: ……………..
  • 2 . Quelle est l'année de création de votre GULL?: ……………..
  • 3 . Dans quels pays et département êtes-vous situé ? : ……………..
  • 4 . Combien de membres avez-vous eu en moyenne en 2015 ? : …..
  • 5 . Quel est le ratio homme / femme, membres de votre GULL ? …. (compléter par: 7 hommes, 3 femmes ou 70% hommes et 30% de femmes)
  • 6 . En 2015, dans quel type de structure accueilliez-vous les participants aux ateliers (install party, démo, des présentations) ? …………….. exemple: une salle dans la bibliothèque, maison de quartier, autre.
  • 7 . Pour présenter votre activité, annoncer les dates de rencontres et relayer les actualités, lequel de ces outils avez-vous mis en place? : un forum, un site Web, un compte Framasphère, Facebook, un blog, un wiki, Twitter, autre.
  • 8 . Mise en réseau :
    • 8.1 Avez-vous mis des liens vers des sites amis ou des activités connexes : oui / non
    • 8.2 Un annuaire des entrepreneurs locaux du Libre : oui / non
    • 8.3 Des actualités locales/régionales ou nationales sur le Libre : oui / non
    • 8.4 Des ressources comme des présentations ou des livres de références : oui / non
Les expériences de votre GULL
  • 9 . Quelles solutions ou services a apporté votre GULL lors de sa création : …………….. exemple: un service de proximité, une alternative, un témoignage en entreprise, logiciel…
  • 10 . Depuis votre création, quelles sont les 3 questions les plus fréquemment posées par les participants (install party) : ……………..
  • 11 . Ces dernières années, quelles sont les 3 questions les plus posées par les participants de vos ateliers (install party) : ……………..
  • 12 . Citez 3 de vos projets phares menés depuis la création de votre GULL et qui ont reçu un retour positif : …………….. exemple : contribuer et animer une journée du Libre (liens), préparer un stand aux RMLL avec les membres (liens), soutenir des entreprises du Libre (liens), autre.
  • 13 . Quels sont les freins majeurs à l'adoption du Libre que vous avez constatés : ……………. exemple: le manque de temps, les groupes de pression, le manque d'accompagnement au changement, améliorer sa communication, autre.
  • 14 . Quels sont les éléments mobilisateurs que vous avez constatés : …………….. exemple: animer sur une nouvelle version, un sujet d'actualité, inviter un entrepreneur, un chercheur, l'associer à d'autres associations et communautés (Open Street Map, Ubuntu-Fr…), autre.
En 2016, si vous regardez en arrière et ce que vous avez accompli
  • C'est-à-dire sur votre travail enthousiaste d'informer et animer des ateliers de proximité, de soutenir et échanger avec d'autres collectifs, organiser des événements du Libre:
  • 15 . Quelles sont les phases majeures que vous notez depuis le lancement de votre GULL? ……………..
  • 16 . Quelles sont les 5 évolutions majeures dans la communauté du Libre que vous retenez depuis dix ans ? ……………..
  • 17 . Quel élément ou chiffre illustre pour vous la force du Libre, ces dernières années? ……………..
  • 18 . Parce que nos communautés partagent, présentez-nous un de vos bons souvenirs dans l'aventure du Libre : un témoignage, un encouragement, une reconnaissance, un projet qui a grandi. Dans notre GULL, notre meilleur souvenir est "……………". N'hésitez pas à nous envoyer des photos, si vous souhaitez :-)

Merci à toutes et tous. Bonne rédaction.
Librement !

Tout savoir sur: Télécharger ce contenu au format Epub

Lire les commentaires

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

Mardi 3 Mai

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

[LeMagIT] OS, poste de travail, suite bureautique: osez les alternatives!

Par Gene Demaitre, le vendredi 29 avril 2016. Extrait:

Les administrateurs réfléchissant à des alternatives libres aux postes de travail Windows devraient savoir ce qu’offre déjà la communauté.

Lien vers l'article original: http://www.lemagit.fr/conseil/OS-poste-de-travail-et-suite-bureautique-oser-les-alternatives

[Télérama] Hadopi supprimée en 2022: “Je ne m'attendais pas à ce que l'amendement passe”

Par Olivier Tesquet, le vendredi 29 avril 2016. Extrait:

La député Isabelle Attard a réussi, à la surprise générale, a faire passer un amendement qui prévoit en 2022 la fin de la haute autorité chargée de la lutte contre le téléchargement illégal. Elle s'en explique.

Lien vers l'article original: http://www.telerama.fr/medias/hadopi-supprimee-en-2022-je-ne-m-attendais-pas-a-ce-que-l-amendement-passe,141720.php

[Next INpact] Loi Numérique: les sénateurs grillent la priorité au logiciel libre

Par Marc Rees, le jeudi 28 avril 2016. Extrait:

Dans le cadre des débats autour du projet de loi Lemaire, les sénateurs ont finalement refusé d’accorder la priorité au logiciel libre dans la vie des administrations. En lieu et place, ils ont adopté un amendement du groupe socialiste se limitant à encourager ces licences.

Lien vers l'article original: http://www.nextinpact.com/news/99643-loi-numerique-senateurs-grillent-priorite-au-logiciel-libre.htm

Et aussi:

Voir aussi:

[Libération.fr] Grâce au numérique, le mouvement perpétuel

Par Amaelle Guiton, le jeudi 28 avril 2016. Extrait:

La création de plusieurs outils, dont la nouvelle version du site mise en ligne mercredi, vise à soutenir les rassemblements et à prolonger la lutte sur Internet.

Lien vers l'article original: http://www.liberation.fr/france/2016/04/28/grace-au-numerique-le-mouvement-perpetuel_1449290

Et aussi:

[ZDNet] Bureautique: le format ODF recommandé dans les administrations

Par Thierry Noisette, le lundi 25 avril 2016. Extrait:

La nouvelle version du référentiel général d'interopérabilité recommande le format ODF dans les administrations et pointe les défauts de l'OOXML de Microsoft. Le RGI s'appuie par ailleurs sur Wikipedia.

Lien vers l'article original: http://www.zdnet.fr/actualites/bureautique-le-format-odf-recommande-dans-les-administrations-39836012.htm

Et aussi:

Voir aussi:

[Next INpact] Au Sénat, nouvelle charge contre l'ouverture des codes sources des administrations

Par Xavier Berne, le mercredi 25 avril 2016. Extrait:

Alors que les discussions relatives au projet de loi Numérique doivent débuter demain au Sénat, un parlementaire vient de déposer un amendement s’opposant à l’ouverture du code source des administrations – au travers d’une argumentation qui risque d'en laisser plus d'un pantois.

Lien vers l'article original: http://www.nextinpact.com/news/99591-au-senat-nouvelle-charge-contre-l-ouverture-codes-sources-administrations.htm

Voir aussi:

Télécharger ce contenu au format Epub

Lire les commentaires

Bilan 2015 du MMORPG Ryzom

Lundi 2 Mai

Ryzom est un jeu de rôle en ligne massivement multijoueur (MMPORG) dans un monde de science-fantasy sur une planète végétale.

L'année 2015 a permis la mise en place de structures et d'outils indispensables à l'ajout de nouveautés en jeu. Ce travail de longue haleine, souvent ingrat et invisible des joueurs, a permis de poser les fondations qui permettront d'ajouter en 2016 ce dont nous rêvons et que nous avons promis à la communauté : du nouveau contenu.

Sommaire Général Implication officielle des projets libres Ryzom Core et Ryzom Forge dans l'évolution du jeu Ryzom

Les projets libres Ryzom Core et Ryzom Forge sont étroitement et officiellement impliqués dans le développement du jeu Ryzom. Auparavant, les équipes équivalentes de Ryzom, Ryzom Core et Ryzom Forge travaillaient chacune de leur côté, sans concertation directe ni choix décidés conjointement. Afin d'améliorer leur coordination et leur efficacité, ces équipes équivalentes ont été fusionnées. Voir le compte-rendu du Ryzom Forge meeting du 19 janvier 2015 pour en savoir plus.

Suivi du travail des équipes de Ryzom

Celui-ci se fait grâce à l'ajout d'une page "Suivi des Équipes" sur la page d'accueil du WebIG. Cette page remplace l'ancien "Suivi du Dev", et informe du travail de l'ensemble des équipes de Ryzom.

Développement

2015 a vu la création comme l'amélioration, pour les besoins de Ryzom, de plusieurs outils : l'outil de création de contenu Ryzom Arkitect, l'outil d'exportation graphique de divers formats (Blender et de nombreux autres) vers NeL sans passer par 3DsMax.
Plusieurs documentations ont été créées et mises à la disposition de tous ceux souhaitant créer du contenu dev pour le jeu.
De nombreuses améliorations et corrections de bugs ont été effectuées.

Voici les 14 principales tâches réalisées en 2015 :

1 - Amélioration de la sécurité
  • https://secure.ryzom.com n'accepte plus désormais SSLv3, il a reçu la note A+ sur le test ssllabs.
  • Mise à jour du certificat SSL x.509 sur RSYNC pour que les joueurs sous Linux puissent à nouveau créer des comptes.
2 - Amélioration de l'outil de création de contenu Ark

Cet outil, déjà à la disposition des bénévoles de Ryzom et de Ryzom Forge, est destiné à être ouvert à l'ensemble des joueurs de Ryzom courant 2016. L'ajout graduel d'une nouvelle interface rend peu à peu cet outil dev plus simple à utiliser par les joueurs non développeurs.

Parallèlement, la sécurité d'Ark a été accrue afin de répondre à l'utilisation de l'outil par tous.
De nouveaux modules sont ajoutés à Ark au fil des besoins des différentes équipes, enrichissant peu à peu les possibilités techniques de cet outil. Ce travail se poursuivra en 2016.

3 - Amélioration du "Patchlet"

Le Patchlet, ou "mini-patch", est une application permettant d'ajouter ou de modifier du contenu en jeu sans avoir à redémarrer le serveur. Son dysfonctionnement sous Mac a été corrigé en 2015.

4 - Création de l'outil libre (cc-by-SA) "Blender Exporting"

Cet outil, utilisable sur toutes les plateformes, a pour objectif de permettre aux infographistes de se passer de 3DsMax (logiciel propriétaire payant) en exportant directement leurs productions graphiques de Blender et d'autres logiciels vers NeL, le moteur libre de Ryzom. Le développement de Blender Exporting est financé par Winch Gate, la société propriétaire de Ryzom.

La première phase, en test, est l'outil d'export lui-même. Il convertit les modèles Blend au format NeL sans avoir trop besoin d'interactions de la part des artistes. La deuxième phase, en cours, consiste à créer un éditeur de propriétés et les mesh, pour permettre aux artistes de spécifier les effets avancés pour les mesh (comme la réflexion sur les modèles, le vent dans les arbres, etc). La troisième phase est la création de l'éditeur de zone.

En attendant la fin des tests, il est compilable. Il peut aussi être téléchargé via ryzom_tools_static_*.zip sur la page http://ryzom.kervala.net/clients/.

5 - Ajout de l'option de paiement PayPal pour remplacer PaySpan (PayByCash)

Il est maintenant possible d'acheter un ou plusieurs mois de jeu à Ryzom via PayPal et de cumuler plusieurs achats afin d'obtenir une durée de jeu personnalisée (2 fois 3 mois pour obtenir 6 mois par exemple).

Afin de répondre à une demande récurrente de la communauté de joueurs, cette application permet aussi à ceux le désirant de faire un don pour Ryzom via Paypal. À noter que, en raison des frais engendrés par Paypal, le prix du mois de jeu via cette option est plus élevé que via PaySpan : 1 mois : €8.95 / mois - 3 mois : €8.50 / mois - 1 an : €7.50 / mois.

6 - Création d'un système interne de gestion des tickets

L'outil externe de gestion des tickets utilisé par le Support de Ryzom étant devenu payant, un outil interne à Ryzom a été créé pour le remplacer. Ryzom est donc maintenant indépendant quant au système de gestion des tickets.

7 - Création d'items virtuels

Créer de nouveaux items réels est difficile et demande beaucoup de travail. Aussi le groupe dev a-t-il créé une version "simplifiée" des items réels : les items virtuels. Ceux-ci apparaissent en jeu dans un nouvel onglet de la fenêtre d'inventaire, nommé "Sac spécial".
Un correctif a été appliqué afin que les utilisateurs de Linux et Mac puissent visualiser ces items spéciaux.

8 - Réalisation de tutoriels dev

Ces tutoriels sont destinés à ceux souhaitant participer activement, côté dev, à l'ajout de contenu en jeu :

9 - Création d'un générateur de noms atysiens

Ce générateur de noms atysiens crée à la demande des noms pour des personnages fyros, matis, trykers, zoraïs ou maraudeurs.

10 - Changement de disques durs RAID

Un changement d'urgence de disques durs RAID du serveur de tests "Yubo" a été réalisé, suivi de la réinstallation complète de ce serveur. Par précaution, un changement préventif de disques durs RAID a aussi été effectué sur le serveur de jeu "Atys".

11 - Améliorations Dev pour préparer l'arrivée de Ryzom sur Steam

L'arrivée de Ryzom sur Steam est prévue courant mai 2016.
Pour en savoir plus sur l'arrivée de Ryzom sur Steam.

Afin de préparer au mieux cet évènement, Ryzom Core a effectué en 2015 un énorme travail pour mettre à jour les clients sur toutes les plateformes et corriger certains bugs.

  • Les clients sont prêts pour Linux 32 et 64 bits, Windows 32 et 64 bits et OS X. Ils sont pour le moment disponibles en test. Leur dernière version sera ensuite téléchargeable par Steam ou par le site web de Ryzom.
  • Des outils compilés pour Windows, OSX et Linux sont disponibles en fin de liste sur http://ryzom.kervala.net/clients/ (voir ryzom_tools_*)
  • Correction de nombreux bugs. Cf liste complète et simplifiée. Notamment, le bug faisant planter les utilisateurs de Mac passant un vortex avec le son du jeu activé a été corrigé, ainsi que celui empêchant certains utilisateurs de Linux de voir l'eau (correctif pour les cartes NVidia avec Optimus).
  • Mise à jour quotidienne des traductions des fichiers du client avec les corrections et les traductions manquantes transmises par l'Équipe de Traduction. Le tout est intégré dans les données de Steam.
  • Correction de la météo différente sous Windows, Linux et Mac.
  • Affichage de la page Réalité Virtuelle avec Occulus Rift.

12 - Correctif du pipeline permettant de créer une nouvelle zone

Le pipeline de création de nouvelles zones 3D (régions) a été corrigé. Il est maintenant possible de changer les fichiers existants et d'en créer de nouveaux, ce qui ouvre la porte à la création d'une nouvelle zone.

13 - Réorganisation et amélioration du forum de Ryzom

Les forums de Ryzom ont été réorganisés :

  • Création d'un forum "Bienvenue" afin de mieux accueillir les nouveaux joueurs.
  • Création d'un forum "Vos créations" afin de mettre en valeur les créations vidéos, graphiques, audios et écrites des joueurs.
  • Ajout de sous-forums dans les forums "Support Technique / Web Apps Bugs" et "Ryzom Forge".
  • Ajout d'une fonction de recherche dans les sous-forums.
  • Allongement de la longueur maximale des titres des sujets du forum pour permettre la publication non tronquée de titres en diverses langues.
14 - Correctifs divers déjà implémentés

Notamment :

  • Correction de l'affichage des titres, qui n'était pas mémorisé après reconnexion.
  • Amélioration du camp maraudeur : ajout de personnages non-joueurs (PNJ) d'avant-postes, réparation des donneurs de plan de matériel d'avant-poste, réparation des PNJ pour les appartements et halls de guilde maraudeurs.

Communication et Marketing

Voici les cinq principales tâches de communication réalisées en 2015 :

1 - Augmentation de la visiblité commerciale de Ryzom grâce à l'arrivée programmée de Ryzom sur Steam

Ryzom a été greenlighté (obtention d'un feu vert) par la communauté de Steam, comme relaté dans les publications suivantes :

Cela signifie que l'ajout de Ryzom sur la plateforme de jeux Steam a été approuvée par cette dernière. Aussi, les équipes de Ryzom travaillent activement depuis plusieurs mois à cet ajout qui augmentera fortement la visibilité commerciale de Ryzom.

2 - Réalisation d'une nouvelle bande-annonce pour Ryzom

Cette bande-annonce, réalisée par un joueur, est visible sur YouTube, Vimeo, et sur le site d'EventArtWorks.

3 - Interview de David Cohen Corval, l’un des fondateurs de Ryzom, Directeur créatif à Nevrax

Cette interview a été réalisée fin 2015.

4 - Recensement des créations diverses autour de Ryzom

De nombreuses créations autour de Ryzom ont été réalisées par la communauté des joueurs au fil des ans. Malheureusement, celles-ci étaient pour la plupart difficilement trouvables car non répertoriées. C'est pourquoi le forum a été enrichi d'une section "Vos créations", qui liste les différentes catégories de créations :

5 - Marketing : faire parler de Ryzom sur les sites et forums de jeux

Un projet a été monté pour rendre Ryzom plus visible sur les différents forums et sites de jeux (plus d'info sur les forums).

Lore

La Lore est l'histoire du jeu. Elle est disponible sur le wiki Lore ou en version PDF. Un gros travail est effectué sur la Lore pour gommer les incohérences accumulées au fil du temps et l'ouvrir peu à peu aux joueurs. Voici les 4 principales tâches de Lore réalisées en 2015 :

1 - Travail sur la Lore maraudeure

La dernière faction implémentée en jeu, les Maraudeurs, voit sa Lore retravaillée et étoffée doucement. Un gros travail de fond a été fait en ce sens en 2015, même s'il n'a pas encore abouti à une publication publique, hormis la biographie de Melkiar. Celle-ci donne un avant-goût de ce qui sera dévoilé en 2016.

2 - Travail sur la Lore ranger

Un autre gros chantier est celui de la faction en cours d'implémentation, les Rangers, dont la Lore n'est pas encore publiée mais dont le contenu est peu à peu porté à la connaissance des joueurs de Rangers. Une publication sera bien sûre faite ultérieurement.

3 - Travail sur les thèmes principaux de la Lore : feu, goo, kitins…

Des documents sur les thèmes principaux de Ryzom : feu, goo, kitins… sont en cours de rédaction, à trois niveaux différents :

  • Niveau 1 : version publique ;
  • Niveau 2 : version interne à l'usage de l'équipe d'animation, qui comporte les éléments de Lore à porter à la connaissance des joueurs au fil des events ;
  • Niveau 3 : version ultra-privée à l'usage exclusif de l'équipe Lore.

4 - Travail sur le wiki Lore

Le Wiki Lore, enrichi conjointement par les équipes officielles de Ryzom et par les joueurs, remplace progressivement l'ancien Wiki de Ryzom, que les joueurs ne pouvaient pas éditer.

Un gros travail d'amélioration du wiki et d'intégration des pages de l'ancien wiki a été accompli, principalement sur le wiki francophone, ayant bénéficié de la participation de davantage de bénévoles :

Traduction et correction

L'équipe de traduction et de correction a accompli un gros travail dans l'ombre tout au long de l'année :

  • Traduction régulière des annonces officielles ;
  • Traduction régulière des annonces et textes d'events ;
  • Traduction des chroniques ;
  • Traduction régulière de tout le texte des rites, missions et events automatisés ajoutés dans ARK.

Elle s'est attelée fin 2015 à l'énorme tâche visant à corriger l'intégralité du texte en jeu (plus de 2 000 pages pour chaque langue), afin d'offrir aux joueurs une meilleure qualité de texte en jeu dans toutes les langues. Ce long travail se poursuivra début 2016.

Level Design et Ark

Voici les quatre principales tâches de Level Design et Ark réalisées en 2015 :

1 - Travail sur la Nouvelle Encyclopédie

Les vieux rites de l'Encyclopédie disponibles en jeu seront peu à peu remplacés par des rites novateurs et, à terme, plus nombreux que les rites actuels. Il était prévu que cette Nouvelle Encyclopédie commencerait à être implémentée en 2015. Hélas, d'autres impératifs de développement plus urgents, tels que l'ajout de l'option de paiement Paypal et la création d'un système interne de gestion de tickets, ainsi que l'indisponibilité du serveur de tests Yubo pendant plusieurs semaines, ont retardé le développement d'Ark, l'outil grâce auquel les rites seront ajoutés.

Cependant, le Level Design a préparé les scénarios de plusieurs rites, en attente de leur ajout en jeu par le Dev :

  • Le rite matis 50 (géographie) (en cours d'ajout) ;
  • Le rite zoraï 50 (géographie) (en attente d'ajout) ;
  • Le rite fyros 50 (géographie) (en attente d'ajout) ;
  • Le rite tryker 50 (scénario en cours).

2 - Travail sur l'ajout de nouvelles missions et de nouveaux métiers

Le Level Design de Ryzom Forge travaille à l'ajout de nouvelles missions :

  • Mission fyros : entretenir les feux des portes de Pyr ;
  • Mission tryker : attirer des herbivores dans un enclos ;
  • Mission zoraï : délivrer un produit zoraï aux tribus zoraïs d'Atys.

D'autres idées de missions sont en cours d'étude. Afin d'aider les bénévoles créant des missions, un workflow des missions a été publié. De même, la liste des objets popables a été rendue publique.

Un nouveau métier est aussi en préparation : celui de pêcheur.

3 - Travail sur le futur Rite Ranger

Le futur rite permettant à un Homin de devenir Ranger a été scénarisé en 2015, après un long et difficile travail préparatoire sur la Lore Ranger. Son implémentation est prévue pour 2016.

4 - Mise en jeu d'événements automatisés pour Halloween

Des événements entièrement scriptés ont été mis en jeu pendant les événements d'Anlor Winn (période d'Halloween) :

  • Les villes fantômes ;
  • Les Yubos zombies ;
  • Le labyrinthe dangereux.

Infographie

Plusieurs objets popables, équipables et d'appartement ont été réalisés en 2015, ou sont encore en cours de finalisation :

Des capsules (Image de fond avec le logo de Ryzom visible, en différentes tailles allant de la grande à la vignette) ont été réalisées pour Steam.

Support

L'équipe de support a été quotidiennement au service de la communauté pour répondre aux tickets, aux courriels et aux questions posées en jeu, mais aussi pour veiller au bon respect du Code de Conduite de Ryzom, tant en jeu que sur le forum. Elle s'est étoffée de six nouveaux membres en 2015. Les bénévoles de Ryzom Forge secondent le Support pour tous les problèmes de Ryzom liés à Linux et Mac.

Événements

L'Équipe d'animation a travaillé en parallèle sur plusieurs projets :

  • Scénarisation et mise en jeu de la fin de la séquence fyros sur Atreus ;
  • Scénarisation et mise en jeu de la séquence d'événements matis "L'Art de la Botanique", débutée en 2015, et qui se poursuivra tout au long de 2016 ;
  • Préparation du début de la prochaine séquence zoraï ;
  • Préparation du début de la prochaine séquence tryker ;
  • Préparation du début de la prochaine séquence fyros ;
  • Préparation et mise en jeu d'événements HRP joués lors de la Fête des Réfugiés (Pâques), d'Anlor Winn (Halloween) et Atysoël (Noël).

Musique et Son

Un groupe Musique a été créé en 2015. Son objectif est d'ajouter de la musique et des sons d'ambiance dans le jeu. Le tout sera sous license libre CC-BY-SA. Se référer aux Compte-rendus des réunions de Ryzom Forge pour en savoir plus.

L'année 2015 a été témoin d'une forte activité dans les coulisses de Ryzom. Tout ce travail accompli dans l'ombre devrait se concrétiser en débouchant en 2016 sur l'implémentation de nouveautés en jeu.

Télécharger ce contenu au format Epub

Lire les commentaires

OCaml 4.03

Lundi 2 Mai

La version 4.03.0 du langage OCaml est paru le 25 avril 2016. OCaml est un langage fonctionnel de la famille des langages ML (dont font partie SML et F#, ou Rust avec une définition élargie).

OCaml est entre autre utilisé pour implémenter le langage Coccinelle (régulièrement utilisé dans la communauté des développeurs du noyau Linux) ou MirageOS (ensemble de bibliothèques pour construire des unikernels). On compte aussi l'implémentation du langage Hack chez Facebook, l'interpréteur de référence pour le projet WebAssembly, ou encore l'analyseur statique de Code C Frama-C.

Il s'agit d'un langage fonctionnel multi-paradigmes fortement typé qui permet de mélanger librement les paradigmes fonctionnel, impératif et objet. Cette version 4.03 fait suite à la version 4.02 publiée en juillet 2015.

Sommaire En bref

OCaml fête ses vingt ans, c'est l'occasion de revenir sur l'évolution de la communauté de ce langage performant, et sur ses possibles évolutions futures.

Cette nouvelle version d'OCaml s'est concentrée sur les performances du code généré, à travers l'introduction d'une nouvelle phase d'optimisation Flambda ainsi qu'une amélioration de la latence du ramasse-miette lui-même. La gestion de la mémoire dans OCaml est automatique. À ce titre, le rôle du ramasse-miette est très important : que ce soit en termes de latence, vitesse ou de consommation mémoire.

La bibliothèque standard s'enrichit de nouvelles possibilités avec les éphémérons, et accueille des types de compatibilité standard pour faciliter la coopération entre les bibliothèques externes.

Les types algébriques, fonctionnalité importante dans un langage qui se base sur des types rigides pour l'élégance et la sécurité du code, ont été améliorés avec un mélange plus simple entre les types sommes (un choix entre sous-types) et les types enregistrés (plusieurs sous-types étiquetés par des noms, équivalent aux structures en C). Dans un registre plus avancé, la gestion des types algébriques généralisés (GADT) a été améliorée avec de nouvelles possibilités pour détecter des erreurs de logique à la compilation, une fonctionnalité centrale des langages ML, et des messages d'erreurs plus clairs.

Si cette version est riche en changements, le futur du langage est aussi riche en possibilités : de nombreuses nouvelles fonctionnalités peuvent être testées dans des branches expérimentales du compilateur : multicœur, implicites modulaires, opérateurs d'indexation.

De nombreuses autres améliorations mineures ont été apportées au langage et outils associés ; par exemple, une syntaxe non dépendante, plus lisible, pour les foncteurs.

Communauté Ocaml devient LGPL + linking exception

Un des aspects moins techniques de cette nouvelle version 4.03 est le changement de licence du compilateur. Précédemment, le compilateur OCaml et les bibliothèques et outils associés étaient distribués sous la licence Q Public License. À partir de cette version, ils sont publiés sous licence LGPL + linking exception. Cette exception à la liaison s'expliquant par le fait qu'OCaml lie les bibliothèques statiquement par défaut. Publier une bibliothèque OCaml sous licence LGPL est donc de facto équivalent à la publier sous licence GPL.

Github devient le dépôt officiel du compilateur

Un autre changement important, le dépôt github OCaml devient le dépôt officiel du code source d'OCaml.

Ce dépôt avait été introduit en janvier 2014 comme un miroir du dépôt svn officiel. Le but était alors d'expérimenter si passer à un dépôt git hébergé sur Github aiderait à attirer des contributeurs extérieurs. L'expérience fut concluante et le miroir est devenu l'original. L'ancien traqueur de bugs (Mantis) ne recevait qu'une douzaine de patchs par an, là où le dépôt Github a reçu 130 requêtes de tirage en 2014, 254 en 2015 et il y en a déjà 156 en 2016.

Le manuel de référence d'OCaml a été aussi intégré au sein du dépôt officiel. Si le manuel est relativement complet, il est parfois assez austère et certaines informations avancées sont manquantes ou difficilement accessibles. De ce fait, les utilisateurs doivent souvent se rabattre sur des tutoriels et articles de blogs. Cette version d'OCaml a vu un effort important pour améliorer cette lisibilité du manuel, mais il s'agit d'un travail de longue haleine et contributions ou remarques sont les bienvenues.

Ocamlbuild séparé du compilateur

Simultanément, il a été décidé de séparer Ocamlbuild, un outil d'aide à la compilation de bibliothèques et d’exécutable, du compilateur. Ocamlbuild vit désormais dans son propre dépôt. L'idée derrière cette séparation est de découpler les sorties du compilateur de celles d'Ocamlbuild afin de permettre à celui-ci d'évoluer à un rythme plus soutenu que celui du compilateur, et que ses améliorations deviennent utilisables avec des versions plus anciennes du compilateur.

Cette séparation a fait l'objet d'un long débat, certains mainteneurs d'Ocamlbuild pensant que ce changement ne modifierait pas le cycle de vie un peu trop calme d'Ocamlbuild (deux contributeurs actifs). D'aucuns ont soutenu au contraire qu'une fois libéré des contraintes de temps impliquées par la synchronisation avec le compilateur, il deviendrait bien plus facile d'attirer de nouveaux contributeurs. En particulier, s'il est nécessaire d'attendre 6 mois pour voir une correction intégrée au système de compilation, il est bien plus simple de modifier son propre projet plutôt que corriger le bug en amont.

OCaml a fêté ses 20 ans

Le 12 septembre 2015, le langage OCaml a fêté ses 20ans. \o/
Xavier Leroy, le BDFL du langage, a posté ce jour-là un message sur la liste de diffusion dans lequel il fait un rapide tour d'horizon des vingt années écoulées. Le langage s'appelait au départ Caml Special Light, avant de devenir Objective Caml puis finalement OCaml. Le design d'origine est toujours présent, mais il a acquis des fonctionnalités qui étaient encore des problèmes de recherche ouverts en 1995 comme : les objets et les classes avec inférence de types, les variants polymorphes, le polymorphisme de première classe ou encore les modules de première classe. Une histoire plus complète du langage se trouve sur le site ocaml.org. Ce dernier s'est également doté de règles de gouvernance en septembre dernier.

Amélioration du compilateur

La nouveauté majeure de cette nouvelle version est interne au compilateur, qui voit l'introduction d'un ensemble de nouvelles passes d'optimisations. Ces nouvelles passes d'optimisations reposent sur une nouvelle représentation intermédiaire : Flambda. En fonction des circonstances, le taux d'allocation (la mémoire allouée dynamiquement pendant l'exécution et gérée par le ramasse-miettes) du code généré par le compilateur natif peut diminuer de 20 à 30% sur du code réel.

Il faut toutefois noter que ces améliorations massives proviennent au moins en partie du fait que le compilateur natif d'OCaml n'effectuait que peu d'optimisations de haut niveau jusqu'à présent ; il se reposait plus sur sa représentation mémoire efficace pour obtenir des performances correctes.

Avec cette amélioration du compilateur, les commandes les plus communes pour compiler sont les suivantes :

ocamlopt -Oclassic file.ml ocamlopt file.ml ocamlopt -O2 file.ml ocamlopt -O3 file.ml

La première commande mime le comportement antérieur du compilateur (avec quelques optimisations de plus), la seconde fait une passe d'optimisation en exploitant les nouvelles possibilités offertes par Flambda, enfin les deux dernières font respectivement deux et trois passes d'optimisations. Chacune, sauf le mode classique, peut être complétée de l'option unbox-closures, dont le principe de fonctionnement est décrit plus loin. Voir la page de manuel pour plus de détails sur les options disponibles.

Pour l'instant cela augmente le temps de compilation de façon importante (même avec l'option -Oclassic) ce qui explique que Flambda n'est pas encore activé par défaut. À terme, l'objectif est d'amener la hausse du temps de compilation autour de 10 % pour -Oclassic, et entre 10 % et 20 % avec une passe : Flambda sera alors mis en place par défaut. Pour bénéficier de ces optimisations il faut utiliser une option de configuration du compilateur ou, pour les utilisateurs d'opam, utiliser le switch 4.03.0+flambda : opam switch 4.03.0+flambda.

Lorsque l'on cherche à optimiser du code, que ce soit manuellement en modifiant l'implémentation de l'algorithme, ou bien automatiquement en modifiant le code machine généré par le compilateur, il faut habituellement arbitrer entre des gains, ou pertes, en temps et en espace : le code est plus rapide mais il prend plus de place, il est moins rapide mais plus court (et incidemment, peut être moins sujet aux bugs car la vérification humaine est plus simple). En revanche si l'on peut gagner à la fois en temps et en espace, il n'y a pas à hésiter. Les optimisations apportées par Flambda n'échappent pas à la règle : les binaires générés peuvent être plus gros mais plus rapide (ce qui se traduit par une moins grande consommation de mémoire à l'exécution), ce qui se paye au prix d'un temps de compilation accru (plus ou moins en fonction des options d'optimisations choisies), mais au bénéfice d'une plus grande sûreté (le processus d'optimisation est automatisé dans le compilateur et donc moins sujet aux erreurs humaines) : le développeur à l'origine de Flambda expose sa vision dans son article de blog « Les optimisations que vous ne devriez pas faire : faire le travail du compilateur ».

Un des apports fondamentaux de Flambda au compilateur ocamplopt est une amélioration du processus d'extension en place (extension inline, ou inlining) qui consiste à remplacer un appel à une fonction par le code de la fonction elle-même. Une fois ce processus effectué d'autres optimisations deviennent possibles, nous présenterons donc son principe en premier.

Extension en place (inlining).

Comme exposé ci-dessus, l'inlining consiste à remplacer un terme f x par le code de la fonction f dans lequel on remplace toutes les occurrences de son paramètre par le terme x. Cela peut permettre, ensuite, certaines simplifications du code comme dans l'exemple ci-dessous :

let f x = x + 1 let g y = f (f y) (* pour remplacer le code de f dans celui de g, on le fait successivement en introduisant des variables fraîches, ce qui donne *) let g y = let r1 = y + 1 in (* première application de f *) let r2 = r1 + 1 in (* deuxième application de f *) r2 (* ce qui après remplacement des nouvelles variables par leur expression et simplification donne *) let g y = y + 2

Une compilation « naïve » de la fonction g qui consisterait à faire un double appel au code de f aurait eu pour exécution la version développée qui alloue deux variables temporaires et effectue deux appels de fonctions, c'est coûteux comparé à la version définitive optimisée. Bon, je rassure tout le monde : le compilateur ocamlopt savait déjà faire ce type de simplification. Mais il existait des cas plus évolués où sa stratégie d'inlining et de simplification ne permettait pas certaines optimisations comme dans le cas des fonctions récursives (fonctions pourtant utilisées à tour de bras dans un langage fonctionnel comme OCaml), ainsi que l'illustre l'exemple suivant :

(* on prend la fonction List.map qui consiste à appliquer une fonction à tous les éléments d'une liste et renvoie la liste résultante on peut la coder ainsi *) let rec list_map f l = match l with | [] -> [] | hd :: tl -> (f hd) :: list_map f tl (* on peut ensuite coder une fonction succ_map qui renvoie la liste de tous les successeurs des éléments d'une liste *) let succ_map l = let succ = (fun x -> x + 1) in list_map succ l (* on insère le code de list_map dans celui de succ_map avant son appel *) let succ_map l = let succ = (fun x -> x + 1) in let rec list_map' f l = match l with | [] -> [] | hd :: tl -> (f hd ) :: list_map' f tl in list_map' succ l (* une fois recopié on l'applique à notre cas *) (* maintenant le paramètre f de la fonction dupliquée est constamment égal à succ et on peut pratiquer la substitution dans le corps de list_map' *) let succ_map l = let succ = (fun x -> x + 1) in let rec list_map' f l = match l with | [] -> [] | hd :: tl -> (succ hd ) :: list_map' succ tl in list_map' succ l (* là on voit que le paramètre f n'est plus utilisé donc on peut supprimer toute référence à celui-ci *) let succ_map l = let succ = (fun x -> x + 1) in let rec list_map' l = match l with | [] -> [] | hd :: tl -> (succ hd ) :: list_map' tl in list_map' l (* enfin en remplaçant la fonction succ par son expression dans la boucle, on peut supprimer toute référence à celle-ci *) let succ_map l = let rec list_map' l = match l with | [] -> [] | hd :: tl -> (hd + 1) :: list_map' tl in list_map' l

Le processus décrit ci-dessus consiste en une spécialisation de la fonction List.map appliquée à la fonction succ. Au départ à chaque tour de boucle on a un appel à la fonction succ (ce qui est coûteux tant en temps qu'en espace), là où cet appel a disparu dans la version définitive spécialisée et optimisée. Néanmoins, le développeur peut se contenter d'écrire let succ_map = List.map succ et le compilateur se charge du reste : les optimisations que vous ne devriez pas faire : faire le travail du compilateur. Une autre stratégie utile d'optimisation proposée par Flambda consiste dans le unbox closure, c'est-à-dire examiner la représentation en mémoire des fonctions, afin d'éviter des appels inutiles à des fonctions et économiser l'allocation de mémoire.

Deconstruction des fermetures (unbox closure)

Dans un langage fonctionnel, il peut arriver des choses assez étranges : que les variables utilisées par une fonction ne soient plus accessibles dans l'environnement syntaxique quand elles sont exécutées. Par exemple :

let augmente n = let n2 = n + n in let plus_n2 x = x + n2 in plus_n2 let plus_n2' = augmente 3 let dix = plus_n2' 4

Dans cet exemple n2 n'est plus disponible au moment où on appelle plus_n2, il faut donc le stocker quelque part. Pour faire ça, le compilateur transforme ce code en ajoutant l'allocation d'un bloc mémoire qui permettra de stocker n2. Ce bloc est appelé une fermeture (ou clôture). Comme c'est quelque chose de très courant, OCaml a une représentation très efficace des fermetures, mais cela a quand même un coût. Parfois certaines fermetures sont introduites dans des environnements où les valeurs qui y sont stockées sont disponibles par d'autres moyens. Dans ces cas-là, l'optimisation unbox-closures permet de se passer de l'allocation de ces fermetures en passant les valeurs qui y seraient contenues en argument. Pour les connaisseurs, cela est assez similaire à une eta-expansion. Cette transformation n'est activée que quand l'option -unbox-closures est passée au compilateur.

Pour ceux que ça peut intéresser, schématiquement, la stratégie du unbox-closures a pour fonction de ramener les variables globales à des variables locales aux fonctions. Sur plus_n2 en un coup, ça fait grosso-modo

let augmente n = let plus_n2 x = let n2 = n + n in x + n2 in plus_n2 (* qui peut se simplifier en *) let augmente n = let plus_n2 x = x + n + n (* plus_n2 = fun x -> x + n + n *) in plus_n2 (* et si on passe à la fermeture ça donne *) let augmente = (fun n -> (fun x -> x + n + n)) (* mais la fermeture est vue du point de vue de plus_n2 à la manière d'un chroot, donc la fermeture contient le code fun n -> (fun x -> ... ) plus la façon d'accéder à n qui est hors de la portée syntaxique de plus_n2 *)

Et quand on appelle augmente 3, le compilateur comprend que l'on se retrouve dans une situation analogue à

let n = 3 let plus_n2' x = x + n + n (* qu'il simplifie par unbox-closures en *) let plus_n2' = (fun n -> (fun x -> x + n + n)) 3 (* puis par substitution en *) let plus_n2' = (fun x -> x + 3 + 3) (* et enfin par calcul *) let plus_n2' = (fun x -> x + 6) (* et la suite il le voit comme *) let dix = (fun x -> x + 6) 4 (* soit *) let dix = 10

Au fond, le compilateur exécute déjà une partie du code et stocke statiquement le résultat (c'est pour cela que la compilation est plus longue), au lieu de le recalculer à chaque exécution du programme.

Un peu plus de détails : en plus d'ajouter des arguments — ce qui demande pas mal de manipulations de fermetures pour être capable d'exposer la fonction optimisée, mais aussi la version originale avec l'ABI classique pour les appels indirects et les cas récursifs — il y a une analyse d'alias pour les cas qui ressemblent à

let f n l = let n2 = n + n in let stuff x = n2 + x in List.map stuff l

Après spécialisation:

let f n l = let n2 = n + n in let stuff x = n2 + x in let rec list_map_spécialisé f l = (* sachant que f = stuff, c'est une annotation portée par la fermeture *) match l with | [] -> [] | h :: t -> let resultat_de_stuff = let n2 = f.acces_dans_la_fermeture_de_stuff in h + n2 in resultat_de_stuff :: list_map_spécialisé f t in list_map_spécialisé stuff l

Du coup stuff ne peut pas être nettoyé parce qu'il est utilisé par le list_map et sa fermeture est utilisée. D'où l'utilité d' unbox-closures qui va retrouver cet accès, puis voir que stuff est dans l'environnement au point de déclaration de list_map_spécialisé et donc réécrire en

let f n l = let n2 = n + n in let stuff x = n2 + x in let n2' = f.acces_dans_la_fermeture_de_stuff in let rec list_map_spécialisé f l n2' = (* sachant que f = stuff, c'est une annotation portée par la fermeture *) match l with | [] -> [] | h :: t -> let resultat_de_stuff = h + n2' in resultat_de_stuff :: list_map_spécialisé f t n2' in list_map_spécialisé stuff l n2'

Puis l'analyse d'arguments morts va voir que f ne sert à rien et réécrire en

let f n l = let n2 = n + n in let stuff x = n2 + x in let n2' = f.acces_dans_la_fermeture_de_stuff in let rec list_map_spécialisé l n2' = match l with | [] -> [] | h :: t -> let resultat_de_stuff = h + n2' in resultat_de_stuff :: list_map_spécialisé t n2' in list_map_spécialisé stuff l n2'

Puis la propagation d'alias va voir que n2' est aussi n2 et nettoyer.

let f n l = let n2 = n + n in let rec list_map_spécialisé l n2' = match l with | [] -> [] | h :: t -> let resultat_de_stuff = h + n2' in resultat_de_stuff :: list_map_spécialisé t n2' in list_map_spécialisé stuff l n2 Attributs prédéfinis

Depuis OCaml 4.01, il est possible d'utiliser des attributs prédéfinis avec la syntaxe [@.. attribut] pour préciser le comportement du compilateur, par exemple pour activer des avertissements spécifiques sur une section critique du code. Le cru 4.03 apporte son lot de nouveaux attributs prédéfinis.

Avec l'accent sur l'optimisation dans cette version, il n'est guère surprenant de voir apparaître de nouveaux attributs qui permettent de contrôler les optimisations effectuées par le compilateur ou de vérifier qu'une optimisation a été bien appliquée.

Contrôle d'optimisations

Les attributs inline, unroll et specialise permettent d'indiquer qu'une fonction ou un foncteur devrait toujours (ou jamais) être incorporé en ligne (ou déroulée ou spécialisée pour les fonctions récursives).

module Float = struct let (+) = (+.) [@@inline] end let rec list_map fonction liste = match liste with | [] -> [] | tete :: queue -> fonction tete :: list_map fonction queue [@@specialise] [@@unroll 1]

Un autre attribut [@immediate] permet d'indiquer au compilateur qu'un type abstrait (dont l'implémentation a été cachée au compilateur) a une représentation immédiate qui ne contient pas de pointeurs. Les exemples principaux de types immédiats sont les types int, char, bool mais aussi les types sommes dont tous les constructeurs sont constants.

module M: sig type t [@@immediate] end = struct type t = A | B end

Cet attribut permet donc de marquer le type t comme un type immédiat, améliorant potentiellement les performances du code généré par le compilateur, sans exposer totalement sa représentation interne.

Vérification d'optimisations

En plus de pouvoir contrôler les optimisations effectuées par le compilateur, de nouveaux attributs permettent de vérifier que des optimisations sont bien appliquées. L'attribut [@inlined] demande au compilateur d'incorporer le code de la fonction ou du foncteur:

(f[@inlined]) ();; Si cela n'est pas possible, le compilateur émet un avertissement. Cela peut se produire si par exemple la provenance de la fonction ne peut être déterminée statiquement à la compilation.

Les attributs unroll et specialise ont aussi leur versions pour le point d'appel: unrolled et specialised:

let rec list_map fonction liste = match liste with | [] -> [] | tete :: queue -> fonction tete :: (list_map [@unrolled 3]) fonction queue let successeur_de_liste l = (list_map [@@specialised]) ((+) 1) l De manière similaire, l'attribut `[@tailcall]` demande au compilateur d'émettre un avertissement si l'appel de fonction annoté n'est pas un appel [récursif terminal](https://fr.wikipedia.org/wiki/R%C3%A9cursion_terminale) et ne peut être optimisé. let rec no_op l = match l with | [] -> () | _ :: q -> (no_op[@tailcall]) q;; (* ici l'appel est bien récursif terminal, et nous pouvons ne rien faire de façon optimisée *) Optimisation de l'appel de code C

L'interface entre OCaml et le C a été améliorée avec de nouveaux attributs qui permettent de spécifier si une fonction C n'effectue pas d'allocation de valeur OCaml [@@noalloc], ou bien si un de ses arguments utilise un entier non marqué ([@untagged]) ou un flottant non encapsulé ([@unboxed]).

Prise en charge de l'architecture System Z

IBM a contribué la prise en charge de l'architecture System_z, aussi appelée S390x, au compilateur natif. Malheureusement assez peu de monde aura accès à ce genre de machine pour pouvoir tester. Cette contribution est un assez fort signal de l'usage d'OCaml dans le secteur bancaire.

Amélioration du glaneur de cellules

Le glaneur de cellules (GC ou ramasse-miettte) d'OCaml est de la catégories des GC précis, générationnel, incrémental, avec une génération copiant et l'autre traçant et compactant. Ce fouillis de mots clefs veut dire:

  • précis: le GC est toujours capable de distinguer un pointeur des autres types de valeurs. C'est important pour pouvoir fournir les autres propriétés
  • générationnel: Le tas est segmenté en plusieurs parties (pour OCaml, 2), appelées générations, qui représentent des valeurs d'âges différents. En OCaml, il y a la jeune génération (appelé tas mineur, dans le contexte de OCaml) qui est un GC copiant, et le tas majeur qui est traçant et compactant.
  • traçant : le GC est fait en plusieurs phases :
    • il parcourt d'abord toutes les valeurs vivantes et marque toutes les valeurs qu'il a pu atteindre (phase Mark)
    • puis parcourt linéairement toute la mémoire pour effacer les valeurs non marquées (phase Sweep)
  • copiant : Toutes les valeurs vivantes sont parcourues et ré-allouées ailleurs (dans le cas d'OCaml dans le tas majeur)
  • compactant : quand le tas (majeur pour OCaml) devient trop fragmenté, une passe déplace toutes les valeurs pour former un bloc compact.
  • incrémental : (par opposition à 'stop-the-world') Le travail du GC est découpé en petites phases qui peuvent être faites au milieu de l'exécution du programme, permettant d'éviter des trop longues pauses du GC.

Ce choix de caractéristiques permet d'être très efficace et d'avoir des programmes réactifs. En effet, les algorithmes traçant et copiant n'ont pas les même avantages:

Le copiant est très rapide. Il ne doit traverser que les données vivantes, mais surtout, il n'y a jamais de fragmentation de la mémoire libre. Une allocation peut donc se faire très simplement : incrémenter un pointeur de la taille de l'objet à allouer, et vérifier s'il y a encore de la mémoire libre. Par exemple sur x86 cela se fait en 3 instructions dont 1 test que le processeur prédit correctement. C'est équivalent au coût d'une allocation sur la pile en C. De plus, comme seules les valeurs vivantes sont traversées, il n'y a aucun coût de nettoyage lié aux valeurs mortes. L'inconvénient majeur du GC copiant est d'utiliser une quantité de mémoire qui est le double de celle réellement allouée par le programme.

Le GC traçant est beaucoup moins efficace, mais par contre n'utilise pas beaucoup plus de mémoire que nécessaire.

Combiner les deux permet (au coût d'une complexité d'implémentation assez accrue) de bénéficier du faible coût d'allocation du GC copiant pour toutes les données temporaires. L'immense majorité des valeurs allouées dans un programme n'est utile que très peu de temps, et n'a donc pas besoin d'être copiée dans la vielle génération, où le coût d'allocation est élevé.

Les changements d'OCaml 4.03 permettent principalement de mieux découper les tranches de travail du GC traçant, pour que le temps de pause à chaque incrément soit à peu près uniforme.
C'est particulièrement utile pour ne pas avoir de grosses latences qui apparaissent pile au mauvais moment. Par exemple dans le cas d'une application qui doit faire du rendu à une fréquence fixe (comme un jeu), ou un serveur (cette modification a été financée par une entreprise de trading à haute fréquence).

Un autre ajout permet aussi d'utiliser, sous Linux, les grandes page mémoire, pour réduire les coûts liés à la gestion de ces pages ( Translation_lookaside_buffer )

Requête de tirage introduisant la modification
Poste de blog de Jane-street en parlant

Bibliothèque standard Éphémérons

Les éphémérons sont une forme de généralisation des pointeurs faibles : un pointeur faible est une référence qui n'empêche pas le ramasse-miette de collecter la valeur référée.

Ce type de donnée était déjà implémenté par OCaml à travers le module Weak de la bibliothèque standard. Il permet par exemple d'implémenter une forme de cache. Un exemple simplifié donnerait :

let cache f = let table_faible = Weak.create 1 in let cached_f x = match Weak.get table_faible 0 with | Some (x', y) when x = x' -> y | _ -> let y = f x in Weak.set table_faible 0 (Some (x, y)); y in cached_f

Cependant pour certaines utilisations, les pointeurs faibles sont trop limités.
Par exemple, on peut essayer de conserver en cache tous les couples entrées-sorties d'une fonction jusqu'au moment où l'entrée est réclamée par le ramasse-miette. Une idée serait de conserver une table faible d'entrées et une table de hachage associant entrée et sortie. Tout se passe bien alors, sauf si la sortie d'une fonction contient une référence à son entrée :

let f x = (x, x)

Dans ce cas-là, la table entrée-sortie va créer une référence visible par le ramasse-miette sur l'entrée et l'entrée ne sera jamais ramassée tant que la table est en mémoire.

Pour pallier ce problème, les éphémérons généralisent la notion de pointeur faible, en associant un ensemble de clefs avec une donnée présente ou non. Cette donnée ne va être conservée par le ramasse-miette que tant que toutes les clefs référencées par l'éphéméron sont en mémoire. De plus, cette donnée associée à l'éphéméron ne compte pas lorsque le ramasse-miette détermine si une des clefs doit être ramassée ou non. Cela nous permet de briser le cycle de références entre clefs et données.

Cela nous permet ainsi d'implémenter cette idée de cache entrée-sortie :

let cache (type e) f = let module H = struct type t = e let hash = Hashtbl.hash let equal = (=) end in let module Weak_table = Ephemeron.K1.Make(H) in let table = Weak_table.create 0 in let cached_f x = try Weak_table.find table x with | Not_found -> let y = f x in Weak_table.add table x y; y in cached_f Types de compatibilité

La bibliothèque standard d'OCaml couvre un nombre limité de fonctionnalités. Pour cette raison, il est souvent recommandé de la compléter par une des bibliothèques standard étendues que ce soit Batteries, Core ou containers. Ce modèle basé sur des bibliothèques tierces pose cependant des problèmes d'interopérabilité : il peut être délicat de faire interagir des fonctions ou bibliothèques basées sur des bibliothèques standards étendues différentes.

Pour diminuer le nombre de ces incompatibilités, la bibliothèque standard intègre désormais deux types de donnée ('a,'b) result et Uchar.t dans le but de servir de points de synchronisation entre les différentes bibliothèques tierces.

Le type 'a result représente le résultat d'un calcul qui peut réussir ou échouer

type ('a,'b) result = Ok of 'a | Error of 'b

tandis que le type Uchar.t représente une valeur unicode scalaire.

Ces deux types sont intégrés plus ou moins tel quel dans la bibliothèque standard. L'implémentation des fonctionnalités associées est laissée aux bibliothèques tierces; qui peuvent désormais s'accorder sur ces types communs.

Pour faciliter la compatibilité avec les versions antérieures d'OCaml, ces nouveaux types sont accompagnés de bibliothèques de compatibilités result et uchar présentes dans les dépôts opam qui exposent une interface uniforme quelle que soit la version d'OCaml.

Améliorations des types algébriques

Cette nouvelle version ne se contente pas d'améliorer les performances du code généré, elle apporte aussi son lot d'améliorations en terme de gestion des types algébriques.

Type enregistrement incorporé (Inline record) En particulier, il est désormais possible de déclarer des types enregistrements au sein de types somme. type 'a arbre = | Feuille of 'a | Noeud of { gauche:'a arbre; droite:'a arbre}

Auparavant, il était possible d'écrire :

type 'a noeud = {gauche: 'a arbre; droite:'a arbre} type 'a arbre = | Feuille of 'a | Noeud of 'a noeud

Cette approche fonctionne mais est moins lisible, en plus de s’étaler sur deux blocks au lieu d'un.

Cette nouvelle extension permet non seulement de mélanger plus aisément types somme et types enregistrement, elle peut aussi mener à une représentation mémoire plus efficace.
Par exemple, on peut définir une liste mutable

type 'a cellule = | Nil | Cons of { contenu: 'a; mutable suivant: 'a cellule }

plutôt que passer par une réference

type 'a cellule_bis = | Nil | Cons of { contenu: 'a; suivant: 'a cellule_bis ref }

ce qui a l'avantage d'éviter une indirection supplémentaire à cause de la référence.
Le module Queue de la bibliothèque standard a été réécrit pour faire usage de ces nouveaux enregistrements incorporés.

Ceci étant, ces types enregistrés incorporés présentent des restrictions et ne sont pas considérés comme des classes primaires. En particulier, ils ne peuvent pas exister en dehors du contexte de leur constructeur. Par conséquent, le filtrage de motif suivant

let estunefeuille = function Feuille _ -> None | Noeud x -> Some x

échoue en renvoyant This form is not allowed as the type of the inlined record could escape.

Types algébriques généralisés (GADT)

Les types algébriques généralisés (ou GADT) sont une généralisation des types sommes qui permet d'exprimer des relations relativement complexes entre les constructeurs d'un type, le type des arguments de ce constructeur et le type résultant. Bien utilisés, ces types algébriques généralisés permettent d'encoder dans le système de type lui-même des propriétés importantes des types de données ainsi définis.

Par exemple, en utilisant un type somme classique, on pourrait réimplémenter le type 'a list avec

type 'element liste = | Nil | Cons of 'element * 'element liste

Si on essaye d'écrire une fonction premier_element pour ce type, on se heurte au cas de la liste vide

let premier_element l = match l with | Cons (elt, _ ) -> elt | Nil -> (* que faire ici? *) raise Not_found (* émettre une exception peut être une solution *)

Avec les types algébriques généralisés, on peut coder directement la longueur de la liste dans le système de type, voire même définir une liste hétérogène.

type rien (* un type vide *) type 'elements liste_gadt = | Nil : rien liste_gadt (* la liste vide ne contient rien *) | Cons : 'element * 'elements liste_gadt -> ('element * 'elements) liste_gadt (* Cons prend un nouvel élément et ajoute son type à la liste de types de la liste *)

Avec ce nouveau type particulier, on peut maintenant écrire la fonction premier_element sans exception :

let premier_element ( l : ('element * 'elements) liste_gadt) = match l with | Cons( elt, _ ) -> elt

Cette fois-ci, l'appel de fonction premier_element Nil renvoie une erreur de type: Nil a pour type rien liste_gadt et le type rien est différent de 'element * 'elements et ce quel que soit 'elements.

Il est cependant important de noter que maintenir explicitement la liste de types de la liste dans le système de types introduit beaucoup de rigidité, et ce type 'elements liste_gadt n'est pas forcément pratique à utiliser hors de cas jouets. Cependant, il permet de mettre en évidence les interactions complexes entre les types algébriques généralisés et le filtrage de motif.

Motifs réfutables

Une des propriétés importantes du filtrage de motifs dans OCaml est que le compilateur peut vérifier que tout filtrage de motifs est à la fois exhaustif (tous les cas sont couverts), et non-redondant (toutes les branches dans le filtrage de motifs sont atteignables). Par exemple, pour le type somme simple 'elt liste, le filtrage de motif

let premier_element (l:'elt liste) = match l with | Cons (elt, _ ) -> elt

n'est pas exhaustif, tandis que

let premier_element (l:'elt liste) = match l with | Nil -> raise Not_found | Cons( elt, _ ) -> elt | Cons( elt, Cons( snd_elt, _ ) ) -> elt

est redondant parce que la troisième branche couvre un cas déjà traité par la seconde.

En présence de types algébriques généralisés, déterminer qu'un filtrage de motifs est à la fois exhaustif et non-redondant devient extrêmement complexe, voire indécidable (cf le résumé en pdf GADTs and exhaustiveness: looking for the impossible). De ce fait, le compilateur préfère émettre des avertissements lorsqu'il ne peut pas prouver qu'un filtrage de motifs est exhaustif. Cela peut mener à des faux positifs, et le compilateur peut alors suggérer des motifs qui sont en fait inatteignables. Pour pallier cette situation, OCaml 4.03 introduit la possibilité d'écrire des motifs réfutables, afin de demander au compilateur de faire plus d'efforts pour prouver que le motif est inatteignable.

Par exemple, une situation dans laquelle le compilateur émet des faux positifs apparaît si on construit un deuxième type de liste hétérogène qui possède au minimum un élément.

type 'elements liste_gadt_2 = | Premier_element: 'elt -> ('elt * rien) liste_gadt_2 | Cons: 'elt * 'elements liste_gadt_2 -> ('elt * 'elements) liste_gadt_2

On peut ensuite essayer de comparer deux listes de ces deux types différents comme suit :

let rec egal : type elements. elements liste_gadt -> elements liste_gadt_2 -> bool = fun l l' -> match l, l' with | Cons(x, Nil), Premier_element y -> x = y | Cons(x,l), Cons(y, l') -> x = y && egal l l'

Pour cette fonction, le compilateur se plaint que le filtrage de motif n'est pas exhaustif parce que le cas (Nil, _ ) n'est pas couvert. Or ce cas est impossible, puisque la liste des types éléments des deux listes sont les mêmes, donc forcément la première liste a au moins un élément. Depuis 4.03, il est possible de dire au compilateur de revoir sa copie en lui indiquant qu'il devrait pouvoir prouver que ce motif est réfutable

let rec egal : type elements. elements liste_gadt -> elements liste_gadt_2 -> bool = fun l l' -> match l, l' with | Cons(x, Nil), Premier_element y -> x = y | Cons(x,l), Cons'(y, l') -> x = y && egal l l' | Nil, _ -> .

Ici, la dernière clause se termine par un point ., pour indiquer que la clause est réfutable et n'est là que pour aider le compilateur à prouver ce point.

Un point important à noter est qu'une des raisons pour lesquelles l'exemple précédent est relativement complexe est que la détection de motifs réfutables a été fortement améliorée dans le compilateur, et il est relativement difficile de trouver des cas de faux positifs simples dans un usage "courant" des types algébriques généralisés.

Messages d'erreur améliorés pour les GADT

Les types algébriques généralisés sont clairement une des fonctionnalités les plus complexes d'OCaml. Les erreurs de type générées par un mauvais usage de ces types peuvent être particulièrement ésotériques.

Un des problèmes rencontrés pour générer des erreurs compréhensibles provient des types existentiels : un type existentiel est une variable de type qui apparaît dans le type d'un argument d'un constructeur GADT sans apparaître dans le type du GADT lui-même. Un exemple de type existentiel serait le paramètre `'a' dans le type de donnée suivant:

type affichable = Affichable: 'a * ('a -> unit) -> affichable let afficher (Affichable (elt,print)) = print elt

Dans ce type affichable, le constructeur Affichable prend en argument un élément de type a et une fonction d'affichage f pour ce type de donnée et renvoie une valeur de type affichable. Le paramètre de type 'a a donc disparu lors de l'application du constructeur Affichable: c'est donc un type existentiel.

Ce nom de type existentiel provient du fait que si on considère une valeur Affichable(elt,print), on sait qu'il existe un type 'a tel que elt soit de type 'a et print soit de type 'a -> unit. Cependant, l'information précise sur quel est ce type 'a a été complètement perdue. Une des conséquences de cette perte d'information est que ce type existentiel 'a ne peut échapper le contexte du constructeur. La fonction suivante est par exemple invalide :

let escape (Affichable(a,f)) = a

En effet, le système de type d'OCaml n'a pas assez d'information pour assigner un type
à a: il sait qu'il existe un type t tel que a:t et f:t->unit, mais n'a aucune autre information sur t. Dans les versions précédentes d'OCaml cela donnait lieu à l'erreur suivante

Error: This expression has type a#0 but an expression was expected of type a#0 The type constructor a#0 would escape its scope

Cette erreur est particulièrement difficile à comprendre pour le non-initié. Dans ce message d'erreur le compilateur essaye de dire qu'il a initialisé un type existentiel qui était appelé 'a dans la définition du type GADT avec le type a#0. Une erreur est ensuite apparue lorsqu'il a essayé d'unifier le type existentiel a#0 avec le type non-existentiel a#0 ce qui n'est pas autorisé parce que cela permettrait au type existentiel a#0 d'échapper au contexte du constructeur.

Pour éviter ces messages sibyllins, la nomenclature utilisée par le compilateur pour nommer les types existentiels a été substantiellement améliorée dans OCaml 4.03; même si elle est encore loin d'être parfaite.

  • Premièrement, les noms de type existentiel, et uniquement eux, sont préfixés par $

  • Un type nommé $Constr_'a correspond à un type existentiel introduit pour la variable de type nommée 'a dans la définition du constructeur Constr. L'erreur de type pour la fonction escape précédente devient donc

type affichable = Affichable: 'a * ('a -> unit) -> affichable let escape (Affichable(a,f)) = a (* Error: This expression has type $Affichable_'a but an expression was expected of type 'a The type constructor $Affichable_'a would escape its scope *)

Par rapport à la version précédente, le message d'erreur fait clairement la distinction entre le type existentiel $Affichable_'a$ et le type non-existentiel 'a qui étaient tous deux nommés $a#0 précédemment. L'origine du type existentiel $Affichable_'a
est aussi beaucoup plus claire.

  • Le nom $Constr est utilisé si la variable de type correspondante dans la définition du constructeur Constr était anonyme:
type any = Any : _ -> any let escape (Any x) = x;; (* Error: This expression has type $Any but an expression was expected of type 'a The type constructor $Any would escape its scope *)
  • Le nom $'a est utilisé si une variable de type existentiel sans nom précis a été unifiée avec une variable de type normale 'a au moment du typage.

Par exemple:

type ('arg,'result,'aux) fn = | Fun: ('a ->'b) -> ('a,'b,unit) fn | Mem1: ('a ->'b) * 'a * 'b -> ('a, 'b, 'a * 'b) fn let apply: ('arg,'result, _ ) fn -> 'arg -> 'result = fun f x -> match f with | Fun f -> f x | Mem1 (f,y,fy) -> if x = y then fy else f x;; (* Error: This pattern matches values of type ($'arg, $'result, $'arg * $'result) fn but a pattern was expected which matches values of type ($'arg, $'result, unit) fn Type $'arg * $'result is not compatible with type unit *)
  • Enfin si toutes les méthodes précédentes n'ont pas réussi à donner un nom plus spéficique à un type existentiel, le compilateur utilise simplement $n avec n un entier.
Vers le futur Plus de flambda

L'introduction de la nouvelle représentation intermédiaire est une première étape avant la mise en place de nombreuses nouvelle optimisations.

Passage à un cycle de versions plus court

OCaml a toujours eu un cycle de versions assez long où les versions étaient sorties « quand ça se stabilise ». Certains utilisateurs industriels en sont arrivés au point d'utiliser en production la version de développement. C'est un choix qui n'est pas complètement déraisonnable, celle-ci étant très peu souvent cassée, mais cela reflète néanmoins un problème. Suite à de nombreuses discussions au sein de l'équipe de développement, il a donc été décidé de passer à un cycle avec des versions à des dates presque fixes et beaucoup plus court. Le gel de la version 4.04 est prévu pour cet été.

Operateurs d'indexation

Non content de disposer de deux opérateurs d'additions dans la bibliothèque standard, OCaml se démarque également par son nombre de constructions syntaxiques pour accéder à un élément d'un tableau. En fonction de la famille de type auquel appartient le tableau, il faut utiliser:

  • a.(n) pour les tableaux (type 'a array)
  • a.[n] pour les chaînes de caractère (type string)
  • a.{k,l} pour les tableaux multidimensionnels (type ('a,'b,'c) Bigarray.t

De plus, ces 'opérateurs d'indexation' ne sont pas vraiment des objets de première classes dans le language OCaml. Il n'est pas vraiment possible de réutiliser ces opérateurs sans casse.

Pour pallier cet état de fait, une proposition était de transformer ces opérateurs d'indexation en objet de première classe. Cela permettrait par exemple d'avoir une syntaxe à la python pour des dictionnaires

let (.{}) dict x = Hashtbl.find dict x let (.{}<-) dict x y = Hashtbl.add dict x y let dict = Hashtbl.create 10 ;; dict.{"key"}<-0 ;; dict.{"key"} (* renvoie 0 *)

Cette proposition a cependant le désavantage qu'elle ne réduit pas le nombre d'opérateurs d'indexation, elle ne fait qu'accroître leur flexibilité.

Elle s'est retrouvée en conflit, avec une seconde proposition dont le but était de réduire le nombre d'opérateurs d'indexation et de détrôner les tableaux float array de leur rôle particulier au sein du compilateur. L'idée de cette seconde proposition est de définir une famille de types pour les tableaux, pour laquelle il serait possible d'utiliser la syntaxe a.(n) et ce quelque soit le type précis du tableau.

Les deux propositions s'étant retrouvées en conflit à la fin de la période d'intégration pour la version 4.03, il a été décidé de prendre le temps pour réfléchir posément à leur éventuelle intégration dans une future version.

Multicœur

Il y a une demande assez forte depuis longtemps pour un glaneur de cellule (GC) multicœur, mais malgré plusieurs prototypes abandonnés avec le temps ceci n'a jamais été intégré à OCaml. Un nouveau projet, lancé depuis environ 2 ans à Cambridge chez OCamllabs semble arriver à un point de maturité suffisante pour pouvoir être sérieusement testé. Ce développement est long, et est encore assez loin d'être terminé. C'est déjà un travail vraiment impressionnant, sachant que leur objectif (qu'il faut atteindre pour avoir une chance d'être accepté dans la distribution officielle) est d'être quasiment aussi efficace que le GC actuel sur du code séquentiel. C'est ambitieux car celui-ci est particulièrement efficace.

Implicites modulaires

OCaml est un langage très explicite. Cela se remarque en particulier au niveau des types numériques : il n'y a aucune conversion implicite entre entiers et nombres à virgule flottante. De manière similaire, une particularité d'OCaml est que le langage possède des opérateurs numériques séparés pour les entiers (+,-,*,/, etc…) et les nombres à virgule flottante (+.,-.,*.,/., etc…). Cette duplication est due à l'absence dans OCaml de polymorphisme ad-hoc. Deux exemples de polymorphisme ad-hoc seraient la surcharge de fonction à la C++ ou les classes de type à la Haskell.

Les implicites modulaires sont une proposition audacieuse (pdf) pour implémenter des fonctionnalités comparables aux classes de type à la Haskell en se basant sur les modules d'OCaml. Cette idée, directement inspirée des paramètres implicites utilisés en Scala, consiste à pouvoir utiliser des modules comme paramètres implicites de fonction. Par exemple, en Haskell, une fonction moyenne pourrait s'écrire

moyenne:: Num n => n -> n -> n moyenne x y = (x + y) / 2

Dans cette expression, Num n indique que le type n appartient à la classe de type Num et par conséquent implémente l'addition +, la division / et la conversion depuis un entier. En OCaml sans implicites modulaires, il est possible d'émuler ce concept en passant un module M de signature Num qui contient ces fonctions nécessaires comme argument de la fonction moyenne:

let moyenne (type a) (module N:Num with type t = a) x y = N.( x + y / from_int 2 )

Cependant, avec cette définition, il est nécessaire de passer le module N à la main à chaque usage de la fonction moyenne. Les modules implicites permettent de s'affranchir de cette limitation en passant N comme un module implicite

let moyenne {N:Num} x y = x + y / from_int 2

Il devient possible d'appeler moyenne 2 5 sans préciser le module ( sous conditions que +, / et from_int utilisent également le module implicite N ).
Avec cette définition, si les bon modules sont visibles, il est possible d'appliquer moyenne à la fois à des entiers et des nombres à virgule flottante sans avoir à repréciser le type. Il serait ainsi possible de se passer d'opérateurs numériques différenciés pour chaque type numérique.

Cependant, avec des paramètres implicites, une question importante est de savoir comment le compilateur choisit quels paramètres implicites sont utilisés. L'implémentation proposée pour ces implicites modulaires essaye d'être la plus explicite possible à ce niveau. Par exemple, un module ne peut être utilisé comme paramètre implicite que s'il a été déclaré comme disponible en tant que paramètre implicite.

Si cette proposition a été très bien reçue par la communauté OCaml, il reste néanmoins un travail important avant de pouvoir l'intégrer dans le compilateur. Pour tester ces nouvelles possibilités, un fork est disponible sur le dépot github.

Améliorations mineures

Cette nouvelle version s'accompagne aussi d'une ribambelle d'améliorations mineures que ce soit en terme d'usabilité, de sucre syntaxiques, de nouveaux avertissements ou encore un support étendu des extensions par points d'extension. En voici une liste longue mais non exhaustive.

Usabilité Sortie en couleur du compilateur

Le compilateur affiche désormais les messages d'erreur et d'avertissement en couleur, lorsqu'utilisé au sein d'un terminal qui supporte l'affichage en couleur.

Directives help pour l'interpréteur interactif

L'interpréteur interactif d'ocaml, que ce soit l'interpréteur standard ou sa version enrichie, utop, dispose d'un certain nombre de directives qui permettent de contrôler le comportement de l'interpréteur ou d'afficher des informations utiles. Ces directives étaient jusqu'à présent uniquement documentées dans le manuel de référence d'OCaml. Il est désormais possible d'utiliser la directive

#help;;

pour afficher une liste des directives disponibles avec une brève description de leur usage.

Commentaire de documentation gérés par le compilateur

Ceci est un changement de la 4.02.2, maturé dans la 4.03.0.

La syntaxe des commentaires en OCaml est (* pour commencer un commentaire et *) pour le terminer. La convention des commentaires de documentation est, depuis longtemps, de commencer les commentaires avec un * de plus:

val length : 'a list -> int (** Return the length (number of elements) of the given list. *)

C'est la forme des commentaires reconnue par l'outil OCamldoc qui génère les versions html des documentations. Le compilateur est donc maintenant aussi capable de comprendre cette convention, ces commentaires sont gardés dans les arbres de syntaxe, et en particulier sont disponibles dans les fichiers .cmt. Cela permet d'écrire plus simplement de meilleurs outils pour gérer la documentation. Par exemple ocp-index peut retrouver la documentation d'une fonction en même temps que son type. Un nouvel outil est en train de voir le jour pour remplacer OCamldoc, utilisant les informations de liaison et de typage pour gérer, entre autres, les liens entre modules de différents projets et les instanciations de foncteurs. Par exemple, cette documentation de la bibliothèque core de Janestreet.

Régularisation des constructeurs (::) et []

les constructeurs :: est [] étaient des exceptions gérés différemment des autres types algébriques. Par souci de régularisation ils est maintenant possible de les redéfinir. Ce n'est pas forcement une très bonne pratique, mais ça peut avoir des usages pour faire des DSL.

Un exemple hautement inutile: les listes de longueur paire et impaire.

type 'a liste_impaire = | (::) of 'a * 'a liste_paire and 'a liste_paire = | [] | (::) of 'a * 'a liste_impaire let a : int list_impaire = 1 :: [] let b : int list_paire = 2 :: 1 :: []

Notez en particulier que comme la syntaxe [1;2] est un sucre syntaxique pour 1 :: 2 :: [], il est donc possible d'écrire:

let a : int list_impaire = [1] let b : int list_paire = [2;1] Améliorations mineures de la syntaxe

Cette nouvelle version introduit aussi un certain nombre d'améliorations mineures de la syntaxe, offrant des raccourcis utiles dans certaines situations

  • omissions simplifiées de variables de type dans les types paramétrés

Il peut arriver que l'on ne souhaite pas préciser les paramètres d'un type paramétré. Une solution dans cette utilisation était d'utiliser un tiret bas _, par exemple (_,_) result. Cependant, cela demandait d'utiliser autant de tirets que de paramètres de type.
Il est désormais possible d'utiliser _ sans ce soucier du nombre de paramètre: _ result

  • syntaxe non dépendante pour les foncteurs : S1 -> S2
module type F = S -> S' (* plutôt que *) module type F = functor (M:S) -> S'

Cette nouvelle syntaxe pour les foncteurs est plus légères
mais ne couvre pas toutes les possibilités du système de modules, par exemple :

module type F = functor (M:S) -> (S' with type t = M.z)
  • annotations simplifiées de type sur les champs d'un enregistrement

Dans les rares cas où cela est utile, le type d'un champ peut être annoté directement sur l'étiquette associée

type ('gauche,'droite) paire = { gauche:'gauche; droite:'droite} {x:int list=[]; y:float list=[]};; (* plutôt que *) { x = ([]:int list); y = ([]:float list) }
  • annotation simplifiée pour le type retour d'une fonction
let f = fun x y : int list -> [x;y] (* remplace *) let f = fun x y -> ([x;y] : int list)
  • punning pour la copie d'objets
object val x=0 val y = 1 method update x = {< x >} end

à la place de method update x = {< x = x >}

  • raccourci pour types localement abstraits multiples
let f (type a b) (x:a) (y:b) = () (* plutôt que *) let f (type a) (type b) (x:a) (y:b) = ()
  • Notation hexadécimale pour les nombres à virgule flottante. Les nombres à virgules flottantes peuvent désormais être écrits en notation hexadécimale, ce qui peut être utile pour le calcul numérique.
let quinze = 0xF. let demi = 0xp-1
  • Notation octale pour les caractères

Il est désormais possible d'écrire des séquences d'échappements en octal au sein des chaîne de caractères:

let neuf = "\o071";; Avertissement sur les filtrages fragiles

Cet nouvel avertissement un peu particulier peut être contrôlé à travers un attribut prédéfini [@warn_on_literal_pattern]. Il permet de marquer l'argument d'un constructeur d'un type somme comme étant là à but purement informatif. Tout usage du filtrage de motif sur cet argument émet un avertissement pour signaler qu'il n'y a aucune garantie que l'argument soit stable. En particulier, la bibliothèque standard utilise cet avertissement pour indiquer que certains messages renvoyés par des exceptions sont purement informatifs. L’intérêt principal est d'aider à l'écriture de code plus facilement maintenable dans le temps en empêchant les utilisateurs de dépendre du texte précis d'un message, alors que celui-là pourrait potentiellement subir une correction orthographique.

Extensions de syntaxe par point d'extensions

Apparues dans la version 4.02, les extensions de syntaxe par points d'extension ou extensions ppx implémentent un nouveau mécanisme pour l'écriture d'extensions de syntaxe pour OCaml. Ce mécanisme a pour but d'apporter une alternative plus simple, composable et rapide aux préprocesseurs camlp4/5.

La différence fondamentale entre extensions ppx et camlp4/5 est le point application de ces extensions. Les extensions basées sur les préprocesseurs campl4/5 transforment un code source en du code ocaml au niveau textuel:

code source X → extension campl4 X → code source OCaml

Cela permet notamment de réécrire totalement la grammaire et syntaxe d'OCaml.
Cependant, cela pose des problèmes de composabilité. Si deux extensions campl4 A et B implémentent deux langages OCaml + A et OCaml + B, combiner ces deux extensions nécessitent d'écrire une nouvelle extension A+B afin de pouvoir reconnaître le langage OCaml + A + B. De plus, puisqu'une extension campl4 transforme un code source écrit dans le nouveau langage en code source ocaml, le compilateur a besoin de re-analyser la sortie de l'extension camlp4.

Les points d'extension ont pour but d'éviter ces écueils des extensions camlp4 en partant du principe que la majorité des extensions de syntaxe n'ont pas besoin de réécrire complètement la grammaire d' OCaml. L'idée de base des extensions ppx est de laisser le travail d'analyse syntactique au compilateur OCaml et d'implémenter les extensions ppx comme des transformations au niveau de l'arbre syntaxique abstraite d'OCaml.
Puisqu'ils travaillent au niveau de la syntaxe abstraite d'OCaml, les extensions ppx ne peuvent donc plus complètement transformer la syntaxe d'OCaml mais peuvent uniquement réinterpréter la syntaxe existante. Cette restriction garantit que les extensions ppx peuvent travailler ensemble et que l'utilisateur n'a pas besoin de réapprendre une syntaxe complètement différente pour chaque extension. Cependant, pour donner plus de marge de manœuvres aux extensions ppx, l'analyseur syntaxique d'OCaml reconnaît et transforme en arbre syntaxique abstraite valide une grammaire légèrement plus étendue que la grammaire OCaml vanilla. En particulier, les points d'extensions de la forme

let f x = [%extension expression] x [%%extension phrase ]

représente des nœuds de l'arbre syntaxique abstraite étendue qui doivent être transformés en nœuds valides par un transformateur ppx sous peine d'erreur du compilateur.
Ces nœuds d'extensions peuvent ensuite être complémentés par par des attributs [@attributs] qui associent des métadonnées aux nœuds de l'arbre syntaxique abstraites et des chaînes de caractères bruts {delimiteur| ""''"" |delimiteur} qui permettent de s'affranchir de la syntaxe d'OCaml de manière délimitée.

Avec cette structure, il est bien plus facile de composer les extensions ppx : une extension donnée n'a besoin que de modifier ses nœuds d'extensions en laissant intact le reste de l'arbre syntaxique. Les extensions ppx peuvent donc être appliquées en série par le compilateur, avec un nombre limité de conflits potentiels entre extensions. À la fin de cette série de transformations, le compilateur n'a plus qu'à vérifier que l'arbre syntaxique abstraite obtenue correspond bien en un arbre syntaxique abstraite vanilla:

OCaml + ppx → analyseur syntactique OCaml → AST étendu → extensions ppx → AST étendu → vérification de l'AST → compilation standard

Les avantages par rapport au modèle camlp4 sont donc l'utilisation d'une seule grammaire OCaml + ppx en entrée pour le compilateur, la possibilité de chaîner les extensions de syntaxe puisqu'elles travaillent sur la même représentation et la possibilité d'analyser qu'une seule fois le code source. Un des inconvénients des extensions ppx vient du fait qu'elles doivent partager la même syntaxe, ce qui peut mener à certaines lourdeurs syntactiques. Pour faciliter l'utilisation de ces extensions, de nouvelles constructions ont été ajoutées à la grammaire étendue d'OCaml depuis la version 4.02.

Raccourcis d'extension

Dans OCaml 4.02.3, certains mot-clefs disposaient d'une syntaxe raccourcie pour les nœuds d'extensions commençant à ce mot-clef:

let%extension f x = () (* équivaut à *) [%%extension let f x= () ]

Ces raccourcis ont été généralisés à tous les mots-clefs pour lesquels un tel sucre syntaxique fait sens.

Opérateurs d'extension

Depuis la version 4.02.3, certains opérateurs sont réservés pour les extensions ppx. Il s'agit des opérateurs commençant par un croisillon # et contenant au moins deux croisillons #:

let ( ##% ) f x = f x

Il est à noter que la définition d'opérateurs commençant par des croisillons en général n'est possible que depuis 4.02.3. Ces opérateurs présentent l'intérêt de lier plus fortement que l'application de fonction. Cette forte précédence est exploitée par exemple par l'extension de syntaxe de javascript_of_ocaml pour implémenter l'appel de méthode sur les objets javascripst.

Littéraux d'extension

Dans OCaml vanilla, il existe quatre classes différents de litéraux pour les entiers: 1 pour les entiers marqués utilisés par OCaml, 1n pour les entiers natifs non marqués, 1l pour les entiers 32 bits et 1L pour les entiers 64 bits. De la même manière, les littéraux flottants représentent forcément des flottants 64 bits.

OCaml 4.03.0 lève cette limitation dans la grammaire étendue ppx. Il est désormais possible d'appliquer un caractère modal (de f à z ou de F à Z) à n'importe quel littéral numérique. De tels littéraux modifiés pourraient par exemple être utilisés pour implémenter une syntaxe plus naturelle pour les quaternions ou complexes

let quaternion = 1.0i + 2.0j + 3.0r let entier_de_gauss = 1i + 2r

Ces littéraux modifiés ne sont cependant valides que dans la grammaire étendue et doivent être traduits en une forme syntactique vanilla par une extension ppx pour être utiles.

Nœud d'extension prédéfini

Une nouveauté relativement surprenante est l'apparition d'un nœud d'extension prédéfini [%extension_constructor] dans le compilateur. Originellement, les nœuds d'extension ont été introduits pour permettre aux extensions ppx d'étendre de façon contrôlée la syntaxe d'OCaml. Ce nœud d'extension inclus au sein du compilateur lui-même est donc relativement exotique. Il s'applique dans des cas particuliers en lien avec les types sommes ouverts introduits avec OCaml 4.02 et permet de calculer le numéro d'un constructeur ajouté au type somme:

type t = .. type t += X of int | Y of string let x = [%extension_constructor X] let y = [%extension_constructor Y] let b = x<>y;; - : b = true

Pourquoi utiliser un nœud d'extension ici ? Simplement parce que cela permet de ne pas avoir à construire une valeur valide du type t pour pouvoir demander au compilateur le numéro assigné au constructeur. Cette construction a été introduite pour pouvoir gérer les types extensibles dans les extensions ppx gérant la sérialisation/dé-sérialisation. C'est à priori inutile pour un usage 'normal' du langage.

Remerciements

Cette dépêche collaborative n'aurait pas été possible sans le concours de kantien, chicco, Lucas, VictorAche, BAud, Ontologia, Nicolas Boulay et les corrections de Yves Bourguignon, gim, Snark, Nÿco, Nicolas Casanova, Storm, ɹǝıʌıʃO, KlakPlok, anaseto, come, eggman, theblatte, Anthony Jaguenaud, SamWang_le_retour_7, patrick_g, Dinosaure.

Télécharger ce contenu au format Epub

Lire les commentaires

Sortie de kdenlive 16.04.0

Lundi 2 Mai

Une version majeure du logiciel de montage vidéo kdenlive est sortie, la 16.04.0. Elle corrige un certain nombre de bogues et autres instabilités. Il faut dire que le passage à KDE Frameworks 5 (KF5) ne s’est pas fait sans mal, en passant de la dernière version 0.9.10 sous Qt4 vers les versions sous KF5, je me suis retrouvé avec plein de bogues et d’effets qui ne marchaient plus en partie en raisdon d’un environnement KF5 pas forcément encore bien abouti sur ma Mageia 5. Au final, ça semble s’améliorer sensiblement et on retrouve (enfin) le niveau de stabilité de la 0.9.10 avec des fonctions supplémentaires.

Pour illustrer le tout on commence par une petite copie d’écran :

Sans rentrer dans le détail du journal des modifications, les évolutions marquantes sont :

  • dans le champ moniteur :
    • un champ timecode (le curseur de temps) a fait son apparition dans la fenêtre de moniteur de clip et de projet. Ça peut être utile pour se repérer finement, d’autant qu’on peut faire bouger le curseur par unité de 50e de seconde,
    • les marqueurs de début et de fin de zone du moniteur de clip peuvent maintenant être déplacés à la souris,
    • on peut choisir un effet dans le champ correspondant (cf. copie d’écran) et le glisser dans la fenêtre de moniteur (clip ou projet) pour que celui‐ci soit appliqué,
    • dans le champ moniteur on peut voir le niveau audio du clip ou du projet,
    • on peut également afficher le nombre d’images par seconde (fps) par le menu accessible avec le bouton droit de la souris (Current Monitor OverlayMonitor Overlay Timecode) ;
  • dans le champ de la timeline :
    • rajout d’une fonction « match frame », si vous placez le curseur sur la timeline et en choisissant dans le menu accessible avec le bouton droit Clip in project bin, le moniteur renvoie directement sur la même image du clip original ;
  • dans le champ effet :
    • rajout d’un bouton « split compare », c’est assez génial car il permet dans le moniteur d’avoir la moitié de la vue avec l’effet et l’autre moitié sans effet, très pratique !
    • maintenant, on a enfin du son quand on joue avec l’effet de ralentissement/accélération de la vidéo. Auparavant, j’étais obligé de passer par OpenShot Video pour pouvoir le faire en réimportant ensuite ma séquence vidéo,
    • on peut mettre les effets qu’on utilise le plus souvent en favoris facilement accessibles en les sélectionnant puis, à partir du bouton droit de la souris, Add Effect to Favorites ;
  • dans le menu Project :
    • apparition d’une fonction intéressante pour pouvoir intégrer un compteur à sa vidéo (ProjectGeneratorCounter),
    • de la même manière, on peut rajouter une mire TV ou du bruit de fond, utile pour créer un générique.

  • dans les titres, on peut rajouter un gradient de couleur, ainsi qu’une ombre portée ;
  • à noter également qu’on peut maintenant copier un clip (Duplicate Clip), très utile pour les titres.

Bref, plein de bonnes raisons de vous mettre à la vidéo, évidemment sous notre environnement préféré.

Télécharger ce contenu au format Epub

Lire les commentaires

[THSF] Toulouse Hackers Space Factory, édition 2016

Dimanche 1 Mai

Du 19 au 22 mai 2016 se déroulera la 7e édition du «Toulouse Hacker Space Factory». Issue de la rencontre entre le Tetalab et Mix’Art Myrys, le «Toulouse Hacker Space Factory» est, depuis 2010, un événement basé sur la mise en commun de connaissances, un moment festif et convivial tourné vers l’utilisation créative des technologies, leurs appropriations et les enjeux que cela suscite.

Au programme cette année : plus de 15 conférences, 20 performances et installations, une quinzaine de concerts, une vingtaine d'ateliers, un hackerspace éphémère, des expositions, de la fête, et de la bonne humeur ! Des gens de Telecomix, du CCC, de Regards Citoyens, des hackerspace de Rennes, Montpellier, Paris, Pau, Perpignan, Orléans, et de Berlin ! Le programme est détaillé en seconde partie de la dépêche.

 

NdM.: un événement régulièrement évoqué sur LinuxFr.org, voire les annonces des éditions 2011, 2012, 2013, 2015 et déjà deux journaux sur la préparation de l'édition 2016 (1 et 2)

Un temps de rencontres et d’échanges, qui stimule la réflexion et la recherche dans de nombreux domaines, technologique bien sûr, mais au delà, sociologique, philosophique, artistique…

  • Conférences
    • Hackerspaces under surveillance: Studying the Egyptian case (Tarek Ahmed - Le Caire - Cairo Makerspace)
    • Investigation à long terme à l'ère de l'information Macdonald's (Fo0 - RSF/ex-Telecomix + Etienne Huvert - SLUG )
    • Internet, l'activisme et Nous (Jérémy Zimmermann - Berlin)
    • A Hackers view on the Military Industrial Internet Freedom Complex (Andy Muller - Chaos Computer Club - Berlin)
    • Presentation du Doctorat Sauvage en Architecture (Echelle Inconnue - Rouen)
    • Hacking Social (Brest)
    • Pouhiou + Dany Caligula (Toulouse)
    • Dessine moi Internet (Taziden - Toulouse)
    • Coordination Nationale des Lieux Intermediaires et independants (Jules Desgouttes - CNLII - Lyon)
    • Marketing sensoriel et neuromarketing (Renaud Lifchitz & Florence Suprin - Paris)
    • Maxigas (Barcelone)
    • Auto-organisation à la jungle de Calais (Loïc - Calais)
    • Facebook delenda est / Il faut détruire Facebook (Jean Noël Montagné - Nice - Nicelab)
    • Équilibres dynamiques des systèmes vivants éléments de réflexion pour le bio-hacker (Emmanuel Ferrand - Paris)
    • Transparence et OpenData : décomplexer le lobbyiste en chaque citoyen (Benjamin Oooghe-Tabanou - Regards Citoyens)
    • Identification radioéléctrique et numérique : une éloge de la fuite (Antoine Méric - Paris)

jz

  • Performances

  • Installations

    • No Bird (Annlor Codina et Vross - Toulouse)
    • Mad clocks (Labomedia - Orléans)
    • Tesla Coil (Fréderic Deslias - Compagnie Le Clair Obscure - Caen)
    • Patio Temporel (Juliette Virlet - Toulouse)
    • PauLLA (Pau)
    • Arancelle (Jéremy Philippeau - Toulouse)
    • Hyloscopia, mental map, 3ème oeil (Patchwork - Toulouse)
    • Probes (Aantoine Méric - Paris)
    • Machine temporelle hors d'usage (Sylvain Blocquaux - Orléans)
  • Expositions

    • MUTAH (Toulouse)
    • MojuWall (Exposition de GIF animés réalisés avec Mojulo (01ivier - Chalon-sur-Saône)
    • Archives 19/84 - C.L.O.D.O (Trogluddites-3 - Bordeaux)
    • Retrospective photos THSF 2015 (Fabien Levac - Toulouse)
  • Concerts

    • P-NODE (partout)
    • Aymeric De Tapol (Bruxelles)
    • Morgho (Toulouse)
    • Thomas Bigot (Toulouse)
    • Nocto (Strasbourg & Toulouse)
    • Viud Moth (Toulouse & Paris)
    • Samoth Moth - Thomas Surugue (Toulouse)
    • Mut4h (Toulouse)
    • Merry Crisis (Pau)
    • Circuit Tordu (Lille)
    • EMOC (Le Havre)
    • Guilhem Desq (Toulouse)
    • Daikiri
    • Indurain
    • Ergot (Albi)
  • Scratch session

    • Scratch: Arcane, Sheit.One, Madgic, Kerg, Shogun, Sick, B4B Selection, Mutah, ck2low, Spazm, Woody Cut, lad…
    • Graph: Mëos, Mikoz, Tremze, Spazm, Dark…
    • et d'autres surprises à venir…
  • Ateliers

    • Lockpicking (Grandasse - Toulouse)
    • Fabrication et développement photo au Caffenol (Fabien Levac/Olivier Gill - Toulouse)
    • Bastard Operator From Hell (FatalErrors - Toulouse)
    • Stick em up (Toulouse)
    • Soudure badges, kits & appareils sonores (Tetalab/Snootlab/JohnLeJeune - Toulouse/Rennes)
    • La Signothèque, Une bibliothèque de signes universelle, vectorielle, et libre (Arobire'Sign - Toulouse)
    • Afghan Cam++ (rataflo - Toulouse)
    • F.A.I, hébergeur associatif et militant (Tetaneutral - Toulouse)
    • IRCologie, Electropolis 25 ans après (Lunar - From the Internetz)
    • Initiation coding Python avec Minecraft sur RasPi (AliceLab - Perpignan)
    • Inititation et sensibilisation aux logiciels libres + install party (Toulibre - Toulouse)
    • Lutherie Electronique (emoc - Le Havre)
    • Atelier larsen vidéo numérique (eqko - Paris)
    • Brassage de bière DIY (Les forces du Malt - Toulouse)
    • Nos oignons, nœuds de sortie Tor financés par la communauté (Syl + Lunar from the Internetz)
    • BI3, un nouveau bloqueur de pub (Éric - Toulouse)

On peut y venir en famille avec ses enfants pour découvrir des technologies, des outils et des méthodes, des ateliers et des présentations. Mais également pour échanger avec ses pairs. Aussi pour ceux et celles s'intéressant aux questions sociétales. Enfin pour la fête. Il est donc ouvert à tout-e-s, débutant-e-s ou non, expert-e-s ou intéressé-e-s, et se déroule dans les locaux de Mix'Art Myrys au 12 rue Ferdinand Lassalle 31200 TOULOUSE - France

Métro: ligne B - Canal du midi
Bus: Ligne n°15 - Arrêt: Chemin Tricou
Bus: Ligne n°16 - Arrêt: Suisse
Vélooz: Station n° 144 (62 boulevard de Suisse)

Télécharger ce contenu au format Epub

Lire les commentaires

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

Samedi 30 Avril

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 18 événements est en seconde partie de dépêche.

Sommaire Agenda du Libre pour la semaine 18 de l'année 2016 [Montpellier] Café Crypto - Le lundi 2 mai 2016 de 09h00 à 19h00.

Montpel’libre premier centre formateur Tails en France a le plaisir de vous proposer un nouveau cycle de formation, cryptographie et sécurité informatique. En partenariat avec
Merci d’avoir choisi de participer aux ateliers « Sécurité Informatique et Cryptographie » organisés par Le Club de la Presse et Montpel’libre.
Formation Crypto, séance de préparation, premier module :

[Kunheim] Formation Linux - Le lundi 2 mai 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 PAO : Scribus - Le lundi 2 mai 2016 de 19h00 à 21h00.

Atelier Scribus : Les clés de la PAO & du Design Libre #4
Dans la série des ateliers Do it yourself, l’association Silex Labs vous propose un nouveau cycle d’ateliers pour découvrir les clés de la PAO & du Design Open source et vous initier aux principaux outils de communication visuelle libres : Scribus, Inkscape et Gimp. Ces trois logiciels sont des logiciels libres et gratuits (licence GNU GPL) et sont multiplate-forme (ils fonctionnent sous GNU/Linux, Windows, Mac OS X).
Suite aux 3 premiers ateliers sur Inkscape et Gimp nous allons passer à Scribus

[Marseille] Réunion des contributeurs à OpenStreetMap de la région PACA - Le lundi 2 mai 2016 de 19h00 à 23h00.

Les contributeurs d'OpenStreetMap de la région de Marseille se réunissent le lundi 2 mai 2016, à partir de 19h00
page du Wiki d'OpenStreetMap sur les réunions de Marseille 
Pour ceux qui compteraient participer à la réunion et qui viennent pour la première fois, nous avons pour habitude que chacun(e) amène quelque chose à boire et/ou à grignoter.

[Montpellier] Lubuntu et Logiciels Libres - Le lundi 2 mai 2016 de 19h00 à 21h00.

L’équipe de Montpel’libre vous propose une permanence Logiciels Libres, discussions libres et accompagnements techniques aux systèmes d’exploitation libres.
Il est aussi possible, sur inscription, de présenter plusieurs logiciels libres (Blender, LibreOffice, Gimp…) selon la demande et la présence des intervenants spécialisés.
Notre bibliothèque de livres, documents, revues… GNU/Linux, systèmes et logiciels libres est disponible à la consultation dans la salle des partenaires, au premier étage.

[Neuilly sur Seine] Open Source pour l'Internet des objets - Le mardi 3 mai 2016 de 14h00 à 19h00.

Premier événement du Printemps de l'innovation Open Source, organisé par le GTLL de Systematic et l'Irill, présidé par Roberto Di Cosmo
Open Source pour l'Internet des objets
Pour l'industrie des objets connectés, intégrer l'écosystème du libre est une nécessité et une assurance de pérennité.

[Biot] Le droit des logiciels - Le mardi 3 mai 2016 de 18h00 à 20h30.

Conférence par François Pellegrini professeur des universités en informatique à l'université Bordeaux 1 et chercheur au LABRI  et à l'INRIA : Le tour du droit des logiciels en 80 minutes.
François Pellegrini est co-auteur avec Sébastien Canevet du livre publié en novembre 2013 au PUF : "Droit des logiciels"  
https://www.labri.fr/perso/pelegrin/slides/droit-log_stu_fr1_20130528.pdf

[Reims] Atelier Vie-Privée - Le mardi 3 mai 2016 de 18h30 à 20h30.

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 3 mai 2016 de 18h30 à 20h30

[Toulon] Réunion mensuelle Toulonux - Le mardi 3 mai 2016 de 18h55 à 21h25.

On y parle entre autre d'imprimante 3D, raspberry pi, python et logiciels libres, et tous les autres sujets.
C'est ouvert à tous, du geek poilu au curieux néophyte.
Rendez-vous à partir de 18h55 à La Cantine, hall de l'I.S.E.N. Place G. Pompidou, 83000 Toulon.

[Gignac] Conférence/débat autour des logiciels libres - Le mercredi 4 mai 2016 de 14h00 à 16h00.

Montpel’libre vous donne rendez-vous au Lycée Agricole de Gignac pour vous proposer une conférence/débat sur le thème « Les logiciels libres et biens communs, Internet : nouvelles cultures, nouvelles économies ».
Nous y aborderons l’Ubérisation, les GAFAM, la dégooglisation par Framasoft, la protection de la vie privée, la liberté d’expression, l’anonymisation par le réseau Tor, Wikipédia l’encyclopédie libre, les objectifs du logiciel libre…
De la tablette d’argile à la tablette numérique, des messages portés par les pigeons ou les relais de poste aux mails, de la transmission des idées au rythme des déplacements humains à leur diffusion instantanée sur la toile, des marchés circonscrits dans un espace géographique au commerce en ligne ouvert au monde…, l’apparition d’Internet qui réduit les distances spatiales et temporelles a donné un champ illimité aux ressources numériques, bousculant de nombreuses habitudes, suscitant de nouvelles pratiques culturelles, artistiques et économiques…

[Paris] Atelier Silex : créer son site web - Le mercredi 4 mai 2016 de 19h00 à 21h00.

Pour soutenir notre campagne de crowd funding sur Silex qui a débuté en avril nous vous proposons deux ateliers Silex pour découvrir ce logiciel libre pour réaliser des sites internet facilement et gratuitement.
N’hésitez pas à participer à notre campagne de crowd funding, toutes les contributions sont les bienvenues !!
Le premier atelier vous permettra de prendre en main le logiciel et de vous initier à l’interface et aux fonctions de bases du logiciel en réalisant un site internet en partant d’une page blanche. Le second atelier sera l’occasion d’utiliser les éditeurs de code pour améliorer votre site en vous initiant au CSS et même au Javascript pour les plus courageux.

[Toulouse] Rencontre Logiciels Libres - Le mercredi 4 mai 2016 de 19h30 à 22h30.

L'association Toulibre organise une rencontre autour des Logiciels Libres le mercredi 04 mai, 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.

[Paris] Soirée de Contribution au Libre - Le jeudi 5 mai 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.

[Tours] L'auto-hébergement et pourquoi pas chez-vous ? - Le jeudi 5 mai 2016 de 20h00 à 22h00.

Touraine Data Network dans le cadre de son objet "la défense et la promotion du réseau des réseaux Internet" vous propose un atelier sur l'auto-hébergement.
Venez découvrir les principes de l'auto-hébergement de ses propres services numériques: Pourquoi et comment ? L'essayer et pourquoi pas l'adopter !
Des ateliers complémentaires peuvent être organisés sur d'autres créneaux (essentiellement pour la mise en pratique l'atelier du jeudi soir étant la pour la découverte).

[Cognac] Initiation aux langages HTML et CSS - Le samedi 7 mai 2016 de 09h00 à 17h00.

Initiation aux langages HTML et CSS: faire une page internet en partant de 0
Niveau débutant
Sur inscription à l'adresse: contact@logicielslibrescognac.org

[Villeneuve d'Ascq] Libre à Vous - Le samedi 7 mai 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.

[Toulouse] Atelier Blender pour tous - Le samedi 7 mai 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.

[Aix-en-Provence] Samedi Libre - Le samedi 7 mai 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.
De nombreuses démonstrations sont disponibles sur place

Télécharger ce contenu au format Epub

Lire les commentaires

MondoRescue 3.2.2 est disponible

Samedi 30 Avril

Depuis 2009 vous n'avez pas eu de nouvelles de MondoRescue, projet libre de Disaster Recovery et Cloning qui fête joyeusement ses 16 ans d'existence.

Vous pensez bien que depuis 7 ans il s'est passé beaucoup de choses, il y a eu de nombreuses versions, pour toutes les distributions majeures récentes. La dernière en date apporte notamment la prise en charge de l'UEFI comme mode d'amorçage (pour le moment sur les distributions RHEL/CentOS 6 et 7), le calcul proportionnel des volumes logiques LVM, la prise en charge de xorriso comme outil d'écriture de media, les labels et UUIDs des partitions y compris (V)FAT…

De nombreux autres bugs ont été corrigés depuis la création de la branche 3.2 (rien que 24 dans cette itération), ainsi que la prise en charge de nouveaux drivers, de nouvelles distributions (CentOS et RHEL 7 en particulier, les Fedora 2x, Debian 8, les Ubuntu à la mode, Mageia bien évidemment :).

Bien sûr les fonctions générales de l'outil sont toujours disponibles : sauvegarde à chaud ou clonage de vos distributions Linux utilisant au choix ext2/3/4, xfs, btrfs, (v)fat, LVM, MD, sur media physique CD/DVD/USB/bande ou via le réseau pour une restauration PXE, ou media virtuel/physique.

Il est aujourd'hui utilisé aussi bien par des particuliers pour sauvegarder leur système personnel que par des entreprises de toutes tailles pour faire des images de référence à déployer de solutions, de sauvegarde en cas de désastre, de clonage de salle de formation, de clé USB prête à l'emploi…

Et quels que soient les outils que vous utilisiez, n'oubliez pas de faire des sauvegardes et/ou des images de vos machines et de tester vos restaurations pour être serein le jour où le problème arrive.

NdM : les pingouins de Mondo Rescue ont été dessinés par Ayo, graphiste historique de LinuxFr.org !

Les étapes d'une sauvegarde











Télécharger ce contenu au format Epub

Lire les commentaires

Sortie de Proxmox VE 4.2

Jeudi 28 Avril

La societe Proxmox Server Solutions GmbH a publié le 27 avril 2016 la nouvelle version Proxmox VE 4.2 (license GNU Affero GPL, v3.). Proxmox est une plateforme de virtualisation, de type «bare metal», basée sur l'hyperviseur KVM et prenant en charge aussi les containers LXC.

Au programme de cette nouvelle version : une nouvelle interface graphique, le thin provisionning avec ZFS et LVM et la prise en charge de Let's encrypt.

L'éditeur fournit la solution Proxmox VE sous license GNU Affero GPL, v3, mais permet à qui le souhaite de prendre un contrat payant pour obtenir un support professionnel.

Nouvelle interface graphique

Proxmox VE utilise maintenant la version 6 du framework javascript ExtJS, qui apporte un look moderne « flat design » et un nouveau jeu d’icônes. Il est désormais possible de zoomer les graphiques d'utilisation de vos machines virtuelles, et de nouvelles options pour le filtrage des logs ou les points de montage des conteneurs LXC sont configurables graphiquement. Les traductions en français, allemand, italien et norvégien ont été mises à jour, Proxmox VE supportant en tout 19 langues différentes dans son interface.

ZFS et LVM thin dès l'installation

L'image d'installation de Proxmox VE est basée sur Debian 8.4, combinée avec un noyau Linux 4.4 avec support long terme issue de la toute récente Ubuntu 16.04 Xenial Xerus. L'installeur Proxmox permet maintenant la création d'un pool ZFS ou LVM thin en un clic lors de l'installation. Grâce au provisionnement de volumes LVM thin ou ZFS thin, un administrateur système peut maintenant allouer un espace disque plus grand que la place physique, et rajouter des disques supplémentaires au fur et à mesure du temps sans devoir redimensionner le système de fichiers des machines virtuelles.

Utilisation des certificats SSL Let's encrypt

Proxmox VE fonctionne avec les certificats SSL de Let's Encrypt, une documentation spécifique est disponible sur le wiki de Proxmox. Le but de Let's encrypt est de fournir des certificats gratuits à tout un chacun, la gestion des certificats étant dévolue à un agent tournant en tache de fond sur le système.

Télécharger ce contenu au format Epub

Lire les commentaires

PacketFence v6 est disponible

Jeudi 28 Avril

Inverse annonce la sortie de la version 6 de PacketFence. PacketFence est une solution de conformité réseau (NAC) entièrement libre (GPL v2), supportée et reconnue. Procurant une liste impressionnante de fonctionnalités telles un portail captif pour l'enregistrement ou la remédiation, une gestion centralisée des réseaux filaire et sans fil, le support pour le 802.1X, l'isolation niveau-2 des composantes problématiques, l'intégration au détecteur d'intrusions Snort et au détecteur de vulnérabilités Nessus - elle peut être utilisée pour sécuriser efficacement aussi bien des réseaux de petite taille que de très grands réseaux hétérogènes.

La version 6 de PacketFence apporte de nombreuses améliorations telles une refonte complète du portail captif, le support de CentOS/RHEL 7 et Debian 8, FreeRADIUS 3 ainsi qu'un lot important d'optimisations de la performance de la solution.

PacketFence possède un grand nombre de fonctionnalités. Parmi celles-ci, on retrouve :

  • l'enregistrement des composantes réseau grâce à un puissant portail captif ;
  • le blocage automatique, si souhaité, des appareils indésirables tels les Apple iPod, Sony PlayStation, bornes sans fil et plus encore ;
  • l'enrayement de la propagation de vers et virus informatiques ;
  • le freinage des attaques sur vos serveurs ou diverses composantes réseaux ;
  • la vérification de la conformité des postes présents sur le réseau (logiciels installés, configurations particulières, etc.) ;
  • la gestion simple et efficace des invités se connectant sur votre réseau ;
  • des sources d'authentification variées, incluant Facebook et Google.

PacketFence est une solution non-intrusive qui fonctionne avec une multitude d'équipements réseaux (filaire ou sans fil) tels ceux de 3Com, AeroHIVE, Allied Telesis, Aruba, BelAir/Ericsson, Brocade, Cisco, Dell/Force10, Enterasys, ExtremeNetworks, Extricom, Hewlett-Packard/H3C, Huawei, Intel, Juniper Networks/Trapeze, LG-Ericsson US, Meru Networks, Motorola, Netgear, Nortel/Avaya, Ruckus, Xirrus et plus encore.

Télécharger ce contenu au format Epub

Lire les commentaires

Firefox 46 (version suédée)

Mercredi 27 Avril

La 46e version de Firefox est sortie le 26 avril 2016 avec, parmi les nouveautés :

  • version bureau : le passage à la boite à outils graphiques GTK+3 sous GNU/Linux (enfin !), des améliorations de sécurité dans le traitement du JavaScript et des gains de performance et de stabilité avec WebRTC ;
  • version pour Android : Firefox gagne la possibilité, en étant hors-ligne, d'afficher des pages précédemment visitées ;
  • côté coulisses : le moteur de rendu maison (Gecko) accepte désormais de traiter des propriétés CSS préfixées pour les moteurs concurrents WebKit et Blink !

Sans plus attendre, voici le détail des nouveautés pour les versions de bureau et mobile, ainsi que pour les développeurs. Suit une revue des choses à attendre par la suite pour votre navigateur préféré.

Sommaire Bureau (mais ça marche aussi à la maison)

Firefox gagne une meilleure sécurité dans le traitement du JavaScript ceci est expliqué en détail dans ce billet de blogue, et profite de gains de performance et de stabilité avec WebRTC qui sont détaillés dans les notes de version spécifiques.

Autre nouveauté marquante : le portage tant attendu de la version GNU/Linux sur GTK+3 !

Pour savoir si la version de Firefox compilée par votre distribution roule bien la version 3 de GTK+, aller dans about:buildconfig et chercher l'argument --enable-default-toolkit=cairo-gtk3.

Le passage à GTK+3 rend possible tout un tas de changements futurs, comme théoriquement de changer de bibliothèque d'affichage sans pénalité de performance (historiquement, la version GNU/Linux utilise Cairo, mais Skia – déjà utilisé par Firefox sur d'autres plateformes – est une alternative) (rapport de bogue correspondant) et nous rapprochera d'une version de Firefox pour Wayland (rapport de bogue correspondant).

Nb. : Le cousin Thunderbird, quant à lui, sauterait le pas à l'occasion de la prochaine version (soit a priori la 52, qui succédera à l'actuelle version 45 au rythme des ESR).

Mobile

Firefox gagne donc la possibilité, en étant hors-ligne, d'afficher des pages précédemment visitées, comme illustré dans ce billet de blogue.

En tapant dans la barre d’URL, Firefox offre une autocomplétion des noms de domaines précédemment visités. Désormais, lorsqu’il n’y a pas d’historique, Firefox recherche dans une liste de domaines par défaut.

Cette version sait également tirer partie du nouveau système de permissions d'Android Marshmallow (6.0).

Firefox Mobile ne permettra plus d'utiliser Firefox Sync_1.1 pour synchroniser votre navigateur mobile avec vos autres périphériques. Il est donc nécessaire de passer à Firefox Account pour pouvoir encore bénéficier de la synchronisation. Si vous ne souhaitez pas utiliser le service proposé par Mozilla, vous pouvez installer votre propre serveur Firefox Account.

Hormis cela, vous pouvez vous référer à la liste des nouveautés compris aux notes de version.

Commun

Comme nous vous l'annoncions il y a deux dépêches de cela, désormais Firefox accepte les préfixes webkit (bogue n° 1213126). On ne dira pas merci aux webmestres qui ne se préoccupent que des iPhones navigateurs Chrome et Safari, sans égard pour l’interopérabilité (Microsoft avec Edge a dû faire les mêmes concessions). Malheureusement l'histoire bégaie et nous ressert le même plat qu'au temps d'Internet Explorer 6 :/ .

Toutefois la multiplication de préfixes propriétaires semble bel et bien terminée car deux des principaux navigateurs, Chromium et Firefox, n’utiliseront plus cette technique pour introduire de nouvelles directives CSS.

Pour les développeurs

Firefox 46 apporte de nouveaux outils pour analyser l'utilisation mémoire de vos développements.

Lorsque vous aurez pris une capture d'utilisation mémoire de votre application web, vous pourrez dorénavant l'analyser avec la vue Dominators. Il vous permettra de comprendre la taille mémoire utilisée par chacun des objets instanciés. L'affichage permettra de voir la taille de l'objet lui-même et la taille des autres objets qu'il utilise par référence.

Cette dernière information est très intéressante, car elle permet de comprendre pourquoi le ramasse-miettes décide de ne pas faire la suppression automatique d'un objet de la mémoire. Ceci permet d'alléger les applications puisque le développeur pourra s'assurer que ses objets soient correctement libérées après leur utilisation et sinon de savoir quelle référence empêche cette libération.

Une nouvelle vues dans la partie Performance des outils de développement fait également son apparition : Allocations. Elle permet d'analyser le nombre d'allocations mémoires demandées par chaque fonction du site web et la quantité de mémoire utilisée pendant la période d'analyse des performances.

De plus, la vue Chronologie affiche dorénavant le suivi des actions du ramasse-miettes afin d'analyser les évènements qui ont provoqué le réveil des opérations de nettoyage de la mémoire et permet d'accéder directement à la nouvelle vue Allocations pour le temps sélectionné.

Vous pouvez vous référer aux notes de version pour la liste des autres nouveautés de cette version.

Installer Firefox

La version bureau de Firefox est disponible en 32 ou 64 bits pour systèmes GNU/Linux, Mac OS X 10.6 ou supérieur, Windows XP SP2 ou supérieur (par comparaison Chrome fonctionne sur un nombre plus restreint de systèmes, laissant de côté Windows XP et Vista, OS X Snow Leopard 10.6, Lion 10.7 et Mountain Lion 10.8 et les distributions GNU/Linux 32 bits).

La version mobile de Firefox délaisse Android Honeycomb (version 3) à compter de cette version, de sorte que Ice Cream Sandwich (4.0) devient le nouveau point d'entrée.

Prochaines versions Modification de la politique de programmation des publications

Il a été décidé de donner un peu plus de flexibilité au rythme de sortie des versions de Firefox : il y a quatre ans, Mozilla avait décidé de changer son système de publication pour sortir des nouvelles éditions toutes les six semaines. Ainsi, les utilisateurs n'avaient plus besoin d'attendre parfois jusqu'à une année avant de recevoir de nouvelles fonctionnalités et des mises à jour majeures (le pire ayant été le développement de la version 4, sortie presque deux ans après la version 3.5, et qui avait rendu nécessaire la publication d'une version 3.6 intermédiaire).

Après une prise de recul face à ce système, il a été décidé de l'adapter pour passer d'une édition toutes les six semaines fixes à une fourchette de publication de six à huit semaines, afin de pouvoir s'adapter aux besoins des utilisateurs et marchés émergeants, de pouvoir aussi s'assurer d'avoir six semaines complètes de jours ouvrables pour chaque version et de s'adapter aux périodes de vacances de la communauté Mozilla. La planification pour 2016 est disponible sur l'article annonçant ces changements.

Firefox 47

Il ne sera plus possible de désactiver l'obligation de recourir à des extensions signées.

Projet Electrolysis, APZ

Le projet Electrolysis, alias e10s, consiste à décomposer le fonctionnement de Firefox en différents processus pour de meilleures performances et une sécurité accrue.

Mozilla explique que « dans les versions actuelles de Firefox sur ordinateur de bureau, le navigateur tout entier fonctionne dans un seul processus du système d’exploitation. En particulier, le JavaScript qui exécute l’interface utilisateur du navigateur fonctionne dans le même processus que le code dans les pages web. Aussi, « les futures versions de Firefox vont exécuter l’interface utilisateur du navigateur dans un processus distinct du contenu web. Dans la première itération de cette architecture, tous les onglets du navigateur vont s’exécuter dans le même processus, et l’interface utilisateur du navigateur quant à lui s’exécutera dans un processus différent. Dans les versions futures, nous nous attendons à avoir plus d’un processus de contenu ».

C'est le plus gros changement architectural jamais entrepris sur Firefox (vous en saurez tous les détails en lisant – en anglais – ce billet de blogue et en suivant les deux liens donnés à la fin dudit billet).

La feuille de route a été actualisée le 8 avril. Pour l'instant l'expérimentation continue sur le canal bêta afin de corriger les instabilités résultant de ce changement très invasif. A également été décidé à cette occasion que la fonctionnalité asynchronous panning and zooming (APZ) pouvait finalement être lancée sans attendre l'activation de e10s, le scrolling étant amélioré par APZ dans la plupart des cas.

Les extensions n'ayant pas été initialement conçues pour le multi-processus, les utilisateurs (vous, nous !) sont invités à rapporter les bogues rencontrés lors de l'activation de e10s en se rendant sur le site dédié : https://www.arewee10syet.com/.

Parallèlement Firefox va proposer des shims permettant de ne pas casser les extensions le temps qu'elles migrent.

WebExtensions

L'été dernier Mozilla annonçait un nouveau système d’extensions, bâti autour de la nouvelle API WebExtensions, qui soit compatible avec Electrolysis et Servo, offrirait une sécurité accrue (mais aussi moins de possibilités), et faciliterait le développement des extensions (une même extension pourrait fonctionner dans Firefox, Chrome et Opera, sans parler des nouveaux outils mis en place) aussi bien que leur validation. Ce système remplacerait à terme le système existant basé sur XPCOM et XUL, soit six à douze mois après l’activation d’Electrolysis dans les versions finales de Firefox.

WebExtensions, déjà au cœur du système d'extensions de Firefox OS 2.5, a commencé à intégrer Firefox à l'occasion de la version 45, avec la version 48 (Desktop et Mobile) en ligne de mire. La présente version 46 s'inscrit dans cette feuille de route.

Au final le passage à Electrolysis et WebExtensions permettra de résoudre un certain nombres de vulnérabilités actuelles (lire à ce propos ceci et cela).

Autour de Firefox Outils pour développeurs : WebSocket Monitor, Firebug

Il est désormais possible de déboguer les WebSockets, à l'aide de l'extension WebSocket Monitor (sous licence BSD, par l’équipe de développement de Firebug).

En parlant de Firebug justement, la version 3 à venir s'appuiera directement sur les Developers Tools de Firefox, qu'il étendra.

Toutes les infos sur blog.epoc.fr.

Servo/Rust

La feuille de route pour 2016 de Servo, un moteur de rendu HTML écrit en Rust, se précise.

Parallèlement, la question de savoir quand du code Rust/Servo pourra se déployer effectivement dans Gecko (nom de code du procédé : Oxidation) a récemment fait débat. En cause, un bogue dans Rust relatif à l'allocation de mémoire, bloquant pour certains et pas pour d'autres. Les seconds ont eu gain de cause au final, de sorte que la fête va pouvoir commencer (à partir de Firefox 48).

Une chose amusante à signaler : une poignée d'utilisateurs (environ 0,5 %) avec un CPU ne prenant pas en charge le jeu d'instructions SSE2 (introduit il y a 15 ans) était susceptible de bloquer le projet Oxidation. Ces utilisateurs étant quasiment tous sous Windows XP (nom de code : Windows NT 5.1), il a fallu prévoir une règle spécifique consistant à désactiver la génération de code SSE2 à la compilation pour les binaires Win32… (ouf, l'Atom de mon fidèle netbook acheté il y a 7 ans prend en charge ce jeu d'instructions, je viens de vérifier !)

Tiens, Dropbox est passé à Rust.

B2G (ex Firefox OS)

La communauté est à pied d'œuvre pour développer, avec l'aide de Mozilla, le successeur de Firefox OS pour smartphones, et le projet avance rapidement, avec le remplacement en cours des API propres que Mozilla avait dû mettre en place au lancement du projet par des API ouvertes et standardisées que Mozilla a aidé à faire émerger depuis. Cette refonte servira de base autant au projet purement communautaire à destination des smartphones (B2G) qu'aux versions pour TV et IoT pilotées par Mozilla.

Schisme Firefox/Thunderbird

C’est dans l’air depuis quatre ans et cela se précise dernièrement : Mozilla s’apprête à laisser la main pour Thunderbird. Nouvelle étape : un rapport commandé par Mozilla passe en revue les différentes structures capables d'accueillir le développement du célèbre courrielleur.

Conclusion

Electrolysis, WebExtensions, Oxidation… autant de grands chantiers ouverts qui conduiront dans un futur proche à un Firefox largement renouvelé !

Appel à contribution

Contributeurs de tous horizons, les dépêches commentant les sorties des nouvelles versions de votre butineur préféré ont besoin de vous !

Télécharger ce contenu au format Epub

Lire les commentaires

Les journaux LinuxFr.org les mieux notés des mois de février et mars 2016

Mardi 26 Avril

LinuxFr.org propose des dépêches et articles, soumis par tout un chacun, puis revus et corrigés par l'équipe de modération avant publication. C'est la partie la plus visible de LinuxFr.org, ce sont les dépêches qui sont le plus lues et suivies, sur le site, via Atom/RSS, ou bien via partage par messagerie instantanée, par courriel, ou encore via médias sociaux.

Ce que l’on sait moins, c’est que LinuxFr.org vous propose également à tous de tenir vos propres articles directement publiables, sans validation a priori des modérateurs. Ceux-ci s'appellent des journaux. Voici un florilège d'une dizaine de ces journaux parmi les mieux notés par les utilisateurs… qui notent. Lumière sur ceux des mois de février et mars 2016, les mois où en pleine hibernation, les volontaires ont oublié et d'écrire cette dépêche et d'automatiser sa création mensuelle (c'est dommage c'est les +50 en karma les plus faciles à glaner).

Les 10 journaux les mieux notés pour février 2016 sont donc :

Les 10 journaux les mieux notés pour mars 2016 sont donc :

Télécharger ce contenu au format Epub

Lire les commentaires

PSES / HSF 2016 : Appels à propositions !

Mardi 26 Avril

Le festival auto-organisé par vous, l'équipe de Pas Sage En Seine et les membres du /tmp/lab, se tiendra à Choisy-le-Roi du 30 juin au 3 juillet 2016.

Nous vous invitons à participer à PSESHSF 2016 en accueillant vos propositions : ateliers et conférences bien sûr, mais aussi installations, performances, discussions et autres formes d'interventions pratiques ou artistiques. Des thèmes sont proposés, pas imposés, pour laisser place à la manifestation d'idées originales.

Sommaire Quoi ?

Depuis le début le hackerspace /tmp/lab vit avec bonheur en banlieue. D'abord à Vitry-sur-Seine, maintenant dans le sous-sol de la Maison Pour Toutes et tous de Choisy-le-Roi.

Cette banlieue, qui semble pour certainEs une contrainte, est pour nous en ce contexte d'état d'urgence, le lieu favorable pour fédérer les nombreux défenseurSEs, d'une vie sans peurs et sans haine : les hackerSEs, activistes, les associations de quartier, les travailleurSEs sociaux, les syndicalistEs, les non-associéEs et touTEs les autres… Nous touTEs, les habitantEs de cette banlieue, trop souvent décrite comme une zone "dortoir" sans intérêt, trop loin du métro, comme une zone de non-droit ou pire encore comme le foyer du terrorisme, nous souhaitons nous y retrouver, amorcer de nouvelles discussions, initier librement des pratiques qui rendent compte de nos réalités et qui répondent à nos attentes.

Nous sortirons pour cette occasion de nos lieux de rencontres habituels, pour nous déployer dans le quartier et au-delà, en allant à la rencontre de ceux et celles que nous croisons trop rarement dans nos ateliers.

Le Festival que nous organisons touTEs ensemble sera un moment convivial et festif pour décrire nos modes d'organisation, nos outils, nos perspectives, évoquer les usages d'autodéfense numériques faces aux perpétuelles manipulations sécuritaires. L' HacktivistE naît de cette prise de conscience intégrale. Il ouvre, détourne, invente tous les possibles, ou presque…. Être et faire politiquement ensemble sera notre prochaine étape !

Comment ? Conférences
  • Présentations originales de préférence ;
  • format long : 45 minutes suivies de 10 minutes de questions ;
  • présentation projetée en vidéo ;
  • présentation filmée et diffusée en direct ;
  • format court : 15 minutes.
Ateliers / démos
  • Animation d'un workshop ou d'une démo ;
  • formats : de 30mn à 2 heures (les démos tendent à être plus courtes) ;
  • projection vidéo possible.
Performances et toutes autres formes de participation

Formats :

  • performances ponctuelles faisant intervenir le public ;
  • expositions ;
  • concerts ;
  • services pratiques (logistique, cuisine, boissons, hébergement, etc…).
Les trucs dont ça pourrait parler
  • Mobilité :

    • transports en communs pour les pauvres et mobilité individuelle pour les riches ?
    • tissus associatif et solidarités ;
    • déplacements alternatifs : piquer l'algorithme de Uber pour partager nos vélos, autos et utilitaires ;
    • monter un Garage Automobile Populaire (GAP) dans sa ville ?
    • changer les mœurs pour avoir moins à se déplacer (emplois, commerce de proximité, production @home, vacances ?) ;
    • avoir un véhicule à moteur tout en produisant son énergie (éthanol maison, électricité maison, augmentation du rendement des véhicules électrique) ;
    • comment filtrer l'huile de la friteuse pour rouler avec dans son véhicule diesel ? Législation ? Compatibilité moteur ?
  • Initiatives locales :

    • associations qui font vivre le quartier ;
    • solutions DIY aux situations de handicap.
  • Énergies :

    • fabriquer son poêle à bois ;
    • isoler sa maison avec de la paille ;
    • fabriquer du biodiesel et rouler à l'huile.
  • Agriculture et biodiversité :

    • le fait de breveter le vivant et ses dangers (semences paysannes, kokopelli…) ;
    • l’open data en écologie (bases de données naturalistes cettia) ;
    • alimentation : le local et le circuit court agriculture urbaine :
    • jardins familiaux, jardins partagés, compost, incroyables comestibles, recréer les sols (technosols) ;
    • agriculture : les systèmes émergents (bio, Techniques de Conservation du Sol (TCS), permaculture, biodynamie).
  • Urbanisme et habitat :

    • urbanisme de crise et de surveillance ;
    • risques de la « ville intelligente » ;
    • se loger différemment : on pique l'algo de Airbnb et on partage son appart, sa maison, son garage, son jardin, son poulailler…
    • cultures hydroponiques en appartement, jardin de balcon et potagers ouvriers (avoir un haut rendement de production sur un petit espace, écologiquement) ;
    • ronds-points, « zones urbaines mortes » et « non-lieux » : on en fait quoi ?
    • Rehab my Project ! Comment réhabiliter sa barre d'immeuble ?
    • exploration urbaine ;
    • je fabrique ma maison sans prendre de crédit sur 30 ans.
  • Écologie et coût social du numérique :

    • comment sont fabriqués les tablettes et smartphones et par qui ?
    • se passer de technologie et/ou la simplifier ?
    • les intermédiaires douteux, défiscalisation et neo-libéralisme : Uber, Airbnb…
    • comment organiser le recyclage, le retraitement des déchets et D3E ?
    • les technologies « légères » ça existe vraiment ?
  • C'est quoi le hack, au fait ? It's more fun to compute !

    • rétro-ingenierie ;
    • réseaux maillés ;
    • hack les ondes ;
    • ingénierie sociale ;
    • réseaux distribués ;
    • réseaux pairs à pairs ;
    • matériels libres ;
    • logiciels libres ;
    • sécurité.
  • Hacktivisme, politique et syndicalisme :

    • hacktivisme et activismes ;
    • zones d'autonomies ;
    • contre-culture ;
    • convergence des luttes ;
    • les banlieues sont-elles encore rouge ?
    • la valeur travail, la défense des travailleurs du "numérique"
    • mixité sociale et technologies ;
    • le Hackerspace, la nouvelle MJC ?
    • les « politiques numériques », entre mirage et récupération : comment le pouvoir veut s'arroger un progrès qui le dépasse ?
    • les dernières statistiques sur le « Sérieux qui tue chaque jour », vocabulaire, stratégie de discours, victimes…
    • expériences vécues d'ONG ;
    • les femmes et minorités de genre (trans, personnes non -binaires) dans les milieux hacktivistes ;
    • « J'ai rien à cacher » :
      • FAI indépendants ;
      • anonymiser ses accès internet ;
      • communications chiffrées ;
      • réseaux sociaux respectant la vie privée.
  • Bullshit Bingo :

    • applications de génération / détection / remplissage / classement de Bullshit Bingo ;
    • inscrit une startup, un think tank ou un facilitateur de projets innovants pour améliorer sa visibilité.
  • L'art :

    • pièces artistiques tous supports ;
    • performances ;
    • jeux vidéos ;
    • street art ;
    • live coding ;
    • circuit bending ;
    • art viral ;
    • poésies et poésies sonores ;
    • musiques électroniques et analogiques ;
    • orchestre philharmonique du /tmp/lab & guests.
Télécharger ce contenu au format Epub

Lire les commentaires

Smash The Code, concours d'intelligence artificielle, démarre le 30 avril 2016

Mardi 26 Avril

Smash the Code sera le prochain concours de programmation d'intelligence artificielle organisé par CodinGame. L'événement se déroulera en ligne du samedi 30 avril 2016 à 18h (heure de Paris) au dimanche 8 mai 20h. La participation est gratuite et ouverte aux développeurs du monde entier.

Smash the Code est un jeu de type multijoueurs où les participants devront développer un bot capable de vaincre ses adversaires de manière autonome. Pendant les 8 jours du concours, il sera possible de modifier son code autant que souhaité pour améliorer sa stratégie (pas de limitations, pas d'obligations). Pour rassurer ceux qui n'auraient pas beaucoup de temps à consacrer à leur programme, sachez qu'on peut démarrer et s'amuser avec une solution minimale qui peut être codée en quelques minutes seulement.

Les participants pourront tenter de décrocher les lots offerts aux meilleurs du classement, et candidater pour des emplois ou des stages auprès des sociétés sponsors de l'évènement.

La plate-forme

La plate-forme CodinGame supporte 25 langages de programmation (C/C++, C#, Java, Javascript, PHP, Python, Python 3, Perl, Go, Dart, Scala, Haskell, Objective-C, Pascal, Ruby, Bash, Groovy, Clojure, VB.NET, Lua, OCaml, F#, Swift et Rust). Pour participer, vous avez la possibilité d'utiliser l'IDE en ligne proposé ou de coder directement depuis votre environnement habituel.

Déroulement du concours

Concrètement, vous devrez réaliser un programme qui lit sur l'entrée standard les données relatives au tour de jeu et vous devez écrire votre action sur la sortie standard. Pour tester votre programme, vous avez la possibilité de faire des matchs contre notre bot par défaut ou contre les adversaires de votre choix. Dès que votre programme est capable de faire quelque chose, même très basique, vous pouvez l'envoyer dans l’arène ce qui vous permettra de vous situer par rapport aux autres. Vous pouvez renvoyer une nouvelle version de votre bot à tout moment donc il ne faut pas hésiter. Le classement final sera celui de l’arène, "gelée" à la fin du jeu.

Pour s'entraîner pour Smash The Code, nous vous conseillons d'essayer :

Télécharger ce contenu au format Epub

Lire les commentaires

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

Lundi 25 Avril

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

[Liberté Algérie] L’incroyable équation de la motivation

Par Sadek Amrouche, le vendredi 22 avril 2016. Extrait:

Nous sommes en 1945, Karl Dunker, célèbre psychologue allemand, présente pour la première fois les résultats de son expérience intitulée «the candle problem» (le problème de la bougie). Cette expérience est un test rapide permettant de mesurer les capacités d’un individu à résoudre un problème. Il est très utilisé aujourd’hui dans une grande variété d’études en sciences du comportement. Si vous ne connaissez pas l’expérience, lisez ce qui suit et cherchez la solution avant de regarder la réponse.

Lien vers l'article original: http://www.liberte-algerie.com/cap-enp-liberte-algeriecom/lincroyable-equation-de-la-motivation-246245

[Unidivers] Imprimante 3D: panorama des débats et des ruptures

Par Thibault Boixiere, le vendredi 22 avril 2016. Extrait:

L’imprimante 3D. Le nom lui-même fait penser à la dimension spectaculaire du cinéma en relief. On confond la lanterne magique avec la camera obscura. Pourtant, l’impression tridimensionnelle n’est pas un procédé technique récent. Ses implications restent néanmoins actuelles. Entre industrialisation et démocratisation, cette technologie suscite le débat et provoque la rupture. Your next stop, the Twilight Zone…

Lien vers l'article original: http://www.unidivers.fr/imprimante-3d-technologie-debats-ruptures

[Framablog] Sympathy for the Free Software

Par Véronique Bonnet, le jeudi 21 avril 2016. Extrait:

Indésirable, le logiciel libre (free software)? Un amendement de la commission des lois du Sénat vient de faire disparaître, pour l’instant, avant l’examen en séance prévu fin avril, l’encouragement au logiciel libre. Certes, il s’agissait bien d’un amendement de repli, non juridiquement contraignant, que l’Assemblée avait voté comme pis-aller, vu les tirs de barrage contre la priorisation. Le simple encouragement est-il déjà tabou? Caillou dans la chaussure ? Loup dans la bergerie?

Lien vers l'article original: http://framablog.org/2016/04/21/allumons-les-reverberes-du-libre

[Developpez.com] Europe: l'open source va-t-il être exclu des standards pour le Marché Numérique Unique?

Par Michael Guilloux, le jeudi 21 avril 2016. Extrait:

Dans le cadre de sa nouvelle stratégie pour le Digital Single Market (Marché Numérique Unique) présentée l’année dernière, la Commission européenne (CE) a décidé de faire de la normalisation des technologies de l’information et de la communication (TIC) la pierre angulaire.

Lien vers l'article original: http://www.developpez.com/actu/98036/Europe-l-open-source-va-t-il-etre-exclu-des-standards-pour-le-Marche-Numerique-Unique-L-UE-penche-vers-le-modele-de-licence-FRAND

Et aussi:

Voir aussi:

[Le Point] Qui veut la peau de l'open data?

Par Mathieu Lehot, le jeudi 21 avril 2016. Extrait:

Tangui Morlier de Regards citoyens s'inquiète du coup de frein mis à la politique de transparence des données publiques. Interview.

Lien vers l'article original: http://www.lepoint.fr/politique/qui-veut-la-peau-de-l-open-data-21-04-2016-2033949_20.php

Et aussi:

Voir aussi:

[Libération.fr] Android: que reproche Bruxelles à Google?

Par Anaïs Cherif, le jeudi 21 avril 2016. Extrait:

La Commission européenne a adressé au géant américain une liste de griefs contre son système d’exploitation pour smartphones. Il est accusé de ne pas respecter les règles de la concurrence.

Lien vers l'article original: http://www.liberation.fr/futurs/2016/04/21/android-que-reproche-bruxelles-a-google_1447667

[Numerama] Richard Stallman: «Plus rien ne me fait rêver dans la technologie»

Par Guillaume Champeau, le mardi 19 avril 2016. Extrait:

Entretien avec Richard Stallman, l'inventeur du logiciel libre, résolument attaché aux libertés et au combat contre toutes les technologies qu'il juge «oppressives».

Lien vers l'article original: http://www.numerama.com/tech/164017-richard-stallman-plus-rien-ne-me-fait-rever-dans-la-technologie.html

[L'Atelier] «L’invention n’est pas source de valeur, la transformation du produit, oui»

Par Anna Bochu, le lundi 18 avril 2016. Extrait:

En quoi les brevets peuvent-ils parfois freiner la dynamique de création? Réponse avec Hacène Lahrèche, scientifique français faisant partie de l'équipe dirigeante de La Paillasse, premier laboratoire citoyen d'Europe.

Lien vers l'article original: http://www.atelier.net/trends/articles/invention-source-de-transformation-produit-oui_441237

Télécharger ce contenu au format Epub

Lire les commentaires

Sortie d’Ubuntu 16.04 LTS Xenial Xerus

Lundi 25 Avril

Sortie le 21 avril 2016, Ubuntu 16.04 est la vingt-quatrième version d’Ubuntu. Il s’agit d’une version dite « LTS » (Long Term Support), qui sera maintenue pendant cinq ans. Son nom de code est Xenial Xerus, soit le « xerus hospitalier » en bon français.

Sommaire Distribution Ubuntu

Pour rappel, Ubuntu est une distribution GNU/Linux basée sur Debian. Elle a hérité de sa distribution mère l’objectif d’universalité : elle vise à être utile sur les ordinateurs de bureau, les ordinateurs portables, mais aussi les serveurs, le cloud, les téléphones, les tablettes et les objets connectés en général. Elle se veut simple d’accès pour les utilisateurs n’ayant pas de connaissances poussées en informatique, mais également attrayante pour les développeurs.

En plus de la distribution mère, Ubuntu, il existe plusieurs variantes officielles, fournies avec des choix logiciels différents, afin de couvrir un besoin (Ubuntu Server, Ubuntu Studio…) ou de fournir un environnement de bureau particulier (Kubuntu, Xubuntu, Lubuntu…). Cette dépêche présente les principales nouveautés.

Version LTS

L’abréviation LTS signifie Long Term Support, ou support à long terme, c’est-à-dire que contrairement aux versions stables qui sortent tous les six mois et qui bénéficient des correctifs de sécurité neuf mois après la sortie de la publication stable, une version LTS sort tous les deux ans et est maintenue pendant 60 mois (cinq ans).

Ce type de support étendu existe depuis les débuts d’Ubuntu (la première LTS était Ubuntu 6.06 « Dapper Drake », sortie il y a dix ans). Cependant, la généralisation du support de cinq ans à toutes les variantes (et pas seulement les serveurs) date d’Ubuntu 12.04 LTS « Precise Pangolin ».

À noter cependant que certaines variantes, pour diverses raisons, peuvent décider de ne pas participer à la LTS ou de s’engager pour un temps plus restreint. En pratique, il semble que seul Kubuntu se soit également engagé pour cinq ans. Ubuntu MATE, Xubuntu, Lubuntu et Ubuntu Gnome ne seront supportées « que » pendant trois ans.

Il est possible de mettre à jour d’une version LTS à une autre. Si vous utilisez actuellement Ubuntu 14.04 LTS, notez que la mise à jour ne vous sera pas proposée avant fin juillet et la sortie de la première réédition « 16.04.1 » de cette nouvelle Ubuntu. En attendant, si vous souhaitez forcer le mouvement, vous pouvez simplement lancer la commande do-release-upgrade -d.

Nouveautés générales
  • Noyau Linux 4.4 ;
  • prise en charge de ZFS disponible par défaut ;
  • Mesa 11.2 ;
  • systemd 229 ;
  • GCC 5.3 ;
  • Python 3.5 ;
  • PHP 7 ;
  • LXD 2.0 ;
  • la majeure partie des composants de GNOME passe en 3.18 ;
  • Qt 5.5.1 ;
  • LibreOffice 5.1 ;
  • prise en charge de la version 64 bits de la z/Architecture d’IBM (s390x).
Le cas des cartes graphiques AMD/ATI

AMD ne maintient pas son ancien pilote propriétaire sur Ubuntu 16.04, et celui-ci a été retiré des dépôts. Les utilisateurs mettant à jour depuis une version précédente d’Ubuntu seront automatiquement redirigés vers le pilote libre.

Afin d’assurer une meilleure compatibilité et de meilleures performances, les composants du noyau correspondants ont été rétro-portés depuis la version 4.5 de Linux.
À noter que le nouveau pilote propriétaire d’AMD, fonctionnant avec le module noyau libre « AMDGPU », devrait être ajouté aux dépôts officiels d’Ubuntu lorsque celui-ci sera disponible en version stable, courant 2016.

Paquets snap

La distribution adjoint au classique format de paquets deb, le format maison snap.

Issus du retour d’expérience de l’Ubuntu phone et des plate-formes IoT (pour Internet of Things), les paquets Snap devraient fournir un environnement isolé pour exécuter des applications sans risquer de corrompre son système ou ses fichiers. Aussi, un paquet Snap peut contenir l’ensemble de ses dépendances binaires. Ceci devrait faciliter la mise à disposition des dernières applications alors que le système ne proposera plus des versions à jour des bibliothèques nécessaires. Et c’est particulièrement le cas pour une LTS en fin de vie.

À noter cependant que le gain de sécurité des paquets Snap est quasi nul pour les applications graphiques dans un environnement X11. Cela est dû au protocole X en lui même, qui n’a pas été conçu pour isoler ses clients les uns des autres. Heureusement, la transition vers Mir et les divers compositeurs Wayland permettra de remédier à tout cela.

L’outil Snapcraft a été mis à disposition. Il permet de créer et de publier des paquets Snap en quelques commandes.

Nouveautés propres aux variantes Ubuntu

La variante par défaut continue de se reposer sur la bonne vieille version 7 de Unity. Pour rappel, celle-ci est implémentée en tant que greffon dans Compiz.

Unity 7 et Compiz continuent d’être maintenus et profitent encore de cette nouvelle version pour recevoir quelques retouches et autres optimisations.

En vrac
  • Empathy (client de messagerie instantanée) ainsi que Brasero (graveur de disques) ne sont plus installés par défaut ;
  • l’application « Agenda » (gnome-calendar) est maintenant installée par défaut ;
  • le formatage est maintenant proposé dans le menu contextuel associé aux périphériques amovibles dans le dock de Unity ;
  • meilleure intégration des applications GTK utilisant une barre d’outils (headerbars) ;
  • l’exposé des applications peut maintenant se faire via la combinaison « Super+Ctrl+w » ;
  • une nouvelle option du centre de contrôle permet de toujours afficher le menu des applications ;
  • amélioration de l’accaparement du clavier de GNOME (key grabbing) ;
  • le nouveau design des barres de défilement (introduit dans Ubuntu 15.10) est maintenant également appliqué dans le dash ;
  • un meilleur support des thèmes a été implémenté dans le dash ;
  • support de la mise à l’échelle du curseur sur les écrans à très haute résolution (HiDPI) ;
  • grâce aux contributions de l’équipe d’Ubuntu Kylin, la barre de lancement peut être positionnée en bas. C’est d’ailleurs la configuration par défaut sur cette variante.
Les recherches dans le dash se font maintenant hors ligne par défaut

Il y a un peu moins de 4 ans, Ubuntu 12.10 créait la polémique en introduisant des résultats en provenance d’Amazon, d’Ebay ou encore de Wikipédia dans les recherches effectuées depuis le dash.

L’intention était de faire du dash un moteur de recherche comme un autre, permettant aux utilisateurs de trouver tout et n’importe quoi, plutôt que de rester centré sur l’ordinateur en question. Cependant, de nombreuses personnes se sont scandalisées de cette fonctionnalité. Les résultats commerciaux étaient parfois assimilés à de la publicité. Certains, comme Richard Stallman, ont déclaré qu’il s’agissait purement et simplement d’un spyware (les recherches étant effectuées sur le net, tout ce qu’un utilisateur tape dans le dash est donc transmis à un serveur distant).

Cette polémique est restée un argument parmi d’autres pour ne pas utiliser Ubuntu chez certains libristes intransigeants, et ce malgré la présence d’une option permettant de très facilement désactiver toute recherche en ligne.

Ubuntu 16.04 met enfin un terme à tout ceci, puisque le dash ne cherche désormais plus rien en ligne par défaut.

Canonical se serait donc réconcilié avec Saint IGNUcius ? Pas forcément, car la raison évoquée pour ce changement est bien plus pragmatique : Unity 7 étant amené à disparaître et Unity 8 utilisant un dash très différent, il n’y a pas de sens à continuer d’investir dans la montée en charge de l’infrastructure nécessaire côté serveur, et ce pendant les 5 ans du support de cette version LTS.

Cependant, les nostalgiques seront ravis d’apprendre qu’ils pourront réactiver les recherches en ligne manuellement dans les paramètres système.

Changement de logithèque

La logithèque Ubuntu (Ubuntu Software Center) est retirée au profit de la logithèque de GNOME (GNOME Software).

Proposée pour la première fois avec Ubuntu 9.10, la logithèque Ubuntu avait pour but d’uniformiser l’installation des applications dans Ubuntu. Pour Chris Hoffman de PCWorld.com le logiciel était à cette époque bon, mais a été laissé à l’abandon et est aujourd’hui plutôt lent. Il n’était plus dans la course et avait été retiré de Ubuntu MATE 15.10 pour cela. Controversée pour proposer des logiciels payants au même titre que des logiciels libres, cette possibilité a été retirée sans prévenir les développeurs courant 2015, préparant l’abandon complet du logiciel.

Pour les utilisateurs, ce changement, malgré des problèmes esthétiques, va permettre une expérience plus rapide, ainsi qu’une uniformisation avec Debian.

Kubuntu

Les principales nouveautés de cette variante utilisant KDE SC sont liées à l’intégration de la suite KDE Applications dans sa version 15.12 ainsi que d’une version corrigée et améliorée du gestionnaire de fenêtres Plasma 5 (version 5.5.4).

De nombreux bugs ont été corrigés, l’application de capture d’écran « Spectacle » remplace l’ancien « KSnapshot », l’interface de l’éditeur vidéo « Kdenlive » a été améliorée, le gestionnaire d’archive « Ark » peut maintenant afficher les commentaires intégrés dans les fichiers ZIP et RAR…

Cette variante sera maintenue pendant cinq ans.

Xubuntu

Cette variante se voulant légère est basé sur Xfce.

Le bureau Xfce n’ayant pas reçu de nouvelle version majeure depuis plus d’un an, il n’y a par conséquent que peu de vraies nouveautés à rapporter ici. En plus de la mise à jour de plusieurs applications, on pourra noter l’apparition d’un nouvel applet de gestion de l’énergie, d’une nouvelle sélection de fonds d’écran ainsi que l’amélioration de l’esthétique de l’écran de connexion.

Cette variante sera maintenue pendant trois ans.

Ubuntu GNOME

Cette variante 100 % GNOME reprend une grande partie des nouveautés évoquées pour Ubuntu, mais en proposant GNOME Shell par défaut. Pour les nouveautés propres à GNOME 3.18, vous pouvez vous référer à la dépêche correspondante.

Cette variante sera maintenue pendant trois ans.

Ubuntu MATE

Cette variante se voulant légère est basée sur le bureau MATE, qui est la continuité de GNOME 2.
Il s’agit de la première version LTS d’Ubuntu MATE, et celle-ci sera maintenue pendant trois ans.

Ces six derniers mois ont vu l’intégration de la suite MATE 1.12.1, l’ajout du lanceur d’application Synapse, l’amélioration de l’intégration avec Compiz et d’autres choses encore.

Lubuntu

Cette variante se voulant très légère est basée sur LXDE.

Depuis plusieurs mois, le gestionnaire de bureau est en cours de réécriture pour passer de GTK à Qt (LXQt). Ce travail massif n’étant malheureusement pas terminé, il n’y a donc pas de vraie nouveauté spécifique sur Lubuntu 16.04, hormis des corrections de bugs et l’utilisation d’applications plus à jour.

À noter que cette version de Lubuntu est également disponible officiellement pour l’architecture PowerPC (ce qui n’est pas le cas pour les versions non LTS).

Cette variante sera maintenue pendant trois ans.

Edubuntu

Cette variante centrée sur l’éducation est malheureusement dormante, faute de main d’œuvre. Les anciens mainteneurs n’ont pas pu faire le travail nécessaire pour pouvoir sortir cette version 16.04. Ceux-ci préfèrent consacrer le peu de temps qu’ils ont sur le maintien de la dernière version d’Edubuntu en date : la 14.04.

Un appel a été lancé pour trouver de nouveaux mainteneurs plus disponibles, faute de quoi Edubuntu finira par disparaître. Une lueur d’espoir cependant : au moins une personne s’est annoncée publiquement disponible pour reprendre les rênes de la distribution.

Ubuntu Touch (téléphones, tablettes, mais pas que)

Ubuntu Touch est une distribution dérivée à part entière. Il s’agit d’une quasi rolling-release dont chaque nouvelle version est déployée, en moyenne, toutes les six semaines. À terme, c’est cette version qui devrait prendre la place de l’Ubuntu officielle.

Trois versions ont été déployées au cours des six derniers mois. On pourra noter les nouveautés suivantes :

  • De nouvelles applications sont installées par défaut :
    • un client mail (Dekko) ;
    • un calendrier/agenda ;
    • un navigateur GPS complet basé sur OpenStreetMap (uNav, développé par un membre de la communauté) ;
  • le tutoriel apparaissant au premier lancement a été entièrement refondu ;
  • toute la pile Bluetooth (jusqu’au noyau) a été mise à jour vers Bluez5 afin de permettre l’ajout de nouvelles fonctionnalités liées à ce protocole ;
  • support des sonneries/alarmes personnalisées ;
  • une notification sonore est maintenant jouée lorsque la batterie est faible ;
  • support d’OpenVPN (PPTP devrait suivre prochainement) ;
  • mise à jour de la palette de couleur : les applications peuvent maintenant choisir entre un thème clair et un thème sombre ;
  • support du clavier japonais ;
  • amélioration du support du Pinyin ;
  • ajout et optimisation de composants dans la palette des éléments d’interface utilisateur ;
  • la synchronisation des contacts se fait maintenant via Buteo, originellement développé par Jolla : celui-ci est modulaire et devrait permettre de rajouter de nouveaux protocoles relativement facilement, on pense à CardDAV par exemple ;
  • nouveau design pour l’application météo ;
  • l’actualisation du contenu des scopes se fait maintenant de façon bien plus fluide ;
  • un nouveau scope pour Twitter ainsi que pour la recherche de livres ;
  • diverses améliorations concernant le positionnement (GPS) ;
  • il est maintenant possible de lire des playlist en arrière plan ;
  • la lecture de média (pause, playlist…) peut être contrôlée depuis l’indicateur son ;
  • possibilité de jouer du son depuis un scope ;
  • le navigateur web a beaucoup évolué :
    • support de la caméra et du microphone : il ne manque apparemment qu’un peu d’interface (sélection de la caméra…) pour que les applications basées sur WebRTC soient entièrement fonctionnelles ;
    • ajout d’une vue globale des favoris ;
    • amélioration de la convergence (contrôle au clavier et à la souris…) ;
    • tous les types de fichiers peuvent maintenant être téléchargés ;
    • possibilité de sélectionner/copier/coller au sein des pages web ;
  • les applications peuvent maintenant directement proposer des achats (achats in-app) ;
  • de nombreux bugs ont également été corrigés.
Un nouveau téléphone et une nouvelle tablette

Au cours des six derniers mois, deux nouveaux appareils ont été dévoilés.

Meizu PRO 5 Ubuntu Edition

Le Meizu MX4 Ubuntu Edition ayant apparemment été victime de son succès (il n’est plus disponible à la vente), Meizu propose désormais en précommande son téléphone « PRO 5 Ubuntu Edition ». Il s’agit, ni plus ni moins, de l’Ubuntu Phone le plus puissant/haut de gamme à ce jour.
Certains journalistes l’ayant eu en main regrettent cependant une fluidité qui ne serait pas à la hauteur des spécifications de la bête. C’est probablement pour cette raison que le téléphone n’est pas encore officiellement mis en vente, le temps que les ingénieurs de Canonical et de Meizu corrigent les problèmes en question.

Ce téléphone pourra utiliser la technologie Miracast pour déporter son affichage sur d’autres écrans.

BQ Aquaris M10 Ubuntu Edition

Il s’agit non seulement de la première tablette utilisant Ubuntu, mais également du premier appareil proposant la fameuse convergence sur laquelle les développeurs d’Ubuntu travaillent d’arrache pied depuis de nombreux mois.

En arrière plan vous pouvez voir le mode « tablette » classique, qui permet d’afficher deux applications simultanément : une que l’on peut placer sur le côté en la faisant glisser avec trois doigts et l’autre qui prend le reste de l’espace disponible.

Certaines applications adaptent automatiquement leur ergonomie lorsqu’elles fonctionnent sur un grand écran comme celui d’une tablette. Par exemple, sur un téléphone, le client mail Dekko affiche la liste des emails et leur contenu dans des écrans dédiés. Sur un grand écran, Dekko affiche les deux côte à côte.

Les choses deviennent cependant encore plus intéressantes lorsque l’on connecte un clavier et une souris à la tablette, que ce soit via Bluetooth ou via un câble adéquat. La tablette passe alors automatiquement en mode « bureau », ce qui transforme l’interface pour la faire ressembler au bureau Unity que nous connaissons tous, avec des fenêtres et les contrôles associés.

Il est de plus possible de connecter la tablette à un écran externe, ce qui transforme ainsi l’ensemble en un véritable ordinateur de bureau.

Pour couronner le tout, cette tablette vient préinstallée avec des logiciels usuels comme Firefox, LibreOffice et GIMP, qui sont disponibles en mode bureau. Ceux-ci tournent dans des conteneurs dédiés (Libertine) avec l’aide de Xmir.

La tablette BQ Aquaris M10 Ubuntu Edition est d’ores et déjà disponible et existe en deux modèles différents. Compte tenu de la jeunesse des fonctionnalités mises en œuvre, il s’agit toujours d’un appareil non destiné au grand public (il n’est d’ailleurs vendu qu’en ligne). Cependant, de nombreuses améliorations et corrections de bugs sont attendus dans les prochaines semaines, au rythme des mises à jour OTA.

Et la suite ?

Ubuntu 16.10 aura pour nom de code « Yakkety Yak ». Rien d’officiel n’a été annoncé pour le moment, mais cette version (voir la suivante) devrait enfin voir l’arrivée de Unity 8/Mir par défaut. On notera que le pilote propriétaire Nvidia est depuis peu compatible avec Mir, ce qui signifie qu’un des derniers obstacles majeur avant le replacement de Unity 7/Xorg a été surmonté.

Télécharger ce contenu au format Epub

Lire les commentaires

Pages