Journal Plan9 pour les nuls

Posté par  (site web personnel) . Licence CC By‑SA.
70
18
fév.
2014

Sommaire

Plan9 pour les nuls

Je suis effaré par l'ignorance des gens d'ici quant à Plan9. Dans le récent journal qui en parle, je me trouve être le seul qui sache un peu de quoi il est question, et c'est un comble, car je n'y connais presque rien.

Alors puisque ce presque rien est toujours mieux que rien, je vous propose une rapide introduction à Plan9, et vous invite à 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.

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 le journal à l'origine de celui-ci indique qu'il est 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 qu'unicode et l'utf-8 ont été inventés 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-architecture, le serveur de fichier adapte la vue du système de fichier présentée a 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.

  • # Plan9 est international

    Posté par  (site web personnel) . Évalué à 10.

    Parce qu'unicode et l'utf-8 ont été inventés pour Plan9.

    Unicode, non : il a été créé par des employés de Xerox et Apple, rejoints un ou deux ans plus tard par Sun, Microsoft, Next, et autres.

    UTF-8, oui : il a bien été créé par les auteurs de Plan9, que les UTF et UCS existants ne satisfaisaient pas.

  • # Merci !

    Posté par  . Évalué à 7.

    Tout est dans le titre.
    Comme je suis une grosse flemme, je m'étais contenté de faire un journal à peine plus étoffé qu'un journal bookmark. Et comme toi j'avais été surpris de m’apercevoir que Plan9 pouvait être si mal connu.

    Merci encore.

    0. Assume good faith 1. Be kind to other people 2. Express yourself 4. Apply rule 0

  • # typo

    Posté par  . Évalué à 3.

    Le lien vers /n/sources/contrib/ est erroné: s/bells/bell/

    • [^] # Re: typo

      Posté par  (site web personnel, Mastodon) . Évalué à 3.

      Tout comme le lien vers la documentation. Décidément les journaux bookmark, c'est plus ce que c'était…

      • [^] # Re: typo

        Posté par  (site web personnel) . Évalué à 2.

        Oui, j'ai oublié de vérifier les liens…

        Est-ce qu'un modérateur pourrait les corriger s'il vous plaît?

        • [^] # Re: typo

          Posté par  (site web personnel) . Évalué à 4.

          Et tu donnes quoi en échange? :-)

          Bon, c'est fait.

          "La liberté est à l'homme ce que les ailes sont à l'oiseau" Jean-Pierre Rosnay

          • [^] # Re: typo

            Posté par  (site web personnel) . Évalué à 3.

            Merci. À défaut de pouvoir t'offrir un café, je t'ai pertinenté ;)

  • # Plan9 n'est pas utilisé ?

    Posté par  (site web personnel) . Évalué à 10.

    Il me semble que Plan9 n'est que très peu utilisé. J'ai même cru que comprendre que c'était plus une sujet de recherche / exploration, qu'un vrai OS destiné à être utilisé.

    Cependant les fonctionnalités décrites semblent innovantes et intéressante. Alors pourquoi est-ce que ça n'a pas plus marché (je penche pour la license non libre avant 2003) ? Ou peut être qu'au contraire ça a permit l'émergence d'outils et que je n'en ai pas connaissance (comme l'UTF-8).

    Bref, quel est l'impact actuel de Plan9 sur l'informatique (à part une mascotte moche pour le Go) ?

    Il existe deux catégories de gens : ceux qui divisent les gens en deux catégories et les autres.

    • [^] # Re: Plan9 n'est pas utilisé ?

      Posté par  (site web personnel) . Évalué à 10.

      Alors pourquoi est-ce que ça n'a pas plus marché ?

      Je ne suis pas certain que l'objectif était de faire un os qui s'impose sur le marché. Plan9 est déjà une réussite parce qu'il a permis d'explorer certaines idées, mais en outre parce qu'il prouve que ces idées conduisent à un système fonctionnel et efficace à sa façon.

      Maintenant, s'il n'est pas plus utilisé, c'est àmha parce que Plan9 s'engage dans une autre voie que celle de l'informatique dominante: Plutôt que de multiplier les protocoles, les formats et les langages, Plan9 tend à n'en utiliser que quelques uns. Je crois que ça tient à l'esprit du projet, et à une idée de ce que doit être l'informatique.

      Puisqu'en outre Plan9 n'est pas posix, on comprend rapidement qu'il est à la traîne au niveau des applications: le navigateur interne ne prend pas en charge le css, seuls quelques formats de son sont reconnus, etc. Et je dois avouer que même moi, qui ai pourtant une pratique lowtech de l'informatique, j'ai eu beaucoup de peine à faire quelque chose avec Plan9 lors de mes tests. Du reste, sur la liste de discussion 9fans, il apparaît que beaucoup d'utilisateurs de Plan9 ne l'utilisent qu'en relation avec des os conventionnels.

      Mais, il faut nuancer cet état de fait: La distribution inferno semble avoir trouvé un marché, et la distribution 9front est née du fait que la communauté développait plus vite que tout ce que pouvait intégrer la distribution upstream, de sorte qu'ils ont mis tout ce code dans une distribution, qui importe quant à elle beaucoup de programmes du monde linux.

    • [^] # Re: Plan9 n'est pas utilisé ?

      Posté par  (site web personnel) . Évalué à 8.

      quel est l'impact actuel de Plan9 sur l'informatique

      On peut citer, outre utf-8, procfs, et rfork, qui ont été transposé sur linux/unix.

      Dans l'espace utilisateur, wmii et 9wm sont inspirés de plan9.

    • [^] # Re: Plan9 n'est pas utilisé ?

      Posté par  . Évalué à 4.

      Bref, quel est l'impact actuel de Plan9 sur l'informatique

      C'est utilisé dans qemu pour le filesystem passthrough (par exemple pour "monter" un répertoire précis de l'hôte dans l'invité)
      http://wiki.qemu.org/Documentation/9psetup

      • [^] # Re: Plan9 n'est pas utilisé ?

        Posté par  . Évalué à 3.

        J'ai lu à plusieurs reprises que c'était assez lent en pratique.

        « Rappelez-vous toujours que si la Gestapo avait les moyens de vous faire parler, les politiciens ont, eux, les moyens de vous faire taire. » Coluche

        • [^] # Re: Plan9 n'est pas utilisé ?

          Posté par  . Évalué à 3.

          Je viens de (re)tester et, sur le même répertoire dans un pool raidz, j'ai 190Mo/s depuis l'invité et 240Mos/s sur l'hôte , je me souviens avoir pas mal jouer avec les options de montage de 9p afin d'obtenir des performance acceptables, j'ai version=9p2000.L,trans=virtio,msize=216144 comme options dans ma fstab.

          • [^] # Re: Plan9 n'est pas utilisé ?

            Posté par  . Évalué à 3.

            Ça doit être les options de montage qui jouent.

            « Rappelez-vous toujours que si la Gestapo avait les moyens de vous faire parler, les politiciens ont, eux, les moyens de vous faire taire. » Coluche

  • # Il manque juste une info

    Posté par  . Évalué à -10.

    C'est quoi Plan9 ?

    Oui, je sais, il y a un lien vers le journal d'il y a quelques jours, mais l'auteur s'étant contenté de « Plan9 est un OS développé par des barbus », ça ne me dis pas pourquoi je devrai m'intéresser à Plan9.

  • # Raspberry Pi

    Posté par  (site web personnel) . Évalué à 4. Dernière modification le 19 février 2014 à 08:58.

    Juste pour info, il est possible d'installer Plan9 sur un Raspberry Pi très facilement, pour tester tout ça.
    Plus d'infos ici.

    Edit : Mal lu le journal…

  • # Film

    Posté par  . Évalué à 10.

    Il manque juste une info à mon avis importante.
    Le nom (le nom complet est Plan 9 from Bells Labs) vient du film Plan 9 from Outer Space, d'où Plan 9 from userspace. Vous pouvez voir le film sur imdb (oui il est en entier sur imdb…).

    Tous les contenus que j'écris ici sont sous licence CC0 (j'abandonne autant que possible mes droits d'auteur sur mes écrits)

    • [^] # Re: Film

      Posté par  (site web personnel) . Évalué à 8.

      je vous invite aussi à regarder Ed Wood de Tim Burton qui raconte la vie du réalisateur de Plan9 from Outer Space, avec J. Depp, (étonnant qu'il soit dans un film de Tim Burton ;) )

    • [^] # Re: Film

      Posté par  . Évalué à 6.

      Et qu'après, ça on vienne nous dire que le domaine publique tue la culture…

  • # Coloration syntaxique

    Posté par  . Évalué à 3.

    […] Plan9 n'aime pas trop la coloration syntaxique, car elle supposerait d'introduire une discontinuité dans ce tout fichier.

    Je vois pas pourquoi (pour moi c'est assez primordial la coloration syntaxique). Je comprends qu'ils aient une « vision de ce que doit être l'informatique », mais faut pas oublier que c'est un outil et que si quelque chose est utile à l'utilisateur alors c'est à prendre en compte (sinon ils vont se le garder leur OS).

    Tous les contenus que j'écris ici sont sous licence CC0 (j'abandonne autant que possible mes droits d'auteur sur mes écrits)

    • [^] # Re: Coloration syntaxique

      Posté par  (site web personnel) . Évalué à 4.

      C'est surtout que selon moi il n'y a pas une contradiction.
      La coloration syntaxique c'est du code exécuté et éventuellement des fichiers pour définir les thèmes et éléments à mettre en évidence. Les fichiers ont une vue adaptée mais non modifiée (le fichier restera identique après la vue avec la coloration, il n'y a pas d'altération).

    • [^] # Re: Coloration syntaxique

      Posté par  . Évalué à 3.

      Surtout que si j'ai compris, il "suffirait" de créer une appli que l'on nommerait "konsole" ( :) ) par exemple et qui interpreterait un fichier text avec un style (genre css par exemple, mais qu'importe) pour retranscrire la couleur.

      Ou j'ai mal compris !

    • [^] # Re: Coloration syntaxique

      Posté par  . Évalué à 8.

      Je vois pas pourquoi

      En essayant de comprendre le point de vue de l'auteur du post, il me semble que la raison est que dans Plan9, la "vue" de ton fichier est aussi un fichier, donc ton fichier "coloré syntaxiquement" est un fichier différent du fichier source et que ça devient donc le bordel à gérer: si tu édites le fichier "coloré", il faut retirer les colorations pour pouvoir insérer tes modifications dans le fichier sources..

      mais faut pas oublier que c'est un outil et que si quelque chose est utile à l'utilisateur alors c'est à prendre en compte

      Certes, mais il n’empêche que certains outils font plus facilement certaines choses que d'autre: tu peux planter un clou avec un tournevis mais ça n'est pas pratique: la structure "tout fichier" de Plan9 rend plein de chose plus simple mais apparemment complique la coloration syntaxique.

      J'espère que l'auteur du post se trompe: la "coloration syntaxique" ce n'est qu'un cas particulier de tout un ensemble de transformation très utile fait par les traitements de textes donc si Plan9 ne permet pas de faire ça, c'est très gênant.

      • [^] # Re: Coloration syntaxique

        Posté par  . Évalué à -2.

        En essayant de comprendre le point de vue de l'auteur du post, il me semble que la raison est que dans Plan9, la "vue" de ton fichier est aussi un fichier, donc ton fichier "coloré syntaxiquement" est un fichier différent du fichier source et que ça devient donc le bordel à gérer: si tu édites le fichier "coloré", il faut retirer les colorations pour pouvoir insérer tes modifications dans le fichier sources..

        C'est pourtant un cas extrêmement simple de traitement de fichier. Tu peut garder 2 versions du même fichier un source et un qui contient les caractères ajoutant la coloration. C'est basique. Si après 30 ans, ils ont pas géré ce genre de cas ça n'est pas la peine de continuer leur idée est jolie mais ne mène à rien, on importe les parties intéressantes ailleurs et on laisse tomber.

        J'espère que l'auteur du post se trompe: la "coloration syntaxique" ce n'est qu'un cas particulier de tout un ensemble de transformation très utile fait par les traitements de textes donc si Plan9 ne permet pas de faire ça, c'est très gênant.

        C'est bien ce que je tentais de dire. Le tout fichier extrémiste c'est sympa, mais si t'es pas en mesure de faire : du traitement de texte, de l'imagerie, etc. C'est que ton truc ne sortira pas de ton garage.

        Tous les contenus que j'écris ici sont sous licence CC0 (j'abandonne autant que possible mes droits d'auteur sur mes écrits)

        • [^] # Re: Coloration syntaxique

          Posté par  . Évalué à 5.

          C'est que ton truc ne sortira pas de ton garage.

          Ce n'est pas le but.

          « Rappelez-vous toujours que si la Gestapo avait les moyens de vous faire parler, les politiciens ont, eux, les moyens de vous faire taire. » Coluche

    • [^] # Re: Coloration syntaxique

      Posté par  (site web personnel) . Évalué à 3.

      Revenons sur terre:

      • Plan9 n'aime pas trop la coloration syntaxique parce qu'elle cadre mal avec l'esprit du tout fichier. Mais si les développeurs le voulaient, il ne serait pas plus compliqué de l'intégrer dans plan9 que dans un autre os. D'ailleurs Vim, et sa coloration syntaxique, sont portés sur Plan9.
      • Ce que j'ai exprimé là n'est pas mon opinion (personnellement j'adore la coloration syntaxique), mais celle que j'ai rencontré sur la liste de discussion 9fans. Je me demande même s'il n'en est pas fait mention dans la doc d'Acme.
  • # ou est le .rpm

    Posté par  . Évalué à 2.

    Bon, je crois que j'ai compris ce qu'est plan9 maintenant !
    Par contre ou est le rpm pour l'installer sur mon linusc ?

    ===> [ ]

    • [^] # Re: ou est le .rpm

      Posté par  . Évalué à 4. Dernière modification le 19 février 2014 à 15:40.

      Si tu préfères linux, tu peux installer :
      * plan9port, un port des programmes user-space de plan9, disponible dans toutes les bonnes distros linux.
      * glendix, une distribution plan9/linux (au lieu de GNU/linux)

      • [^] # Re: ou est le .rpm

        Posté par  . Évalué à 3.

        * 9base, si tu veux juste t'amuser avec le rc shell

        • [^] # Re: ou est le .rpm

          Posté par  . Évalué à 2.

          Et concrètement, pourquoi utiliser plan9port ou 9base ?
          Quels avantages ont les utilitaires plan9 sur leur homologues GNU ? Les arguments donnés par le rapport sur Glendix (nombre de ligne de code inférieur et binaires compilés statiquement) ne me convainquent pas.

          • [^] # Re: ou est le .rpm

            Posté par  (site web personnel) . Évalué à 3.

            Le but est éventuellement d'utiliser l'environnement complet (rio, acme, autres applications spécifiques), pas utiliser ls ou cp et consorts version Plan 9.

  • # Plan9 est un OS

    Posté par  . Évalué à 2.

    J'ai bon ?

  • # Trop simple?

    Posté par  . Évalué à 1.

    Pour être simple et robuste, Venti ne permet pas de supprimer des données, seulement d'en ajouter.

    Ça, ça n'est pas être simple, c'est être un FS inutilisable, un jouet: pas de quoi se vanter..
    A un moment donnée je sauvegarde un gros fichier (un film par exemple) et je ne peux plus l'effacer??

    • [^] # Re: Trop simple?

      Posté par  . Évalué à 4.

      Tu reformate ton volume je pense.

      C'est convivial…

    • [^] # Re: Trop simple?

      Posté par  . Évalué à 6.

      AMHA (car je ne connais pas le fs en question), c'est pour faire de la non répudiation. C'est pour des contextes précis, pas sur une machine desktop lambda.
      un peu comme lorsque tu stockes sur du svn

      • [^] # Re: Trop simple?

        Posté par  (site web personnel) . Évalué à 6.

        C'est exactement ça: Venti est le système de fichier utilisé pour stocker les snapshots de fossil, le sytème de fichier courant. Et chez Bell Labs, je crois qu'il sert à stocker l'historique du système de fichier du cluster de machines Plan9, et avec lui, l'historique des modifications apportées aux sources. Il n'est donc pas question d'en effacer une partie.

        • [^] # Re: Trop simple?

          Posté par  . Évalué à -1.

          Tu parle de "systeme de fichier", mais dans la plupart des systèmes de fichier on peut effacer des snapshots, par contre comme base de donnée pour un outil de gestion de configuration, ok, là ça a un sens.

    • [^] # Re: Trop simple?

      Posté par  . Évalué à 4.

      Ca peut avoir du sens dans le cas de l'archivage légal , cela dit, la plupart des solutions d'archivage légal ( type netapp snaplock ou emc centera ) sont en write-only mais avec rétention ( de une à plusieurs années selon la loi en vigueur )

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.