Chapitre 9. Diligence, Patience et Humilité

La communauté Perl a une prédilection pour les dictons. L'un d'entre eux est « Il y a plus d'une façon de faire ». C'est le cas en Perl. C'est le cas pour Perl lui-même. C'est aussi le cas pour la communauté du logiciel libre, comme vous pouvez le voir dans les textes qui composent ce volume. Je ne vais pas tout vous expliquer sur le logiciel libre et son fonctionnement. Mais je vais dire quelques mots sur Perl, où il en est, et vers où il se dirige.

Voici un autre dicton : Les trois grandes vertus de la programmation sont la paresse, l'impatience, et l'orgueil. Les grands programmeurs Perl chérissent ces vertus, et les développeurs de logiciel libre en font autant. Mais c'est d'autres vertus que je vais parler ici : la diligence, la patience, et l'humilité. Vous trouvez peut-être qu'elles semblent opposées aux précédentes, et vous avez bien raison. Et si vous ne croyez pas qu'une seule et même communauté puisse pratiquer des vertus opposées, c'est que vous n'avez pas passé assez de temps avec Perl. Après tout, il y a plus d'une façon de faire.

Les langues écrites sont probablement issues de l'impatience, ou de la paresse. Sans l'écriture, pour communiquer avec quelqu'un, il fallait l'avoir en face de soi, ou alors persuader quelqu'un d'autre de porter le message à votre place. Et le seul moyen de savoir ce qui avait été dit, était… d'en garder le souvenir. L'écriture nous a donné des symboles, qui peuvent représenter des choses à condition que la communauté se mette d'accord sur les correspondances. Le langage nécessite donc un consensus. Il s'agit donc d'un ensemble de symboles qui unit une communauté. C'est en fait le cas pour la plupart des symboles.

Examinons à présent quelques symboles :

Observez-le de près. C'est un cercle. Un beau cercle, très joli. Très symétrique. Très simple.

Si vous êtes un réductionniste, vous trouverez que c'est n'est qu'un cercle, et rien d'autre. Les ultra-réductionnistes, quant à eux, n'y verront qu'un amas de photons. Suis-je clair ?

Si vous n'êtes pas un réductionniste, le cercle que vous voyez ici n'est pas une entité isolée. Il n'existe que par rapport à de nombreuses autres choses, et reçoit son sens d'elles. Pour comprendre ce simple cercle, il faut d'abord comprendre son contexte, c'est-à-dire comprendre un peu la réalité qui l'entoure.

Voici donc une représentation de la réalité :

Comme tout le monde le sait, la réalité est désordonnée.

Cette image représente beaucoup de choses. C'est une image de molécules d'air qui se baladent, une image de l'économie, une image des relations humaines dans une salle, une image de ce à quoi ressemble une langue humaine typique, une image du système informatique de votre entreprise, une image du World Wide Web. C'est une image du chaos et de la complexité.

C'est aussi une image de l'organisation de Perl, puisque Perl prend pour modèle les langues humaines, et que les langues humaines sont complexes, justement parce qu'elles doivent faire face à la réalité.

Nous avons tous besoin de faire face à la réalité, d'une façon ou d'une autre. Pour cela, nous simplifions… souvent trop !

Les anciens simplifièrent trop. Convaincus que Dieu n'avait créé que des cercles et des sphères, ils croyaient qu'il préférerait toujours la simplicité à la complexité. Quand ils ont découvert que la réalité était plus complexe qu'ils ne l'avaient cru, ils ont caché la complexité derrière un rideau d'épicycles. Et ce faisant, ils ont créé de la complexité superflue. Là est la distinction importante : l'univers est complexe, mais pas inutilement.

Tout semble suggérer qu'aujourd'hui encore on simplifie trop. Certains choisissent de trop simplifier leur cosmologie. D'autres leur théologie. Et nombre d'informaticiens simplifient trop les langages qu'ils créent, et cachent la complexité de l'univers derrière le rideau du programmeur.

Chercher des motifs dans le bruit est une tendance humaine naturelle, mais en cherchant ces motifs, nous en voyons parfois qui ne sont pas vraiment là. Ceci ne signifie pas qu'il n'y ait pas de motifs. Si on nous donne une baguette magique pour supprimer le bruit, la régularité apparaît à l'œil nu. Avec un coup de baguette magique pour supprimer le bruit, Abracadabra… voici la forme du big bang, et des étoiles, et des bulles de savon.

Voici la forme de la dimensionalité, des cristaux de sel, et des vides entre les troncs d'arbre.

