L'université de Berkeley en Californie a reçu l'autorisation d'Alcatel-Lucent de publier Plan9 en GPLv2. Pour rappel, Plan9 est un OS, descendant de Unix Time-Sharing System, développé chez Bell Labs, par Rob Pike, Ken Thompson, Dennis Ritchie et d'autres.
Comme il semble que peu de monde sache ce qu'est Plan9, voici, dans la suite de la dépêche, une rapide introduction à Plan9. Nous vous invitons à poursuivre par vous même en lisant la documentation et en installant Plan9 sur votre cluster de RaspberryPi, vos Thinkpads ou vos machines virtuelles pour vous faire une idée de la bête par vous-même.
NdA : Merci à eggman et Sygne pour leurs journaux respectifs sur le sujet, sous licence CC by-sa.
Sommaire
Plan9 pour les nuls
Plan9 est bien né
Parce qu'il est le fils de Ken Thompson, Dennis Ritchie, Brian Kernighan et Rob Pike, entre autres.
Plan9 est libre
Parce qu'il est distribué, depuis 2003, sous la Lucent Public License, une licence reconnue libre par la FSF. Et il est désormais aussi distribué sous GPLv2.
Plan9 est moderne
Parce que son interface graphique est déjà intégrée au noyau. Il n'y a d'ailleurs pas de tty dans Plan9, ceux-ci paraissant déjà dépassés en 1987. L'ergonomie de Plan9 continue néanmoins de reposer sur le texte, puisque Rio, le gestionnaire de fenêtres, n'ouvrira par défaut que des lignes de commandes.
Plan9 propose en outre une interface de programmation, nommée Acme, qui s'utilise au clavier et à la souris. Le clic du milieu permet d'exécuter le texte sélectionné ou les commandes de l'éditeur représentées par des tags situés en haut de la fenêtre. L'exécution s'affiche dans une nouvelle sous-fenêtre, automatiquement placée à la façon d'un gestionnaire de fenêtre pavant. Enfin, l'exécution de la commande dépend du contexte : exécuter une ligne de sortie de grep ouvre le fichier greppé à cette ligne repérée par grep.
Plan9 est international
Parce que l'utf-8 a été inventé pour Plan9.
Plan9 n'est pas POSIX
Parce que ce standard a été jugé trop limitatif pour un système d'exploitation dédié à l'exploration de nouveaux concepts. Le shell de Plan9, rc, a une syntaxe un peu personnelle et sa libc a été entièrement ré-écrite, ainsi que son compilateur.
Plan9 est distribué
Parce que Plan9 est fait pour fonctionner sur un cluster de machines. L'architecture d'un cluster Plan9 repose sur au moins trois machines : des serveurs de CPU, des serveurs de fichiers et des terminaux, le serveur de CPU faisant généralement aussi office de serveur d'identification. Il est à noter qu'on peut installer le tout sur une seule machine.
Par défaut, le CPU utilisé est celui du terminal. Mais il suffit de préfixer une commande par cpu pour utiliser le CPU distant.
Pour que tout cela fonctionne bien dans des environnements multi-architectures, le serveur de fichier adapte la vue du système de fichier présenté à chaque terminal en fonction de son architecture. Ainsi, à une machine Arm il montrera /arm/bin/
en lieu et place de /bin/
.
Plan9 est unifié
Parce que la commande bind permet de monter plusieurs systèmes de fichiers dans un même répertoire. Au cas où un même nom apparaîtrait dans plusieurs de ces systèmes de fichiers, seul celui du premier monté sera accessible.
Plan9 est tout fichier
Parce que sur Plan9, vraiment tout est fichier. La souris est un fichier, il suffit d'écrire dedans pour déplacer le curseur. La fenêtre aussi est un fichier, il suffit d'écrire dedans pour la modifier. Le contenu de la fenêtre aussi est un fichier, ce fichier est celui que vous êtes en train d'éditer - c'est d'ailleurs pour cela que Plan9 n'aime pas trop la coloration syntaxique, car elle supposerait d'introduire une discontinuité dans ce tout fichier. De même, le réseau est représenté dans Plan9 par un système de fichiers.
Puisque tout est fichier sur Plan9, lorsqu'on écrit un pilote, par exemple un pilote de carte ethernet, on écrit en vérité quelque chose qui ressemble à un serveur de fichier. Conséquence directe de ce fonctionnement : pour accéder à un périphérique distant, il suffit de monter son système de fichier localement.
Plan9 est simple
Parce tout Plan9 repose sur un unique protocole de relation entre client et serveur : 9P. Ainsi, le pilote de souris, le gestionnaire de fenêtre, le pilote de carte Ethernet et le système de fichier lui-même ne sont que des implémentations du protocole 9P.
Le protocole lui-même est très simple : Les quatre premiers bytes indiquent la taille complète du message, le byte suivant le type du message, celui d'après est un tag, et le reste est constitué de paramètres.
Plan9 est sauvegardant
Parce que Fossil, son système de fichier par défaut, permet à tout utilisateur de réaliser des snapshots.
Mais parce que Plan9 dispose d'un autre système fichier, Venti, dédié quant à lui à la sauvegarde permanente des snapshots. Pour être simple et robuste, Venti ne permet pas de supprimer des données, seulement d'en ajouter.
Plan9 est varié
Parce qu'il existe plusieurs distributions de Plan9 : vanilla de Bell Labs, 9front, inferno, 9atom. Outre qu'elles proposent différents utilitaires, toutes ces distributions proposent leur propre version patchée du noyau.
Plan9 est communautaire
Parce que les utilisateurs de Plan9 partagent leurs pilotes, patchs, ports, et programmes. On voit difficilement trace de toutes ces sources, parce qu'elles sont surtout distribuées par Bell Labs sous la forme de systèmes de fichiers pour Plan9 : /n/sources/contrib/.
Plan9 est compatible avec Linux
Parce qu'une application pour Linux, drawterm, permet de se connecter à un serveur Plan9. Parce que l'utilisation du protocole 9P comme système de fichier est implémenté dans le noyau Linux (v9fs). Parce que les utilitaires de Plan9 sont disponibles sous Linux grâce à Plan9 from user space. Parce que, enfin, des ports de GCC, binutils, et de certaines applications Linux sont disponibles sous Plan9.
Aller plus loin
- Premier journal d'eggman à l'origine de la dépêche : Plan9 goes GPL v2 (405 clics)
- Second journal de Sygne à l'origine de la dépêche : Plan9 pour les nuls (492 clics)
- Licence Plan9 (69 clics)
- Dépôt Github de Plan9 (313 clics)
- Source de l'information : Akaros (Berkeley) (163 clics)
- Télécharger Plan9 (629 clics)
# Trop tard ?
Posté par Pierre Jarillon (site web personnel) . Évalué à 1.
Plan9 est intéressant mais qui en a vraiment besoin ?
Si ma mémoire est bonne, il y a peu de temps, il n'était pas libre.
C'est sans doute ce qui a freiné son adoption et sa mise sous GPL est arrivée trop tard.
[^] # Re: Trop tard ?
Posté par ZeXigh (site web personnel) . Évalué à 9.
Plan9 a été libéré il y a 10 an. Pour moi, il y a deux éléments principaux qui en font sa puissance (outre sa simplicité manifestée par tout au plus une trentaine d'appels système) :
9P(2000) le protocole de communication dont l'article parle, dont le principe de base est uniquement le fichier. C'est un protocole asynchrone qui prend en charge le transport pour l'authentification, et seulement le traitement des fichiers : open, read, write, close, delete, rename, stat, dup (clone). Pas de syscall ioctl dans Plan9 … On peut facilement écrire des serveurs de fichiers en C (fuse?)
les namespaces: chacun des processus peut voir sa propre arborescence : un jail ou un chroot natif, sans exception particulière puisque même les devices sont présentés comme des fichiers.
Plan9 c'est surtout une philosophie, qui a inspiré beaucoup d'autres OS. C'est aussi là que des langages de programmation ont été conçus ou pensés (limbo, alef, ancêtres de google go).
Personne n'a probablement besoin de Plan9, mais une fois qu'on y a goûté, il est difficile de l'oublier. Il en reste des réminiscences grâce a plan9ports un portage unix des outils, ou encore 9vx une machine virtuelle.
Et je ne parle pas de fossil et venti, les systèmes de fichiers, ou de factotum, l'api d'authentification …
Pour moi, c'est surtout sa simplicité qui me parle, mais c'est sûr, il est peu utilisé en production.
[^] # Re: Trop tard ?
Posté par Sygne (site web personnel) . Évalué à 9.
En un sens, je peux dire que moi j'ai besoin de Plan9 :
À côté du toujours plus de formats, de protocoles, de langages et de complexité, Plan9 me semble essayer d'engager le développement de l'informatique sur une autre voie, vers plus de simplicité, d'unité et de transparence.
Et personnellement, j'ai besoin de cette autre voie parce que la question de la maîtrise de notre outil informatique m'importe et me semble être un des enjeux de notre époque. Et le logiciel libre ne répond qu'imparfaitement à cet enjeu de par le bazar qu'il génère. Les gens d'ici savent par exemple que je suis un fervent utilisateur de Troff parce que ce vieil outil est le seul logiciel de formatage de texte que je sois capable de maîtriser—et ça compte lorsqu'on utilise cet outil tous les jours dans sa profession.
Plus concrètement, je m'aperçois en outre que l'architecture distribuée de Plan9 répondrait à nombre des problèmes que je rencontre aujourd'hui au quotidien : synchronisation entre machines, partage des fichiers, sauvegarde. Il y a tous les outils qu'il faut sur linux pour faire ça, mais c'est une plaie à administrer.
Il manque quelques applications clés à Plan9 pour que l'on puisse l'utiliser sereinement, et c'est bien dommage à mon avis.
[^] # Re: Trop tard ?
Posté par max22 . Évalué à 3.
Ca me donne envie de réessayer Plan9 tout ça (et troff aussi). Tu l'utilises sur une machine virtuelle ? ou il est carrément installé sur ton pc ?
[^] # Re: Trop tard ?
Posté par Sygne (site web personnel) . Évalué à 3.
Ben non, je n'utilise pas plan9…
Quand je l'ai essayé, j'ai eu l'impression que je n'aurais pas d'autres choix que de renoncer à certains usages si je voulais l'utiliser au quotidien, parce qu'il est tout de même pauvre en applications.
Ça reste probablement l'OS dont la philosophie me plaît le plus.
Pour l'essayer, le mieux, d'après la liste de discussion, est de faire un petit cluster de trois machines, avec des Raspberry Pi par exemple.
[^] # Re: Trop tard ?
Posté par Cilyan Olowen (site web personnel) . Évalué à -10.
# précisions
Posté par vd . Évalué à 10.
Bonjour,
quelques précisions
Venti n'est pas un système de fichiers. C'est un système d'écriture de blocs sur disque. Le nom du bloc, son adresse, est sa signature cryptographique SHA1, ce qui veut dire qu'un bloc est une archive fixe, en écriture unique. Quand on envoie à Venti un bloc à écrire, il renvoie le SHA1, quand on veut lire un bloc sur Venti, on lui envoie le SHA1, il renvoie le bloc. La conversation a lieu en protocole Venti (voir http://man.cat-v.org/plan_9/6/venti), et pas en 9P, ce qui est une confirmation que Venti n'est pas un serveur de fichiers. Il sert de couche sous-jacente à Fossil, le serveur de fichiers typique actuel.
Brian Kernighan ne fait pas partie des développeurs de Plan 9. Selon ses propres mots : http://doc.cat-v.org/plan_9/2nd_edition/README
On peut le citer, mais en tant que membre de l'équipe des Bell Labs historique, qui a produit Unix, et plus tard Plan 9. Un produit qui sort de ce milieu d'incubation mérite sûrement au moins un peu d'attention de la part des auditeurs.
[^] # Re: précisions
Posté par Sygne (site web personnel) . Évalué à 10.
Merci pour ces précisions ! Je suis en fait étonné de n'avoir pas écrit plus de bêtises…
Vous pouvez nous aider à mieux le connaître je suppose. Les gens qui, comme vous, semblent être familiers avec Plan9 ne courent pas les rues. Un petit journal de temps en temps, même bookmark, un exemple d'utilisation, l'explication technique d'un concept, un tutoriel, ou n'importe quoi d'autre, attirera l'attention des auditeurs.
Par exemple, j'ai une question, qui, j'espère, n'est pas trop indiscrète: Si vous utilisez Plan9, que faîtes vous avec ? De la recherche ? Du développement ? Un serveur de fichiers ? De la bureautique ?
# précisions
Posté par vd . Évalué à 2.
[On dirait que ça n'est pas passé… je recommence.]
Bonjour,
quelques précisions
Venti n'est pas un système de fichiers. C'est un système d'écriture de blocs sur disque. Le nom du bloc, son adresse, est sa signature cryptographique SHA1, ce qui veut dire qu'un bloc est une archive fixe, en écriture unique. Quand on envoie à Venti un bloc à écrire, il renvoie le SHA1, quand on veut lire un bloc sur Venti, on lui envoie le SHA1, il renvoie le bloc. La conversation a lieu en protocole Venti (voir http://man.cat-v.org/plan_9/6/venti), et pas en 9P, ce qui est une confirmation que Venti n'est pas un serveur de fichiers. Il sert de couche sous-jacente à Fossil, le serveur de fichiers typique actuel.
Brian Kernighan ne fait pas partie des développeurs de Plan 9. Selon ses propres mots : http://doc.cat-v.org/plan_9/2nd_edition/README
On peut le citer, mais en tant que membre de l'équipe des Bell Labs historique, qui a produit Unix, et plus tard Plan 9. Un produit qui sort de ce milieu d'incubation mérite sûrement au moins un peu d'attention de la part des auditeurs.
# Autres remarques
Posté par p9 . Évalué à 10. Dernière modification le 21 février 2014 à 09:33.
Quelques ajouts/corrections:
Plan9 c'est un peu comme le Lisp : en pratique ça sert pas à grand chose, mais les concepts derrière.
beaucoup de concepts sont en portage/déjà portés sur vos unix préférés: utf8, /proc, namespaces, etc. mais c'est tellement plus sale :-)
à aborder avec un esprit neuf (no pun intended)
PS: je suis perdu avec la syntaxe des listes : le boutton me sort des tirets; l'aide mémoire de la syntaxe des étoiles, mais aucun ne marche en prévisualisation.
[^] # Re: Autres remarques
Posté par Benoît Sibaud (site web personnel) . Évalué à 4.
Concernant le PS :
[^] # Re: Autres remarques
Posté par Sygne (site web personnel) . Évalué à 2.
C'est bien dommage de ne pas pouvoir profiter de la conception de Plan9 pour faire quelque chose d'utile au jour le jour…
En testant Plan9, je dois avouer avoir été déçu sur ce point. Je ne m'attendais pas à pouvoir faire ce que je fais sur linux, par contre, j'espérais que pour certaines tâches fondamentales, il proposerait des outils bien pensés et originaux.
En un sens, ces outils existent: on peut écrire des mails, visiter sobrement internet, publier un wiki en ligne, produire des documents et les imprimer, n'est-ce pas ? Mais j'ai l'impression (sauf peut-être pour le mail que je n'ai pas essayé) que ces outils n'ont pas la valeur ajouté que peuvent avoir les autres programmes de Plan9.
Il y en a pourtant des choses à explorer au niveau applicatif…
Un exemple, pour le fun: Faire reposer toute la publication (mail, wiki, postscript, man) sur une unique sémantique.
[^] # Re: Autres remarques
Posté par p9 . Évalué à 7.
oh si c'est faisable. tout dépend de ce qui est compris par utilisation journalière.
pour du développement, l'apprentissage de la programmation, etc. c'est un environnement particulièrement sain par rapport aux unix modernes.
9front par exemple est utilisable décemment au quotidien comme OS principal, notamment grace:
après il faut chercher, et ouvrir les yeux: y'a pas mal de petites perles ici et là, par exemple:
#!/bin/rc cat
(du coup, oui c'est largement faisable un serveur http codé en shell en quelques lignes, cf http://man2.aiju.de/8/rc-httpd)A# import -a B /net
et grâce au méchanisme d'isolation des processus via namespaces, c'est valide que pour le processus courant. pour que ça soit valide tout le temps, il suffit de le faire plus tôt dans le démarrage de l'OS, pour que le namespace soit hérité par les processus fils.C'est bien de garder en tête les considérations suivantes quand on aborder Plan9:
au final, je dirais que c'est un îlot de tranquilité pour les sysadmins, et une référence en matière de design pour les codeurs. je serais curieux de voir des novices complet en informatique débuter sous Plan9.
(c'est la fête des listes!, merci Benoît)
[^] # Re: Autres remarques
Posté par Sygne (site web personnel) . Évalué à 2.
Ils ne sont pas remontés à plan9 de Bell Labs ces drivers de 9front ?
[^] # Re: Autres remarques
Posté par p9 . Évalué à 4.
y'a plus grand monde qui bosse sur Plan9 @bell-labs (du genre une ou deux personnes)
et fort peu de patchs sont acceptés. c'est une des raisons pour lequelles des distribs non-officielle (9atom, 9front, NiX, etc.) existent.
ceci dit, ça devrait être possible de patcher la version de bell-labs pour y porter les drivers sans trop de boulot. à voir si 9grid (http://9grid.fr/downloads.html) ne le fait pas déjà.
[^] # Re: Autres remarques
Posté par Sygne (site web personnel) . Évalué à 4.
9grid ? Vous voulez-dire 9legacy plutôt, non ?
D'ailleurs, en constatant qu'un français était derrière 9legacy, je me demande si le Hibou qui parlait de Plan9 il y a quelques années dans un commentaire, ne serait pas ce français…
Cette même discussion m'avait d'ailleurs assez refroidi quant à 9front. Les choses semblent avoir changées depuis…
[^] # Re: Autres remarques
Posté par p9 . Évalué à 2.
oui effectivement, je parle bien de 9legacy.
je me permet de citer ce qui a été dit sur #plan9 il y a quelques heures par un développeur principal de 9front, qui compare l'implémentation des noyaux 64bits de Nix (une autre distrib) et 9front.
les choix techniques qu'ils font sont toujours justifiés. et je suis sûr qu'ils ouvriront leurs écoutilles à des arguments extérieurs, surtout s'ils sont pertinents. s'ils ne le sont pas, il faudra savoir ignorer la pluie d'insultes ;-) (c'est pas un comportement plus blamable que celui de Linus ou Theo)
pour leur penchant à « semer le trouble » : http://9front.org/troll/troll-culture.pdf
on en pense ce qu'on en veut, mais de nos jours, l'esprit du citoyen lambda de notre société est tellement confus, tellement éloigné de ses racines culturelles, que le piquer un peu de temps en temps pour le lui rappeller ne peut qu'être bénéfique.
[^] # Re: Autres remarques
Posté par Sygne (site web personnel) . Évalué à 2.
C'était là ma seule question concernant 9front, et aussi ma dernière question je crois.
Merci pour toutes ces remarques !
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.