stallman-kth.html (122101B)
1 <!--#set var="ENGLISH_PAGE" value="/philosophy/stallman-kth.en.html" --> 2 3 <!--#include virtual="/server/header.fr.html" --> 4 <!-- Parent-Version: 1.96 --> 5 <!-- This page is derived from /server/standards/boilerplate.html --> 6 <!--#set var="TAGS" value="speeches" --> 7 <!--#set var="DISABLE_TOP_ADDENDUM" value="yes" --> 8 9 <!-- This file is automatically generated by GNUnited Nations! --> 10 <title>Conférence de RMS au KTH (Suède, 1986) - Projet GNU - Free Software 11 Foundation</title> 12 <style type="text/css" media="screen"><!-- 13 #content span { font-style: italic; color: #505050; } 14 --> 15 </style> 16 17 <!--#include virtual="/philosophy/po/stallman-kth.translist" --> 18 <!--#include virtual="/server/banner.fr.html" --> 19 <!--#include virtual="/philosophy/ph-breadcrumb.fr.html" --> 20 <!--GNUN: OUT-OF-DATE NOTICE--> 21 <!--#include virtual="/server/top-addendum.fr.html" --> 22 <div class="article reduced-width"> 23 <h2>Conférence de RMS au KTH (Suède, 1986)</h2> 24 25 <div class="infobox"> 26 <p>Transcription d'une conférence de Richard Stallman au <i>Kungliga Tekniska 27 Högskolan</i> (Institiut royal de technologie), à Stockholm (Suède), 28 organisée par l'association des étudiants, <i>Datorföreningen Stacken</i>, 29 le 30 octobre 1986. 30 </p> 31 </div> 32 <hr class="thin" /> 33 34 <div class="introduction"> 35 <p><i>[Note : Ce texte est une transcription légèrement révisée de la 36 conférence. La version originale contient des faux départs ainsi que des 37 locutions naturelles en anglais parlé mais qui paraissent bizarres dans une 38 publication. Il n'est pas évident de la transformer en anglais écrit correct 39 sans faire violence au discours original.]</i></p> 40 </div> 41 42 <p><b>RMS :</b> Il semble qu'il y ait trois choses dont les gens voudraient que 43 je parle. Tout d'abord, j'ai pensé que le meilleur sujet ici pour un club de 44 hackers était de dire comment ça se passait au <abbr title="Massachusetts 45 Institute of Technology">MIT</abbr> autrefois, ce qui faisait du labo 46 d'intelligence artificielle (labo d'IA) un endroit si particulier. Mais d'un 47 autre côté on m'a suggéré, étant donné que les personnes qui sont ici ne 48 sont pas celles qui étaient aux conférences de lundi et mardi, de raconter 49 ce qui se passe dans le projet GNU, et de dire pourquoi le logiciel et 50 l'information ne peuvent pas être considérés comme des propriétés. Cela fait 51 un total de trois conférences. Et puisque deux de ces sujets prennent chacun 52 une heure, nous y sommes pour un bon moment. Aussi je me suis dit que je 53 pourrais éventuellement diviser la conférence en trois parties. Comme ça les 54 gens pourraient sortir quand ça ne les intéresse pas. Une fois arrivé à la 55 fin d'un sujet, je peux signaler que c'est fini, les gens peuvent sortir et 56 je peux envoyer Jan Rynning dehors pour appeler les autres.</p> 57 58 <p><span>[Quelqu'un : « <i>Janne, han trenger ingen mike.</i> » (Janne, il n'a 59 pas besoin de micro.)]</span></p> 60 61 <p>Jan, tu es prêt à courir chercher les autres ?</p> 62 63 <p><b>JMR :</b> Je suis à la recherche d'un micro et quelqu'un me dit qu'il est 64 dans ce casier fermé à clé.</p> 65 66 <p><b>RMS :</b> Autrefois au labo d'IA, on l'aurait ouvert à coup de masse et 67 la porte défoncée aurait servi de leçon à celui qui avait osé mettre sous 68 clé quelque chose dont tout le monde avait besoin. Mais heureusement j'ai 69 étudié le chant bulgare, donc je peux très bien me débrouiller sans micro.</p> 70 71 <p>Bon, est-ce que je dois vous signaler les différentes parties de la 72 conférence ou vous avez juste envie de la suivre jusqu'au bout ? 73 <span>[Réponse : Yeaaah !]</span></p> 74 75 <p>Quand j'ai commencé à programmer, c'était en 1969, dans un laboratoire d'IBM 76 à New York. Ensuite, je suis allé dans une école qui avait un département 77 d'informatique probablement semblable à la plupart des autres. Il y avait 78 quelques professeurs responsables de ce qu'on était censé y faire et il y 79 avait des gens qui décidaient de qui pouvait se servir de quoi. Il y avait 80 pénurie de terminaux pour la plupart d'entre nous. Or pas mal de professeurs 81 en avaient un personnellement dans leur bureau, ce qui était du gaspillage, 82 mais typique de leur attitude. Quand j'ai visité le labo d'intelligence 83 artificielle au MIT, j'ai trouvé une atmosphère qui était une bouffée d'air 84 pur par rapport à ça. Par exemple : là, on considérait que les terminaux 85 étaient à tout le monde et les professeurs qui les enfermaient à clef dans 86 leurs bureaux couraient le risque de voir leurs portes défoncées. On m'a 87 montré une fois un chariot avec un gros bloc de fer dessus. C'était celui 88 qui avait été utilisé pour défoncer la porte du bureau d'un des professeurs 89 quand il avait eu le culot d'y enfermer un terminal. Il y en avait très peu 90 à cette époque. Il y avait probablement quelque chose comme cinq terminaux à 91 écran pour tout le système ; aussi, si l'un d'entre eux était sous clé, 92 c'était une vraie catastrophe.</p> 93 94 <p>Dans les années qui ont suivi, j'ai été guidé par ces idées et il m'est 95 souvent arrivé de crapahuter au-dessus des plafonds ou sous les planchers 96 pour déverrouiller les salles qui contenaient des machines dont les gens 97 avaient besoin. Et je laissais généralement un mot qui expliquait aux gens 98 qu'il ne fallait pas fermer la porte à clé de manière aussi égoïste. Les 99 gens qui fermaient la porte à clé, au fond, ne pensaient qu'à eux. Ils 100 avaient une raison de le faire, bien sûr. Il y avait un truc qui, 101 pensaient-ils, pouvait tenter les voleurs, et ils voulaient l'enfermer à 102 clef. Mais ils ne s'occupaient pas des autres, que cela gênait de ne pas 103 avoir accès au reste du matériel qui était dans la même salle. Presque à 104 chaque fois que cela s'est produit – après avoir porté à leur attention 105 qu'il ne leur appartenait pas de décider du verrouillage de la porte – ils 106 étaient capables de trouver un compromis. Mais le problème, c'est que les 107 gens ne prennent pas la peine d'y penser. Ils se disent : « Cette salle est 108 à moi, je peux la fermer à clé, que les autres aillent au diable ! » C'est 109 précisément cette attitude que nous devons leur désapprendre.</p> 110 111 <p>Mais cette habitude de déverrouiller les portes n'était pas un comportement 112 isolé, il faisait partie d'une façon de vivre à part entière. Les hackers du 113 labo d'IA étaient vraiment passionnés par l'écriture de bons programmes, de 114 programmes intéressants. Ils étaient à ce point impatients de faire avancer 115 le travail qu'ils ne supportaient pas la mise sous clé des terminaux, ni un 116 tas d'autres comportements qui faisaient obstacle au travail utile. C'est la 117 différence entre des personnes très motivées qui se préoccupent vraiment de 118 ce qu'elles sont en train de faire et des personnes qui prennent ça juste 119 pour un boulot. Si c'est juste un boulot, qu'importe si les gens qui vous 120 ont embauché sont assez stupides pour vous obliger à attendre sans rien 121 faire. C'est leur temps, leur argent, mais pas grand-chose ne se fait dans 122 un endroit comme ça ; ce n'est pas drôle d'être dans un endroit comme ça.</p> 123 124 <p>Une autre chose que nous n'avions pas au labo d'IA, c'était la protection 125 des fichiers. Il n'y avait aucune sécurité sur l'ordinateur, et c'était une 126 décision mûrement réfléchie. Les hackers qui ont écrit ITS<a 127 id="TransNote1-rev" href="#TransNote1"><sup>1</sup></a> ont jugé que la 128 protection des fichiers n'était qu'un moyen comme un autre, pour un 129 administrateur système autoproclamé, d'avoir du pouvoir sur tout le 130 monde. Ils ont refusé que quiconque puisse avoir du pouvoir sur eux de cette 131 façon. Aussi, ils n'ont pas implémenté ce genre de dispositif. Résultat, 132 chaque fois que quelque chose était cassé dans le système, vous pouviez 133 toujours le réparer. Vous n'étiez jamais obligé de rester planté là, 134 frustré, parce qu'il n'y avait RIEN À FAIRE, alors que vous saviez 135 parfaitement quoi faire mais que quelqu'un avait décidé de ne pas vous faire 136 confiance. Vous n'étiez pas obligé de laisser tomber et de rentrer à la 137 maison en attendant le lendemain matin que quelqu'un vienne réparer le 138 système, alors que vous saviez dix fois mieux que lui ce qu'il fallait 139 faire.</p> 140 141 <p>Et nous ne laissions pas non plus de professeur, ni de patron, décider quel 142 devait être notre prochain travail, parce que notre travail c'était 143 d'améliorer le système ! Nous parlions aux utilisateurs évidemment ; si vous 144 ne faites pas ça, vous ne pouvez pas savoir ce dont ils ont besoin. Mais 145 ensuite, nous étions les seuls, les plus aptes à savoir quelles sortes 146 d'améliorations étaient possibles. Et nous discutions toujours entre nous 147 pour savoir comment nous voulions voir le système évoluer, quelles idées 148 astucieuses nous avions vues dans d'autres systèmes et pourrions 149 utiliser. Ainsi au final, nous avions une anarchie qui fonctionnait sans 150 à-coups ; d'après mon expérience là-bas, je suis convaincu que c'est la 151 meilleure façon de vivre.</p> 152 153 <p>Malheureusement le labo d'IA, tel qu'il était à cette époque, a été 154 détruit. Pendant des années nous avions craint qu'il ne soit détruit par un 155 autre labo du MIT, le labo d'informatique, dont le directeur était le genre 156 de type à construire un empire. Il faisait tout ce qu'il pouvait pour avoir 157 une promotion au MIT et faire grossir son organisation. Il essayait 158 continuellement d'annexer le labo d'IA. Personne ne voulait faire les choses 159 à sa manière parce qu'il croyait que les gens devaient obéir aux ordres et 160 d'autres choses dans le style.</p> 161 162 <p>Mais ce danger, nous avons réussi à le repousser pour être en fin de compte 163 détruits par une chose que nous n'avions pas prévue : l'esprit 164 commercial. Vers le début des années 80, les hackers ont soudain compris que 165 ce qu'ils faisaient avait désormais un intérêt commercial. Il était possible 166 de devenir riche en travaillant pour une société privée. Il leur suffisait 167 de cesser de partager leur travail avec le reste du monde et de détruire le 168 labo d'IA du MIT. Et c'est ce qu'ils ont fait, malgré tous mes efforts pour 169 les en empêcher.</p> 170 171 <p>Presque tous les programmeurs compétents du labo d'IA, excepté moi, ont été 172 embauchés ailleurs et cela a causé bien plus qu'un changement 173 provisoire. Cela a causé une métamorphose définitive, parce que ça a brisé 174 la continuité de la culture des hackers. Les nouveaux hackers sont toujours 175 attirés par les anciens. Il y avait là les ordinateurs les plus amusants et 176 les gens qui faisaient les choses les plus intéressantes avec. Et aussi une 177 atmosphère qu'il était très amusant de partager. Une fois cela disparu, il 178 ne restait rien pour attirer les nouveaux venus. Ils ont donc cessé 179 d'arriver. Il n'y avait plus personne pour les inspirer, personne pour leur 180 enseigner les traditions. Qui plus est, personne de qui apprendre à bien 181 programmer. Avec juste un tas de professeurs et de doctorants qui ne savent 182 pas vraiment comment faire marcher un programme, on ne peut pas apprendre à 183 faire fonctionner de bons programmes. Ainsi le labo d'IA du MIT que j'aimais 184 a disparu. Et après deux années passées à me battre contre les gens qui 185 avaient fait ça, pour essayer de les punir, j'ai décidé de me consacrer à 186 créer une nouvelle communauté ayant cet état d'esprit.</p> 187 188 <p>Mais un des problèmes auxquels j'ai dû faire face était celui des logiciels 189 <a 190 href="/philosophy/categories.html#ProprietarySoftware">propriétaires</a>.<a 191 id="TransNote2-rev" href="#TransNote2"><sup>2</sup></a> Par exemple, ce qui 192 s'est passé au labo une fois les hackers partis, c'est que les machines et 193 les logiciels que nous avions développés ne pouvaient plus être 194 maintenus. Bien sûr Les logiciels fonctionnaient et continuaient de 195 fonctionner si personne ne les modifiait, mais pas les machines. Les 196 machines tombaient en panne et personne ne pouvait les réparer, et ensuite 197 on les mettait au rebut. Autrefois, il y avait bien des contrats d'entretien 198 pour les machines, mais pour l'essentiel c'était du bidon. C'était une 199 manière d'obtenir des pièces détachées une fois que les hackers experts du 200 labo d'IA avaient réparé. Parce que si on avait attendu que les techniciens 201 de maintenance le fassent, ça aurait pris des jours. Et on ne voulait pas de 202 ça. On voulait que ça marche. Aussi, les gens qui savaient faire ce genre de 203 chose réparaient très vite, puisqu'ils étaient dix fois plus compétents que 204 n'importe quel technicien. Ils pouvaient faire un bien meilleur travail. Et 205 une fois qu'ils avaient démonté les circuits défectueux, il leur suffisait 206 de les mettre de côté et d'appeler le technicien : « Reprenez-les et 207 ramenez-nous-en des neufs. »</p> 208 209 <p>À la belle époque, nos hackers avaient également l'habitude de modifier les 210 machines qui venaient de Digital. Par exemple, ils ont construit des boîtes 211 de radiomessagerie <i>[paging]</i> pour les PDP-10. De nos jours, je pense 212 qu'il y en a certains ici [à Stockholm] qui le font aussi. Mais ce n'était 213 pas courant en ce temps-là. Et encore avant, au début des années 60, les 214 gens modifiaient les ordinateurs en ajoutant toutes sortes de nouvelles 215 instructions et de nouvelles fonctionnalités sophistiquées en temps 216 partagé. De sorte que le PDP-1 du MIT, avant qu'il ne parte à la retraite 217 dans les années 70, avait quelque chose comme deux fois plus d'instructions 218 qu'il n'en avait lors de sa livraison par Digital au début des années 60. Il 219 avait des fonctionnalités spéciales complétant l'ordonnanceur 220 <i>[scheduler]</i> matériel, d'étranges fonctionnalités de mappage de la 221 mémoire qui permettaient d'affecter individuellement chaque périphérique 222 matériel à une tâche en temps partagé, et des tas d'autres trucs dont j'ai à 223 peine entendu parler. Je pense qu'ils ont également rajouté une sorte de 224 mode d'adressage étendu, des registres d'indexation ainsi que l'adressage 225 indirect ; en somme ils ont transformé une toute petite machine en une 226 machine à peu près correcte.</p> 227 228 <p>Je suppose que c'est l'un des inconvénients de la <abbr title="Very Large 229 Scale Integration">VLSI</abbr> (intégration à très grande échelle) : il 230 n'est plus vraiment pratique d'ajouter des instructions sur vos machines.</p> 231 232 <p>Le PDP-1 avait une caractéristique très intéressante : il était possible 233 d'écrire des programmes intéressants avec un très petit nombre 234 d'instructions, moins qu'aucune autre machine construite depuis. Je crois 235 par exemple que le célèbre hack d'affichage <i>munching squares</i> (lit. : 236 grignotage de carrés) – qui traçait des carrés qui grandissaient puis se 237 brisaient en une multitude de petits carrés qui devenaient plus grands et se 238 brisaient en petits carrés – cela a été écrit en quelque chose comme cinq 239 instructions sur le PDP-1. Et beaucoup d'autres beaux programmes d'affichage 240 ont pu être écrits ainsi avec un très petit nombre d'instructions.</p> 241 242 <p>Voilà donc ce qu'était le labo d'IA. Mais c'était quoi la culture des 243 hackers, hormis leur anarchisme ? Au temps du PDP-1, la machine ne pouvait 244 être utilisée que par une personne à la fois, du moins au début. Plusieurs 245 années après, ils ont écrit un système fonctionnant en temps partagé et ils 246 ont rajouté pas mal de matériel pour ça. Mais au début, on pouvait seulement 247 s'inscrire pour une période donnée. Naturellement les professeurs et les 248 étudiants qui travaillaient sur des projets officiels venaient toujours 249 pendant la journée. Alors, les gens qui voulaient avoir plus de temps 250 s'inscrivaient pour la nuit quand il y avait moins d'affluence. Voilà 251 l'origine de la coutume hacker de travailler la nuit. Même lorsqu'il y eut 252 le temps partagé, il était toujours plus facile d'avoir du temps la nuit, on 253 pouvait avoir plus de cycles parce qu'il y avait peu d'utilisateurs. Aussi 254 ceux qui voulaient abattre beaucoup de travail continuaient à venir la 255 nuit. Mais ça a commencé à changer parce qu'on n'était pas seul, il y avait 256 là quelques autres hackers ; ainsi c'est devenu un phénomène social. Si vous 257 entriez pendant la journée, vous pouviez vous attendre à trouver des 258 professeurs et des étudiants qui n'étaient pas des fans de la machine, alors 259 que si vous veniez la nuit vous trouviez des hackers. Par conséquent, les 260 hackers sont venus la nuit pour partager leur culture. Et ils ont développé 261 d'autres traditions, comme d'aller se ravitailler au Chinois à trois heures 262 du matin. Je me rappelle avoir vu beaucoup de levers de soleil alors que je 263 revenais en voiture de Chinatown. C'était tellement beau de voir le lever de 264 soleil, c'est une heure tellement calme de la journée. C'est une heure 265 merveilleuse pour se préparer à aller dormir. Il est si agréable de rentrer 266 à pied chez soi dans une lumière qui commence juste à poindre avec les 267 oiseaux qui se mettent à gazouiller. On a une sensation de douce 268 satisfaction, de tranquillité, en pensant au travail accompli pendant la 269 nuit.</p> 270 271 <p>Une autre tradition que nous avons initiée était celle d'avoir des endroits 272 pour dormir au labo. Depuis le jour où j'y suis entré, il y a toujours eu au 273 moins un lit. Et j'ai probablement habité au labo un peu plus longtemps que 274 la plupart des autres car, tous les ans ou tous les deux ans, pour une 275 raison ou une autre, je n'avais pas d'appartement et j'y habitais quelques 276 mois. Et j'ai toujours trouvé que c'était très confortable, sans compter que 277 c'était sympa et frais en été. Mais il n'était pas rare du tout de tomber 278 sur des gens qui s'étaient endormis au labo, toujours à cause de leur 279 enthousiasme : vous restez le plus longtemps possible à hacker parce que 280 vous ne voulez pas vous arrêter, et une fois que vous êtes complètement 281 épuisé, vous escaladez la surface horizontale souple la plus proche. Une 282 ambiance vraiment sans cérémonie.</p> 283 284 <p>Mais quand les hackers sont tous partis du labo, ça a causé un changement 285 démographique parce que les professeurs et les étudiants qui n'étaient pas 286 vraiment des fans de la machine étaient aussi nombreux qu'auparavant ; 287 maintenant ils représentaient la majorité. Et ils ont vraiment eu peur. Sans 288 hacker pour entretenir le système, ils se sont dit : « Ça va être un 289 désastre, il nous faut du logiciel commercial. Comme ça, nous pourrons 290 compter sur la maintenance de l'entreprise. » La suite prouva qu'ils avaient 291 absolument tort, mais c'est ce qu'ils ont fait.</p> 292 293 <p>C'était exactement au moment où ils devaient recevoir un nouvel ordinateur, 294 le KL-10, et la question s'est alors posée : faut-il qu'il fonctionne avec 295 ITS ou bien Twenex, le système de Digital ? Une fois les hackers partis 296 – ils auraient sans doute poussé à utiliser le leur – les universitaires ont 297 choisi d'utiliser le logiciel commercial et cela eut plusieurs effets 298 immédiats. Certains n'ont pas été vraiment immédiats, mais ils en ont 299 découlé inévitablement comme l'aurait prévu n'importe qui avec un peu de 300 réflexion.</p> 301 302 <p>Le premier problème était que ce logiciel était beaucoup plus mal écrit et 303 plus difficile à comprendre qu'ITS, rendant donc plus difficiles les 304 modifications nécessaires. L'autre était que le logiciel était sécurisé, ce 305 qui eut pour effet inévitable de diminuer la collaboration entre les uns et 306 les autres. Dans le passé, sur ITS, nous trouvions souhaitable d'avoir accès 307 à tous les fichiers et de pouvoir modifier n'importe lequel, parce que nous 308 avions des raisons pour cela. Je me rappelle un scandale intéressant où 309 quelqu'un a envoyé une demande d'assistance en utilisant Macsyma. Macsyma 310 est un programme d'algèbre symbolique qui a été développé au MIT. Il a 311 envoyé une demande d'assistance à l'une des personnes qui travaillait dessus 312 et a obtenu une réponse quelques heures plus tard de la part de quelqu'un 313 d'autre. Il était horrifié. Il a envoyé le message suivant : « Untel doit 314 lire votre courrier, les fichiers de courrier ne sont peut-être pas 315 correctement protégés sur votre système ? » – « Naturellement, aucun dossier 316 n'est protégé sur notre système. Où est le problème ? Vous avez obtenu votre 317 réponse plus tôt, de quoi vous plaignez-vous ? Évidemment nous lisons le 318 courrier de tout le monde, comme ça nous pouvons tomber sur des personnes 319 comme vous et les aider. » Certains ne connaissent pas leur bonheur.</p> 320 321 <p>Bien sûr, Twenex n'est pas seulement muni d'une sécurité – et par défaut la 322 sécurité est activée – mais il est également conçu en partant de l'hypothèse 323 que la sécurité est active. Or il y a un bon nombre de trucs très faciles à 324 faire qui peuvent causer pas mal de dégâts et la seule chose qui vous 325 empêche de les faire par accident, c'est la sécurité. Sur ITS, nous avions 326 développé d'autres moyens d'éviter que les gens fassent ces trucs par 327 accident, mais sur Twenex on ne les avait pas, étant donné que des mesures 328 de sécurité strictes étaient censées être opérationnelles et que les chefs 329 étaient les seuls à avoir la possibilité de faire des erreurs. Donc, ils 330 n'avaient mis aucun autre mécanisme de sécurité pour éviter les 331 accidents. Le résultat, c'est qu'on ne pouvait plus se contenter de 332 désactiver la sécurité de Twenex pour avoir ce qu'on voulait. Et il n'y 333 avait plus les hackers pour faire les changements nécessaires à 334 l'introduction de ces autres mécanismes. Aussi les gens ont-ils été obligés 335 de travailler avec la sécurité. Et la machine était là depuis six mois à peu 336 près, quand il a commencé à y avoir quelques « coups d'État ». Au début nous 337 avons supposé que tous ceux qui travaillaient pour le labo allaient avoir le 338 <i>wheel bit</i><a id="TransNote3-rev" href="#TransNote3"><sup>3</sup></a> 339 qui leur donnerait les pleins pouvoirs pour désactiver la sécurité, mais 340 certains jours vous veniez dans l'après-midi pour découvrir que les <i>wheel 341 bits</i> d'à peu près tout le monde avaient été supprimés.</p> 342 343 <p>Quand je m'en suis rendu compte, j'ai rectifié la situation. La première 344 fois, il se trouve que je connaissais le mot de passe d'un des membres de 345 l'élite et que j'ai pu l'utiliser pour redonner à chacun ses privilèges. La 346 deuxième fois, il avait changé son mot de passe, il avait changé de 347 relations sociales, il appartenait désormais au parti aristocrate. Alors 348 j'ai dû arrêter la machine et utiliser le système DDT<a id="TransNote4-rev" 349 href="#TransNote4"><sup>4</sup></a> en temps non partagé pour fouiller un 350 peu partout. J'ai fouillé dans le moniteur pendant un moment et j'ai compris 351 à la fin comment faire pour qu'il se charge et que je puisse le patcher. De 352 sorte que j'ai pu bloquer le contrôle des mots de passe et ainsi redonner 353 leur <i>wheel bit</i> à plein de gens. Puis j'ai laissé un message 354 système. Le nom de cette machine était OZ et le message disait : « Il y a eu 355 une nouvelle tentative de prise du pouvoir, jusqu'ici les forces 356 aristocratiques sont battues – <i>Radio Free OZ</i> (la radio libre d'Oz). » 357 Plus tard j'ai découvert que <i>Radio Free OZ</i> est l'une des expressions 358 utilisées par le <i>Firesign Theater</i>. Je ne le savais pas à ce 359 moment-là.</p> 360 361 <p>Mais petit à petit les choses ont empiré – c'est juste la façon dont le 362 système avait été construit qui forçait les gens à exiger de plus en plus de 363 sécurité – jusqu'à ce que, finalement, je sois obligé d'arrêter d'utiliser 364 la machine parce que je refusais d'avoir un mot de passe secret. Depuis que 365 les mots de passe étaient apparus pour la première fois au labo d'IA du MIT, 366 j'en étais venu à la conclusion que pour respecter mes convictions, pour 367 agir en accord avec mes convictions, il ne devait y avoir aucun mot de 368 passe. Je dois toujours veiller à avoir un mot de passe aussi évident que 369 possible et le dire à tout le monde. Puisque je ne crois pas qu'il soit 370 vraiment souhaitable d'avoir une sécurité sur un ordinateur, je ne dois pas 371 aider au maintien du régime de sécurité. Sur les systèmes qui le permettent, 372 j'utilise un « mot de passe vide » et sur des systèmes où cela n'est pas 373 permis (où cela signifie que vous ne pouvez pas ouvrir de session de 374 l'extérieur, des choses comme ça), j'utilise mon nom d'utilisateur comme mot 375 de passe. C'est aussi évident que possible. Et quand les gens me font 376 remarquer que de cette manière on peut ouvrir une session sous mon nom, je 377 réponds : « Oui, c'est ça l'idée, quelqu'un pourrait avoir besoin de 378 certaines données sur cette machine. Je veux m'assurer qu'elles ne se feront 379 pas avoir par la sécurité. »</p> 380 381 <p>Et une autre chose que je fais toujours, c'est de désactiver la protection 382 sur mon répertoire et mes dossiers. Parce que de temps en temps j'y stocke 383 des programmes utiles et s'il y a un bogue je veux que les gens puissent le 384 corriger.</p> 385 386 <p>Mais cette machine n'avait pas non plus été conçue pour gérer un phénomène 387 appelé « tourisme ». Le tourisme était une très vieille tradition du labo 388 d'IA qui allait avec nos autres conceptions de l'anarchie. Elle disait que 389 nous devions laisser les gens de l'extérieur utiliser la machine. À l'époque 390 où n'importe qui pouvait venir se connecter à ce qui lui plaisait, c'était 391 automatique : comme visiteur, vous pouviez ouvrir une session pour 392 travailler. Plus tard nous avons plus ou moins formalisé ça comme une 393 tradition établie, particulièrement quand l'Arpanet s'est mis en place et 394 que les gens ont commencé à se connecter à nos machines à partir de 395 n'importe quel coin du pays. Ce que nous espérions, c'était que ces 396 personnes apprendraient vraiment à programmer et qu'elles commenceraient à 397 modifier le système d'exploitation. Si vous disiez ça à un administrateur 398 système n'importe où ailleurs, il serait horrifié. Si vous lui proposiez 399 l'idée que n'importe quel étranger puisse utiliser la machine, il 400 répondrait : « Et s'il commence à modifier nos programmes ? » Mais pour 401 nous, si un étranger commençait à modifier les programmes, cela signifiait 402 qu'il montrait un intérêt réel à devenir un membre contributif de la 403 communauté. Nous encouragions toujours les gens à le faire ; à commencer, 404 naturellement, par écrire de nouveaux utilitaires, des petits. Nous jetions 405 un œil sur ce qu'ils avaient fait et nous le corrigions. Ils en arrivaient 406 alors à ajouter des fonctionnalités à de grands utilitaires existants. Et ce 407 sont des programmes qui existent depuis une dizaine ou peut-être une 408 quinzaine d'années, et grandissent petit à petit à mesure que les artisans, 409 l'un après l'autre, ajoutent de nouvelles fonctionnalités.</p> 410 411 <p>C'est pour ainsi dire comme certaines villes de France, où l'on peut voir 412 des bâtiments extrêmement anciens avec des rajouts construits des centaines 413 d'années plus tard, jusqu'à aujourd'hui. Dans le domaine de l'informatique, 414 un programme qui a été commencé en 1965, c'est à peu près ça. Ainsi nous 415 espérions toujours que des touristes deviendraient mainteneurs du système ; 416 et peut-être qu'ensuite ils allaient être embauchés, après avoir commencé à 417 travailler sur les programmes du système et nous avoir montré qu'ils étaient 418 capables de faire du bon travail.</p> 419 420 <p>Mais il y avait sur les machines ITS certains autres dispositifs qui 421 aidaient à éviter que ça nous échappe. L'un d'entre eux était un dispositif 422 « espion » où tout le monde pouvait observer ce que chacun faisait. Et 423 naturellement les touristes adoraient espionner. Ils pensaient que c'était 424 super. C'était un peu méchant, voyez-vous, mais le résultat, c'était que si 425 un touriste commençait à faire un truc à problème, il y avait toujours 426 quelqu'un pour le voir. Donc assez vite ses amis étaient furieux parce 427 qu'ils savaient que pour que le tourisme continue à exister, il fallait des 428 touristes responsables. Aussi y avait-il forcément quelqu'un qui savait qui 429 c'était et nous pouvions lui dire de nous laisser tranquilles. Et si nous ne 430 pouvions pas, alors ce que nous faisions, c'était d'interdire les connexions 431 provenant de certains endroits pendant un moment, et quand nous les 432 autorisions à nouveau il était parti et nous avait oubliés. Et cela a 433 continué comme ça pendant des années, des années… et des années.</p> 434 435 <p>Mais le système Twenex n'avait pas été conçu pour ce genre de chose et par 436 la suite ils ne m'ont plus toléré, moi et mon mot de passe que tout le monde 437 connaissait. Les touristes n'arrêtaient pas d'ouvrir des sessions sous mon 438 nom, à deux ou trois à la fois, et ont commencé à vider mon compte. À ce 439 moment-là de toute façon, je travaillais le plus souvent sur d'autres 440 machines ; si bien que finalement je l'ai abandonné et cessé à tout jamais 441 de le réactiver. C'est tout. Je ne me suis pas connecté sur cette machine 442 sous mon nom pendant… <span>[À ce moment-là, RMS est interrompu par 443 un tonnerre d'applaudissements.]</span></p> 444 445 <p>Quand ils ont installé le système Twenex, ils avaient à l'esprit d'y faire 446 plusieurs changements, des changements dans le fonctionnement de la 447 sécurité. Ils voulaient aussi mettre la machine sur le réseau <abbr 448 title="Advanced Research Projects Agency">ARPA</abbr> ainsi que sur le 449 réseau Chaos du MIT. Et il se trouve qu'ils n'ont pas pu le faire, qu'il n'y 450 avait personne d'assez compétent pour ça. Il n'y avait plus de talent 451 disponible et il était difficile de changer ça. Ce système était beaucoup 452 plus difficile à comprendre qu'ITS parce qu'il était mal écrit, et 453 naturellement Digital ne voulait pas faire ce genre de chose. Ainsi l'idée 454 d'un système commercial qui se maintenait tout seul s'est révélée 455 erronée. Ils avaient absolument besoin de hackers mais n'avaient plus les 456 moyens de les attirer. Et de nos jours au MIT, il y a davantage de gens que 457 ça intéresse de hacker ITS que Twenex.</p> 458 459 <p>La dernière raison de cet état de fait, c'est que Twenex ne pouvait pas être 460 partagé. Twenex est un programme propriétaire : vous n'avez le droit d'avoir 461 les sources que si vous les gardez secrètes par des moyens très 462 déplaisants. Et ça leur donne mauvais goût, à moins d'être inconscient comme 463 le sont certains en informatique (il y en a qui feront n'importe quoi si 464 c'est amusant pour eux et ne penseront pas une minute à coopérer avec qui 465 que ce soit ; mais il faut être franchement ailleurs pour ne pas remarquer à 466 quel point c'est triste de travailler comme ça sur un programme, comme c'est 467 décourageant). Et comme si ce n'était pas suffisant, chaque année ils vous 468 donnent une nouvelle version remplie d'une cinquantaine de milliers de 469 lignes de code supplémentaires, toutes écrites par des singes. Parce qu'ils 470 suivent généralement une école de programmation système du genre « un 471 million de singes tapant sur une machine à écrire finiront bien un jour par 472 sortir quelque chose d'utile ».</p> 473 474 <p>Il était clair pour moi, après avoir vu ce qui arrivait à ces systèmes 475 propriétaires, que la seule façon de conserver l'esprit du vieux labo d'IA 476 était d'avoir un système d'exploitation libre ; d'avoir un système fait de 477 logiciel libre pouvant être partagé avec n'importe qui, de façon à pouvoir 478 inviter tout le monde à collaborer à son amélioration. Et c'est ce qui a 479 conduit au projet GNU. Ainsi j'estime que nous sommes arrivés à la deuxième 480 partie de la conférence.</p> 481 482 <p>Il y a environ trois ans et demi, il m'est apparu comme une évidence que je 483 devais commencer à développer un système constitué de <a 484 href="/philosophy/free-sw.html">logiciel libre</a>. J'envisageais deux types 485 de systèmes : le premier, pratiquement identique au système de machine Lisp 486 du MIT, mais libre et fonctionnant sur tout type de matériel, pas seulement 487 sur les machines Lisp spécialisées, et l'autre, un logiciel d'exploitation 488 plus conventionnel. Et il était clair pour moi que si je faisais un logiciel 489 d'exploitation conventionnel, je devais le rendre compatible avec Unix parce 490 que ça rendait la migration plus facile aux gens de tous horizons. Après 491 quelque temps, j'ai choisi la deuxième solution. Et la raison, c'était qu'il 492 n'était pas possible d'obtenir quelque chose de vraiment comparable au 493 système de machine Lisp sur du matériel polyvalent. Le système de machine 494 Lisp utilise du matériel spécial, avec un microcode spécial réinscriptible, 495 pour obtenir à la fois une bonne vitesse d'exécution et une détection 496 robuste des erreurs pendant le temps d'exécution, en particulier les erreurs 497 sur le type des données. Pour qu'un système Lisp puisse fonctionner assez 498 rapidement sur du matériel ordinaire, on doit commencer par faire des 499 suppositions, supposer que tel argument est du type voulu ; ensuite, si ce 500 n'est pas le cas, le système se plante.</p> 501 502 <p>Naturellement on peut mettre des contrôles explicites, on peut écrire un 503 programme robuste si on veut, mais le fait est qu'on va obtenir des trucs 504 comme des erreurs d'adressage de mémoire si l'on fournit à une fonction un 505 argument de type inapproprié sans RIEN prévoir pour faire la vérification.</p> 506 507 <p>Le résultat, c'est qu'il fallait que quelque chose fonctionne en dessous du 508 système Lisp pour détecter ces erreurs et permettre à l'utilisateur de 509 garder le système en état de marche et de déboguer les problèmes 510 éventuels. J'en suis arrivé à la conclusion que si je devais avoir un 511 système d'exploitation de bas niveau, je pouvais tout aussi bien faire un 512 bon système d'exploitation – le choix était entre un système d'exploitation 513 plus le Lisp, et juste un système d'exploitation ; donc je devais faire le 514 système d'exploitation d'abord et le rendre compatible avec Unix. Enfin, 515 quand j'ai réalisé que je pouvais utiliser le plus drôle des mots anglais 516 pour nommer ce système, le choix était clair. Et ce mot est bien sûr GNU, 517 qui signifie <i>GNU's Not Unix</i> (GNU N'est pas Unix). L'acronyme récursif 518 est une très vieille tradition dans la communauté de hackers qui gravite 519 autour du MIT. Il a commencé je crois, avec un éditeur appelé TINT, ce qui 520 signifie <i>Tint Is Not <abbr title="Text Editor and 521 COrrector">Teco</abbr></i>, et plus tard c'est passé par des noms comme SINE 522 pour <i>Sine Is Not Emacs</i>, et FINE pour <i>Fine Is Not Emacs</i>, et 523 EINE pour <i>Eine Is Not Emacs</i>, et ZWEI pour <i>Zwei Was Eine 524 Initially</i>, et finalement on est arrivé à GNU.</p> 525 526 <p>Je dirais que depuis le moment, il y a environ deux ans et demi, où j'ai 527 commencé à travailler vraiment sur GNU, j'ai déjà fait plus de la moitié du 528 travail. Au moment où j'étais prêt à démarrer le projet, j'ai d'abord 529 regardé autour de moi ce qu'il y avait de libre déjà disponible. J'ai 530 découvert un système de compilation portable appelé <i>the Free University 531 Compiler Kit</i>, qui était intéressant, et j'ai pensé qu'avec un nom pareil 532 je pourrais peut-être l'avoir.<a id="TransNote5-rev" 533 href="#TransNote5"><sup>5</sup></a> Alors j'ai envoyé un message à son 534 développeur en lui demandant s'il acceptait de le donner au projet GNU. Et 535 il a dit « Non, l'université est peut-être libre, mais le logiciel qu'elle 536 développe ne l'est pas », mais il a ajouté qu'il voulait aussi avoir un 537 système compatible avec Unix et qu'il voulait écrire une sorte de noyau pour 538 lui, alors pourquoi est-ce que je n'écrirais pas les utilitaires, comme ça 539 les deux pourraient être distribués avec son compilateur propriétaire ? Ça 540 encouragerait les gens à l'acheter. J'ai pensé que c'était ignoble, alors je 541 lui ai dit que mon premier projet serait de faire un compilateur.</p> 542 543 <p>Je ne savais pas vraiment grand-chose au sujet de l'optimisation des 544 compilateurs à cette époque parce que je n'avais jamais travaillé 545 dessus. Mais j'ai mis la main sur un compilateur dont on m'avait dit qu'il 546 était libre. C'était un compilateur appelé Pastel dont les auteurs disaient 547 que c'était du « Pascal mal fichu ».</p> 548 549 <p>Le Pastel est un langage très compliqué comprenant des fonctionnalités comme 550 des types paramétrés et des paramètres de types explicites et beaucoup de 551 choses compliquées. Le compilateur naturellement était écrit dans ce langage 552 et comportait nombre de fonctionnalités compliquées pour optimiser 553 l'utilisation de ces éléments. Par exemple : le type <i>string</i> dans ce 554 langage était un type paramétré ; vous pouviez dire <code>string(n)</code> 555 si vous vouliez une chaîne d'une longueur particulière ; vous pouviez 556 également juste dire <code>string</code>, et le paramètre était déterminé à 557 partir du contexte. Cela dit, les chaînes sont très importantes et sont 558 nécessaires à beaucoup de constructions qui les utilisent pour fonctionner 559 rapidement. Et ça veut dire qu'on avait besoin de beaucoup de 560 fonctionnalités pour détecter des choses comme : lorsque la longueur 561 déclarée d'une chaîne est un argument dont on sait qu'il est constant dans 562 toute la fonction, sauvegarder la valeur et optimiser le code qu'elle va 563 produire ; beaucoup de choses compliquées. Mais j'ai pu voir dans ce 564 compilateur comment procéder à l'allocation automatique de registre et 565 glaner quelques idées sur la façon de gérer différents types de machines.</p> 566 567 <p>Bon, puisque ce compilateur avait déjà compilé Pastel, tout ce que j'avais à 568 faire était de rajouter une interface pour le C, ce que je fis, puis 569 d'ajouter une sortie pour le 68000 qui devait être ma première cible. Mais 570 j'allais vers un sérieux problème. Puisque le langage Pastel était conçu de 571 manière à ne pas avoir besoin de déclarer quoi que ce soit avant de 572 l'utiliser, la déclaration d'une variable et son usage pouvaient se faire 573 dans n'importe quel ordre ; en d'autres termes, la déclaration 574 <code>forward</code> du Pascal était obsolète. Pour cette raison il fallait 575 lire le programme dans son intégralité, le garder en mémoire centrale 576 <i>[core]</i> et le compiler d'une traite. Le résultat, c'était que le 577 stockage intermédiaire utilisé par le compilateur, ou plutôt la taille de la 578 mémoire requise, était proportionnel à la taille de votre fichier. Et il 579 fallait aussi compter avec l'espace de pile ; vous aviez besoin d'une 580 quantité gigantesque d'espace de pile. J'en ai conclu que le système 68000 581 dont je disposais ne pouvait pas faire fonctionner ce compilateur. Car 582 c'était une horrible version d'Unix qui vous limitait à quelque chose comme 583 16 000 mots de pile, ceci en dépit de l'existence de six mégaoctets dans la 584 machine. Et naturellement, pour générer la matrice des conflits afin de voir 585 quelles valeurs temporaires étaient en conflit ou quel groupe de valeurs 586 étaient actives en même temps, il était nécessaire d'avoir une matrice 587 quadratique de bits. Et pour les grandes fonctions cela pouvait prendre des 588 centaines de milliers d'octets. Ainsi je suis parvenu à déboguer la première 589 des quelque dix passes du compilateur en compilation croisée sur cette 590 machine et j'ai constaté alors que la seconde ne pourrait jamais 591 fonctionner.</p> 592 593 <p>Pendant que je réfléchissais à ces problèmes en me demandant si je devais 594 essayer de les corriger ou bien écrire entièrement un nouveau compilateur, 595 j'ai commencé de manière indirecte à travailler sur GNU Emacs. GNU Emacs est 596 la partie principale de la distribution du système GNU. C'est un éditeur de 597 texte extensible qui ressemble de près à l'Emacs original que j'ai développé 598 il y a dix ans, sauf que celui-ci emploie le véritable Lisp comme langage 599 d'extension. L'éditeur lui-même est implémenté en C, de même que 600 l'interpréteur Lisp. Ainsi l'interpréteur Lisp est entièrement portable et 601 vous n'avez pas besoin de système Lisp externe à l'éditeur. L'éditeur 602 contient son propre système Lisp et toutes les commandes d'édition sont 603 écrites en Lisp de manière à pouvoir vous donner des exemples sur la façon 604 d'écrire vos propres commandes et des éléments à utiliser comme point de 605 départ. Il vous suffit de les modifier pour obtenir les commandes que vous 606 voulez.</p> 607 608 <p>L'été de cette année-là, il y a environ deux ans maintenant, un ami m'a dit 609 qu'en raison de son travail au tout début du développement de l'Emacs de 610 Gosling, il avait la permission écrite de Gosling de distribuer sa propre 611 version. Gosling, à l'origine, avait créé son Emacs. Il l'avait distribué 612 librement et beaucoup de gens aidèrent à son développement, avec l'espoir 613 – selon les propres mots de Gosling dans son manuel – qu'il avait suivi le 614 même état d'esprit que celui que j'avais donné à l'Emacs original. Ensuite 615 il a poignardé tout le monde dans le dos en prenant des copyrights dessus, 616 en faisant promettre aux gens de ne pas le redistribuer puis en le vendant à 617 une maison d'édition de logiciels. Les relations d'affaires que j'ai eues 618 avec lui par la suite m'ont personnellement prouvé qu'il était aussi lâche 619 et méprisable que vous pouvez le voir dans cette histoire.</p> 620 621 <p>Mais de toute façon, mon ami m'avait donné le programme et j'avais 622 l'intention de modifier les commandes d'édition du niveau supérieur pour les 623 rendre compatibles avec l'Emacs original dont j'avais l'habitude. Ceci pour 624 qu'elles puissent manipuler toutes les combinaisons d'arguments numériques, 625 etc., tout ce que l'on pouvait s'attendre à ce qu'elles manipulent, en étant 626 pourvues de toutes les fonctionnalités que je voulais. Mais peu après, j'ai 627 découvert que le langage d'extension de cet éditeur, appelé Mocklisp, ne 628 suffisait pas à la tâche. J'ai compris que je devais le remplacer 629 immédiatement pour pouvoir réaliser mon projet. J'avais déjà pensé 630 auparavant à remplacer éventuellement Mocklisp par le vrai Lisp, mais ce que 631 j'ai découvert, c'est qu'il fallait le faire dès le début. Maintenant, la 632 raison pour laquelle Mocklisp s'appelle <i>mock</i> (faux), c'est qu'il n'a 633 aucune sorte de structure pour les types de données : il n'y a pas les 634 listes Lisp ; il n'y a aucune sorte de tableau ; il n'y a pas non plus les 635 symboles Lisp, qui sont des objets nommés (à chaque nom particulier 636 correspond un seul objet de manière que la saisie du nom se rapporte 637 toujours au même objet, sinon ça entrave considérablement l'écriture de pas 638 mal de sortes de programmes en vous obligeant à passer par des manipulations 639 de chaînes compliquées qui ne font pas vraiment avancer les choses).</p> 640 641 <p>Alors j'ai écrit un interpréteur Lisp pour le mettre à la place de 642 Mocklisp. Et ce faisant j'ai constaté que je devais réécrire un certain 643 nombre de structures de données internes à l'éditeur parce que je voulais 644 qu'il s'agisse d'objets Lisp. Je voulais que l'interface entre Lisp et 645 l'éditeur soit propre, c'est-à-dire que des objets comme les tampons 646 d'édition, les sous-processus, les fenêtres et les emplacements des tampons 647 soient tous des objets Lisp, afin que les processus primaires de l'éditeur 648 qui s'en servaient puissent vraiment être appelés en tant que fonctions Lisp 649 avec des données Lisp. Cela voulait dire qu'il fallait recréer entièrement 650 les formats de données de tous les objets et réécrire toutes les fonctions 651 qui s'en servaient. Et cela a eu pour résultat, pendant environ six mois, de 652 me faire réécrire à peu près tout ce qu'il y avait dans l'éditeur.</p> 653 654 <p>En outre, du fait qu'il est vraiment difficile d'écrire en Mocklisp, rien 655 n'était écrit proprement. Et en le réécrivant, je pouvais tirer profit de la 656 puissance du vrai Lisp ; je pouvais rendre tout ça beaucoup plus puissant, 657 beaucoup plus simple et rapide. C'est ce que j'ai fait. Et quand j'ai 658 commencé à distribuer le programme, il ne restait qu'une petite partie de ce 659 que j'avais reçu.</p> 660 661 <p>À ce moment-là, la société à qui Gosling pensait avoir vendu le programme a 662 contesté à mon ami le droit de le distribuer. Le message avait été 663 sauvegardé sur une bande que mon ami n'arrivait plus à retrouver et Gosling 664 a nié lui avoir donné cette permission. Une chose étrange s'est alors 665 produite. Il était en pourparlers avec cette société qui semblait surtout 666 vouloir éviter qu'il ne distribue quelque chose d'analogue à ce qu'elle-même 667 distribuait. Voyez-vous, Gosling continuait à distribuer ce qu'il m'avait 668 donné et la société pour laquelle il travaillait, Megatest, également ; il 669 s'agissait en réalité d'une ancienne version de l'Emacs de Gosling, avec ses 670 modifications. Il allait donc faire un accord avec eux dans lequel il 671 cesserait de le distribuer, et passer ensuite à GNU Emacs. Ils 672 reconnaîtraient alors qu'après tout Gosling avait leur permission, et donc 673 théoriquement tout le monde serait content. De plus cette société m'a 674 entretenu au sujet de leur désir de distribuer GNU Emacs, gratuitement bien 675 sûr, mais aussi de vendre divers services d'assistance. Ils voulaient même 676 m'embaucher pour aider à faire ce travail. Aussi est-il un peu étrange 677 qu'ils aient soudain changé d'avis et refusé de signer cet accord, puis mis 678 une annonce sur le réseau comme quoi je n'avais pas le droit de distribuer 679 le programme. Ils n'ont pas vraiment dit qu'ils feraient quoi que ce 680 soit. Ils ont juste dit qu'il n'était pas improbable qu'ils fassent quelque 681 chose un jour. Cela faisait suffisamment peur aux gens pour que plus 682 personne ne l'utilise. C'est triste.</p> 683 684 <p>(Parfois je me dis que peut-être une des meilleures choses que je pourrais 685 faire dans la vie serait de trouver une pile colossale de logiciels 686 propriétaires couverts par le secret industriel et de commencer à en 687 distribuer des copies à tous les coins de rue, ce qui les ferait sortir du 688 secret. Peut-être que ce serait une manière beaucoup plus efficace de 689 fournir aux gens de nouveaux logiciels libres, que de les écrire 690 effectivement moi-même ; mais tout le monde serait trop lâche pour ne 691 serait-ce qu'y toucher.)</p> 692 693 <p>Donc ça m'a obligé à réécrire tout ce qui restait qui n'était pas de moi, ce 694 que j'ai fait. Il m'a fallu environ une semaine et demie. Quelle victoire 695 pour eux ! Il était certain qu'après ça ils n'obtiendraient jamais plus 696 aucune collaboration de ma part.</p> 697 698 <p>Une fois que GNU Emacs a été raisonnablement stable – ce qui m'a pris 699 environ un an et demi tout compris – j'ai commencé à revenir sur d'autres 700 parties du système. J'ai développé un programme de débogage que j'ai appelé 701 GDB. C'est un débogueur symbolique pour le code C dont la distribution vient 702 de commencer, réalisé en grande partie dans l'esprit de DBX, le débogueur de 703 l'Unix de Berkeley. Les commandes se composent d'un mot indiquant ce que 704 vous voulez faire, suivi des arguments. Dans ce programme, toutes les 705 commandes peuvent être abrégées. Les commandes courantes ont des 706 abréviations d'un seul caractère, mais toute abréviation d'un seul caractère 707 est permise. La fonction « aide » est très fournie : vous pouvez taper 708 <code>help</code> suivi de n'importe quelle commande, y compris des 709 commandes secondaires, et vous obtenez une description complète de la façon 710 de l'utiliser. Naturellement vous pouvez taper n'importe quelle expression 711 en C et sa valeur s'affichera.</p> 712 713 <p>Vous pouvez également faire des choses inhabituelles pour un débogueur C 714 symbolique. Par exemple, vous pouvez vous référer à n'importe quel type de 715 donnée C à n'importe quelle adresse de mémoire pour en examiner la valeur ou 716 pour lui affecter une valeur. Supposons que vous vouliez stocker un nombre 717 en virgule flottante dans un mot à une certaine adresse. Vous devez juste 718 dire : « Donne-moi l'objet de type <i>float</i> ou <i>double</i> à cette 719 adresse et ensuite affecte-lui cette valeur. » Une autre chose que vous 720 pouvez faire est d'examiner toutes les valeurs qui ont été examinées 721 auparavant. Chaque valeur examinée se place sur la pile de l'« historique 722 des valeurs ». Vous pouvez vous référer à n'importe quel élément par sa 723 position dans l'historique, ou bien vous pouvez facilement vous référer au 724 dernier élément, juste avec le signe dollar. Ça facilite le suivi de la 725 structure des listes. Si une structure C quelconque contient un pointeur 726 vers une autre structure, vous pouvez faire quelque chose comme 727 <code>print*$.next</code> qui veut dire : « Prends le champ suivant dans la 728 dernière chose que tu m'as montrée, puis affiche la structure sur laquelle 729 il pointe ». En répétant cette commande, on voit l'une après l'autre les 730 structures sur lesquelles pointe la liste, alors qu'avec chacun des autres 731 débogueurs C que j'ai vus, la seule manière de faire ça est de taper une 732 commande de plus en plus longue. Et quand c'est combiné à une fonctionnalité 733 qui fait qu'« Entrée » rappelle la dernière commande, ça devient très 734 pratique. Vous avez juste à taper « Entrée » pour chaque élément de la liste 735 que vous voulez voir.</p> 736 737 <p>Vous pouvez aussi définir des variables de façon explicite dans le 738 débogueur, en nombre illimité. Vous posez le signe dollar suivi d'un nom et 739 c'est une variable. Vous pouvez lui affecter une valeur de n'importe quel 740 type C et vous pourrez l'examiner plus tard. Parmi les choses pour 741 lesquelles c'est utile, s'il y a une valeur particulière que vous voulez 742 examiner, sachant que vous allez vous y référer souvent, plutôt que de vous 743 souvenir de son numéro dans l'historique vous pouvez lui donner un nom. Vous 744 pouvez aussi utiliser ces variables quand vous placez des paliers 745 <i>[breakpoints]</i> conditionnels. Les paliers conditionnels sont une 746 fonctionnalité qui existe dans beaucoup de débogueurs symboliques. Vous 747 dites : « Fais une pause quand tu seras arrivé à cet endroit du programme, 748 mais seulement si une certaine expression est vraie. » Les variables du 749 débogueur vous permettent de comparer une variable du programme à sa 750 précédente valeur sauvegardée dans la variable du débogueur. Une autre chose 751 à laquelle elles peuvent servir, c'est à compter. Parce qu'après tout, les 752 valeurs affectées à ces variables sont des expressions en C, donc on peut 753 faire <code>$foo+=5</code> pour incrémenter la valeur <code>$foo</code> 754 de 5, ou juste <code>$foo++</code>. Vous pouvez également le faire lors d'un 755 palier conditionnel. Une manière économe de faire une pause dans le 756 programme la dixième fois que le palier est atteint, serait de faire 757 <code>$foo--==0</code>. Est-ce que tout le monde suit ? Faire décroître foo 758 et une fois qu'il est à zéro, pause. Vous faites démarrer <code>$foo</code> 759 au nombre de boucles que vous voulez qu'il saute et vous le lâchez. Vous 760 pouvez aussi utiliser ça pour examiner les éléments d'un tableau. Supposez 761 que vous ayez un tableau de pointeurs, vous pouvez faire :</p> 762 763 <pre><code>PRINT X[$foo++]</code></pre> 764 765 <p>Mais d'abord vous faites</p> 766 767 <pre><code>SET $foo=0</code></pre> 768 769 <p>OK, quand vous faites ça [il montre l'expression PRINT], vous obtenez 770 l'élément zéro de X et quand vous le faites à nouveau, il atteint le premier 771 élément. Supposez que ce soient des pointeurs vers des structures, alors 772 vous mettez probablement un astérisque là [avant le X dans l'expression 773 PRINT] et à chaque fois, il affiche la structure sur laquelle pointe 774 l'élément suivant du tableau. Et bien sûr vous pouvez répéter cette commande 775 en tapant « Entrée ». Si ce n'est pas suffisant de répéter une seule chose, 776 vous pouvez créer une « commande utilisateur ». Vous pouvez dire 777 <code>define mumble</code>, vous mettez quelques lignes de commandes puis 778 <code>end</code>. Vous venez ainsi de définir une commande 779 <code>mumble</code> qui exécutera ces lignes. Et il est très utile de mettre 780 ces définitions dans un fichier de commandes. Vous pouvez avoir un fichier 781 de commandes dans chaque répertoire qui sera chargé automatiquement en tant 782 que répertoire actif lorsque vous lancerez le débogueur. Ainsi pour chaque 783 programme, vous pouvez définir un ensemble de commandes utilisateur pour 784 accéder efficacement aux structures. Vous pouvez même fournir de la 785 documentation pour vos commandes, de façon qu'elles soient traitées par la 786 fonction <code>help</code> comme des commandes intégrées.</p> 787 788 <p>Une autre chose peu habituelle dans ce débogueur, c'est la capacité 789 d'écarter des cadres <i>[frames]</i> de la pile ; parce que je crois que 790 c'est important, non seulement pour pouvoir examiner ce qui se produit dans 791 le programme que vous déboguez, mais aussi pour le modifier de toutes les 792 façons possibles. De sorte qu'après avoir trouvé un problème et avoir 793 compris ce qui n'allait pas, vous pouvez faire comme si le code était 794 correct et trouver le prochain bogue sans avoir d'abord à recompiler le 795 programme. Cela signifie non seulement pouvoir changer en souplesse les 796 zones de données de votre programme, mais également changer le flux de 797 contrôle. Dans ce débogueur, vous pouvez changer le flux de contrôle très 798 directement en disant :</p> 799 800 <pre><code>SET $PC=<un certain nombre></code></pre> 801 802 <p>Ainsi vous pouvez positionner le compteur ordinal <i>[program 803 counter]</i>. Vous pouvez également positionner le pointeur de pile 804 <i>[stack pointer]</i>, ou bien vous pouvez dire</p> 805 806 <pre><code>SET $SP+=<quelque_chose></code></pre> 807 808 <p>si vous voulez incrémenter le pointeur de pile d'une certaine quantité. Mais 809 en outre, vous pouvez également lui dire de démarrer sur une ligne 810 particulière du programme ; vous pouvez placer le compteur ordinal à une 811 ligne particulière du code source. Mais que se passe-t-il si vous constatez 812 que vous avez appelé une fonction par erreur et que vous ne vouliez pas 813 appeler cette fonction du tout ? Vous vous dites que cette fonction est trop 814 merdique, que vous voulez vraiment en sortir et faire à la main ce qu'elle 815 devait faire. Pour cela, vous pouvez utiliser la commande 816 <code>RETURN</code>. Vous sélectionnez un cadre de la pile et vous dites 817 <code>RETURN</code>. Et ça va faire que ce cadre, et tous ceux qui sont à 818 l'intérieur, seront abandonnés comme si cette fonction renvoyait 819 instantanément sa valeur. Vous pouvez aussi spécifier la valeur qu'elle doit 820 renvoyer. Ça ne poursuit pas l'exécution ; ça fait comme si la valeur était 821 renvoyée et le programme s'arrête à nouveau ; vous pouvez ainsi continuer de 822 modifier autre chose.</p> 823 824 <p>Et si vous combinez tout ça, vous avez pas mal de contrôle sur ce qui se 825 passe dans un programme.</p> 826 827 <p>Une autre chose assez amusante : C a des constantes qui sont des chaînes de 828 caractères <i>[string constants]</i> ; que se passe-t-il si vous utilisez 829 une constante de ce type dans une expression que vous calculez dans le 830 débogueur ? Il faut qu'il crée une chaîne dans le programme que vous 831 déboguez. Eh bien, c'est ce qu'il fait. Il crée un appel à 832 <code>malloc</code> dans le programme débogué, laisse tourner 833 <code>malloc</code>, puis reprend la main. Ainsi il trouve de façon 834 transparente un endroit où placer la chaîne constante.</p> 835 836 <p>Quand ce débogueur tournera enfin sur le vrai système GNU, j'ai l'intention 837 d'y installer des fonctionnalités pour examiner l'ensemble des états 838 internes du processus tournant en dessous de lui. Par exemple pour examiner 839 l'état de la topographie mémoire, pour savoir quelles pages existent, si 840 elles sont lisibles, si elles sont inscriptibles, et pour examiner l'état du 841 terminal pour le programme inférieur. Il y a déjà l'ébauche d'une commande ; 842 ce débogueur, à la différence des débogueurs sous Unix, garde l'état du 843 terminal du débogueur et celui du programme que vous déboguez complètement 844 séparés. De sorte que ça marche avec les programmes qui tournent en mode 845 brut et avec ceux qui font des interruptions d'entrées dynamiques 846 <i>[interrupt driven input]</i> ; et il y a également une commande qui vous 847 permet d'apprendre quelque chose sur les réglages des terminaux que le 848 programme que vous déboguez utilise réellement. Je crois qu'en général un 849 débogueur doit vous permettre de découvrir tout qui se passe dans le 850 processus inférieur.</p> 851 852 <p>Deux autres parties centrales du système GNU existent déjà. L'un est le 853 nouveau compilateur C et l'autre le noyau Trix.</p> 854 855 <p>J'ai commencé à écrire le nouveau compilateur C cette année, au printemps 856 dernier. J'ai finalement décidé que je devais me passer de Pastel. Ce 857 compilateur utilise quelques idées de Pastel et quelques idées de 858 « l'optimiseur portable de l'université d'Arizona » <i>[University of 859 Arizona Portable Optimizer]</i>. Ce que ce dernier a d'intéressant, c'est de 860 gérer plusieurs types différents de machines par des instructions simples et 861 d'ensuite combiner plusieurs instructions simples dans une seule instruction 862 compliquée quand la machine cible le permet. Pour que cela reste uniforme, 863 ils représentent les instructions en notation algébrique. Par exemple, 864 l'instruction <code>add</code> peut être représentée comme ceci :</p> 865 866 <pre> 867 <code>r[3]=r[2]+4</code> 868 </pre> 869 870 <p>C'est une représentation interne au compilateur de l'instruction « prendre 871 le contenu du registre n°2, y ajouter 4 et le stocker dans le registre 872 n°3 ». De cette façon vous pouvez représenter n'importe quelle 873 instruction pour n'importe quelle machine. C'est donc comme ça qu'ils 874 représentent toutes les instructions. Quand vient le moment d'essayer de les 875 combiner, ils le font en substituant une expression dans une autre, ce qui 876 donne pour l'instruction combinée une expression algébrique plus compliquée.</p> 877 878 <p>Quelquefois, suivant que le résultat de la première instruction est utile 879 par la suite, ou pas, il peut être nécessaire de faire une instruction 880 combinée avec deux opérateurs d'affectation <i>[assignment]</i> : un pour 881 cette valeur [il montre ???] et un autre pour cette valeur [il montre ???] à 882 l'intérieur de laquelle est substitué ce qui provient de la deuxième 883 instruction. Si cette valeur n'est utilisée qu'une fois, vous pouvez 884 l'éliminer après l'avoir substituée ; elle n'a pas à entrer dans d'autres 885 calculs. Donc c'est vraiment assez compliqué de faire ces substitutions 886 correctement, en vérifiant bien que les instructions intermédiaires ne vont 887 changer aucune de ces valeurs, ni rien d'autre du même genre. Quand vous 888 gérez des choses comme l'adressage auto-incrémenté et auto-décrémenté, ce 889 que je fais maintenant, vous avez aussi diverses vérifications à faire pour 890 détecter les situations où l'objectif n'est pas de conserver la valeur de la 891 variable.</p> 892 893 <p>Mais après avoir vérifié tout ça, vous prenez l'expression combinée 894 substituée et vous la passez à travers un filtre de motif <i>[pattern 895 matcher]</i>, qui reconnaît toutes les instructions valides de la machine 896 cible que vous avez choisie. Si le motif est reconnu, vous remplacez les 897 deux instructions par leur instruction combinée, sinon vous les laissez 898 tranquilles. Leur technique est de combiner de cette manière deux ou trois 899 instructions reliées par le flux de données.</p> 900 901 <p>Dans le compilateur d'Arizona, les choses sont en fait représentées par des 902 chaînes de caractères comme ceci, et le compilateur est terriblement 903 lent. Au début j'avais l'idée de l'utiliser et d'y apporter des 904 modifications, mais j'ai compris que je devais le réécrire entièrement pour 905 obtenir la rapidité que je voulais. En le réécrivant, j'ai fait en sorte de 906 pouvoir utiliser des représentations de structure de liste pour toutes ces 907 expressions ; des choses comme ceci :</p> 908 909 <pre> 910 <code>(set (reg 2)</code> 911 <code>(+ (reg 2)</code> 912 <code>(int 4)))</code> 913 </pre> 914 915 <p>Ça ressemble un peu à du Lisp mais la sémantique n'est pas tout à fait la 916 même, parce que chaque symbole est ici identifié individuellement. Un 917 ensemble fixe, particulier de ces symboles est défini, tous ceux dont vous 918 avez besoin, chacun ayant une combinaison particulière de types 919 d'arguments. Pour <code>reg</code> par exemple, c'est toujours un nombre 920 entier, parce que les registres sont numérotés, mais <code>+</code> prend 921 deux sous-expressions, et ainsi de suite. Et chacune de ces expressions a 922 aussi un type de données qui, en gros, indique s'il est fixe ou flottant et 923 combien d'octets il occupe. Ça peut être étendu pour manipuler d'autres 924 choses si vous en avez besoin.</p> 925 926 <p>Voilà comment je fais l'allocation automatique de registre : au moment où je 927 génère initialement le code, et quand je fais la combinaison et le reste, 928 pour toute variable qui entre théoriquement dans un registre j'alloue ce que 929 j'appelle un pseudo-numéro de registre. C'est un nombre qui commence à 930 seize, ou autre nombre trop élevé pour désigner un vrai registre de la 931 machine cible. Les vrais registres sont numérotés de zéro à quinze (ou 932 autre), et après viennent les pseudo-registres. Et là, une des dernières 933 opérations consiste à examiner tous les pseudo-registres et à les changer en 934 vrais registres. À nouveau, le compilateur fait un schéma des conflits, il 935 voit quels pseudo-registres sont actifs en même temps – ils ne peuvent 936 naturellement pas entrer dans le même vrai registre – et essaie de regrouper 937 les pseudo-registres dans de vrais registres autant que possible, en les 938 rangeant par ordre d'importance.</p> 939 940 <p>Et à la fin, il doit corriger le code pour différents problèmes, tels qu'il 941 peut s'en produire si des pseudo-registres ne trouvent pas place dans les 942 vrais registres et doivent être mis à la place dans des <i>slots</i> de la 943 pile. Sur certaines machines, des instructions peuvent devenir invalides 944 quand ça arrive. Par exemple sur le 68000, on peut ajouter depuis un 945 registre dans la mémoire et ajouter depuis la mémoire dans un registre mais 946 pas ajouter depuis une adresse mémoire vers une autre. Par exemple, si lors 947 d'une instruction ADD vous sortez vers un 68000 et que les deux éléments se 948 retrouvent dans la mémoire, ce n'est pas valide. Donc ce dernier passage 949 examine le tout et copie au besoin des éléments dans les registres ou en 950 dehors des registres, pour corriger ce genre de problème.</p> 951 952 <p>Des problèmes peuvent également survenir avec les registres d'index. Si vous 953 essayez d'indexer par quelque chose, la plupart du temps le code deviendra 954 invalide si cette quantité est en mémoire, sauf dans quelques cas, sur 955 certaines machines où vous pouvez le faire avec un adressage 956 indirect. Lorsque vous procédez à une autoincrémentation sur un registre 957 d'index, vous pouvez avoir à copier la valeur dans un registre, effectuer 958 l'instruction et ensuite recopier la valeur incrémentée dans le <i>slot</i> 959 de mémoire où elle vit vraiment.</p> 960 961 <p>Il y a encore de la marge pour pas mal de prises de tête, et je n'ai pas 962 fini d'implémenter tout ce qui est nécessaire pour le rendre vraiment 963 pleinement efficace.</p> 964 965 <p>Ce compilateur fonctionne actuellement avec un analyseur syntaxique qui 966 transforme efficacement le code C en arbre syntaxique, annoté d'informations 967 sur le type de données C. Après ça, un autre passage examine cet arbre et 968 produit du code comme celui-là [comme du Lisp]. Ensuite viennent plusieurs 969 passages d'optimisation : un pour traiter par exemple les sauts à travers 970 des sauts, les sauts aboutissant à des sauts, les sauts à <code>.+1</code> 971 et tout ce qui peut être immédiatement simplifié ; puis la reconnaissance 972 des sous-expressions communes ; puis la recherche des blocs de base et 973 l'analyse du flux de données, afin de pouvoir indiquer pour chaque 974 instruction quelles valeurs sont utilisées dans l'instruction et nulle part 975 ailleurs ; et aussi la liaison entre chaque instruction et les endroits où 976 les valeurs utilisées ont été créées. Ainsi, quand j'ai une instruction qui 977 crée un pseudo-registre R[28] et une autre instruction plus tard qui utilise 978 R[28], sachant que c'est le premier endroit qui utilise R[28], je fais 979 pointer la seconde en arrière sur la première et ce pointeur est celui qui 980 servira pour contrôler les essais de combinaison des instructions. Vous ne 981 combinez pas des instructions adjacentes, vous combinez une instruction qui 982 utilise une valeur avec l'instruction qui a produit cette valeur. Même s'il 983 y a d'autres instructions au milieu, elles ne sont pas concernées ; vous 984 avez juste à vous assurer qu'elles n'interviennent pas. Et après le 985 combinateur vient l'allocateur dynamique de registres, et enfin quelque 986 chose pour faire la conversion en code assembleur.</p> 987 988 <p>Dans le compilateur d'Arizona, le système de reconnaissance d'instructions a 989 été créé avec Lex. La description de votre machine est simplement un 990 programme Lex, que Lex transforme en une fonction C pour identifier les 991 instructions valides sous forme de chaînes. À la place, j'ai un arbre de 992 décision particulier, créé à partir d'une description de la machine écrite 993 dans cette syntaxe qui ressemble au Lisp. Et ce système de reconnaissance 994 est utilisé comme sous-programme dans plusieurs parties différentes du 995 compilateur.</p> 996 997 <p>Actuellement ce compilateur fonctionne à peu près aussi rapidement que le 998 <abbr title="Portable C Compiler">PCC</abbr>. Il fonctionne sensiblement 999 plus rapidement si vous lui dites de ne pas faire d'allocation de registre 1000 limite. Dans ce cas il alloue les registres de la même manière que le 1001 PCC. Dans son mode super-limite, il fait un travail d'allocation de 1002 registres bien meilleur que le PCC et je constate que pour le VAX, il 1003 produit le meilleur code que j'aie vu de tous les compilateurs C sur VAX.</p> 1004 1005 <p>Pour le 68000, le code n'est pas encore idéal. Je peux voir par endroits, 1006 aux étapes précoces, se passer des choses qui ne sont pas forcément 1007 optimales parce qu'il ne peut pas vraiment anticiper. Il a un choix à faire 1008 à une étape précoce et il fait ce qu'il pense être le mieux. Or s'il avait 1009 fait un autre choix, une étape ultérieure aurait été assez intelligente pour 1010 faire encore mieux. Mais l'étape précoce ne sait pas ce que l'étape 1011 ultérieure va faire, donc je dois retravailler certaines choses.</p> 1012 1013 <p>Parfois ça lui fait libérer des registres inutilement : quand des choses 1014 atterrissent dans la mémoire et qu'il a besoin de les copier dans des 1015 registres, il faut qu'il trouve des registres. Cela veut dire prendre des 1016 registres déjà alloués et virer les données temporaires des <i>slots</i> de 1017 la pile. Évidemment, maintenant que ces choses sont dans la mémoire plutôt 1018 que dans les registres, ça peut invalider certaines instructions, donc il 1019 lui faut tout le temps vérifier. Parfois il pense à tort qu'il devrait 1020 copier des choses dans les registres, alors il arrive qu'il en libère trop 1021 et n'utilise pas tous les registres qu'il pourrait.</p> 1022 1023 <p><span>[Question : Avez-vous un générateur de code pour le 32000 ?]</span>Pas 1024 encore, mais je le répète, ce n'est pas un générateur de code dont vous avez 1025 besoin, juste une description de machine, une liste de toutes les 1026 instructions de la machine décrites sous cette forme [comme du Lisp]. En 1027 fait, hormis le travail d'implémenter l'idée des contraintes qui déterminent 1028 quels arguments peuvent aller dans les registres et dans quelles sortes de 1029 registres ils iront – travail nécessaire pour le 68000, mais pas pour le 1030 VAX – le portage de ce compilateur du VAX au 68000 a juste pris quelques 1031 jours. Donc il est très facile à porter.</p> 1032 1033 <p>Le compilateur produit actuellement du code assembleur et il peut produire 1034 de l'information de débogage, soit dans le format voulu par DBX, soit dans 1035 le format interne spécial à GDB. Je dirais que le seul travail qui reste à 1036 faire sur ce compilateur se situe à trois niveaux. Un : Je dois ajouter un 1037 dispositif de « profilage » comme celui des compilateurs d'Unix. Deux : Je 1038 dois rendre les allocations de registre plus intelligentes pour ne plus voir 1039 de choses stupides apparaître en sortie. Trois : Il y a divers bogues, des 1040 choses qu'il ne traite pas encore correctement bien qu'il se soit compilé 1041 correctement. Je pense que ça ne prendra que quelques mois, ensuite je le 1042 publierai.</p> 1043 1044 <p>L'autre partie importante du système existant, c'est le 1045 noyau. <span>[Question : Une pause ?]</span> Ah, ouais, je suppose que nous 1046 avons oublié les coupures. Pourquoi est-ce que je ne finirais pas de parler 1047 du noyau, ce qui ne devrait pas prendre plus de cinq minutes ? Ensuite nous 1048 pourrons faire une coupure.</p> 1049 1050 <p>Donc, pour le noyau je projette d'utiliser un système appelé TRIX (cela ne 1051 signifie rien de spécial, que je sache) qui a été développé comme projet de 1052 recherche au MIT. Ce système est basé sur l'appel de procédure à distance 1053 <i>[Remote Procedure Call]</i>. Les programmes sont appelés domaines. Chaque 1054 domaine est un espace d'adressage et a diverses capacités, une capacité 1055 n'étant rien d'autre que l'aptitude à appeler un domaine. Tout domaine peut 1056 créer des « ports de capacité » <i>[capability ports]</i> pour l'appeler et 1057 peut passer ces ports aux autres domaines. Et il n'y a aucune différence 1058 entre appeler le système et appeler un autre domaine utilisateur. En fait 1059 vous ne pouvez pas dire lequel vous avez. Ainsi il est très facile de faire 1060 implémenter des dispositifs par d'autres programmes utilisateur. Un système 1061 de fichiers pourrait être implémenté de façon transparente par ce moyen. Il 1062 est également transparent de communiquer à travers des réseaux. Vous pensez 1063 que vous appelez directement un autre domaine, mais en réalité vous appelez 1064 le domaine du serveur réseau. Il prend l'information que vous avez donnée 1065 dans l'appel et la passe par le réseau à un autre programme serveur qui 1066 appelle alors le domaine auquel vous essayez de parler. Mais pour vous et 1067 cet autre domaine, cela se passe de manière transparente.</p> 1068 1069 <p>Le noyau TRIX fonctionne et il a une compatibilité limitée avec Unix, mais 1070 il lui en faut beaucoup plus. Actuellement son système de fichiers utilise 1071 la même structure sur disque que l'ancien système de fichiers d'Unix. Ça 1072 rendait plus facile le débogage parce qu'ils pouvaient installer les 1073 fichiers avec Unix et donc faire fonctionner TRIX, mais ce système de 1074 fichiers n'a aucune des fonctionnalités que je trouve nécessaires.</p> 1075 1076 <p>Voilà les fonctionnalités qui, je pense, devraient être rajoutées : des 1077 numéros de version, la restauration des fichiers effacés, les informations 1078 sur quand, comment et où le dossier a été sauvegardé sur bande, le 1079 remplacement nucléaire des fichiers. Ce qui est bien dans Unix, d'après moi, 1080 c'est que lorsqu'un fichier est en cours d'écriture, on peut déjà regarder 1081 ce qui se passe. Ainsi par exemple, vous pouvez utiliser <code>tail</code> 1082 pour voir où ça en est ; c'est vraiment sympa. Et si le programme se plante 1083 après avoir écrit le fichier partiellement, vous pouvez voir ce qu'il a 1084 fait. Tout ça c'est très bien, mais le résultat partiellement écrit ne doit 1085 jamais être considéré comme le résultat final escompté. La version 1086 précédente doit continuer d'être visible et utilisée par tous ceux qui 1087 tentent de l'utiliser jusqu'à ce qu'une nouvelle version soit entièrement et 1088 correctement réalisée. Cela signifie que la nouvelle version devra être 1089 visible dans le système de fichiers, mais pas sous le nom qu'elle est censée 1090 avoir. Elle devra être renommée quand c'est fini. C'est d'ailleurs ce qui se 1091 passe avec ITS, bien que chaque programme utilisateur doive le faire de 1092 façon explicite. Pour la compatibilité d'Unix avec les programmes 1093 utilisateur, ça doit se passer de façon transparente.</p> 1094 1095 <p>J'ai un plan bizarre et plutôt coton pour essayer de faire coller les 1096 numéros de version avec les programmes utilisateur existant sous Unix. Il 1097 s'agit de spécifier le nom de fichier, en laissant implicite le numéro de 1098 version si vous le spécifiez normalement. Et si vous souhaitez le faire de 1099 façon explicite – soit parce que vous voulez déclarer explicitement quelle 1100 version utiliser, soit parce que vous ne voulez pas de version du tout – 1101 vous mettez un point à son extrémité. Ainsi, si vous donnez le nom de 1102 fichier <code>FOO</code> cela signifie « cherche les versions qui existent 1103 pour FOO et prends la dernière ». Mais si vous dites <code>FOO.</code> cela 1104 signifie « utilise exactement le nom FOO et aucun autre ». Si vous dites 1105 <code>FOO.3. » cela veut dire « utilise exactement le nom FOO.3</code>, qui 1106 naturellement est la version trois de FOO et aucune autre. En sortie, si 1107 vous dites juste <code>FOO</code>, ça va créer une nouvelle version de FOO, 1108 mais si vous dites <code>FOO.</code>, ça va écrire un fichier nommé 1109 exactement « FOO ».</p> 1110 1111 <p>Maintenant c'est un défi de mettre au point tous ces détails et de voir s'il 1112 persiste des problèmes, si vraiment certains logiciels Unix se plantent bien 1113 qu'on leur ait fourni des noms avec des points et ainsi de suite, pour 1114 tenter de leur faire garder le même comportement.</p> 1115 1116 <p>Je m'attends à ce que, si on ouvre un fichier dont le nom finit par un 1117 point, on ouvre en fait immédiatement un fichier avec ce nom-là ; on obtient 1118 ainsi le même comportement qu'Unix : le résultat partiellement écrit est 1119 immédiatement visible. Tandis que, si on l'ouvre avec un nom qui ne finit 1120 pas par un point, la nouvelle version ne doit apparaître qu'à la fermeture 1121 du fichier, et seulement si on le ferme explicitement. S'il a été fermé 1122 parce que la tâche a échoué ou à cause du plantage du système ou de 1123 n'importe quoi du genre, il doit être sous un nom différent.</p> 1124 1125 <p>Et cette idée peut être rapprochée de l'utilisation de l'astérisque comme 1126 joker <i>[star matching]</i> : un nom qui ne finit pas par un point équivaut 1127 à tous les noms sans leur numéro de version. Supposons qu'un certain 1128 répertoire ait des fichiers comme ceci :</p> 1129 1130 <pre> 1131 <code>foo.1 foo.2 bar.8</code> 1132 </pre> 1133 1134 <p>Si je dis <code>*</code>, ça équivaut à</p> 1135 <pre> 1136 <code>foo bar</code> 1137 </pre> 1138 1139 <p>parce que ça prend tous les noms, les débarrasse de leurs versions et 1140 conserve tous ceux qui sont distincts. Mais si je dis <code>*.</code>, alors 1141 ça prend tous les noms exacts, met un point après chaque nom et cherche les 1142 équivalences. Ça me donne tous les noms avec toutes les différentes versions 1143 qui existent. Et de la même façon, vous pouvez voir la différence entre 1144 <code>*.c</code> et <code>*.c.</code>. Ceci [le premier] vous donnera 1145 essentiellement les références sans version de tous les fichiers 1146 <code>.c</code>, tandis que cela [le second] vous donnera toutes les 1147 versions… Bon, pas vraiment, vous devriez dire <code>*.c.*.</code>, 1148 mais ici je ne tiens pas compte des détails.</p> 1149 1150 <p>Une autre chose qu'on pourrait ajouter, qui est transparente pour 1151 l'utilisateur et est certainement compatible, c'est la tolérance du système 1152 de fichiers aux défaillances de la machine. À savoir, écrire toutes les 1153 informations sur le disque dans l'ordre approprié, en s'arrangeant pour 1154 qu'on puisse presser le bouton <kbd>Arrêt</kbd> à tout moment sans 1155 endommager le système de fichiers du disque. C'est tellement connu que je ne 1156 peux pas imaginer qu'on puisse le négliger. Une autre idée, c'est 1157 d'augmenter la redondance de l'information. Je ne sais pas si je le ferai, 1158 mais j'ai des idées sur la façon de stocker dans chaque fichier tous ses 1159 noms, ce qui permettrait, si l'un des répertoires du disque est perdu, de le 1160 reconstruire à partir du reste du contenu du disque.</p> 1161 1162 <p>En outre, je pense savoir comment rendre possible la mise à jour nucléaire 1163 de n'importe quelle partie d'un fichier – c'est-à-dire pouvoir remplacer un 1164 sous-bloc particulier d'un fichier par de nouvelles données de manière que 1165 si on essaie de le lire, on voie, ou bien les nouvelles données, ou bien les 1166 anciennes. Je crois que je peux faire ça, sans même de verrouillage.</p> 1167 1168 <p>Pour la gestion du réseau, j'ai l'intention par la suite d'implémenter 1169 TCP/IP pour ce système. Je pense également qu'il est possible d'utiliser 1170 KERMIT pour obtenir quelque chose de pratiquement équivalent à UUCP.</p> 1171 1172 <p>Un <i>shell</i> a déjà été écrit, je crois. Il a deux modes, l'un imitant le 1173 <i>Bourne shell</i> et l'autre imitant le <i>C-shell</i>,<a 1174 id="TransNote6-rev" href="#TransNote6"><sup>6</sup></a> dans le même 1175 programme. Je n'en ai pas reçu de copie et je ne sais pas combien de travail 1176 j'aurai à faire dessus. Il y a encore beaucoup d'autres utilitaires. Un MAKE 1177 existe, LS également ; il y a BISON qui remplace YACC et qui est déjà 1178 distribué. Il existe quelque chose d'assez proche de LEX, mais qui n'est pas 1179 totalement compatible et a besoin d'être retravaillé. Et en général, ce qui 1180 reste à faire est beaucoup moins important que ce qui a été fait mais on a 1181 toujours besoin de beaucoup de gens pour aider.</p> 1182 1183 <p>Les gens me demandent toujours « Quand est-ce que ça sera fini ? » 1184 Naturellement je ne peux pas le savoir, mais c'est une mauvaise question. Si 1185 vous comptiez payer pour ça, je comprendrais que vous vouliez savoir 1186 exactement ce que vous allez obtenir, et quand. Mais puisque vous n'allez 1187 pas payer, la bonne question à vous poser est : « Comment peut-on aider pour 1188 que ça soit fini plus tôt ? » J'ai une liste de projets dans un dossier au 1189 MIT. Les gens qui souhaitent apporter leur aide peuvent m'envoyer un 1190 courrier à cette adresse internet et je leur enverrai en retour une liste de 1191 projets (je me demande si ça va marcher [en regardant la craie]). Est-ce que 1192 c'est lisible ? C'est « RMS@GNU.ORG » (suivez juste la balle magique<a 1193 id="TransNote7-rev" href="#TransNote7"><sup>7</sup></a>). Et maintenant 1194 faisons une pause, et après la pause, je vais dire des choses vraiment 1195 controversées, alors ne partez pas maintenant. Si vous partez maintenant, 1196 vous allez rater le clou de la conférence.</p> 1197 1198 <p><strong>[Ici, nous avons eu 15 minutes de pause]</strong></p> 1199 1200 <p>On m'a demandé de faire connaître le moyen d'obtenir des copies des 1201 logiciels GNU. Eh bien, un des moyens est évidemment de connaître un ami qui 1202 en a un exemplaire. Mais si ce n'est pas le cas et que vous n'êtes pas sur 1203 Internet pour le télécharger, alors vous pouvez toujours commander une 1204 distribution sur bande et envoyer une certaine somme à la <i>Free Software 1205 Foundation</i> (Fondation pour le logiciel libre). Naturellement les 1206 programmes libres <i>[free programs]</i>, ce n'est pas la même chose que la 1207 distribution gratuite <i>[free distribution]</i>. Je l'expliquerai en détail 1208 plus tard.</p> 1209 1210 <p>J'ai ici un manuel d'Emacs, du genre bien imprimé. Il a été phototypé puis 1211 imprimé en offset. Bien que vous puissiez également l'imprimer vous-même à 1212 partir des sources de la distribution d'Emacs, vous pouvez en obtenir des 1213 copies de la <i>Free Software Foundation</i>. Vous pouvez venir après pour 1214 le regarder. Il contient également un bulletin de commande dont vous pouvez 1215 copier les renseignements, de même que ce dessin [de la page de garde] qui a 1216 quelquefois du succès : [montrant du doigt un personnage chassé par RMS à 1217 cheval sur un gnou] c'est un accapareur de logiciel effrayé, je parlerai de 1218 lui dans un moment.</p> 1219 1220 <p>Le logiciel est un phénomène relativement nouveau. Les gens ont commencé à 1221 distribuer du logiciel il y a peut-être trente ans. Il y a seulement vingt 1222 ans à peu près que quelqu'un a eu l'idée de faire du commerce avec 1223 ça. C'était un secteur sans a-priori sur la façon de faire ou sur les droits 1224 que l'on pouvait avoir, mais on avait quelques idées sur les autres domaines 1225 de la vie auxquels on pouvait emprunter leurs traditions, par analogie.</p> 1226 1227 <p>Une analogie appréciée par un bon nombre de professeurs en Europe est celle 1228 des mathématiques. Un programme est une sorte de grande formule. Par 1229 tradition, personne ne peut posséder une formule mathématique. N'importe qui 1230 peut la copier et s'en servir.</p> 1231 1232 <p>L'analogie qui a le plus de sens pour les gens ordinaires, c'est celle des 1233 recettes. Si vous y réfléchissez, ce qui ressemble le plus à un programme 1234 dans la vie ordinaire, c'est une recette – des instructions pour faire 1235 quelque chose. La différence, c'est qu'une recette est suivie par une 1236 personne, pas par une machine de façon automatisée. Il est vrai que pour la 1237 recette il n'y a pas de différence entre le code source et le code objet, 1238 mais cela reste ce qu'il y a de plus proche. Et personne n'est autorisé à 1239 posséder une recette.</p> 1240 1241 <p>Mais l'analogie qui a été choisie fut celle des livres, sur lesquels 1242 s'applique le copyright. Pourquoi ce choix a-t-il été fait ? Parce que les 1243 gens qui avaient le plus à gagner à faire ce choix particulier ont été 1244 autorisés à prendre la décision. Les gens qui écrivaient les programmes ont 1245 eu le droit de décider, pas ceux qui les utilisaient. Cela a été fait d'une 1246 façon totalement égoïste, en transformant le domaine de la programmation en 1247 quelque chose de sinistre.</p> 1248 1249 <p>Quand je suis entré dans ce secteur d'activité, quand j'ai commencé à 1250 travailler au MIT en 1971, l'idée que les programmes que nous développions 1251 pourraient ne pas être partagés n'était même pas discutée. Même chose à 1252 Stanford et à <abbr title="Carnegie Mellon University">CMU</abbr>, et 1253 partout ailleurs y compris chez Digital. À cette époque-là, le système 1254 d'exploitation de Digital était libre. J'en ai de temps en temps récupéré 1255 des morceaux, comme un assembleur multi-compatible pour PDP-11 que j'ai 1256 porté sur ITS et auquel j'ai ajouté de nombreuses fonctionnalités. Il n'y 1257 avait aucun copyright sur ce programme.</p> 1258 1259 <p>C'est seulement vers la fin des années 70 que ça a commencé à 1260 changer. J'étais extrêmement marqué par l'esprit de partage que nous avions 1261 jusque-là. Nous espérions faire quelque chose d'utile et nous étions heureux 1262 si les gens pouvaient s'en servir. Ainsi, quand j'ai développé le premier 1263 Emacs et que les gens ont commencé à vouloir l'utiliser en dehors du MIT, 1264 j'ai dit qu'il appartenait à la « communauté » Emacs. Pour utiliser Emacs 1265 vous deviez être membre de la communauté et ça voulait dire que vous deviez 1266 lui apporter en contribution toutes les améliorations que vous aviez 1267 faites. Toutes les améliorations de l'Emacs original devaient m'être 1268 renvoyées pour que je puisse les incorporer à de nouvelles versions d'Emacs, 1269 de manière que chacun dans la communauté puisse en bénéficier.</p> 1270 1271 <p>Mais ça a commencé à se dégrader quand Scribe a été développé à CMU, puis 1272 vendu à une entreprise. Cela a dérouté beaucoup d'entre nous, dans de 1273 nombreuses universités, parce que nous avons vu quelle tentation c'était 1274 pour chacun et à quel point il était profitable d'être peu coopératif. Et 1275 ceux d'entre nous qui y croyaient toujours n'avaient aucune arme pour tenter 1276 de convaincre les autres de coopérer avec nous. Sans aucun doute, les uns 1277 après les autres, ils allaient déserter et cesser de coopérer avec le reste 1278 de la société, jusqu'à ce qu'il ne reste plus que ceux d'entre nous qui 1279 avaient des consciences très fortes. Et c'est ce qui s'est passé.</p> 1280 1281 <p>La programmation est maintenant devenue un domaine sinistre, où chacun pense 1282 de façon cynique à combien il va gagner à ne pas être sympa avec les autres 1283 programmeurs, ni avec les utilisateurs.</p> 1284 1285 <p>Je veux montrer que la pratique de posséder le logiciel est à la fois 1286 matériellement inutile, moralement nuisible à la société, et malfaisante, 1287 ces trois choses étant interdépendantes. C'est moralement nocif parce que ça 1288 engage chaque membre de la société qui entre en contact avec l'informatique 1289 dans une pratique qui est manifestement du gaspillage pour les autres. Et 1290 chaque fois que vous faites pour votre bien personnel une chose dont savez 1291 qu'elle fait plus de mal aux autres qu'elle ne vous aide, vous êtes obligé 1292 de devenir cynique pour pouvoir en supporter la pensée. Et c'est malfaisant 1293 parce que ça gaspille délibérément le travail effectué sur la société, en 1294 affaiblissant le lien social.</p> 1295 1296 <p>D'abord je veux expliquer les différentes nuisances causées par les 1297 tentatives de posséder le logiciel ou, plus généralement, toute autre 1298 information utile, puis je m'appliquerai à réfuter les arguments des 1299 défenseurs de cette pratique, ensuite je voudrais parler de la façon de 1300 combattre ce phénomène et dire comment je m'y prends moi-même.</p> 1301 1302 <p>L'idée de posséder l'information est nocive à trois niveaux 1303 différents. Matériellement nocive à trois niveaux différents. Et à chaque 1304 type de nocivité matérielle correspond une nocivité morale.</p> 1305 1306 <p>Au premier niveau, c'est juste que ça décourage l'utilisation du 1307 programme. Il y a moins de gens qui utilisent le programme, mais ça ne 1308 demande pas moins de travail pour l'élaborer. Quand on met un prix sur 1309 l'utilisation d'un programme en tant qu'« incitation », c'est le mot que ces 1310 accapareurs de logiciel aiment à employer, c'est une incitation pour les 1311 gens à ne pas l'utiliser et c'est du gâchis. Si par exemple il y a deux fois 1312 moins de gens qui utilisent le programme à cause de son prix, le programme a 1313 été à moitié gaspillé. La même quantité de travail a produit moitié moins de 1314 richesse.</p> 1315 1316 <p>En fait, vous n'avez rien de spécial à faire pour qu'un programme soit 1317 diffusé vers tous ceux qui veulent l'utiliser, parce qu'ils peuvent 1318 parfaitement le copier eux-mêmes et qu'il finit par atteindre tout le 1319 monde. Tout ce que vous avez à faire, après avoir écrit le programme, c'est 1320 de vous asseoir tranquillement et de laisser les gens faire ce qu'ils 1321 veulent. Mais ce n'est pas ce qu'il se passe. Au lieu de ça, quelqu'un 1322 essaye délibérément d'entraver le partage du programme. Mais il ne tente pas 1323 simplement de l'entraver, il essaie de pousser les autres à l'aider. Toutes 1324 les fois qu'un utilisateur signe un accord de confidentialité, c'est comme 1325 s'il trahissait ses camarades utilisateurs. Au lieu de suivre la règle d'or 1326 et de dire « J'apprécie ce programme, mon voisin le voudrait aussi, je veux 1327 que nous l'ayons tous les deux », il dit « Ouais, donnez-le-moi. Au diable 1328 mon voisin ! Je vous aiderai à le maintenir hors de sa portée. Ne le donnez 1329 qu'à moi ! » C'est cet état d'esprit qui est source de nuisance morale, 1330 cette attitude qui consiste à dire : « Au diable mes voisins, donnez-m'en, à 1331 MOI, une copie. »</p> 1332 1333 <p>Après être tombé sur des gens qui disaient qu'ils ne me laisseraient pas 1334 avoir de copies parce qu'ils avaient signé un accord de confidentialité, 1335 quand quelqu'un me demandait de signer un truc comme ça je savais que 1336 c'était mal. Je ne pouvais pas faire à quelqu'un d'autre ce qui m'avait tant 1337 exaspéré quand on me l'avait fait à moi.</p> 1338 1339 <p>Mais ce n'est que le premier niveau de nocivité. Le deuxième niveau se 1340 manifeste quand les gens veulent modifier le programme, parce qu'un 1341 programme ne satisfait jamais vraiment tous ceux qui voudraient 1342 l'utiliser. Tout comme ils aiment varier les recettes, disons, en mettant 1343 moins de sel – ou peut-être aiment-ils rajouter des poivrons verts – les 1344 gens doivent également pouvoir modifier les programmes pour obtenir les 1345 résultats dont ils ont besoin.</p> 1346 1347 <p>Les propriétaires de logiciel ne s'inquiètent pas vraiment de savoir si les 1348 gens peuvent modifier le programme ou non, mais les en empêcher leur est 1349 utile pour parvenir à leurs fins. Généralement, quand un logiciel est 1350 propriétaire, vous ne pouvez pas obtenir les sources ; vous ne pouvez pas le 1351 modifier et c'est un grand gaspillage de travail pour les programmeurs, 1352 aussi bien qu'une grande frustration pour les utilisateurs. Par exemple, une 1353 amie m'a dit qu'elle avait travaillé pendant de nombreux mois dans une 1354 banque où elle était programmeuse pour écrire un nouveau programme. Or il y 1355 avait un programme disponible dans le commerce qui était presque bon, mais 1356 qui n'était pas tout à fait ce dont ils avaient besoin. Et tel quel, il leur 1357 était inutile. Cela ne demandait probablement qu'un changement minime, mais 1358 comme les sources de ce programme n'étaient pas disponibles c'était 1359 impossible. Elle a dû repartir de zéro et perdre beaucoup de temps. Et nous 1360 ne pouvons que spéculer sur la fraction de l'ensemble des programmeurs, 1361 partout dans le monde, qui perdent leur temps de cette façon.</p> 1362 1363 <p>Il y a aussi le cas où un programme est adéquat, mais peu pratique. Par 1364 exemple, la première fois que nous avons eu une imprimante graphique au MIT, 1365 nous avons écrit le logiciel nous-mêmes et nous avons installé un bon nombre 1366 d'utilitaires sympathiques. Par exemple, il vous envoyait un message quand 1367 votre tâche d'impression était finie, ou quand l'imprimante manquait de 1368 papier et que vous aviez une tâche en file d'attente, et pas mal d'autres 1369 choses qui correspondaient à ce que nous voulions. Puis on nous a donné une 1370 imprimante graphique beaucoup plus intéressante, une des premières 1371 imprimantes laser, mais le logiciel était fourni par Xerox et nous ne 1372 pouvions pas le modifier. Ils n'acceptaient pas d'intégrer ces 1373 fonctionnalités et nous ne pouvions pas le faire nous-même. Aussi avons-nous 1374 dû nous contenter de choses qui ne « fonctionnaient qu'à moitié ». Et 1375 c'était très frustrant de savoir que nous étions prêts à arranger ça, 1376 désireux et capables de le faire, mais que nous n'en avions pas le droit. On 1377 sabotait notre travail.</p> 1378 1379 <p>Et il y a tous les gens qui utilisent des ordinateurs et qui disent que les 1380 ordinateurs sont un mystère pour eux. Ils ne savent pas comment ça 1381 fonctionne. Mais comment pourraient-ils le savoir ? Ils ne peuvent pas lire 1382 les programmes qu'ils utilisent. La seule manière pour les gens d'apprendre 1383 comment les programmes doivent être écrits ou comment ils font ce qu'ils 1384 font, c'est de lire le code source.</p> 1385 1386 <p>Aussi peut-on se demander si l'idée que l'utilisateur voit l'ordinateur 1387 comme un simple outil ne serait pas une prophétie autoréalisatrice, une 1388 conséquence de la pratique de garder secret le code source.</p> 1389 1390 <p>La nocivité morale qui correspond à ce type de nocivité matérielle affecte 1391 le sentiment d'autosuffisance. Quand une personne passe une bonne partie de 1392 son temps à utiliser un système informatique, la configuration de ce système 1393 devient la cité dans laquelle elle vit. L'aménagement de nos maisons et la 1394 disposition des meubles déterminent comment nous y vivons, il en est de même 1395 pour le système informatique que nous utilisons. Si nous ne pouvons pas le 1396 modifier pour qu'il nous convienne, nos vies sont alors vraiment sous le 1397 contrôle des autres, et d'une certaine manière la personne qui le constate 1398 en est démoralisée : « Ça ne sert à rien d'essayer de changer ça, ce ne sera 1399 jamais bien. Ce n'est pas la peine de s'embêter. Je vais juste faire mes 1400 heures et… quand j'aurai fini, je m'en irai en tâchant de ne plus y 1401 penser. » Ce genre d'état d'esprit, ce manque d'enthousiasme, est le 1402 résultat obtenu quand on n'est pas autorisé à améliorer les choses alors 1403 qu'on serait prêt à montrer de l'esprit civique.</p> 1404 1405 <p>Le troisième niveau de nocivité se situe dans l'interaction entre les 1406 développeurs de logiciel eux-mêmes, car tout domaine de connaissance avance 1407 davantage quand les gens peuvent construire à partir du travail des 1408 autres. Mais l'appropriation de l'information par une personne est 1409 explicitement conçue pour empêcher toutes les autres de faire cela. Si les 1410 gens pouvaient construire à partir du travail des autres, alors la propriété 1411 deviendrait difficile à cerner, c'est pourquoi ils s'assurent que chaque 1412 nouveau venu dans le domaine commence au début, ce qui ralentit 1413 considérablement le progrès.</p> 1414 1415 <p>C'est ce que nous pouvons constater : combien y a-t-il de tableurs créés par 1416 des entreprises différentes sans qu'aucune ait profité de ce qui avait été 1417 fait auparavant ? Oui, c'est vrai, le premier tableur qui a été écrit 1418 n'était pas parfait. Il ne fonctionnait probablement que sur certains types 1419 d'ordinateurs et il ne faisait pas les choses de la meilleure manière 1420 possible. Donc il y avait diverses raisons pour lesquelles certaines 1421 personnes voulaient en réécrire des morceaux. Mais si elles avaient 1422 seulement dû réécrire les morceaux qu'elles voulaient vraiment améliorer, ça 1423 leur aurait donné beaucoup moins de travail. Vous pouvez très bien voir 1424 comment améliorer un des aspects d'un système, mais ne pas voir comment en 1425 améliorer un autre ; en fait cela pourrait vous être très difficile de le 1426 faire aussi bien. Si vous pouviez prendre la partie que vous trouvez bien et 1427 refaire seulement le morceau pour lequel vous avez des idées, vous pourriez 1428 avoir un système en tout point meilleur, avec beaucoup moins de travail que 1429 cela n'en prendrait de le réécrire entièrement. Nous savons tous qu'il peut 1430 être avantageux de réécrire un système complètement, mais à condition de 1431 pouvoir lire l'ancien d'abord.</p> 1432 1433 <p>Ainsi, dans le domaine de la programmation, les gens ont développé une 1434 manière de perdre une bonne partie de leur temps, créant de ce fait un 1435 apparent besoin en programmeurs, plus important qu'en réalité. Pourquoi y 1436 a-t-il un manque de programmeurs ? Parce qu'avec la propriété intellectuelle 1437 ils se sont organisés pour gaspiller la moitié de leur travail ; il semble 1438 ainsi que nous en ayons besoin de deux fois plus. Quand les gens se tournent 1439 vers le système de la propriété intellectuelle en disant « Regardez les 1440 belles statistiques de l'emploi, regardez l'ampleur de cette industrie », 1441 cela ne prouve qu'une chose : l'ampleur du gaspillage de temps et 1442 d'argent. Quand ils parlent de chercher des moyens d'améliorer la 1443 productivité du programmeur, ils sont ravis de le faire si cela implique des 1444 outils plus évolués, mais si cela implique de se débarrasser de choses 1445 précises qui sont faites pour la réduire, ils sont contre – puisque cela 1446 réduirait le nombre d'emplois en programmation. Il y a comme une 1447 contradiction interne là-dedans.</p> 1448 1449 <p>Et la nocivité morale qui correspond à ce niveau de nocivité matérielle 1450 affecte l'esprit de coopération scientifique, qui autrefois était si fort 1451 que même les scientifiques de pays en guerre continuaient de coopérer, parce 1452 qu'ils savaient que ce qu'ils faisaient n'avait rien à voir avec la 1453 guerre. C'était uniquement pour le bénéfice à long terme de l'humanité. De 1454 nos jours, personne ne se préoccupe plus de ça.</p> 1455 1456 <p>Pour vous représenter ce que c'est que de faire obstacle à l'utilisation 1457 d'un programme, imaginez un sandwich que vous pourriez manger mais qui ne 1458 serait pas consommé. Vous pourriez le manger, une autre personne pourrait le 1459 manger, le même sandwich, autant de fois qu'elle voudrait, et il resterait 1460 toujours aussi nourrissant qu'à l'origine.</p> 1461 1462 <p>La meilleure chose à faire, ce que nous devrions faire avec ce sandwich, 1463 serait de l'amener partout où les gens ont faim ; de l'amener à autant de 1464 bouches que possible, de sorte qu'il alimente autant de personnes que 1465 possible. Il est certain que nous ne devons pas mettre de prix sur ce 1466 sandwich, parce que sinon les gens ne pourraient pas se permettre de le 1467 manger et il serait gaspillé.</p> 1468 1469 <p>Un programme est comme ce sandwich, mais en mieux, parce qu'il peut être 1470 mangé en même temps dans de nombreux endroits différents, utilisé par des 1471 personnes différentes les unes après les autres. C'est comme si ce sandwich 1472 suffisait pour alimenter tout le monde, partout, pour toujours, mais que ça 1473 lui était interdit parce que quelqu'un croyait qu'il devait le posséder.</p> 1474 1475 <p>Les gens qui croient pouvoir posséder des programmes proposent généralement 1476 deux types d'arguments. Le premier c'est : « Je l'ai écrit, c'est l'enfant 1477 de mon esprit, mon cœur, mon âme y est. Comment peut-on me l'enlever ? Où 1478 qu'il aille, il est à moi, à moi, À MOI !! » Très bien, mais il est curieux 1479 tout de même que la plupart d'entre eux signent des accords stipulant qu'il 1480 appartient à l'entreprise pour laquelle ils travaillent.</p> 1481 1482 <p>Aussi je crois que cela fait partie des choses dont vous pouvez facilement 1483 vous persuader qu'elles sont importantes, mais tout aussi aisément, qu'elles 1484 n'ont aucune importance.</p> 1485 1486 <p>Habituellement, ces personnes usent de cet argument pour exiger le droit de 1487 contrôler jusqu'à la façon dont les gens peuvent modifier le programme. Ils 1488 disent : « Personne ne doit pouvoir gâcher mon œuvre d'art. » Bien, imaginez 1489 que l'inventeur du plat que vous projetez de cuisiner ait le droit de 1490 contrôler la façon dont vous le préparez parce que c'est son œuvre 1491 d'art. Vous voulez enlever du sel, mais il dit : « Oh, non! J'ai conçu ce 1492 plat et il doit y avoir beaucoup de sel ! » – « Mais mon médecin m'a dit 1493 qu'il n'était pas bon pour moi de manger salé. Que puis-je faire ? »</p> 1494 1495 <p>La personne qui se sert du programme est évidemment bien plus près de 1496 l'événement. L'utilisation du programme l'affecte directement tandis que 1497 l'auteur a seulement une sorte de relation abstraite avec cette 1498 utilisation. Et donc, pour donner aux gens autant de contrôle que possible 1499 sur leurs propres vies, c'est l'utilisateur qui doit décider.</p> 1500 1501 <p>Le deuxième argument est économique. « Comment les gens seront-ils payés 1502 pour programmer ? » disent-ils, et il y a un peu de vrai là-dedans. Mais une 1503 bonne part de ce qu'ils disent est confus. Et la confusion vient de ce qu'il 1504 n'est pas du tout pareil de dire « Si nous voulons avoir beaucoup de gens 1505 pour programmer, nous devons nous assurer qu'ils n'auront pas besoin de 1506 gagner leur vie d'une autre manière » d'une part, et d'autre part de dire 1507 « Nous devons conserver le système actuel, nous devons devenir riches en 1508 programmant. » Il y a une grande différence entre juste percevoir un salaire 1509 pour vivre et se faire du fric comme le font les programmeurs de nos jours, 1510 du moins aux États-Unis. Ils disent toujours : « Comment vais-je manger ? » 1511 Mais le problème n'est pas vraiment de savoir « comment il va manger » mais 1512 « comment il va manger des sushis ». Ou bien : « Comment ferai-je pour avoir 1513 un toit au-dessus de la tête ? » Mais le vrai problème est : « Comment 1514 pourra-t-il se payer un appartement dans une copropriété ? »</p> 1515 1516 <p>Le système actuel a été choisi par les gens qui investissent dans le 1517 développement logiciel parce que ça leur donne la possibilité de se faire le 1518 plus d'argent possible, et non parce que c'est le seul moyen possible de 1519 récolter des fonds pour soutenir l'effort de développement d'un système. En 1520 fait, aussi récemment qu'il y a dix ou quinze ans, il était courant de 1521 soutenir le développement logiciel autrement. Par exemple, les systèmes 1522 d'exploitation de Digital qui étaient libres, même au début des années 70, 1523 ont été développés par des personnes payées pour ce travail. Beaucoup de 1524 programmes utiles ont été développés dans les universités. De nos jours ces 1525 programmes sont souvent vendus, mais il y a quinze ans ils étaient la 1526 plupart du temps gratuits, et pourtant les gens étaient payés pour leur 1527 travail.</p> 1528 1529 <p>Lorsque vous avez quelque chose comme un programme, comme un sandwich infini 1530 ou comme une route qui ne doit être construite qu'une fois, sachant qu'une 1531 fois construite il importe assez peu de savoir combien de fois vous 1532 l'utilisez, sachant que cela ne coûte rien de l'utiliser, il est 1533 généralement bien mieux de ne pas mettre de coût sur cette utilisation. Et 1534 il y a des tas de choses comme ça que nous développons aujourd'hui, en 1535 payant des gens pour le faire. Par exemple, toutes ces rues par 1536 là-bas. Autant il est facile de trouver des gens qui programmeront sans être 1537 payés, autant il est vraiment impossible d'en trouver qui construiront des 1538 routes sans être payés. La construction des routes n'est pas un travail 1539 créatif ni amusant comme la programmation mais il y a plein de rues par 1540 là-bas. Nous arrivons parfaitement à trouver de quoi payer ces gens et c'est 1541 bien mieux comme ça que d'avoir dit : « Laissons des entreprises privées 1542 construire des routes et installer des cabines de péage, et vous paierez un 1543 péage à chaque coin de rue. Alors les entreprises qui auront sélectionné les 1544 bons endroits pour mettre leurs routes feront des profits et les autres 1545 feront faillite. »</p> 1546 1547 <p>Il se produit une chose amusante chaque fois que quelqu'un propose une 1548 manière de faire de l'argent en accaparant quelque chose. Jusque-là, vous 1549 aviez probablement un bon nombre de gens vraiment enthousiastes et désireux 1550 de travailler dans ce domaine. Et la seule question qui se posait était : 1551 « Comment peuvent-ils trouver un moyen d'existence ? » Si nous pensons aux 1552 mathématiciens par exemple, il y a beaucoup plus de gens qui veulent être 1553 des mathématiciens purs que de financement pour que tout le monde le 1554 devienne. Et même lorsqu'ils obtiennent des fonds, ils n'en obtiennent pas 1555 beaucoup. Et ces gens ne vivent pas bien. Pour les musiciens, c'est encore 1556 pire. J'ai vu des statistiques sur ce que gagne le musicien moyen, le péquin 1557 moyen qui consacre la majeure partie de son temps à tenter de devenir 1558 musicien dans le Massachusetts ; c'est quelque chose comme la moitié du 1559 revenu moyen, ou moins. C'est à peine assez pour vivre, c'est dur. Mais il y 1560 en a un bon nombre qui essaient. Et puis, d'une façon ou d'une autre, quand 1561 il devient possible d'être très bien payé pour faire quelque chose, 1562 généralement tous ces gens disparaissent. Et on commence à dire : « Personne 1563 ne le fera à moins d'être payé aussi bien. »</p> 1564 1565 <p>J'ai vu cela se produire dans le domaine de la programmation. Les mêmes qui 1566 travaillaient au labo d'IA en étant très peu payés et qui trouvaient ça très 1567 bien, aujourd'hui n'imagineraient pas travailler pour moins de cinquante 1568 mille dollars par an. Que s'est-il passé ? Quand vous faites miroiter aux 1569 gens la possibilité de faire de l'argent, quand ils en voient d'autres faire 1570 le même travail en étant payés très cher, ils estiment devoir obtenir la 1571 même chose et personne n'est alors disposé à continuer comme avant. Il est 1572 facile, une fois que cela s'est produit, de penser que la seule option est 1573 de payer les gens énormément. Mais ce n'est pas vrai. Si la possibilité de 1574 faire de l'argent n'existait pas, vous auriez des gens qui accepteraient de 1575 le faire pour pas grand-chose, surtout si c'était créatif et amusant.</p> 1576 1577 <p>J'ai donc vu ce monde unique du labo d'IA se faire détruire, et la vente du 1578 logiciel faire partie intégrante de ce qui l'a détruit. J'ai vu également, 1579 comme je l'ai expliqué, qu'on a besoin de logiciel libre pour retrouver une 1580 communauté comme celle-là. Mais en y réfléchissant davantage, j'ai compris 1581 en quoi l'accaparement du logiciel fait du mal à l'ensemble de la société 1582 – plus particulièrement en poussant les gens à trahir leurs voisins, ce qui 1583 entraîne l'affaiblissement du lien social ; ce même état d'esprit qui 1584 conduit les gens à voir quelqu'un se faire poignarder dans la rue et à 1585 n'avertir personne ; cet état d'esprit dont nous pouvons voir tant 1586 d'entreprises faire preuve autour de nous. Il m'est apparu clairement que 1587 j'avais un choix à faire. Je pouvais faire partie de ce monde et me sentir 1588 malheureux de voir ce que je faisais de ma vie, ou je pouvais décider de le 1589 combattre. Alors j'ai décidé de le combattre. J'ai consacré ma carrière à 1590 tenter de reconstruire la communauté de partage du logiciel, à tenter de 1591 mettre un terme au phénomène d'accaparement d'information utile à tous. Et 1592 le système GNU est un moyen à cet effet. C'est un moyen technique à des fins 1593 sociales. Avec le système GNU, j'espère vacciner les utilisateurs contre la 1594 menace des accapareurs de logiciel.</p> 1595 1596 <p>En ce moment, les accapareurs réclament essentiellement le pouvoir de rendre 1597 inutile l'ordinateur personnel. Il y a une cinquantaine d'années, il y avait 1598 des gens aux USA, de la Mafia, qui entraient dans les magasins et les bars, 1599 surtout les bars quand les bars étaient hors-la-loi, évidemment. Une fois 1600 entrés, ils disaient : « Pas mal d'endroits par ici ont brûlé 1601 dernièrement. Vous ne voudriez pas que le vôtre subisse le même sort ? Eh 1602 bien, nous pouvons vous protéger contre les incendies, vous avez juste à 1603 nous payer mille dollars par mois et nous ferons en sorte qu'il n'y ait pas 1604 le feu. » Et ça s'appelait « le racket de protection ». Aujourd'hui nous en 1605 sommes à quelque chose près à ce qu'une personne nous dise : « Vous avez un 1606 joli ordinateur ici et vous utilisez quelques programmes. Eh bien, si vous 1607 ne voulez pas que ces programmes disparaissent, si vous ne voulez pas que la 1608 police vous poursuive, vous feriez mieux de me payer mille dollars et je 1609 vous donnerai un exemplaire de ce programme avec une licence. » Et ça 1610 s'appelle « le racket de protection du logiciel ».</p> 1611 1612 <p>En réalité, ils ne font que mettre des bâtons dans les roues de tous ceux 1613 qui font ce qui doit être fait, mais ils se prétendent à eux-mêmes, et 1614 veulent nous faire croire, qu'ils ont une fonction utile. Bon. Ce que 1615 j'espère, c'est que le jour où ce type de la Mafia du logiciel entrera et 1616 dira « Vous voulez que ces programmes disparaissent de votre ordinateur ? » 1617 l'utilisateur puisse répondre « Je n'ai plus peur de vous. J'ai le logiciel 1618 libre GNU et il n'y a rien que vous puissiez me faire désormais. »</p> 1619 1620 <p>Quelquefois, les gens essaient de se justifier de posséder le logiciel en 1621 avançant l'idée qu'il faut donner aux gens des incitations pour produire des 1622 choses. Je suis d'accord avec la notion d'entreprise privée en général et 1623 avec l'espoir de gagner de l'argent en produisant des choses que d'autres 1624 apprécient, mais ça se détraque dans le domaine du logiciel 1625 actuellement. Produire un programme propriétaire, ce n'est pas la même 1626 contribution à la société que produire ce même programme et le laisser 1627 libre. Parce que l'écriture du programme est juste une contribution 1628 potentielle à la société. La vraie contribution à la richesse de la société 1629 se fait seulement quand le programme est utilisé. Et si vous empêchez 1630 l'utilisation du programme, la contribution ne se fait pas vraiment. La 1631 contribution dont la société a besoin ne réside pas dans ces programmes 1632 propriétaires que tout le monde est tellement incité à faire. La 1633 contribution que nous voulons vraiment est celle du logiciel libre. Notre 1634 société se détraque parce qu'elle donne aux gens des incitations pour faire 1635 ce qui n'est pas très utile et aucune pour faire ce qui est utile. Ainsi 1636 l'idée sur quoi repose l'entreprise privée n'est pas mise en application. On 1637 pourrait même dire que la société est névrotique, car après tout, quand une 1638 personne encourage dans le comportement des autres ce qui n'est pas bon pour 1639 elle, on appelle ça une névrose. C'est comme cela que se comporte notre 1640 société, en encourageant les programmeurs à faire des choses qui ne sont pas 1641 bonnes pour elle.</p> 1642 1643 <p>Je sors un peu du commun. Je préfère croire que je suis un bon membre de la 1644 société et que je contribue à quelque chose plutôt que de sentir que je 1645 l'arnaque avec succès, c'est pourquoi j'ai décidé de faire ce que j'ai 1646 fait. Mais cela tracasse chacun, au moins un petit peu, d'avoir le sentiment 1647 d'être payé pour faire ce qui n'est pas vraiment utile. Par conséquent, 1648 cessons de défendre les incitations à faire ce qui est mauvais et essayons 1649 au moins de proposer des arrangements pour inciter les gens à faire ce qui 1650 est bon, c'est-à-dire du logiciel libre.</p> 1651 1652 <p>Merci.</p> 1653 1654 <p><strong>[Après ça, RMS a répondu à des questions pendant environ une 1655 heure. Je n'en ai inclus que quelques-unes dans cette version. La bande 1656 était mauvaise et je n'ai pas eu le temps de faire le travail nécessaire sur 1657 la totalité]</strong></p> 1658 1659 <dl> 1660 <dt><b>Question :</b> Est-ce que quelqu'un a tenté de vous causer des ennuis ?</dt> 1661 1662 <dd><p><b>Réponse :</b> La seule fois où l'on a tenté de me causer des ennuis, 1663 c'était ces propriétaires, ces prétendus propriétaires, autoproclamés, de 1664 Gosling Emacs. Hormis le fait qu'ils n'avaient aucune raison de le faire, 1665 ils ne pouvaient pas faire grand-chose. D'ailleurs, je voudrais attirer 1666 l'attention de tout le monde sur la façon dont les gens se servent du 1667 langage pour vous inciter à penser d'une certaine façon et pas 1668 autrement. Une grande part de la terminologie actuelle dans ce domaine a été 1669 choisie par les propriétaires autoproclamés de logiciel pour vous inciter à 1670 assimiler le logiciel à des biens matériels et à oublier les 1671 différences. L'exemple le plus flagrant en est le terme « pirate ». Refusez 1672 s'il vous plaît d'utiliser le terme « pirate » pour décrire quelqu'un qui 1673 souhaite partager du logiciel avec son voisin comme tout bon citoyen.</p> 1674 1675 <p>J'ai oublié de vous dire ceci : La notion de copyright est apparue après 1676 l'invention de la presse à imprimer. Dans les temps anciens, les auteurs se 1677 copiaient les uns les autres librement et ceci n'était pas considéré comme 1678 un mal. Et c'était même très utile : certaines œuvres originales n'ont pu 1679 survivre, bien que de manière fragmentaire, que grâce à des citations 1680 extensives dans d'autres œuvres qui, elles, ont survécu.</p> 1681 1682 <p>C'est parce que la copie des livres se faisait à l'unité ; il était dix fois 1683 plus difficile d'en faire dix copies qu'une seule. Puis la presse à imprimer 1684 a été inventée. Ceci n'a pas empêché les gens de copier les livres à la 1685 main, mais comparée à l'impression, la copie manuelle était si pénible 1686 qu'elle aurait aussi bien pu être impossible.</p> 1687 1688 <p>Quand les livres ont pu être produits en masse, le copyright commença à 1689 avoir un sens. De plus, celui-ci ne confisquait pas la liberté des lecteurs 1690 ordinaires, puisqu'en tant que membre du public qui n'avait pas de presse, 1691 vous ne pouviez pas copier de livre de toute façon. Le copyright ne vous 1692 privait donc d'aucune liberté. Il a été inventé, et avait du sens 1693 moralement, à cause d'un changement technologique. Or aujourd'hui le 1694 changement inverse se produit. La copie individuelle d'information se fait 1695 de mieux en mieux et nous pouvons voir que la finalité du progrès 1696 technologique est de permettre de copier n'importe quel genre 1697 d'information… <span>[coupure due à l'inversion de la bande]</span>.</p> 1698 1699 <p>Ainsi nous retournons à la même situation que dans le monde antique où le 1700 copyright n'avait aucun sens.</p> 1701 1702 <p>Considérons notre concept de propriété. Il a son origine dans les objets 1703 matériels. Ces derniers satisfont la loi de conservation, à peu de choses 1704 près. Oui c'est vrai, je peux casser une craie en deux, mais ce n'est pas 1705 ça ; elle va s'user, se « consommer ». Mais fondamentalement ceci est une 1706 chaise [pointant une chaise du doigt]. Je ne peux pas simplement claquer des 1707 doigts et en avoir deux. La seule manière d'en avoir une deuxième, c'est de 1708 la construire comme l'a été la première. Ça prend plus de matières 1709 premières, plus de travail de production. Nos idées de propriété ont été 1710 développées pour que le sens moral s'accorde avec ces faits.</p> 1711 1712 <p>Pour une portion d'information que tout le monde peut copier, les faits sont 1713 différents, et donc les attitudes morales correspondantes sont 1714 différentes. Les attitudes morales proviennent de la réflexion sur le nombre 1715 de gens que cela va aider et le nombre de gens que cela va léser de faire 1716 certaines choses. Lorsqu'il s'agit d'un objet matériel, vous pouvez venir 1717 prendre cette chaise, mais vous ne pouvez pas venir la copier. Et si vous 1718 emportiez la chaise, cela ne produirait rien, vous n'auriez aucune 1719 excuse. Si quelqu'un dit « J'ai travaillé pour faire cette chaise, une seule 1720 personne peut avoir cette chaise, ça peut aussi bien être moi », nous 1721 pourrions aussi bien dire « Oui, c'est compréhensible. » Quand une personne 1722 dit « J'ai gravé les bits de ce disque, une seule personne peut l'avoir, 1723 alors n'essayez pas de me l'enlever », ça se comprend aussi. Si une seule 1724 personne peut avoir le disque, pourquoi pas celui à qui il appartient ?</p> 1725 1726 <p>Mais quand quelqu'un d'autre arrive et dit « Je ne vais pas abîmer votre 1727 disque, je vais juste en faire un autre comme lui par magie, je l'emmènerai 1728 et vous pourrez continuer à utiliser ce disque comme vous le faisiez 1729 auparavant », eh bien, c'est la même chose que si quelqu'un disait « J'ai un 1730 copieur magique de chaise. Vous pouvez continuer à profiter de votre chaise 1731 en l'ayant toujours à disposition mais j'en aurai une aussi. » C'est une 1732 bonne chose.</p> 1733 1734 <p>Si les gens n'ont pas à construire mais juste à claquer des doigts et 1735 reproduire, c'est merveilleux. Mais ce changement technologique ne convient 1736 pas à ceux qui voudraient pouvoir posséder des copies particulières et en 1737 tirer de l'argent. C'est une idée qui ne correspond qu'aux objets qui se 1738 conservent. Aussi font-ils leur possible pour transformer les programmes en 1739 objets matériels. Vous êtes-vous demandés pourquoi, quand vous allez dans un 1740 magasin de logiciel et que vous achetez un exemplaire d'un programme, cela 1741 revient à acheter quelque chose qui ressemble à un livre ? Ils veulent que 1742 les gens pensent à leur achat comme à un objet matériel, sans se rendre 1743 compte qu'il est en réalité sous forme de données numériques copiables.</p> 1744 1745 <p>Après tout, qu'est-ce qu'un ordinateur à part une machine universelle ? Vous 1746 avez probablement étudié les machines universelles de Turing, ces machines 1747 qui peuvent imiter n'importe quelle autre machine. L'avantage d'une machine 1748 universelle, c'est que vous pouvez lui faire imiter n'importe quelle autre 1749 machine et que les modes d'emploi peuvent être copiés et changés, toutes 1750 choses que vous ne pouvez pas faire avec un objet matériel. Et c'est 1751 exactement ce que les accapareurs de logiciel veulent que le public arrête 1752 de faire. Ils veulent profiter du changement technologique, en marche vers 1753 les machines universelles, mais ils ne veulent pas que le public en profite.</p> 1754 1755 <p>En gros, ils tentent de conserver « l'âge de l'objet matériel », mais 1756 celui-ci est dépassé. Notre conception du bien et du mal doit être synchrone 1757 avec les faits réels du monde dans lequel nous vivons.</p> 1758 </dd> 1759 1760 <dt><b>Question :</b> Ainsi ça se ramène à la propriété de 1761 l'information. Pensez-vous qu'il y ait des exemples où, selon vous, il soit 1762 juste de posséder l'information ?</dt> 1763 1764 <dd><p><b>Réponse :</b> Pour une information qui n'est pas utile au public ou qui a 1765 un caractère personnel, je dirais OK. En d'autres termes, l'information qui 1766 porte, non sur la manière de faire les choses mais sur ce que vous avez 1767 l'intention de faire ; l'information dont la seule valeur pour les autres 1768 est spéculative ; celle qui leur permet de vous faire perdre de l'argent 1769 mais avec laquelle ils ne peuvent véritablement rien créer. Je dirais qu'il 1770 est parfaitement raisonnable de garder ce genre de chose secrète et sous 1771 contrôle.</p> 1772 1773 <p>Mais l'information créatrice, celle que les gens peuvent utiliser ou dont 1774 ils peuvent profiter, et ce d'autant mieux que plus de gens y auront accès, 1775 nous devons toujours en encourager la copie.</p> 1776 </dd> 1777 </dl> 1778 </div> 1779 1780 <div class="translators-notes"> 1781 1782 <!--TRANSLATORS: Use space (SPC) as msgstr if you don't have notes.--> 1783 <hr /><b>Notes de traduction</b><ol> 1784 <li><a id="TransNote1" href="#TransNote1-rev" 1785 class="nounderline">↑</a> 1786 ITS <i>(Incompatible Timesharing System)</i> : « Système à temps partagé 1787 incompatible », conçu par les hackers du laboratoire d'intelligence 1788 artificielle et nommé en opposition avec CTSS <i>(Compatible Time Sharing 1789 System)</i>, utilisé précédemment au MIT.</li> 1790 <li><a id="TransNote2" href="#TransNote2-rev" 1791 class="nounderline">↑</a> 1792 Nous traduisons maintenant <i>proprietary</i> par « privateur ».</li> 1793 <li><a id="TransNote3" href="#TransNote3-rev" 1794 class="nounderline">↑</a> 1795 <i>Wheel bit</i> (litt. bit de gouvernail) : il s'agit d'un bit particulier 1796 du nombre binaire définissant un utilisateur sous Twenex (ou certains autres 1797 systèmes à temps partagé des années 80), qui permet à cet utilisateur de 1798 faire certaines opérations interdites à l'utilisateur normal. Les privilèges 1799 du mode <i>wheel</i> sont analogues à ceux de <i>root</i> sous Unix.</li> 1800 <li><a id="TransNote4" href="#TransNote4-rev" 1801 class="nounderline">↑</a> 1802 DDT signifiait à l'origine <i><abbr title="Digital Equipment 1803 Corporation">DEC</abbr> Debugging Tape</i> (bande de débogage de 1804 DEC). C'était un ensemble de programmes, développé en 1961, permettant de 1805 déboguer le système d'exploitation du PDP-1 (les bandes dont il s'agissait 1806 étaient des bandes perforées). Des systèmes similaires existent pour des 1807 machines plus récentes, ils ont pour nom <i>Dynamic Debugging Technique</i>, 1808 de manière à garder le même sigle. DDT fait allusion à l'insecticide <i>[bug 1809 killer]</i> de l'époque.</li> 1810 <li><a id="TransNote5" href="#TransNote5-rev" 1811 class="nounderline">↑</a> 1812 <i>Free University Compiler Kit</i> peut s'interpréter de deux manières 1813 différentes, car on ne sait pas si l'adjectif <i>free</i> qualifie 1814 <i>compiler kit</i> ou <i>university</i>. En fait, il s'agit du « kit de 1815 compilation de l'Université Libre (d'Amsterdam) ».</li> 1816 <li><a id="TransNote6" href="#TransNote6-rev" 1817 class="nounderline">↑</a> 1818 <i>C-shell</i> se prononce de la même façon que <i>seashell</i> 1819 (coquillage). Il n'est pas impossible que ce jeu de mots soit voulu.</li> 1820 <li><a id="TransNote7" href="#TransNote7-rev" 1821 class="nounderline">↑</a> 1822 <i>Bouncing ball</i> : peut-être une allusion à la « balle bondissante » du 1823 karaoke qui rebondit sur les paroles affichées à l'écran au moment où il 1824 faut les chanter.</li> 1825 </ol></div> 1826 </div> 1827 1828 <!-- for id="content", starts in the include above --> 1829 <!--#include virtual="/server/footer.fr.html" --> 1830 <div id="footer" role="contentinfo"> 1831 <div class="unprintable"> 1832 1833 <p>Veuillez envoyer les requêtes concernant la FSF et GNU à <<a 1834 href="mailto:gnu@gnu.org">gnu@gnu.org</a>>. Il existe aussi <a 1835 href="/contact/">d'autres moyens de contacter</a> la FSF. Les liens 1836 orphelins et autres corrections ou suggestions peuvent être signalés à 1837 <<a href="mailto:webmasters@gnu.org">webmasters@gnu.org</a>>.</p> 1838 1839 <p> 1840 <!-- TRANSLATORS: Ignore the original text in this paragraph, 1841 replace it with the translation of these two: 1842 1843 We work hard and do our best to provide accurate, good quality 1844 translations. However, we are not exempt from imperfection. 1845 Please send your comments and general suggestions in this regard 1846 to <a href="mailto:web-translators@gnu.org"> 1847 1848 <web-translators@gnu.org></a>.</p> 1849 1850 <p>For information on coordinating and contributing translations of 1851 our web pages, see <a 1852 href="/server/standards/README.translations.html">Translations 1853 README</a>. --> 1854 Merci d'adresser vos commentaires sur les pages en français à <<a 1855 href="mailto:trad-gnu@april.org">trad-gnu@april.org</a>>, et sur les 1856 traductions en général à <<a 1857 href="mailto:web-translators@gnu.org">web-translators@gnu.org</a>>. Si 1858 vous souhaitez y contribuer, vous trouverez dans le <a 1859 href="/server/standards/README.translations.html">guide de traduction</a> 1860 les infos nécessaires.</p> 1861 </div> 1862 1863 <!-- Regarding copyright, in general, standalone pages (as opposed to 1864 files generated as part of manuals) on the GNU web server should 1865 be under CC BY-ND 4.0. Please do NOT change or remove this 1866 without talking with the webmasters or licensing team first. 1867 Please make sure the copyright date is consistent with the 1868 document. For web pages, it is ok to list just the latest year the 1869 document was modified, or published. 1870 1871 If you wish to list earlier years, that is ok too. 1872 Either "2001, 2002, 2003" or "2001-2003" are ok for specifying 1873 years, as long as each year in the range is in fact a copyrightable 1874 year, i.e., a year in which the document was published (including 1875 being publicly visible on the web or in a revision control system). 1876 1877 There is more detail about copyright years in the GNU Maintainers 1878 Information document, www.gnu.org/prep/maintain. --> 1879 <p> 1880 Copyright © 1987 Richard Stallman et Bjrn Remseth 1881 </p> 1882 <p> 1883 La reproduction exacte et la distribution de copies intégrales de cette 1884 transcription sont permises sur n'importe quel support d'archivage, pourvu 1885 que l'avis de copyright et le présent avis de permission y figurent de 1886 manière apparente. 1887 </p> 1888 1889 <!--#include virtual="/server/bottom-notes.fr.html" --> 1890 <div class="translators-credits"> 1891 1892 <!--TRANSLATORS: Use space (SPC) as msgstr if you don't want credits.--> 1893 Traduction : Miluz.<br /> Révision : <a 1894 href="mailto:trad-gnu@april.org">trad-gnu@april.org</a></div> 1895 1896 <p class="unprintable"><!-- timestamp start --> 1897 Dernière mise à jour : 1898 1899 $Date: 2022/06/11 14:31:02 $ 1900 1901 <!-- timestamp end --> 1902 </p> 1903 </div> 1904 </div> 1905 <!-- for class="inner", starts in the banner include --> 1906 </body> 1907 </html>