Voici la forme d'un nid de fourmis, ou d'un arbre de Noël, ou la forme d'une trinité :

Et, bien sûr, une fois que vous avez vu que les motifs sont là, vous arriverez à les distinguer sans l'aide des couleurs (ou du contraste) :

Nos cerveaux sont doués pour ça.

À ce point-là, vous vous demandez peut-être quel est le rapport entre tout ceci et Perl. Le fait est que vos cerveaux sont faits pour programmer en Perl. Vous avez un désir profond de rendre simple ce qui est complexe, et Perl n'est rien d'autre qu'un outil servant à cela. Tout comme j'utilise en ce moment même le français pour tenter de simplifier la réalité. Le français est utile pour cela, parce qu'il est désordonné aussi.

C'est important, et aussi un peu difficile à comprendre. Le français est utile parce qu'il est désordonné. Comme il est désordonné, il s'applique bien à l'espace des problèmes, lui aussi désordonné, que l'on appelle réalité. De façon similaire, Perl a été construit pour être désordonné (mais de la façon la plus agréable possible).

Permettez-moi d'insister sur ce point contraire à l'intuition. Si vous avez une formation d'ingénieur, on vous a rabâché que la première qualité d'un travail est sa simplicité. On nous apprend à admirer un pont suspendu plus qu'un tréteau de voie ferrée. On nous apprend à admirer la simplicité et la beauté. Ce n'est pas mauvais en soi ; moi aussi j'aime bien les cercles.

La complexité n'est pourtant pas toujours l'ennemi. Le plus important n'est pas la simplicité ni la complexité, mais comment on relie les deux.

Toute construction nécessite une certaine mesure de complexité. On dit que la fusée Saturn V comptait sept millions de pièces, qui devaient toutes fonctionner. Mais ce n'est pas tout-à-fait vrai. Un grand nombre de ces pièces étaient redondantes. Et cette redondance était absolument nécessaire pour qu'il soit possible d'expédier quelqu'un sur la Lune en 1969. Si certaines de ces pièces avaient pour fonction d'être redondantes, il fallait quand même qu'elles fassent leur boulot, pour ainsi dire.

Nous nous trompons quand nous disons « C'est redondant » en voulant dire « C'est inutile ». La redondance n'est pas toujours « redondante », que l'on parle de fusées ou de langues humaines ou de langages de programmation. En fait, la simplicité est bien souvent un obstacle à la réussite.

Supposons que je veuille conquérir le monde. La simplicité dit que je devrais le faire tout seul. Mais la réalité impose que j'ai absolument besoin de votre aide pour cela, et que vous êtes tous très complexes. Et je trouve que c'est une bonne chose. Vos inter-relations sont encore plus complexes, et je trouve aussi que c'est une bonne chose. Parfois il y a des bogues, mais il est possible de déboguer des relations.

J'ai argumenté que la complexité peut tout aussi bien être inutile qu'utile. Voyons encore un exemple de complexité utile :

Vous avez probablement des préjugés en faveur des systèmes d'écriture occidentaux, et à l'encontre des systèmes idéographiques, inutilement complexes. Vous trouvez peut-être que cette image est tout aussi compliquée que la précédente. Mais, encore une fois, il s'agit d'un compromis d'ordre technique. Dans ce cas, le chinois a sacrifié la facilité d'apprentissage en faveur de la portabilité. Cela ne vous rappelle rien ?

En fait, le chinois n'est pas une langue unique. Il est constitué de quelque cinq langues principales[1], dont les formes parlées sont si différentes que leurs locuteurs ne se comprennent pas. On peut cependant écrire le chinois dans une langue et le lire dans une autre. Ça, c'est une langue vraiment portable. En choisissant un niveau plus élevé d'abstraction, le système d'écriture chinois optimise la communication plus que la simplicité. Un milliard de chinois ne peuvent pas tous se parler, mais au moins ils peuvent se passer des notes écrites.

Les ordinateurs aiment bien se passer des notes, eux aussi, grâce aux réseaux.

Une bonne partie de mes réflexions de cette année a été influencée par mon travail avec Unicode et XML. Il y a dix ans, Perl était très efficace pour traiter du texte. Il est encore meilleur maintenant, si l'on considère l'ancienne définition de « texte ». Mais cette dernière a changé sous ses pieds, pendant cette période.

La faute en revient à l'Internet.

