Le FOSDEM (Free and Open Source Developers European Meeting) est un rendez-vous international des développeurs de logiciels libre qui se déroule chaque année depuis 2001 à Bruxelles. J'y étais déjà allé l'année dernière et j'avais apprécié la grande qualité des interventions et c'est pourquoi j'étais de retour cette année. C'est une conférence internationale, donc la langue la plus parlée est l'anglais. Bien qu'on soit en pays semi-francophone, on entend très donc peu parler français dans les couloirs. Quelques français sont présents, mais ce n'est en ville qu'on apprécie de pouvoir utiliser sa langue maternelle pour demander son chemin dans le métro ou commander une bière.

Le programme complet de cette édition 2006 est disponible ici : http://www.fosdem.org/docs/plan-color.pdf

Les vidéos des conférences du grand amphithéâtre (Janson) sont disponibles ici : ftp://ftp.belnet.be/pub/mirror/FOSDEM/.

L'ouverture a été lancée par les organisateurs avec la désormais mythique « FOSDEM dance » et ils ont rapidement laissé la place à Richard Stallman. L'initiateur du mouvement du logiciel libre, créateur de la Free Sofware Foundation, du projet GNU (GNU's Not Unix) et de la GNU General Public Licence (GNU GPL). Richard Stallman nous a parlé longuement du problème des brevets logiciels. C'est la troisième fois que j'écoute un de ses discours sur le sujet : les brevets logiciels sont la plus grande menace pour les créateurs de logiciels (qu'ils soient libres ou propriétaires) et c'est actuellement le principal combat de Richard. Bien sûr, le débat est actif en Europe sur ce sujet mais malgré le rejet par à deux reprises par le Parlement européen, la Commission continue de mettre le sujet sur la table poussée par les grandes entreprises.

Richard nous a fait remarquer que pendant longtemps il ne savait que répondre lorsqu'on lui demandait « Quelle distribution Linux utilisez-vous ? ». En effet, aucune distribution n'était suffisament libre : toutes fournissaient des logiciels propriétaires en complément des logiciels libres et ceci risquait d'embrouiller les utilisateurs. Aujourd'hui il nous a dit qu'il utilise Ubuntu parce qu'elle correspond enfin à son idéal : 100% de logiciels libres sur son ordinateur.

Richard nous a ensuite entretenu de la GPL v3, la GNU General Public Licence version 3. Il a publié une pré-version de cette nouvelle licence en janvier et souhaite receuillir les avis de la communauté du logiciel libre pour corriger les défauts qu'elle pourrait présenter. Il nous a présenté les buts fixés pour la rédaction de cette version 3 :

  • combattre les brevets logiciels
  • combattre les DRM : la GPL doit protéger le droit de l'utilisateur à exécuter un programme modifié. Pour cela, le distributeur doit fournir toutes les clés éventuellement nécessaire pour compiler et exécuter le programme modifié et qu'il fonctionne comme l'original.
  • définir plus précisement ce qu'est le code source et ce qui doit être fourni avec le logiciel : la GNU GPL v2 est trop floue et laisse trop de place à une interprétation mauvaise par un juge et qui pourrait nuire au logiciel libre.
  • améliorer la compatibilité avec d'autres licences libres : la GNU GPL v2 était trop restrictive et interdisait de combiner du code sous GNU GPL avec du code sous certaines autres licences considérées comme libres mais non compatibles. La GNU GPL v3 devrait élargir les frontières.

Un projet utilisant à la fois du code sous « GNU GPLv2 ou ultérieure » et du code sous « GNU GPLv3 ou ultérieure » devra donc, dans son ensemble, être distribué sous licence « GNU GPLv3 ou ultérieure ». Richard a donc rappellé l'importance de distribuer les projets libres en laissant au projet la possibilité de passer à une version ultérieure de la licence : « either version 2.1 of the License, or (at your option) any later version », comme cela est recommandé par le texte accompagnant la GNU GPL v2. Or, certains projets libres, dont certains très importants tels le noyau Linux, ne sont en effet publié que sous la version 2 de la GNU GPL, ce qui interdit en pratique (à cause de l'interdiction de changer la licence sans l'avis des auteurs de chaque portion de code) de corriger les défauts de la licence et de s'adapter à l'environnement (jurique, technique...).

J'ai assisté ensuite à une conférence sur DTrace (photos). Cet outil de Sun intégré à Solaris est un outil système permettant de rapidement diagnostiquer des problèmes système. DTrace est composé d'un module noyau qui permet de placer des points d'arrêt partout dans le système (dans le noyau, dans les librairies systèmes ou applicatives) et d'un langage permettant d'exprimer rapidement du code à exécuter sur ces points d'arrêt. Le langage dispose de primitives pour calculer simplement des statistiques pour dégager les problèmes de performance. Les exemples présentés étaient très impressionnants : Jon Haslam nous montrait en quelques lignes comment reproduire truss en quelques lignes de DTrace.

