RMLL en différé, jour 4
Après une longue soirée aux Tanneries et peu de sommeil, j'entame le vendredi 8 juillet la dernière grosse journée du thème OS : 9 présentations en un seul jour. La matinée était consacrée à l'utilisation des langages de haut-niveau dans le développement des systèmes d'exploitation. Bien que je ne sois vraiment à l'aise qu'en langage C, je trouve stupide d'utiliser ce langage pour le développement d'applications, et je me demande à quel point d'autres langages plus évolués ou plus propres pourraient être utilisés dans le cadre du développement de systèmes d'exploitation.
On commence par une
présentation de
Jnode.org, par Ewout Prangsma. Il s'agit d'un OS réalisé entièrement en Java, pour le simple plaisir. J'ai beaucoup aimé cette présentation, en particulier l'état d'esprit derrière le développement de ce système. Ewout, le développeur principal, est conscient des limites de sa réalisation, mais le fait pour le
fun, et se fiche un peu de savoir si c'est vraiment pertinent. C'est l'esprit « Ça m'amuse, j'apprends, donc je le fais » que j'apprécie beaucoup, et qui a motivé pendant plusieurs années le projet
KOS. Après cette présentation,
Frode Vatvedt Fjeld présente Movitz, une plateforme pour le développement de petits systèmes d'exploitation en Common Lisp. La présentation n'est vraiment pas convaincante : on comprend difficilement son anglais, et surtout, les concepts abordés sont très abstraits. On a du mal à voir à quoi ça peut servir, dans quel cadre, même juste pour s'amuser. Ensuite,
Jérémy Bobbio nous présente hOp, un OS écrit en Haskell. En fait de présenter un OS, la plupart de sa présentation est consacrée à la description du langage Haskell, qui semble assez proche du langage Ocaml pour un non-connaisseur comme moi. Malheureusement, sa présentation n'aborde que trop brièvement l'aspect utilisation dans un OS, et j'ai trouvé que ses arguments pour l'utilisation d'Haskell reposent plutôt sur le sucre syntaxique de ce langage que sur des vrais concepts permettant d'améliorer la conception et l'implémentation d'un OS.
Suite à cela, David Decotigny et moi-même faisons
une courte présentation du projet
SOS. Les
slides de cette courte présentation sont disponibles. L'originalité de SOS ne reposant pas sur des critères techniques, nous avons surtout mis l'accent sur la disponibilité des articles documentant le code au fur et à mesure et de l'aspect incrémental du développement. Je me souviens de deux questions: une personne suggérant de mettre les articles SOS sous la forme d'un Wikibook, et une autre personne qui demandait à quel niveau de formation pourraient être utilisés les articles.
Après cette présentation, Xavier Grave a
présenté Toy Lovelace, une adaptation de SOS en
Ada95?. Ce fût sympathique de rencontrer pour la première fois Xavier, qui depuis plusieurs mois traduit le code de SOS en Ada 95. Il en est actuellement à l'article 6.5, et il ne s'occupe pas seulement de traduire le code, mais bien de l'adapter à la façon Ada. En particulier, dès que c'est possible, il essaie de porter les fonctionnalités du runtime Ada : orienté objet, exceptions, et bientôt les tâches Ada en se reposant sur les threads SOS. La présentation était d'un style très détendu, et l'état d'esprit de Xavier est à rapprocher de celui d'Ewout :
just for fun. Xavier montre du code C, du code Ada, nous fait part de son avis, d'une manière animée et sympathique.
Après l'ingestion rapide d'un paquet de madeleines sèches provenant du distributeur de l'université, les conférences ont repris à 14h. C'est Joshua
LeVasseur? qui démarre avec une
présentation portant sur l'utilisation de machines virtuelles pour améliorer la sûreté de fonctionnement. En gros, l'idée est surtout de pouvoir réutiliser des pilotes de périphériques (réseau et bloc notamment) de Linux en éxécutant un noyau Linux sous la forme d'un processus dans le cadre d'un système d'exploitation à base de micro-noyau. L'idée est intéressante dans la mesure où elle permet de réutiliser des drivers et donc d'avancer plus vite dans le développement de nouveaux OS, mais d'un point de vue conceptuel, je trouve ça assez laid et assez lourdingue. Il faut des wrappers de partout, c'est un peu l'artillerie lourde. À mon sens, pas de quoi exploser le temps imparti de plus de 20 minutes, nous mettant en retard pour toute l'après-midi. En plus, l'orateur avait précédemment refusé d'utiliser des outils libres pour sa présentation, prétendant que Powerpoint était
the best tool for the job, et a fait allusion pendant la présentation à plusieurs logiciels propriétaires, comme pour lancer des piques à Ludovic et moi. 'Fin bref, j'ai personnellement pas tellement apprécié son attitude.
C'est Jeff Dike qui devait prendre la suite avec une présentation sur User-Mode-Linux, mais suite à un problème de portable incompatible avec le vidéo-projecteur, nous avons choisi de placer
présentation sur THINK avant. Celle-ci étant donnée par Juraj Polakovic, qui travaille avec Jean-Philippe Fassino, l'orateur qui avait présenté THINK aux RMLLs 2003 à Metz.
THINK est une plateforme pour le développement de systèmes d'exploitation, et Kortex est un ensemble de composants pour cette plateforme permettant de réaliser de tels systèmes. Après une courte présentation de THINK, Juraj a parlé des travaux qui allait entreprendre pour permettre la reconfiguration dynamique, notamment au travers du changement à chaud de composants. J'ai trouvé la partie sur la reconfiguration dynamique un peu courte : on sentait que le travail n'en était qu'à ses débuts, et qu'il n'y avait pas encore de réponse (autres que très théoriques) sur les problèmes de transformation d'état lors du remplacement d'un composant par un autre. En effet, lorsque l'on remplace un composant
ordonnanceur qui gère des structures de données propres par un autre composant
ordonnanceur, il faut transformer les données de l'ancien ordonnanceur dans un
format compréhensible par le nouveau. Il me semble que c'est la principale difficulté de l'opération, et d'après ce que j'ai compris, la seule réponse est pour l'instant qu'un
transformer se chargera de la transformation, sans plus de détails pour l'instant. Peut-être aurait-il été intéressant de présenter un peu plus longuement THINK en lui-même qui propose tout de même des choses assez élégantes en terme de componentisation et de liens entre les composants.
Une fois cette présentation terminée, Jeff Dike a pu prendre la suite en
parlant de User-Mode-Linux. Il a brièvement présenté de quoi il s'agissait : un port du noyau Linux en mode utilisateur. Personnellement, je l'ai utilisé pour faire quelques essais de Debian sans risquer de casser mon installation. C'est assez amusant, le noyau Linux est directement un exécutable qu'on lance à partir de la ligne de commande, et hop ça boote. Il a consacré une partie de la présentation aux patchs SKAS (Separate Kernel Address Space) qui permettant d'améliorer les performances et la sécurité de User-Mode-Linux, mais qui semblent être assez bricolage. Ensuite, une grande partie de la présentation a été consacrée aux évolutions futures d'UML :
- prise en compte des optimisations matérielles disponibles dans les prochains processeurs pour la virtualisation : chez Intel, il s'agit de VT et chez AMD, il s'agit de Pacifica;
- l'amélioration des performances;
- embedded UML qui permettrait d'embarquer UML dans une application, de manière à la faire tourner dans un sous-noyau. Il donnait l'exemple de mod_perl d'Apache. L'approche me semble là aussi un peu bricolage, et même un peu violente en termes de performances. Ceci étant dit, je n'ai peut-être pas saisi toute la finesse de la chose
Globalement, j'ai été un peu déçu par cette présentation, je n'ai pas compris grand chose des orientations futures, et ce que j'ai cru comprendre ne m'a pas paru bien excitant. Toutefois, Jeff Dike parlait assez doucement, de manière assez monocorde, j'avais du mal à comprendre son anglais, et je m'endormais à moitié à cause du manque de sommeil.
La dernière présentation de la journée a été beaucoup plus dynamique. Julia Lawall a
présenté Bossa, une
plateforme pour le développement d'ordonnanceurs pour le noyau Linux. En gros, on peut décrire son ordonnanceur via un langage adapté (un
domain specific language), et il est ensuite compilé pour fonctionner comme ordonnanceur du noyau Linux. Ce dernier a été modifié pour fonctionner correctement avec de tels ordonnanceurs. Là où ça devient très intéressant, c'est que la description dans le langage spécifique dans l'ordonnanceur peut servir à vérifier que celui-ci répond à certaines contraintes imposées par le système d'exploitation. Plutôt intéressant donc. En plus, le travail sur Bossa a été libéré (sous licence LGPL) spécialement pour les Rencontres Mondiales du Logiciel Libre, ce qui est une bonne nouvelle. Ceux qui veulent en savoir plus sur les langages spécifiques peuvent aussi regarder du coté de
Devil, un langage spécifique au développement de pilotes de périphériques.
Cette dernière journée de conférences fût donc très riche, mais la fatigue commençait à se faire sentir. La densité des conférences était sans doute trop importante.
Après toutes ces présentations, nous nous sommes rendus aux Tanneries pour déguster un plat végétarien, et encore une fois discuter avec moultes autres geeks.