Il semble que, lorsque vous cliquez sur les boutons de votre navigateur, cela encourage des ordinateurs à échanger des notes. Et ceci, à travers toutes sortes de frontières culturelles. Tout comme vous voulez comprendre ce qui apparaît sur votre écran, votre ordinateur veut aussi comprendre ce qu'il va afficher à l'écran, parce que, que vous le croyiez ou non, l'ordinateur préférerait l'afficher correctement. Les ordinateurs sont peut-être stupides, mais ils sont toujours obéissants. Enfin… presque toujours.

Et c'est là qu'Unicode et XML viennent s'insérer. Unicode n'est rien d'autre qu'un ensemble d'idéogrammes pour que tous les ordinateurs du monde puissent se passer des notes les uns aux autres, et aient une chance de faire ce qu'il faut avec. Il se trouve que certains des idéogrammes d'Unicode viennent coïncider avec des jeux de caractères nationaux comme l'ASCII, mais personne ne va apprendre toutes ces langues. Non seulement personne ne va apprendre toutes ces langues, mais nul ne l'attend de vous. Ce n'est pas le but.

Voici le but. Le mois dernier j'étais en train de m'occuper de la page web de mon église qui vient juste de créer une congrégation chinoise. Elle a donc maintenant deux noms, dont l'un peut se représenter en ASCII, et l'autre non. Voici ce à quoi ressemble la page :

Si votre navigateur est assez récent, et si vous avez une fonte Unicode chargée, c'est ce que vous allez voir. Quelque chose d'important réside là.

Si j'avais réalisé ce document il y a un an, ce bloc de caractères chinois aurait probablement été une image au format GIF. Mais les images posent problème. On ne peut pas couper et coller des caractères à partir d'une image GIF. J'ai essayé assez souvent, et je suis certain que vous l'avez fait aussi. Et si j'avais voulu faire comme cela voici un an, j'aurais dû encore ajouter un niveau de complexité. J'aurais eu besoin de quelque chose comme un script CGI pour détecter si le navigateur comprend Unicode, faute de quoi ces caractères seraient apparus comme du bruit sur la page. Et on voit le plus souvent le bruit comme de la complexité inutile.

Revenons-en donc à la simplicité :

Nous utilisons les cercles pour représenter beaucoup de choses. Notre cercle d'amis. Une accolade, quand on le dessine sur le dos d'une enveloppe. Le cercle d'un anneau de mariage, qui représente l'amour éternel.

Pour passer du sublime au ridicule, nous avons aussi le classeur à anneaux, une sorte d'enfer pour de la paperasse inutile.

Des sphères lumineuses. Des trous noirs. Ou, au moins, leur horizon d'événements.

Un anneau pour tous les gouverner, et dans les ténèbres les lier.

Des boules de cristal. Des perles.

Des oignons. Des oignons-perles.

Les cercles figurent abondamment dans notre symbolisme. En particulier, en ajoutant diverses excroissances à des cercles, nous arrivons à représenter des notions assez compliquées avec des symboles simples. Ces symboles sont les ponts entre la simplicité et la complexité.

Voici un véritable diagramme Zen :

En fait, ce n'en est pas un ; le yinyang vient du Tao (ou Dao si vous ne pouvez pas prononcer un t non aspiré) qui est une très ancienne philosophie, plus vieille que le Zen d'au moins mille ans.

Revenons-en donc aux yins et yangs :

Le yinyang représente une philosophie dualiste, un peu comme La Force dans la guerre des étoiles. Vous savez en quoi La Force ressemble à un ruban adhésif ? La réponse est : parce que les deux ont un côté clair, un côté foncé, et ils unissent les différentes parties de l'univers. Personnellement, je ne suis pas dualiste, parce que je crois que la lumière est plus forte que l'obscurité. Cependant, l'idée de forces qui s'équilibrent est souvent utile, surtout aux ingénieurs. Quand l'un d'eux veut équilibrer de façon durable des forces, il va chercher son ruban adhésif.

Quand j'ai dessiné ce yinyang, je me suis demandé si je le faisais comme il faut. Ce serait dommage de le faire à l'envers, ou de travers, ou quelque chose comme ça.

Vous savez, l'orientation est plus importante qu'on imagine, les spécialistes de chimie organique l'appellent « chiralité ». Si vous prenez une molécule d'essence de menthe et que vous la retournez, le résultat est une molécule d'essence de cumin. Beurk. J'étais convaincu que je détestais le pain de seigle, jusqu'au moment où je me suis rendu compte que c'étaient les graines de cumin que je n'aimais pas.