Bien que DTrace soit techniquement très avancé, on constate surtout, notamment par cette présentation au FOSDEM mais aussi les nombreux blogs écrits par les ingénieurs de Sun, que c'est une pièce maîtresse de la stratégie marketing de Sun pour relancer Solaris.

Dans la fillière « Embedded » Mickael Opdenacker présentait Optimizing Linux kernel and applications (slides). Il nous a indiqué une série d'astuces permettant la rapidité du démarrage boot d'un système Linux, comment réduire la quantité de mémoire utilisée, etc... Ces astuces sont issues de http://celinuxforum.org/.

Dans la série Mozilla, un développeur de Flock présentait le concept du produit en cours de développement. En fait la présentation était axée sur l'évolution du web en 10 ans, et le manque d'évolution de l'interface des navigateurs web durant ce temps. Flock se veut révolutionnaire au niveau de l'interface. D'après le peu qui a été dévoilé, il s'agirait d'un navigateur basé sur le code de Firefox, mais intégrant les services web apparues récemment (del.icio.us, flickr...) dans l'interface graphique.

Ian Pratt, chercheur et fondateur de XenSource nous a présenté Xen and the Art of Virtualization. Xen est un système de virtualisation d'ordinateurs. Il permet de faire tourner un ou plusieurs autres système d'exploitation comme des machines indépendantes sur un même ordinateur. Xen se distingue par sa grande performance comparée à d'autres solutions, mais avec toutefois une contrainte : la nécessité d'adapter le système d'exploitation invité en implémentant certaines fonctionnalités avec des primitives Xen. Xen peut également faire tourner des systèmes qui n'ont pas été adaptés (Windows), mais le fonctionnement (et les performances) est alors celui de VMware et Qemu. Xen est actuellement implémenté sur Linux (hôte et invité) et netbsd (invité). Xen est déjà présent dans SuSE et sera aussi dans la prochaine RedHat. Xen permet également la migration d'une machine virtuelle d'un hôte sur un autre avec une faible dégradation des performances durant la migration : les pages mémoire non utilisées sont migrées alors que la machine virtuelle fonctionne encore, et le temps d'arrêt est minimisé. Bien sûr, cela implique que les périphériques nécessaires (disques, réseau) soient configurés de la même façon sur les deux hôtes.

Le dimanche matin, j'ai malheureusement raté (j'ai visité le métro bruxellois un peu plus que je n'aurais voulu) la présentation de RIFE, un framework web Java. J'ai cependant regardé la vidéo disponible en ligne Geert Bevin indiquait les avantages : tous les composants sont inclus pour faire un projet complet. Pas besoin de faire appel à des librairies externes. Cependant il semble que l'investissement en apprentissage soit assez important. Et je n'ai pas vraiment compris comment créer un nouveau projet avec ce framework et ce que cela apporte au développeur. Un test sera nécessaire pour vraiment appréhender le potentiel.

La présentation suivante portait sur Selenium. Cet outil permet de faire des tests fonctionnels d'applications web. Il fonctionne coté client web, en s'insérant dans les navigateurs. Cela permet de tester vraiment le comportement de l'application depuis le navigateur avec un scénario automatisé. Alors que les applications web sont de plus en plus dépendante de code fonctionnant coté client (AJAX), ce type d'outil apporte vraiment un plus pour la qualité.  Selenium dispose d'une extension Firefox, Selenium IDE, qui permet de créer facilement les scénarios de test. Selenium est entièrement codé en Javascript. Pour l'exécution des scénarios, Selenium doit soit être installé sur le même serveur que l'application à tester, soit être exécuté dans l'environnement à sécurité relâchée de chaque navigateur (HTA dans IE, chrome dans Firefox). C'est vraiment le projet qui m'a le plus impressionné de ce week-end.