Préférer une de ces saveurs ou l'autre, ce n'est qu'une question de goût, mais les médecins et les spécialistes en chimie organique vous diront que la chiralité peut parfois être une question de vie ou de mort. Ou de membres déformés, dans le cas de la Thalidomide. Les dyslexiques vous diront que la chiralité est très importante dans le cas des symboles visuels. Ce texte contient les lettres b et d, et p et q, et le nombre 6, et aussi le nombre 9. Vous pouvez voir un 6 et un 9 dans le yinyang, dans cette orientation.

Je me demande en fait si le yinyang n'est pas un peu comme la swastika : le sens dans lequel vous les dessinez détermine qui va se fâcher avec vous.

J'ai donc un peu cherché, sur le web bien sûr. En fait, le web est un exemple parfait d'environnement où « il y a plus d'une façon de faire ». Dans ce cas, toutes les façons sont possibles. On peut trouver le yinyang dans toutes les orientations. Je ne sais toujours pas si l'une d'entre elles est plus correcte que les autres.

Les gens d'A TYEDYE WORLD vendent des t-shirts teints[2]. Pour eux le yinyang a cet aspect :

Je suppose que si vous le voulez dans l'autre sens, il suffit de retourner le t-shirt de façon à ce qu'on en voie l'intérieur. Vous pourriez aussi le mettre à l'envers, mais vous vous feriez un peu remarquer.

Les gens du consortium Unicode sont convaincus qu'il a cette forme. Je ne sais pas s'ils ont raison, mais si ce n'est pas le cas, ce n'est pas très important. Ils l'ont publié de cette façon, et maintenant c'est comme ça, par définition.

Bien sûr, mon dictionnaire le montre à l'envers :

Revenons-en à Unicode. Unicode est plein de cercles. Beaucoup de jeux de caractères nationaux contenus dans Unicode utilisent le cercle, et pour nombre d'entre eux, il représente le chiffre 0. Voici le caractère Unicode numéro 3007 (hexadécimal). C'est le symbole idéographique de 0 :

Surprise, il ressemble à notre 0. Un point pour l'impérialisme culturel. En anglais, bien sûr, nous avons tendance à rétrécir notre 0 sur les côtés, pour le distinguer de la lettre O.

En bengali, ils le rétrécissent dans l'autre sens, pour des raisons similaires :

Je trouve intéressant que le monde contienne autant de représentations différentes pour rien. On pourrait en tirer bon nombre de blagues : « Beaucoup de bruit pour rien », ou « Rien ne peut arrêter une idée dont le moment est venu ». Voici quelque chose en rapport avec rien :

C'est le caractère universel pour « interdit ». En Unicode, il est classé comme un caractère composé.

Bien entendu, dans la culture Perl, presque rien n'est interdit. Je pense que le reste du monde contient déjà plein de bonnes interdictions, alors pourquoi en inventer de nouvelles ? Ceci s'applique à la programmation, mais aussi aux relations entre personnes. On m'a demandé plus d'une fois de bannir quelqu'un de la communauté Perl, parce qu'il avait été déplaisant d'une façon ou d'une autre. Jusqu'ici, j'ai toujours refusé, et je crois que j'ai eu raison. Du moins, au niveau pratique, cette façon de faire a fonctionné jusqu'ici. À chaque fois, soit l'individu en question a décidé de partir, soit il s'est calmé et a appris à s'arranger avec les autres de façon plus constructive. C'est étrange. Les gens comprennent instinctivement que la meilleure façon de faire des programmes qui communiquent entre eux est de les rendre stricts en ce qu'ils vont transmettre, et larges en ce qu'ils vont accepter. Ce qui est étrange, c'est que ces gens eux-mêmes ne sont pas prêts à être stricts en ce qu'ils disent et tolérants lorsqu'ils écoutent les autres. Cela semble pourtant évident, mais, à la place, on nous apprend à nous exprimer librement.

D'un autre côté, nous essayons d'encourager certaines vertus dans la communauté Perl. Comme l'apôtre Paul l'indique, personne ne fait de lois contre l'amour, la joie, la paix, la patience, la gentillesse, la bonté, la douceur, le contrôle de soi. Donc, plutôt que de nous efforcer à interdire les mauvaises choses, efforçons-nous de promouvoir les bonnes. Voici un caractère Unicode pour cela :

Bien sûr, si vous êtes un hippie, vous préférerez celui-ci :

Certains caractères Unicode à connotation positive sont moins évidents :

Voici le symbole pour le clic bilabial, un des symboles de l'Alphabet Phonétique International. Vous ne le connaissez peut-être pas, mais nombre d'entre vous font ce bruit régulièrement. Si vous voulez essayer, voici comment faire : vous joignez vos lèvres, et faites, avec la bouche, une espèce de son affriqué ingressif .

En anglais, nous notons ceci avec des X et des O au dos des enveloppes. Mais nous sommes témoins de la fin d'une époque. Avec l'arrivée en force du courrier électronique, l'habitude se perd d'envoyer des bisous et des accolades sur le dos des enveloppes. Et ça n'a pas vraiment le même effet dans une ligne d'en-tête de message électronique. Content-type: text/accolade&bisous.

Vous voyez, c'est tout aussi difficile de parfumer un message électronique. Content-type: text/parfumé. De quoi exciter l'imagination.

Voici encore des cercles qui représentent des choses compliquées. Celui-ci représente la Terre :

Et celui-là. Mars :

Et voici le symbole de Vénus :

À un certain moment j'ai travaillé pour le Jet Propulsion Laboratory, et j'ai un peu aidé à découvrir que Mars et Vénus sont très compliquées. Et, comme si les choses n'étaient pas assez compliquées comme ça, les anciens les compliquaient encore plus en réutilisant ces symboles pour représenter le mâle et la femelle. Pour eux les hommes venaient de Mars, et les femmes de Vénus. L'idée n'est pas nouvelle.

Voici encore un peu d'Histoire :

Si vous coupez un oignon, il ressemble à ça. Et si on le prend pour une métaphore du monde Perl, alors je dois être ce petit morceau d'oignon au milieu.

Autour de moi se trouvent certains des premiers adeptes de Perl, qui sont maintenant vénérés comme des héros de la révolution. Au fur et à mesure que le mouvement s'est élargi, de nouvelles couches ont été ajoutées. Vous pouvez aussi voir cela comme un atome, avec des couches d'électrons. Comme aucun atome connu ne contient autant de couches d'électrons, nous en resterons aux oignons.

Ce qu'il se passe avec l'oignon, c'est qu'il m'indique quelque chose sur ma propre importance, ou plutôt sur mon peu d'importance. C'est-à-dire que même si j'ai lancé tout ce mouvement, je ne suis qu'un petit morceau de l'oignon. Presque toute la masse se trouve sur les couches extérieures (c'est pourquoi j'aime voir apparaître des mouvements populaires, comme les Perl Mongers). Et je suis là, au milieu. On me reconnaît une importance historique, mais en fait les gens voient l'extérieur de l'oignon, pas l'intérieur. À moins qu'ils ne passent leur temps à découper des oignons en rondelles. Et même si c'est le cas, il y a plus d'oignon dans les grandes rondelles que dans les petites. Que ceux qui veulent être au centre en tirent une leçon. Ce n'est pas là que se trouve le véritable pouvoir. Pas dans ce mouvement, en tout cas. J'ai essayé de façonner ce mouvement selon un autre mouvement auquel j'appartiens, et le fondateur de ce mouvement disait : « Celui qui veut être le meilleur d'entre vous doit devenir le serviteur de tous ». De ceux qui étaient au centre avec lui, un l'a trahi, et les onze autres sont morts en martyrs. Mais je ne demande pas à mes amis de se donner en pâture aux lions, du moins pour l'instant.

Revenons-en aux motifs de croissance. Les perles naturelles croissent aussi par couches, autour d'un grain de sable qui irrite l'huître en question, qui forme de jolies couches autour. Ceci pourrait être une section d'une perle. C'est donc encore plus vrai avec les perles qu'avec les oignons : la couche externe est la plus importante. C'est la seule qui est visible. Ou, si la perle est en pleine croissance, c'est sur elle que va s'appuyer la couche suivante. Je vois bien que ceci me classe comme un simple irritant. Cette classification me va.

D'autres choses croissent avec le temps aussi. Ce sera peut-être plus clair si nous regardons les anneaux de croissance d'un arbre :