Je suis ensuite passé dans l'amphi Chavane pour assister à la présentation de Valgrind par Julian Seward. Le public était très nombreux (amphi complet), montrant l'intérêt du public du FOSDEM pour le développement en C/C++. Valgrind un outil de détection de bogues dans les applications C/C++, un équivalent libre de Purify ou Insure++ mais uniquement pour Linux. Julian a démarré ce projet comme un remplacement de Purify qui ne fonctionnait alors que sur Solaris et souffrait de problèmes de conception. Conçu initialement pour plateforme x86, Valgrind existe pour amd64 et ppc32 et la prochaine version devrait version devrait supporter ppc64 (avril). Il supporte toutes les librairies C/C++/Fortran. Coté implémentation, une librairie principale, Valgrind core (~180 000 lignes de code), propose une infrastructure sur laquelle se basent différents outils, assez petits (1-10 kloc), indépendants de l'architecture du processeur. La présentation était axée sur Memcheck, l'un de ces outils, qui permet la détection de problèmes d'utilisation de la mémoire : fuites mémoire, utilisation de variables non initialisées... Il détecte les problèmes de non-initialisation (jusqu'au simple bit non initialisé) selon une stratégie originale : retarder au maximum le signalement d'une anomalie. Ainsi, ce n'est pas à la lecture d'une zone non initialisée qu'un bug est signalé mais plutôt lorsque la valeur est utilisée pour un branchement, pour un calcul d'adresse mémoire ou pour un appel système. L'information d'état de non-initialisation accompagne donc la valeur d'une variable à l'autre jusqu'à un endroit critique. Ceci évite les faux positifs dans le cas ou la valeur n'est jamais utilisée. Pour aller plus loin dans la détection ou pour l'élimination de faux positifs, Valgrind dispose d'une API utilisable dans les applications à tester. Les appels à cette API ne sont actifs que lorsque l'application est exécutée par Valgrind. Julian nous a finalement présenté rapidement les autres outils de la suite : Cachegrind (pour mesurer les problèmes de cache CPU suceptibles de ralentir une application), Massif (pour mesurer la mémoire utilisée au cours de la vie du processus), Callgrind (un profiler) et Helgrind (pour les détecter les accès à des variables globales sans verrou dans les applications multi-thread).

En début d'après-midi je suis passé voir Jon Trowbridge, développeur de Beagle, un outil de recherche dans les fichiers personnel pour l'environnement Gnome. Jon avait décidé d'annuler cette présentation car il était prévu qu'il en donne un autre l'heure suivante dans le grand amphi. Il a donc proposé une forme : un dialogue question-réponse. Les questions ont peu porté sur Beagle mais plus sur Mono et sur Google. Beagle est développé en C# et fonctionne sous Mono. Jon a expliqué ce choix simplement parce qu'il souhaitait un langage de plus haut niveau que C et qu'il travaillait à l'époque avec Miguel de Icaza qui a initié Mono. La salle était bien remplie, montrant l'intérêt pour Beagle. Les questions à propos de Google venaient du fait que Jon a été embauché chez eux depuis le début de l'année. Il ne nous a rien révélé, si ce n'est que la culture du secret y est omni-présente.

Novell présentait AppArmor, un outil de verrouillage des applications lors de leur exécution. Crispin Cowan a rappellé quelques principes de sécurité informatique tels que « applications should do what they should and nothing else » ou « security is simple : only run perfect software ». AppArmor est un outil de plus pour palier aux bugs d'un logiciel : il permet de bloquer les appels système non prévu par l'administrateur et donc de s'assurer que l'application ne sort pas de son fonctionnement normal. AppArmor est donc à utiliser pour emprisonner les applications réseaux pour éviter que les failles qu'elles présentent ne soient exploitées. C'est un outil de prévention des risques.

Ensuite le développeur principal de ClamAV, un antivirus libre pour Unix/Linux présentait son projet. Il nous a indiqué les algorithmes utilisés pour la recherche de signatures dans les fichiers, l'architecture mise en place pour diffuser ces signatures. Tomasz Kojm nous a montré un problème concret qu'il a rencontré du fait des brevets logiciels : certains fichiers sont compressés. Or certains algorithmes de compressions sont protégés par des brevets logiciels ce qui empêche un implémentation libre d'un décompresseur pour examiner le contenu et détecter d'éventuels virus. Hors les auteurs de virus ne s'embarrassent pas de ce genre de considérations.

Le final du FOSDEM fut donné par Jeff Waugh, de Ubuntu, avec une présentation, ou plutôt un show, intitulé The Challenge of the GNU/Linux Desktop. Il a insisté sur le fait que le bureau GNU/Linux ne doit pas être réservé à une élite, et a présenté les améliorations faites récemment sur le bureau Gnome de façon à sensibiliser l'audience de développeurs aux problèmes d'ergonomie. Quelques exemples d'absurdités de Windows étaient glissées pour divertir l'assistance et montrer que Gnome en tire des leçons et prend de l'avance. Bref, c'était très drôle et très juste. Jeff est un vrai showman et il était très à l'aise dans son rôle d'évangélisateur.

En conclusion, c'était encore une bonne édition du FOSDEM. La difficulté c'est bien sûr de jongler avec les différents flux de conférences. J'y retournerai l'année prochaine et j'essayerais de tenir compte de l'enregistrement vidéo pour mieux profiter de l'emploi du temps. Prochaine conférence : peut-être Libr'east s'il y a une édition 2006, sinon les Rencontres Mondiales du Logiciel Libre en juillet.