Si vous avez quelques notions de physique, vous saurez qu'un tube est presque aussi résistant qu'une barre solide du même diamètre, parce que la plus grande partie de la force se transmet par les couches externes. En fait, le centre d'un arbre peut être pourri, alors que l'arbre lui-même reste en bonne santé. Tous les ans, des gens économisent des milliards de dollars en programmant en Perl, mais presque toutes ces économies se réalisent dans les tranchées les plus extérieures. Même plus près du centre, plus d'efforts visent à connecter Perl avec d'autres choses, qu'à modifier Perl lui-même. Et je suis d'accord avec cette façon de faire. Le centre de Perl est en train de se stabiliser. Même avec des changements centraux comme le support de multiples fils d'exécution (threads en anglais) ou d'Unicode, nous faisons comme si nous ajoutions des modules d'extension, parce que c'est plus propre, et que personne ne se trouve forcé à utiliser les nouvelles fonctions s'il ne le souhaite pas.

Toute cette histoire d'anneaux de croissance est très bien pour parler du passé, mais qu'en est-il du futur ? Je n'ai pas de boule de cristal, mais j'ai une paire de jumelles. En voici le symbole habituel :

Ceci est, bien sûr, le méthode habituelle pour indiquer, au cinéma, que quelqu'un est en train de regarder à l'aide de jumelles. Je ne sais pas trop quoi mettre dans le champ de vision ; voyons donc ce qui se trouve de l'autre côté des jumelles :

Ceci pourrait aussi être un dessin de deux corps célestes en rotation l'un autour de l'autre :

Chacune de ces planètes provoque des marées sur l'autre. Les gens comprennent en général pourquoi il y a un renflement sur le côté qui fait face à l'autre planète, mais plus difficilement pourquoi il y en a un également sur le côté opposé. Cela se comprend mieux si l'on considère que la deuxième planète, en plus de tirer sur le renflement le plus proche de la première, est aussi en train de tirer sur le centre de la première, l'éloignant du renflement opposé.

Voici une bonne image de la relation entre la communauté du logiciel libre, et celle du logiciel commercial. Nous pourrions même donner des noms aux extrémités. Inventons donc quelques noms. On pourrait appeler le bout à gauche, euh, Richard. Et on pourrait appeler le bout à droite, euh, Bill.

Les renflements au milieu sont plus difficiles à nommer mais, pour une fois, on pourrait appeler Larry celui du milieu à gauche, et Tim celui du milieu à droite.

Ceci constitue encore, bien entendu, un cas de simplification excessive, parce que les gens et les organisations ne se trouvent pas à un seul point donné, mais ont tendance à bouger un peu. Quelques-uns réussissent à osciller entre un renflement et l'autre. À un moment ils sont pour une plus grande coopération entre les communautés du libre et du commercial, et juste après ils s'occupent à attaquer tout ce qui est commercial. Au moins nos hypothétiques Richard et Bill restent-ils cohérents.

Mais l'action se déroule au milieu.

C'est le milieu que de plus en plus de personnes observent, pour voir ce qui va se passer. En fait, cette image correspond plutôt à l'année dernière. Cette année elle ressemble plus à ceci :

Robert L. Forward a écrit un roman, en fait une série de romans, sur un endroit nommé Rocheworld. Comme on pourrait s'y attendre, il tire son nom d'un individu nommé Roche. C'est lui qui a défini la limite de Roche, qui prévoit que des planètes se désagrégeraient si elles se rapprochaient en deçà de cette limite. Il s'est avéré qu'il avait trop simplifié, et que si vous laissez vos planètes prendre des formes comme celle-ci, vous pouvez les rapprocher beaucoup plus, sans compromettre leur stabilité. Bien sûr, la force gravitationnelle totale qui s'applique sur ces points est très faible, mais elle est suffisante pour assurer la cohésion des planètes.

De façon similaire, les communautés des logiciels libres et commerciaux sont beaucoup plus proches maintenant que beaucoup de gens ne l'avaient cru possible, avec leurs calculs. Dans le monde de Roche, les planètes ne se touchaient pas, mais elles avaient l'atmosphère en commun. Si nous rendons l'image un peu plus floue par la magie de xpaint, nous obtenons ce genre de résultat :

On voit ici comment on peut prendre l'avion d'une planète à l'autre, mais pas y aller à pied. Cela rappelle les tunnels quantiques, où il est impossible d'aller d'un endroit à un autre, sauf par un saut qui ne parcourt pas les points intermédiaires.

Un énorme flux d'idées circule entre les communautés du logiciel libre et commercial. Ensemble, ces deux lobes internes constituent ce que l'on appelle maintenant le mouvement Open Source. Et quelque chose de tout nouveau : des ennemis d'antan qui se mettent d'accord sur un bien commun au-delà de tout modèle commercial. Et ce bien commun, c'est plus de logiciel de qualité, et plus vite. Et cela a été possible, parce que les gens se sont rendus compte de la puissance d'une idée simple : on n'a pas besoin de brevets sur le logiciel, ni de secrets commerciaux. Il nous faut juste encore un cercle :

Un cercle avec un « c » à l'intérieur. L'Open Source devra sa survie ou sa mort aux lois sur le copyright. Nous espérons qu'il survivra. Faisons donc tous ce que nous pouvons, pour que ce soit possible. Si vous avez l'occasion d'argumenter pour le copyright plutôt que les brevets, faites-le. Respectons aussi la loi du copyright, et les souhaits des auteurs, qu'ils aient ou non été exprimés à la satisfaction des avocats de l'un ou l'autre. Le « c » dans le cercle devrait aussi représenter le civisme.

Et quand nous pensons au civisme, nous pensons aussi aux villes, et aux choses claires et carrées. Voici donc un carré :

Et, en effet, les villes sont faites de carrés, et de rectangles. Nous les appelons des blocs, ou des pâtés de maisons, ou des places quand les architectes urbains laissent un bloc sans bâtiments.

Parfois, les bâtiments eux-mêmes sont carrés :

Mais, le plus souvent, ils ne le sont pas. De même, si vous regardez dans le livre d'Unicode, il y a nettement moins de carrés que de cercles. Je crois qu'il existe une raison fondamentale derrière cela. Quand nous construisons des bâtiments, et quand nous écrivons des caractères, nous les mettons dans une structure faite de lignes droites. En termes d'écriture, nous écrivons de gauche à droite, ou de droite à gauche, ou d'en haut en bas. Les cases abstraites, dans lesquelles nous mettons les caractères ou les bâtiments, sont plus ou moins carrées. Et les caractères, comme les bâtiments, ont tendance à disparaître visuellement, s'ils suivent les mêmes lignes que le texte lui-même. De nombreux caractères contiennent donc des lignes inclinées, tout comme l'on tente d'éviter que les gratte-ciels modernes ressemblent à des boîtes. Personne n'aime les gratte-ciels des années 60, parce qu'ils ressemblent trop à des boîtes. Les gens aiment que les choses se distinguent de leurs environnements.

C'est aussi pour cela que les différentes classes d'opérateurs et de variables en Perl se distinguent visuellement entre elles. Ce n'est que de la bonne ingénierie humaine, en ce qui me concerne. Je n'aime pas le fait que tous les opérateurs se ressemblent en Lisp. Je n'aime pas le fait que la plupart des plaques de rue se ressemblent en Europe. Et j'applaudis la décision de l'Allemagne, de faire des signes de stop différents de tous les autres. Bien sûr, c'est aussi une bonne chose pour nous américains ignorants qu'ils les ont fait comme des signes de stop américains. Un point de plus pour l'impérialisme culturel.

En repentance de l'impérialisme culturel américain, je vais indiquer encore un avantage des systèmes d'écriture idéographiques. Comme les idéogrammes s'écrivent dans des cases carrées, on peut tout aussi bien les écrire horizontalement que verticalement. Et vice-versa. Nos caractères à taille variable n'ont pas cette propriété. Surtout pas avec une police comme Helvetica, où l'on a du mal a distinguer les l des i même lorsqu'ils sont les uns à côté des autres. Si vous les alignez verticalement, le résultat sera juste une ligne cassée. Les chinois, les japonais et les coréens reviennent au score !

Pour conclure, je voudrais parler de triangles. En voici un :

Les triangles sont aux cercles ce que les pointes de flèches sont aux cibles. Voici une cible :

Je suis sûr de ne pas m'être trompé cette fois-ci. J'ai regardé sur le web. Et surtout, je me suis arrêté dès que j'en ai trouvé une.

En fait, ceci est le caractère Unicode nommé « œil de bœuf ».

Je ne suis pas tout-à-fait sûr de ce qu'il est censé signifier, mais ce n'est pas un problème. Il suffit de lui inventer une signification.

J'ai tiré un bon nombre de flèches dans cet essai, et je ne sais pas si j'ai atteint des cibles ou pas. Nous mettons des triangles à la pointe des flèches parce qu'ils sont pointus. Nous associons les triangles à la douleur, surtout si nous leur marchons dessus. Les angles du triangle suggèrent la difficulté d'escalader une montagne :

En même temps, les impressions peuvent être trompeuses. Un triangle représente aussi une route plate qui s'éloigne vers l'horizon :

Ce n'est qu'une question de perspective. Vous pouvez choisir votre champ de vision en choisissant où vous placer. Je ne peux pas prédire si le chemin que prendra Perl sera plein de bosses ou pas, mais je peux prédire que, plus nous arrivons à voir de perspectives, mieux nous arriverons à choisir les perspectives que nous préférons. Et c'est, après tout, le travail du créateur d'un langage : étudier le problème depuis de multiples perspectives, être juste un peu omniscient, pour que le plus de monde possible en tire profit. Je fais un peu de triangulation, et j'organise le territoire. C'est mon travail. Si ma carte vous mène là où vous souhaitez vous rendre j'en serai heureux.

Si vous prenez une section de l'oignon qu'est Perl, il ressemble un peu à un triangle. Mettez-le sur le côté, et vous avez un graphique de la croissance de Perl pendant les dix dernières années.

Et c'est très bien comme ça. Ce graphique n'est que virtuel, bien sûr. Je n'ai aucune façon de mesurer la véritable croissance de Perl. Mais il est évidemment encore en train de croître. Nous faisons beaucoup de choses comme il faut, et en grande partie, il faut juste que nous continuions à faire ce que nous faisons.

Supposons maintenant que l'on rétrécisse ce triangle, et qu'on étende le graphique pour montrer toute la durée de vie de Perl. Nous n'avons vraiment aucune idée de ce que peut être cette durée.

Il est difficile de prévoir quels vont être les facteurs décisifs pour cela. Mais je dois vous dire que je n'évalue pas le succès de Perl en en fonction du nombre de personnes qui m'apprécient. Quand je trace ces courbes, je compte les personnes ainsi aidées.

Je peux vous dire que je crois que la différence entre les courbes 1 et 2 peut dépendre de l'addition de tous les utilisateurs potentiels de MS-Windows, et tous les problèmes qu'ils doivent résoudre, qui sont nombreux. Ce n'est pas par hasard que nous venons de publier une boîte à outils Perl pour Win32.

Et je peux aussi vous dire que la différence entre les courbes 1 et 3 peut dépendre de l'addition de tous les utilisateurs internationaux qui pourraient bénéficier de Perl. Ce n'est pas par hasard que la dernière version en développement de Perl vous permet de nommer vos variables en utilisant n'importe quels caractères alphanumériques en Unicode, dont les idéogrammes. Il y a un milliard de gens en Chine. Et je veux qu'ils puissent se passer des notes écrites en Perl, et aussi écrire des poèmes en Perl.

Telle est ma vision du futur, la perspective que je choisis.

J'ai commencé en parlant des vertus du programmeur : la paresse, l'impatience, et l'orgueil.

Ce sont des vertus de passion, et aussi des vertus individuelles. Ce ne sont pas, en revanche, des vertus pour une communauté. Les vertus d'une communauté sont opposées : la diligence, la patience, et l'humilité.

Elles ne sont pas vraiment opposées, parce vous pouvez toutes les pratiquer en même temps. C'est une question de perspective. Ce sont ces vertus qui nous menèrent jusqu'ici. Et ce sont ces vertus qui vont amener notre communauté vers le futur, si nous ne les abandonnons pas.

Avant tout, il faut que nous restions sur notre chemin. C'est ce que Friedrich Nietzsche appelait une « longue obéissance dans une même direction », ce qui constitue un bon slogan. Mais j'aime la citation complète aussi :

« Le plus essentiel « sur terre comme aux cieux » est… d'avoir une longue obéissance dans une même direction ; de là en sort, et en est toujours sorti, à long terme, quelque chose qui rend la vie bonne à vivre. »

Et là nous avons bouclé la boucle, pour en revenir au cercle. Voici la porte d'entrée de la maison de Bilbo Baggins (Bilbon Sacquet). Un chemin naît devant cette porte, et Bilbo a écrit un poème :

 

Le chemin continue et s'éloigne 
de la porte d'où il est parti. 
Bien loin d'ici il arrive à présent, 
et je dois le suivre, si je le peux, 
de mes pieds impatients, 
jusqu'à rejoindre une voie plus large, 
où confluent des routes et des courses. 
Pour aller où ? Je ne saurais le dire. 
   

 
--J.R.R. Tolkien, The Hobbit 

Notes

[1]

Pékinois, Mandarin ...

[2]

N.d.T. : Tie-dyed c'est une sorte de batik. Les gens de A TYEDYE WORLD nouent des T-shirts, les teignent, les dénouent et les vendent (des Tao-shirts en ce qui nous concerne)