[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
www/philosophy/po stallman-kth.fr.po
From: |
Cédric CORAZZA |
Subject: |
www/philosophy/po stallman-kth.fr.po |
Date: |
Sun, 18 Jan 2009 22:55:07 +0000 |
CVSROOT: /webcvs/www
Module name: www
Changes by: Cédric CORAZZA <ccorazza> 09/01/18 22:55:07
Added files:
philosophy/po : stallman-kth.fr.po
Log message:
Converting 1 new file to .po format
CVSWeb URLs:
http://web.cvs.savannah.gnu.org/viewcvs/www/philosophy/po/stallman-kth.fr.po?cvsroot=www&rev=1.1
Patches:
Index: stallman-kth.fr.po
===================================================================
RCS file: stallman-kth.fr.po
diff -N stallman-kth.fr.po
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ stallman-kth.fr.po 18 Jan 2009 22:54:21 -0000 1.1
@@ -0,0 +1,732 @@
+# French translation of http://www.gnu.org/philosophy/stallman-kth
+# Copyright (C) 2008 Free Software Foundation, Inc.
+# This file is distributed under the same license as the stallman-kth package.
+# Miluz, 2008.
+# Cédric Corazza <cedric.corazza AT wanadoo.fr>, 2008, 2009.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: stallman-kth\n"
+"POT-Creation-Date: 2008-08-25 16:26-0300\n"
+"PO-Revision-Date: 2009-01-18 23:48+0100\n"
+"Last-Translator: Cédric Corazza <cedric.corazza AT wanadoo.fr>\n"
+"Language-Team: French <address@hidden>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+# type: Content of: <title>
+msgid "Speech in Sweden - GNU Project - Free Software Foundation (FSF)"
+msgstr "Conférence en Suède - GNU Project - Free Software
Foundation (FSF)"
+
+# type: Content of: <h2>
+msgid "RMS lecture at KTH (Sweden), 30 October 1986"
+msgstr "Conférence de RMS au KTH (Suède), le 30 octobre 1986"
+
+# type: Content of: <center><p>
+msgid "<em>(Kungliga Tekniska Högskolan (Royal Institute of
Technology))<br /> Stockholm, Sweden</em>"
+msgstr "<em>(Kungliga Tekniska Högskolan (Institut Royal de
Technologies))<br />Stockholm Suède</em>"
+
+# type: Content of: <center><p>
+msgid "<em> Arranged by the student society<br /> “Datorföreningen
Stacken”<br /> 30 October 1986 </em>"
+msgstr "<em>organisé par l'association des étudiants<br
/>« Datorföreningen Stacken »<br />le 30 octobre
1986</em>"
+
+# type: Content of: <p>
+msgid "<strong>[Note: This is a slightly edited transcript of the talk. As
such it contains false starts, as well as locutions that are natural in spoken
English but look strange in print. It is not clear how to correct them to
written English style without ‘doing violence to the original
speech’.]</strong>"
+msgstr "<strong>[Note : Ceci une transcription légèrement
révisée de l'entretien. En tant que tel, il contient des faux
départs en plus de locutionsnaturelles en anglais parlé mais qui
paraissent bizarres dans une publication. Il n'est pas évident de savoir
comment le traduire dans un anglais correct sans faire violence au discours
original.]</strong>"
+
+# type: Content of: <p>
+msgid "It seems that there are three things that people would like me to talk
about. On the one hand I thought that the best thing to talk about here for a
club of hackers, was what it was like at the <acronym title=\"Massachusettes
Institute of Technology\">MIT</acronym> in the old days. What made the
Artificial Intelligence Lab such a special place. But people tell me also that
since these are totally different people from the ones who were at the
conference Monday and Tuesday that I ought to talk about what's going on in the
GNU project and that I should talk about why software and information can not
be owned, which means three talks in all, and since two of those subjects each
took an hour it means we're in for a rather long time. So I had the idea that
perhaps I could split it in to three parts, and people could go outside for the
parts they are not interested in, and that then when I come to the end of a
part I can say it's the end and people can go out and I can send Jan Rynning
out to bring in the other people. (Someone else says: “Janne, han
trenger ingen mike” (translation: “Janne, he doesn't need a
mike”)). Jan, are you prepared to go running out to fetch the other
people? Jmr: I am looking for a microphone, and someone tells me it is inside
this locked box. Rms: Now in the old days at the AI lab we would have taken a
sledgehammer and cracked it open, and the broken door would be a lesson to
whoever had dared to lock up something that people needed to use. Luckily
however I used to study Bulgarian singing, so I have no trouble managing
without a microphone."
+msgstr "Il semble qu'il y a trois choses dont les gens voudraient que je
parle. Tout d'abord, j'ai pensé que le meilleur sujet ici pour un club
de hackers était de dire comment ça se passait au <abbr
title=\"Massachusetts Institute of Technology\">M.I.T.</abbr> autrefois. Ce qui
faisait du laboratoire d'Intelligence Artificielle un endroit si particulier.
Mais des gens me disent aussi, étant donné qu'il s'agit de
personnes totalement différentes de celles qui étaient à
la conférence lundi et mardi, que je dois parler de ce qu'il se passe
dans le projet GNU et que je devrais dire pourquoi le logiciel et l'information
ne peuvent pas être considérés comme des
propriétés. Ce qui veut dire qu'il y a trois entretiens en tout.
Et puisque deux de ces sujets prennent chacun une heure, nous y sommes pour un
bon moment. Aussi je me suis dit que je pourrais éventuellement les
diviser en trois parties. Comme ça les gens pourraient sortir quand
ça ne les intéresse pas. Une fois arrivé à la fin
d'un sujet, je peux signaler quand c'est fini et les gens peuvent sortir et je
peux envoyer Jan Rynning dehors pour appeler les autres."
+
+# type: Content of: <p>
+msgid "Anyway, should I set up this system to notify you about the parts of
the talk, or do you just like to sit through all of it? (Answer: Yeaaah)"
+msgstr "Bon, dois-je installer ce système pour vous signaler les
différentes parties de l'entretien ou vous avez juste envie de le suivre
jusqu'au bout ?(Réponse : Yeaaah !)"
+
+# type: Content of: <p>
+msgid "When I started programming, it was 1969, and I did it in an IBM
laboratory in New York. After that I went to a school with a computer science
department that was probably like most of them. There were some professors
that were in charge of what was supposed to be done, and there were people who
decided who could use what. There was a shortage of terminals for most people,
but a lot of the professors had terminals of their own in their offices, which
was wasteful, but typical of their attitude. When I visited the Artificial
Intelligence lab at MIT I found a spirit that was refreshingly different from
that. For example: there, the terminals was thought of as belonging to
everyone, and professors locked them up in their offices on pain of finding
their doors broken down. I was actually shown a cart with a big block of iron
on it, that had been used to break down the door of one professors office, when
he had the gall to lock up a terminal. There were very few terminals in those
days, there was probably something like five display terminals for the system,
so if one of them was locked up, it was a considerable disaster."
+msgstr "Quand j'ai commencé à programmer, c'était en
1969. Dans un laboratoire d'IBM à New York. Ensuite, je suis allé
dans une école qui avait, probablement comme la plupart, un service
informatique. Il y avait quelques professeurs responsables de ce qu'on
était censé y faire et il y avait des gens qui décidaient
de qui pouvait se servir de quoi. Il y avait une pénurie de terminaux
pour la plupart d'entre nous. Or pas mal de professeurs en avaient un
personnellement dans leurs bureaux, ce qui était du gaspillage, mais
typique de leur attitude. Quand j'ai visité le laboratoire
d'Intelligence Artificielle au M.I.T., j'ai trouvé un esprit qui
différait de celui-ci de façon rafraîchissante. Par
exemple : là, on considérait que les terminaux
étaient à tout le monde et les professeurs s'étaient
enfermés à clef dans leurs bureaux à force de voir leurs
portes défoncées. On m'a montré une fois un chariot avec
un grand bloc de fer au-dessus. Celui qui avait été
utilisé pour défoncer la porte du bureau d'un des professeurs
quand il a eu le culot d'y enfermer un terminal. Il y en avait très peu
à cette époque. Il y avait à peu près quelque chose
comme cinq terminaux à écran pour tout le système, aussi
si l'un d'entre eux était bloqué, c'était un vrai
désastre."
+
+# type: Content of: <p>
+msgid "In the years that followed I was inspired by that ideas, and many times
I would climb over ceilings or underneath floors to unlock rooms that had
machines in them that people needed to use, and I would usually leave behind a
note explaining to the people that they shouldn't be so selfish as to lock the
door. The people who locked the door were basically considering only
themselves. They had a reason of course, there was something they thought
might get stolen and they wanted to lock it up, but they didn't care about the
other people they were affecting by locking up other things in the same room.
Almost every time this happened, once I brought it to their attention, that it
was not up to them alone whether that room should be locked, they were able to
find a compromise solution: some other place to put the things they were
worried about, a desk they could lock, another little room. But the point is
that people usually don't bother to think about that. They have the idea:
“This room is Mine, I can lock it, to hell with everyone else”, and
that is exactly the spirit that we must teach them not to have."
+msgstr "Dans les années qui ont suivi, j'ai été
inspiré par ces idées et de nombreuses fois j'ai escaladé
les plafonds ou sous les plancherspour débloquer les salles qui
contenaient des machines dont les gens avaient besoin. Et je laissais
derrière un mot qui expliquait aux gens qu'il ne devaient pas être
aussi égoïste pour fermer la porte. Les gens qui fermaient la
porte, au fond, ne pensaient qu'à eux. Ils avaient une raison de le
faire, bien-sûr. Ils pensaient quelque part qu'ils pouvaient être
volés et désiraient fermer à clef. Mais ils ne pensaient
pas aux autres qui souffraient d'avoir des choses enfermées dans la
même salle. Presque à chaque fois que cela s'est produit
— après avoir porté à leur attention qu'il
neleur appartenait pas de décider de la fermeture de la
porte — ils étaient capables de trouver un compromis. Mais le
problème, c'est que les gens ne prennent pas la peine d'y penser. Ils se
disent : « Cette salle est à moi, je peux la fermer, que
les autres aillent au diable ! », et c'est exactement l'esprit
que nous devons leur apprendre à ne pas avoir."
+
+# type: Content of: <p>
+msgid "But this spirit of unlocking doors wasn't an isolated thing, it was
part of an entire way of life. The hackers at the AI lab were really
enthusiastic about writing good programs, and interesting programs. And it was
because they were so eager to get more work done, that they wouldn't put up
with having the terminals locked up, or lots of other things that people could
do to obstruct useful work. The differences between people with high morale
who really care about what they're trying to do, and people who think of it as
just a job. If it's just a job, who cares if the people who hired you are so
stupid they make you sit and wait, it's their time, their money but not much
gets done in a place like that, and it's no fun to be in a place like that."
+msgstr "Mais cet esprit d'ouvrir les portes n'était pas un comportement
isolé, il faisait partie d'une façon de vivre à part
entière. Les hackers du laboratoire d'I.A. étaient vraiment
très motivés pour écrire de bons programmes. Et des
programmes intéressants. Ils étaient à ce point impatients
que le travail se fasse, qu'ils n'acceptaient pas de voir les terminaux
enfermés ou quoi que ce soit d'autre que les gens pouvaient faire pour
entraver le travail utile. C'est la différence entre les personnes au
moral d'acier qui s'inquiètent vraiment de ce qu'elles essayent de faire
et les gens qui prennent ça juste pour un boulot. Mais si c'est juste un
boulot, qui s'inquiète vraiment de savoir si les gens qui vous
embauchent sont assez stupides pour vous inciter à vous reposer et
attendre ? C'est leur temps, leur argent, mais pas grand-chose ne se fait
dans un endroit comme ça. Ce n'est pas drôle d'être dans un
endroit comme ça."
+
+# type: Content of: <p>
+msgid "Another thing that we didn't have at the AI lab was file protection.
There was no security at all on the computer. And we very consciously wanted
it that way. The hackers who wrote the Incompatible Timesharing System decided
that file protection was usually used by a self-styled system manager to get
power over everyone else. They didn't want anyone to be able to get power over
them that way, so they didn't implement that kind of a feature. The result
was, that whenever something in the system was broken, you could always fix it.
You never had to sit there in frustration because there was NO WAY, because
you knew exactly what's wrong, and somebody had decided they didn't trust you
to do it. You don't have to give up and go home, waiting for someone to come
in in the morning and fix the system when you know ten times as well as he does
what needs to be done."
+msgstr "Une autre chose que nous n'avions pas au laboratoire d'I.A.,
c'était la protection des dossiers. Il n'y avait aucune
sécurité sur l'ordinateur. Et nous l'avons très
consciemment voulu comme ça. Les hackers qui ont écrit le
« Système de répartition du temps
incompatible » (Incompatible Timesharing System) avaient jugé
que la protection des dossiers n'était qu'un moyen comme un autre pour
un soi-disant directeur de système, d'avoir du pouvoir sur tout le
monde. Ils n'ont pas voulu que n'importe qui puisse avoir du pouvoir sur eux
comme ça. Aussi, ils n'ont pas mis en applicationce genre de dispositif.
Résultat, chaque fois que quelque chose était cassé dans
le système, vous pouviez toujours le réparer. Vous n'aviez jamais
à vous asseoir impuissant parce qu'il n'y avait PAS D'ISSUE, alors que
vous saviez parfaitement quoi faire mais parce qu'il avait été
décidé de ne pas vous faire confiance pour ça. Vous
n'aviez pas à laisser tomber et rentrer à la maison en attendant
que quelqu'un vienne le matin pour réparer le système, alors que
vous saviez dix fois mieux que lui ce qu'il fallait faire."
+
+# type: Content of: <p>
+msgid "And we didn't let any professors or bosses decide what work was going
to be done either, because our job was to improve the system! We talked to the
users of course; if you don't do that you can't tell what's needed. But after
doing that, we were the ones best able to see what kind of improvements were
feasible, and we were always talking to each other about how we'd like to see
the system changed, and what sort of neat ideas we'd seen in other systems and
might be able to use. So the result is that we had a smoothly functioning
anarchy, and after my experience there, I'm convinced that that is the best way
for people to live."
+msgstr "Et nous n'avons laissé aucun professeur, aucun patron non plus
décider quel travail allait être effectué, parce que notre
travail c'était d'améliorer le système ! Nous
parlions aux utilisateurs évidemment; si vous ne faites pas ça,
vous ne pouvez pas savoir ce qui est nécessaire. Nous étions les
seuls, les plus aptes à savoir quel genre d'améliorations
étaient possibles. Et nous parlions toujours entre nous pour savoir
comment nous voulions voir le système évoluer, quelles sortes
d'idées ordonnées vues dans d'autres systèmes, nous
pouvions utiliser. Ainsi au final, nous avions une anarchie de fonctionnement
sans douleur et après mon expérience là-bas, je fus
convaincu que c'était la meilleure façon de vivre pour les gens."
+
+# type: Content of: <p>
+msgid "Unfortunately the AI lab in that form was destroyed. For many years we
were afraid the AI lab would be destroyed by another lab at MIT, the Lab for
Computer Science, whose director was a sort of empire builder type, doing
everything he could to get himself promoted within MIT, and make his
organization bigger, and he kept trying to cause the AI lab to be made a part
of his lab, and nobody wanted to do things his way because he believed that
people should obey orders and things like that."
+msgstr "Malheureusement le laboratoire d'I.A. sous cette angle a
été détruit. Pendant des années nous avions craint
que le laboratoire ne soit détruit par un autre labo du M.I.T., le
laboratoire d'Informatique dont le directeur était le genre de type
à construire un empire. Il faisait tout ce qu'il pouvait pour avoir une
promotion à l'intérieur du M.I.T. et faire grossir son
organisation. Personne ne voulait faire les choses à sa manière
étant donné qu'il croyait que les gens devaient obéir aux
ordres et d'autres choses dans le style."
+
+# type: Content of: <p>
+msgid "But that danger we managed to defend against, only to be destroyed by
something we had never anticipated, and that was commercialism. Around the
early 80's the hackers suddenly found that there was now commercial interest in
what they were doing. It was possible to get rich by working at a private
company. All that was necessary was to stop sharing their work with the rest
of the world and destroy the MIT-AI lab, and this is what they did despite all
the efforts I could make to prevent them."
+msgstr "Mais ce danger, nous avions réussi à nous en
défendre. Il a été détruit par quelque chose que
nous n'avions pas prévu : l'esprit commercial. Vers le début
des années 80, les hackers ont soudainement compris qu'il y avait
maintenant un intérêt commercial à faire ce qu'ils
faisaient. Il était possible de devenir riche en travaillant pour des
compagnies privées. Tout ce qu'il suffisait de faire, c'était de
cesser de partager le travail et détruire le labo d'I.A. du M.I.T. Et
c'est ce qu'ils ont fait, malgré tous mes efforts pour les en
empêcher."
+
+# type: Content of: <p>
+msgid "Essentially all the competent programmers except for me, at the AI lab
were hired away, and this caused more than a momentary change, it caused a
permanent transformation because it broke the continuity of the culture of
hackers. New hackers were always attracted by the old hackers; there were the
most fun computers and the people doing the most interesting things, and also a
spirit which was a great deal of fun to be part of. Once these things were
gone, there is nothing to recommend the place to anyone new, so new people
stopped arriving. There was no-one they could be inspired by, no-one that they
could learn those traditions from. In addition no-one to learn how to do good
programming from. With just a bunch of professors and graduate students, who
really don't know how to make a program work, you can't learn to make good
programs work. So the MIT AI lab that I loved is gone and after a couple of
years of fighting against the people who did it to try to punish them for it I
decided that I should dedicate my self to try to create a new community with
that spirit."
+msgstr "L'essentiel des programmeurs compétents du laboratoire du
M.I.T., excepté moi, ont été embauchés ailleurs et
cela a causé bien plus qu'un changement provisoire. Cela a causé
une métamorphose définitive, parce que ça a brisé
la continuité de la culture des hackers. Les nouveaux hackers sont
toujours attirés par les anciens. Il y avait là les ordinateurs
les plus drôles et des gens qui faisaient les choses les plus
intéressantes avec. Et aussi un esprit qu'il était très
plaisant à partager. Une fois ceci mort, il n'y avait plus d'endroit
à recommander aux nouveaux. Aussi, ils ont cessé d'arriver. Il
n'y avait plus personne qui aurait pu les inspirer, personne dont ils auraient
pu apprendre les traditions. De plus personne de qui apprendre à bien
programmer. Avec juste une petite équipe de professeurs et
d'étudiants diplômés qui ne savaient pas vraiment comment
faire marcher un programme, vous ne pouviez pas apprendre à faire
fonctionner un bon programme. Aussi le labo d'I.A. du M.I.T. que j'aimais a
disparu. Et après quelques années passées à me
battre contre les gens qui avait fait ça, pour essayer de les punir pour
ça, j'ai décidé de me consacrer à créer une
nouvelle communauté avec cet esprit."
+
+# type: Content of: <p>
+msgid "But one of the problems I had to face was the problem of <a
href=\"/philosophy/categories.html#ProprietarySoftware\">proprietary
software</a>. For example one thing that happened at the lab, after the
hackers left, was that the machines and the software that we had developed
could no longer be maintained. The software of course worked, and it continued
to work if nobody changed it, but the machines did not. The machines would
break and there would be no-one who could fix them and eventually they would be
thrown out. In the old days, yes we had service contracts for the machines, but
it was essentially a joke. That was a way of getting parts after the expert
hackers from the AI lab fixed the problem. Because if you let the
field-service person fix it it would take them days, and you didn't want to do
that, you wanted it to work. So, the people who knew how to do those things
would just go and fix it quickly, and since they were ten times as competent as
any field service person, they could do a much better job. And then they would
have the ruined boards, they would just leave them there and tell the field
service person “take these back and bring us some new ones”."
+msgstr "Mais un des problèmes auxquels j'ai dû faire face fut
celui des logiciels <a
href=\"/philosophy/categories.fr.html#ProprietarySoftware\">propriétaires<a>.
Par exemple, ce qu'il s'est passé au laboratoire une fois les hackers
partis, c'est que les machines et les logiciels que nous avions
développés ne pouvaient plus être maintenus. Les logiciels
marchaient évidemment et continuaient de marcher si personne ne les
changeait, mais pas les machines. Les machines allaient casser et personne
n'allait pouvoir les réparer et par la suite on allait les jeter. Dans
les vieux jours, oui, il y avait des contrats d'entretien pour les machines
mais c'était une plaisanterie pour l'essentiel. C'était une
manière de participer après que les experts du labo d'IA aient
arrangé le problème. Parce que si vous aviez laissé les
personnes de service le faire, ça leur aurait pris des jours. Et vous ne
vouliez pas que ça arrive. Vous vouliez que ça marche. Aussi, les
personnes qui savaient faire ce genre de choses allaient réparer
ça très vite, puisqu'elles étaient dix fois plus
compétentes que n'importe quelle personne du service. Ils pouvaient
faire un bien meilleur travail. Et donc si les cartes étaient
abîmées, ils avaient juste à les laisser là et
appeler les personnes de service « Reprenez-les et ramenez-nous en
de nouvelles »."
+
+# type: Content of: <p>
+msgid "In the real old days our hackers used to modify the machines that came
from Digital also. For example, they built paging-boxes to put on the
PDP-10's. Nowadays I think there are some people here [in Stockholm] who do
such things too, but it was a pretty unusual thing in those days. And the
really old days, the beginning of the 1960's people used to modify computers
adding all sorts of new instructions and new fancy timesharing features, so
that the PDP-1 at MIT by the time it was retired in the mid-seventies had
something like twice as many instructions as it had when it was delivered by
Digital in the early sixties, and it had special hardware scheduler assisting
features and strange memory-mapping features making it possible to assign
individual hardware devices to particular timesharing jobs and lots of things
that I hardly really know about. I think they also built in some kind of
extended addressing modes they added index registers and indirect addressing,
and they turned it essentially from a weak machine into a semi-reasonable one."
+msgstr "À la belle époque, nos hackers avaient également
l'habitude de modifier les machines qui venaient de Digital. Par exemple, ils
construisaient des boîtes de pagination à poser sur le PDP-10's.
De nos jours, je pense qu'il y en a certains ici [à Stockholm] qui le
font aussi. Mais ce n'était pas courant en ces temps-là. Et aux
temps très anciens, au début des années 60, les gens
modifiaient les ordinateurs en ajoutant toutes sortes de nouvelles instructions
et de nouveaux systèmes fantaisistes de temps partagé. De sorte
que le PDP-1 du M.I.T., avant qu'il ne parte à la retraite dans les
années 70, avait quelque chose comme deux fois plus d'instructions qu'il
n'en avait lors de sa livraison par Digital dans les années 60. Et il
avait un planificateur matériel spécial pour aider les
unités logiques et d'étranges dispositifs de
mémoire-traçante qui rendait possible le fait de relier
individuellement les périphériques matériels à des
systèmes de répartition du temps et des tas d'autres choses comme
ça que je connais à peine. Je pense qu'ils ont également
construit, dans un certain type de mode d'adressage étendu qu'ils ont
rajouté, l'index des registres et l'adressage indirect et ont
transformé pour l'essentiel une toute petite machine en une autre
à peu près correcte."
+
+# type: Content of: <p>
+msgid "I guess it is one of the disadvantages of VLSI that it's no longer so
feasible to add instructions to your machines."
+msgstr "Je devine que l'un des inconvénients de la VLSI (Very Large
Scale Integration (intégration à très grande
échelle)) est qu'il n'est plus vraiment pratique d'ajouter des
instructions sur vos machines."
+
+# type: Content of: <p>
+msgid "The PDP-1 also had a very interesting feature, which is that it was
possible to interesting programs in very few instructions. Fewer that any
other machine since then. I believe for example that the famous display hack
“munching squares” which made squares that get bigger and break up
into lots of smaller squares which gets bigger and break up into smaller
squares. That was written in something like five instructions on the PDP-1.
And many other beautiful display programs could be written in few instructions."
+msgstr "Le PDP-1 avait des fonctions très intéressantes,
particulièrement de pouvoir être accessible à des
programmes très intéressants en très peu d'instructions.
Moins qu'aucune autre machine depuis. Je crois par exemple que le
célèbre haché d'affichage « munching
squares » (lit. : grignotage de carrés) qui faisait que
des carrés grandissaient puis se brisaient en une multitude de petits
carrés qui devenaient plus grands et se cassaient en petits
carrés. Cela a été écrit en quelque chose comme
cinq instructions sur le PDP-1. Et beaucoup d'autres beaux programmes
d'affichage ont pu être écrits ainsi en peu d'instructions."
+
+# type: Content of: <p>
+msgid "So, that was the AI lab. But what was the culture of hackers like
aside from their anarchism? In the days of the PDP-1 only one person could use
the machine, at the beginning at least. Several years later they wrote a
timesharing system, and they added lots of hardware for it. But in the
beginning you just had to sign up for some time. Now of course the professors
and the students working on official projects would always come in during the
day. So, the people who wanted to get lots of time would sign up for time at
night when there were less competition, and this created the custom of hackers
working at night. Even when there was timesharing it would still be easier to
get time, you could get more cycles at night, because there were fewer users.
So people who wanted to get lots of work done, would still come in at night.
But by then it began to be something else because you weren't alone, there were
a few other hackers there too, and so it became a social phenomenon. During
the daytime if you came in, you could expect to find professors and students
who didn't really love the machine, whereas if during the night you came in you
would find hackers. Therefore hackers came in at night to be with their
culture. And they developed other traditions such as getting Chinese food at
three in the morning. And I remember many sunrises seen from a car coming back
from Chinatown. It was actually a very beautiful thing to see a sunrise,
cause' that's such a calm time of day. It's a wonderful time of day to get
ready to go to bed. It's so nice to walk home with the light just brightening
and the birds starting to chirp, you can get a real feeling of gentle
satisfaction, of tranquility about the work that you have done that night."
+msgstr "C'était le laboratoire d'I.A. Mais c'était quoi la
culture des hackers hormis leur anarchisme ? Dans les temps du PDP-1 une
seule personne pouvait utiliser la machine, du moins au début. Plusieurs
années après ils ont écrit un système de
répartition du temps et ils ont rajouté pas mal de
matériel pour ça. Mais au début, vous pouviez seulement
vous enregistrer pour une période donnée. Naturellement les
professeurs et les étudiants qui travaillaient sur des projets officiels
venaient toujours pendant la journée. Ainsi, les gens qui voulaient
avoir plus de temps s'enregistraient la nuit quand il y avait moins d'affluence
et ce fut la coutume des hackers de travailler la nuit. Même lorsqu'il y
avait le répartiteur de temps, il était toujours plus facile d'en
avoir, vous pouviez obtenir plus de cycles la nuit parce qu'il y avait peu
d'utilisateurs. Aussi ceux qui désiraient effectuer un volume de travail
plus important devaient venir la nuit. Mais ça a commencé
à changer parce que vous n'étiez pas seul, il y avait quelques
autres hackers ici et là et c'est devenu un phénomène
social. Si vous entriez pendant la journée, vous pouviez vous attendre
à trouver des professeurs et des étudiants qui n'étaient
pas des fans de la machine, alors que si vous veniez la nuit vous trouviez des
hackers. Par conséquent, les hackers sont venus la nuit pour partager
leur culture. Et ils ont développé d'autres traditions, comme
celle d'aller chercher de la nourriture chinoise à trois heure du matin.
Et j'ai beaucoup de souvenirs de levers de soleil depuis la voiture en revenant
de Chinatown. C'était tellement beau de voir le lever du soleil, c'est
une heure tellement calme du jour. C'est une heure merveilleuse pour aller au
lit. Il est si doux de marcher vers sa maison dans une lumière qui
commence juste à poindre et les oiseaux qui commencent à
gazouiller. Vous aviez une sensation de douce satisfaction, de
tranquillité pour le travail que vous avez fait la nuit."
+
+# type: Content of: <p>
+msgid "Another tradition that we began was that of having places to sleep at
the lab. Ever since I first was there, there was always at least one bed at
the lab. And I may have done a little bit more living at the lab than most
people because every year of two for some reason or other I'd have no apartment
and I would spend a few months living at the lab. And I've always found it
very comfortable, as well as nice and cool in the summer. But it was not at
all uncommon to find people falling asleep at the lab, again because of their
enthusiasm; you stay up as long as you possibly can hacking, because you just
don't want to stop. And then when you're completely exhausted, you climb over
to the nearest soft horizontal surface. A very informal atmosphere."
+msgstr "Une autre tradition que nous avons commencée était celle
d'avoir des endroits où dormir au laboratoire. Depuis que j'y
étais venu la première fois, il y avait toujours au moins un lit.
Et j'y passais un peu plus de temps que la plupart des autres parce que chaque
année, pour une raison ou une autre, je n'avais pas d'appartement et j'y
vivais quelques mois. Et je l'ai toujours trouvé très confortable
et sympa et frais en été. Mais il n'était pas du tout rare
de tomber sur des personnes endormies au laboratoire, toujours à cause
de leur enthousiasme : vous restez le plus longtemps possible à
hacker parce que vous ne vouliez pas vous arrêter, et une fois que vous
êtiez complètement épuisé, vous escaladiez la
surface horizontale souple la plus proche. Une ambiance vraiment sans
cérémonie."
+
+# type: Content of: <p>
+msgid "But when the hackers all left the lab this caused a demographic change,
because the professors and the students who didn't really love the machine were
just as numerous as before, so they were now the dominant party, and they were
very scared. Without hackers to maintain the system, they said, “we're
going to have a disaster, we must have commercial software”, and they
said “we can expect the company to maintain it”. It proved that
they were utterly wrong, but that's what they did."
+msgstr "Mais quand les hackers sont partis du laboratoire, ça a
causé un changement démographique parce que les professeurs et
les étudiants qui n'étaient pas vraiment des fans de la machine
étaient aussi nombreux qu'avant ; ils représentaient la
majorité. Et ils ont vraiment eu peur. Sans hacker pour maintenir le
système, ils se sont dit : « Ça va être un
désastre, il nous faut un logiciel commercial », et ils se
sont dit « Comme ça, nous pourrons compter sur la maintenance
de l'entreprise ». Il fut prouvé qu'ils avaient absolument
tort, mais c'est ce qu'ils ont fait."
+
+# type: Content of: <p>
+msgid "That was exactly when a new KL-10 system was supposed to arrive, and
the question was, would it run the Incompatible Timesharing System or would it
run digital's Twenex system. Once the hackers were gone who probably would
have supported using ITS, the academic types chose to run the commercial
software, and this had several immediate effects. Some of them weren't
actually so immediate but they followed inevitably as anyone who thought about
it would see."
+msgstr "Ce fut exactement au moment où un nouveau système KL-10
était sensé arriver et la question fut d'utiliser le
Système de répartition du temps incompatible ou le système
numérique de Twenex. Une fois les hackers partis — qui
auraient sans doute encouragé à utiliser le leur — les
universitaires ont choisi d'utiliser le logiciel commercial, et ça eu
plusieurs effets immédiats. Certains n'ont pas été
vraimentimmédiats mais ils ont inévitablement suivi comme
n'importe qui d'averti l'aurait vu."
+
+# type: Content of: <p>
+msgid "One thing was that that software was much more poorly written, and
harder to understand; therefore making it harder for people to make the changes
that were in fact needed. Another was, that that software came with security,
which had the inevitable effect of causing people to cooperate with each other
less. In the old days on ITS it was considered desirable that everyone could
look at any file, change any file, because we had reasons to. I remember one
interesting scandal where somebody sent a request for help in using Macsyma.
Macsyma is a symbolic algebra program that was developed at MIT. He sent to
one of the people working on it a request for some help, and he got an answer a
few hours later from somebody else. He was horrified, he sent a message
“so-and-so must be reading your mail, can it be that mail files aren't
properly protected on your system?” “Of course, no file is
protected on our system. What's the problem? You got your answer sooner; why
are you unhappy? Of course we read each other's mail so we can find people like
you and help them”. Some people just don't know when they're well off."
+msgstr "La première chose fut que ce logiciel était très
mal écrit et dur à comprendre ; rendant donc plus durs les
changements nécessaires. Une autre fut que le logiciel était
sécurisé, ce qui a eu pour effet inévitable de diminuer la
collaboration entre les uns et les autres. Dans le passé, sur <abbr
title=\"Icompatible Timesharing System\">ITS</abbr>, on trouvait
bénéfique le fait d'avoir accès à tous les fichiers
et de pouvoir changer n'importe lequel, parce que nous avions des raisons pour
cela. Je me rappelle un scandale intéressant où quelqu'un a
envoyé une demande d'aide en utilisant Macsyma. Macsyma est un programme
symbolique d'algèbre qui a été développé au
M.I.T. Il a envoyé une demande d'aide à l'une des personnes qui
travaillait dessus et a obtenu une réponse quelques heures plus tard de
la part de quelqu'un d'autre. Il a été horrifié. Il a
envoyé le message : « Untel ou untel doit lire votre
courrier, les fichiers de courrier ne sont peut-être pas correctement
protégés sur votre système ? ».
« Naturellement, aucun dossier n'est protégé sur notre
système. Quel est le problème ? Vous avez obtenu votre
réponse plus tôt, pourquoi en êtes-vous
chagriné ? Évidemment nous lisons le courrier de tout le
monde, comme ça nous pouvons tomber sur des personnes comme vous et les
aider ». Certaines personnes ne savent pas qu'elles sont riches."
+
+# type: Content of: <p>
+msgid "But of course Twenex not only has security, and by default turns on
security, but it's also designed with the assumption that security is in use.
So there are lots of things that are very easy to do that can cause a lot of
damage, and the only thing that would stop you from doing them by accident, is
security. On ITS we evolved other means of discouraging people from doing
those things by accident, but on Twenex you didn't have them because they
assumed that there was going to be be strict security in effect and only the
bosses were going to have the power to do them. So they didn't put in any
other mechanism to make it hard to do by accident. The result of this is that
you can't just take Twenex and turn of the security and have what you'd really
like to have, and there were no longer the hackers to make the changes to put
in those other mechanisms, so people were forced to use the security. And
about six months after the machine was there they started having some coups
d'etat. That is, at first we had the assumption that everyone who worked for
the lab was going to have the wheel bit which gave full powers to override all
security measures, but some days you'd come in some afternoon and find out that
the wheel bits of just about everybody had been turned off."
+msgstr "Mais naturellement Twenex n'était pas seulement muni d'une
sécurité — et par défaut la
sécurité est activée — mais il est
également conçu en partant de l'hypothèse que la
sécurité est active. Or il y a un bon nombre de choses
très faciles à faire qui peuvent causer des dommages et la seule
chose qui vous empêche de les faire par accident c'est la
sécurité. Sur ITS, nous avions développé des moyens
supplémentaires pour éviter que les gens fassent des erreurs par
accident, mais sur Twenex vous ne les aviez pas étant donné qu'il
était supposé y avoir une sécurité totale dans les
résultats et que seulement les chefs avaient la possibilité de
faire des erreurs. Ainsi ils n'ont mis de sécurité dans aucun des
mécanismes. Le résultat, c'est que vous ne pouviez plus enlever
la sécurité et avoir ce que vous vouliez vraiment avoir. Et il
n'y avait plus de hackers pour faire les changements nécessaires dans
les mécanismes. Aussi les gens ont été obligés de
travailler avec la sécurité. Et environ six mois après que
la machine soit arrivée, il a commencé à y avoir quelques
« coups d'état ». C'est-à-dire, d'abord
nous avons émis l'hypothèse que tous ceux qui travaillaient pour
le laboratoire allaient avoir un bout de gouvernail donnant les pleins pouvoirs
et la priorité sur les mesures de sécurité, mais il a
suffit de venir quelques après-midi pour découvrir que le bout de
gouvernail d'à peu près tout le monde avait été
supprimé."
+
+# type: Content of: <p>
+msgid "When I found out about those, I overthrew them. The first time, I
happened to know the password of one of the people who was included among the
elite, so I was able to use that to turn everyone back on. The second time he
had changed his password, he had now changed his sympathies, he was now part of
the aristocratic party. So, I had to bring the machine down and use
non-timeshared DDT to poke around. I poked around in the monitor for a while,
and eventually figured out how to get it to load itself in and let me patch it,
so that I could turn off password checking and then I turned back on a whole
bunch of people's wheel bits and posted a system message. I have to explain
that the name of this machine was OZ, so I posted a system message saying:
“There was another attempt to seize power. So far the aristocratic
forces have been defeated — Radio Free OZ”. Later I discovered
that “Radio Free OZ” is one of the things used by Firesign Theater.
I didn't know that at the time."
+msgstr "Quand je m'en suis rendu compte, j'ai tout renversé. Dans un
premier temps, j'ai fini par connaître le mot de passe d'une des
personnes qui faisait partie de l'élite et j'ai pu l'utiliser pour
renvoyer tout le monde dessus. Dans un deuxième temps, il a
changé son mot de passe et ensuite changé de relations. Il
faisait maintenant partie de l'aristocratie. Alors j'ai dû faire baisser
le régime de la machine et utiliser le temps non-partagé DDT pour
fouiller un peu partout. J'ai fouillé dans le moniteur pendant un moment
et j'ai compris à la fin comment faire pour qu'il se charge et que je
puisse le patcher. De sorte que j'ai pu bloquer lecontrôle des mots de
passe et ainsi rendre les pleins pouvoirs au groupe entier. Puis j'ai
laissé un message-système. Le nom de cette machine était
OZ et le message disait : « Il y a eu une nouvelle tentative de
prise du pouvoir, jusqu'ici les forces aristocratiques sont battues
— La radio Libre d'OZ ». Plus tard j'ai découvert
que « la Radio Libre d'Oz » est l'une des expressions
utilisées par Firesign Theater. Je ne le savais pas à ce
moment-là."
+
+# type: Content of: <p>
+msgid "But gradually things got worse and worse, it's just the nature of the
way the system had been constructed forced people to demand more and more
security. Until eventually I was forced to stop using the machine, because I
refused to have a password that was secret. Ever since passwords first
appeared at the MIT-AI lab I had come to the conclusion that to stand up for my
belief, to follow my belief that there should be no passwords, I should always
make sure to have a password that is as obvious as possible and I should tell
everyone what it is. Because I don't believe that it's really desirable to
have security on a computer, I shouldn't be willing to help uphold the security
regime. On the systems that permit it I use the “empty password”,
and on systems where that isn't allowed, or where that means you can't log in
at all from other places, things like that, I use my login name as my password.
It's about as obvious as you can get. And when people point out that this way
people might be able to log in as me, i say “yes that's the idea,
somebody might have a need to get some data from this machine. I want to make
sure that they aren't screwed by security”."
+msgstr "Mais graduellement les choses ont empiré, à cause de la
façon dont le système avait été construit qui
forcait les gens à demander de plus en plus de sécurité.
Jusqu'à ce que finalement, je sois obligé d'arrêter
d'utiliser la machine parce que je refusais d'avoir un mot de passe secret.
Depuis que les mots de passe étaient apparus pour la première
fois au laboratoire d'I.A. du M.I.T., j'en étais venu à la
conclusion que pour respecter ma croyance, pour suivre ma croyance, il ne
devait y avoir aucun mot de passe. Je devais toujours veiller à avoir un
mot de passe aussi évident que possible et le dire à tout le
monde. Parce que je ne crois pas qu'il soit vraiment souhaitable d'avoir une
sécurité sur un ordinateur, je ne devrais pas aider au maintien
du régime de sécurité. Sur les systèmes qui me
permettent d'utiliser un « mot de passe vide » et sur des
systèmes où cela n'est pas permis — où cela
signifie que vous ne pouvez pas ouvrir de session ailleurs, des choses comme
ça, j'utilise mon login en tant que mot de passe. Il est évident
que vous pouvez l'obtenir. Et quand les gens précisent que de cette
manière on peut ouvrir une session en mon nom, je réponds
« Oui, c'est une idée, quelqu'un pourrait avoir besoin de
quelques données sur cette machine. Je veux m'assurer qu'elles ne sont
pas verrouillées par la sécurité »."
+
+# type: Content of: <p>
+msgid "And an other thing that I always do is I always turn of all protection
on my directory and files, because from time to time I have useful programs
stored there and if there's a bug I want people to be able to fix it."
+msgstr "Et une autre chose que je fais toujours, c'est désactiver la
protection sur mon répertoire et mes dossiers. Parce que de temps en
temps j'y stocke des programmes utiles et s'il y a un bogue je veux que les
gens puissent le corriger."
+
+# type: Content of: <p>
+msgid "But that machine wasn't designed also to support the phenomenon called
“tourism”. Now “tourism” is a very old tradition at
the AI lab, that went along with our other forms of anarchy, and that was that
we'd let outsiders come and use the machine. Now in the days where anybody
could walk up to the machine and log in as anything he pleased this was
automatic: if you came and visited, you could log in and you could work. Later
on we formalized this a little bit, as an accepted tradition specially when the
Arpanet began and people started connecting to our machines from all over the
country. Now what we'd hope for was that these people would actually learn to
program and they would start changing the operating system. If you say this to
the system manager anywhere else he'd be horrified. If you'd suggest that any
outsider might use the machine, he'll say “But what if he starts changing
our system programs?” But for us, when an outsider started to change the
system programs, that meant he was showing a real interest in becoming a
contributing member of the community. We would always encourage them to do
this. Starting, of course, by writing new system utilities, small ones, and we
would look over what they had done and correct it, but then they would move on
to adding features to existing, large utilities. And these are programs that
have existed for ten years or perhaps fifteen years, growing piece by piece as
one craftsman after an other added new features."
+msgstr "Mais cette machine n'a pas non plus été conçue
pour défendre lephénomène appelé
« tourisme ». Le« tourisme » est
une très vieilletradition du laboratoire d'I.A. qui allait dans le sens
de nos autresconceptions de l'anarchie et qui était que nous devions
laisser lesgens de l'extérieur utiliser la machine. À
l'époque où quiconquepouvait marcher jusqu'à elle et se
connecter à ce qui lui plaisait,c'était automatique : si
vous veniez pour visiter, vous pouviez ouvrir une session et travailler. Plus
tard nous avons plus ou moins formalisé ça comme une tradition
admise, particulièrement quand l'Arpanet a commencé et que les
gens ont commencé à se relier à nos machines à
partir de n'importe quel coin du pays. Maintenant ce que nous espérions,
c'était que ces personnes apprendraient réellement à
programmer et qu'elles commenceraient à modifier le logiciel
d'exploitation. Quand vous dites ça à un directeur système
n'importe où ailleurs, il en serait horrifié. Si vous lui
proposez l'idée que n'importe quel étranger puisse utiliser la
machine, il dirait « Mais s'il commence à modifier nos
programmes ? ». Mais pour nous, si un étranger commence
à modifier les programmes, cela signifie qu'il montre un vrai
intérêt en devenant un membre contributif de la communauté.
Nous encouragions toujours les gens à le faire. À commencer
naturellement par écrire de nouveaux utilitaires, des petits, et nous
jetions un œil sur ce qu'ils avaient fait et nous les corrigions. Ils en
arrivaient alors à ajouter des dispositifs à de grands
utilitaires existants. Et ce sont des programmes qui ont existé pendant
une dizaine ou peut-être une quinzaine d'années, grandissant petit
à petit, un artisan après l'autre, auquels s'ajoutaient de
nouveaux dispositifs supplémentaires."
+
+# type: Content of: <p>
+msgid "Sort of like cities in France you might say, where you can see the
extremely old buildings with additions made a few hundred years later all the
way up to the present. Where in the field of computing, a program that was
started in 1965 is essentially that. So we would always hope for tourists to
become system maintainers, and perhaps then they would get hired, after they
had already begun working on system programs and shown us that they were
capable of doing good work."
+msgstr "Comme dans certaines villes de France on pourrait dire, où vous
pouvez voir des bâtiments extrêmement vieux avec des rajouts, faits
des centaines d'années après, dans tous les styles jusqu'à
aujourd'hui. Dans le domaine de l'informatique, un programme qui a
été commencé en 1965 c'est exactement ça. Ainsi
nous espérions toujours que des touristes entretiennent le
système et peut-être allaient-ils être embauchés
après avoir déjà commencé à travailler sur
les programmes et nous avoir montré qu'ils étaient capables de
faire du bon travail."
+
+# type: Content of: <p>
+msgid "But the ITS machines had certain other features that helped prevent
this from getting out of hand, one of these was the “spy” feature,
where anybody could watch what anyone else was doing. And of course tourists
loved to spy, they think it's such a neat thing, it's a little bit naughty you
see, but the result is that if any tourist starts doing anything that causes
trouble there's always somebody else watching him. So pretty soon his friends
would get very mad because they would know that the continued existence of
tourism depended on tourists being responsible. So usually there would be
somebody who would know who the guy was, and we'd be able to let him leave us
alone. And if we couldn't, then what we would do was we would turn off access
from certain places completely, for a while, and when we turned it back on, he
would have gone away and forgotten about us. And so it went on for years and
years and years."
+msgstr "Mais il y avait sur les machines ITS certains dispositifs qui aidaient
à éviter que ça nous échappe. L'un d'entre eux
était un dispositif « espion » où tout le
monde pouvait observer ce que tout le monde faisait. Et naturellement les
touristes ont aimé espionner. Ils pensaient que c'était une chose
ingénieuse. C'est un peu méchant vous voyez mais le
résultat est que si un touriste commence à faire n'importe quoi
qui cause problème, il y a toujours quelqu'un pour le voir. Assez vite
ses amis allaient en être furieux parce qu'ils savaient que le tourisme
continue à exister,il fallait des touristes responsables. Aussi il y
avait forcément quelqu'un qui savait qui c'était et nous
étions en mesure de lui dire de nous laisser tranquilles. Et si nous ne
pouvions pas, alors ce que nous avions à faire était de fermer
entièrement l'accès à certains endroits pendant un moment,
et quand nous le réouvriions, il était parti et nous avait
oubliés. Et cela a continué comme ça pendant des
années, des années… et des années."
+
+# type: Content of: <p>
+msgid "But the Twenex system wasn't designed for this sort of thing, and
eventually they wouldn't tolerate me with my password that everybody knew,
tourists always logging in as me two or three at a time, so they started
flushing my account. And by that time I was mostly working on other machines
anyway, so eventually I gave up and stopped ever turning it on again. And that
was that. I haven't logged in on that machine as myself … [At this
point RMS is interrupted by tremendous applause] … for."
+msgstr "Mais le système de Twenex n'avait pas été
conçu pour ce genre de chose et par la suite ils ne m'ont plus
toléré, moi et mon mot de passe que tout le monde connaissait.
Les touristes ouvraient toujours les sessions en mon nom, à deux ou
trois à la fois, et ont commencé à vider mon compte.
À ce moment-là de toute façon, je travaillais le plus
souvent sur d'autres machines; tellement que finalement j'ai abandonné
et cessé à tout jamais de le réactiver. C'était
comme ça. Je ne m'étais pas connecté sur cette machine en
tant que moi… [ à ce moment-là, RMS est interrompu par des
applaudissements énormes ]… pour ça."
+
+# type: Content of: <p>
+msgid "But when they first got this Twenex system they had several changes in
mind that they wanted to make. Changes in the way security worked. They also
wanted to have the machine on both the ARPA network and the MIT-chaos network,
and it turns out that they were unable to do this, that they couldn't get
anyone who was sufficiently competent to make such changes. There was no
longer talent available to do it, and it was to hard to change. That system
was much harder to understand, because it was to poorly written, and of course,
Digital wouldn't do these things, so their ideas that a commercial system would
essentially maintain it self, proved to be mistaken. They had just as much
need for system hackers, but they had no longer the means to entice system
hackers. And nowadays at MIT there are more people interested in hacking on
ITS, than there are interested in hacking on Twenex."
+msgstr "Quand ils eurent le système Twenex pour la première
fois, ils avaient à l'esprit d'y faire plusieurs changements. Ceux
opérés dans le domaine de la sécurité ont
fonctionné. Ils ont aussi voulu avoir la machine sur le réseau
d'ARPA et sur celui du M.I.T. Chaos en même temps. Et il s'avère
qu'ils n'ont pas pu le faire, qu'il n'y avait personne d'assez compétent
pour ça. Il n'y avait plus de talent disponible et c'était trop
difficile. Ce système était beaucoup plus dur à comprendre
parce qu'on l'avait mal écrit et naturellement Digital ne voulait pas
faire ce genre de choses. Ainsi l'idée d'un système commercial
qui se maintenait tout seul s'est révélé être une
erreur. Ils avaient absolument besoin de hacker le système. Mais ils
n'avaient plus les moyens d'attirer les hackers. Et de nos jours au M.I.T., il
y a plus de gens intéressés à hacker ITS que Twenex."
+
+# type: Content of: <p>
+msgid "And the final reason why this is so, is that Twenex can't be shared.
Twenex is a proprietary program and you're only allowed to have the sources if
you keep them secret in certain nasty ways, and this gives them a bad flavor.
Unless a person is oblivious (which some people in computers are, there's some
people who'll do anything if it's fun for them, and won't think for a minute
whether they're cooperating with anyone else, but you'd have to be pretty
oblivious to not to notice what a sad thing it is to work on a program like
that, and that is a further discouragement). And if that isn't enough there is
the fact that every year or so they're going to give you a new release full of
50 000 additional lines of code all written by monkeys. Because they generally
follow the “million monkeys typing, and eventually they'll come up with
something useful” school of system development."
+msgstr "Et la raison, c'est que Twenex ne pouvait pas être
partagé. Twenex est un programme propriétaire : vous n'avez
le droit d'avoir les sources que si vous les gardez secrètes de
façon assez agressive et ça leur donne mauvais goût.
À moins que la personne soit inconsciente. Comme le sont certains en
informatique ; il y en a qui feraient n'importe quoi si c'est drôle
pour eux et ne penseront pas une minute à coopérer avec qui que
ce soit. Mais il faut être franchement ailleurs pour ne pas remarquer
à quel point c'est triste de travailler comme ça sur un
programme, c'est une autre façon de décourager. Et comme si ce
n'était pas suffisant, chaque année ils vous donnent une nouvelle
version remplie d'une cinquantaine de milliers de lignes de code
supplémentaires toutes écrites par des singes. Parce qu'ils
suivent généralement le système de programmation scolaire
du genre « million de singes dactylographiant qui finiront bien par
apporter quelque chose d'utile »."
+
+# type: Content of: <p>
+msgid "It was clear to me from what I saw happening to these proprietary
systems that the only way we could have the spirit of the old AI lab was to
have a free operating system. To have a system made up of free software which
could be shared with anyone. So that we could invite everyone to join in
improving it. And that's what led up to the GNU project. So I guess we've
arrived at the second part of the talk."
+msgstr "Il m'apparût clair, d'après ce que j'avais vu advenir de
ces systèmes propriétaires que la seule façon de conserver
l'esprit du vieux labo d'I.A. était d'avoir un logiciel d'exploitation
libre. D'avoir un système formé par du logiciel libre pouvant
être partagé avec n'importe qui. De façon à pouvoir
inviter tout le monde à s'associer pour l'améliorer. Et c'est ce
qui a conduit au projet GNU. Ainsi j'estime que nous sommes arrivés
à la deuxième partie de l'entretien."
+
+# type: Content of: <p>
+msgid "About three and a half year ago it was clear to me that I should start
developing a <a href=\"/philosophy/free-sw.html\">free software</a> system. I
could see two possible kinds of systems to develop: One: A LISP-machine-like
system, essentially a system just like the MIT LISP machine system that had
just been developed, except free, and running on general purpose hardware, not
on special LISP machines. And the other possibility was a more conventional
operating system, and it was clear to me that if I made a conventional
operating system, I should make it compatible with Unix, because that would
make it easy for people all around to switch to it. After a little while, I
concluded I should do the latter and the reason was, that I saw that you can't
have something really like the LISP machine system on general purpose hardware.
The LISP machine system uses special hardware plus special writable microcode
to gain both good execution speed and robust detection of errors at runtime,
specially data-type errors. In order to make a LISP system run fast enough on
ordinary hardware, you have to start making assumptions. Assuming that a
certain argument is the right type, and then if it isn't the system just
crashes."
+msgstr "Environ trois ans et demi auparavant, il était devenu clair
pour moi que je devais commencer à développer un système
de logiciel libre. Je pouvais voir deux genres de systèmes se
développer : le premier, un système qui ressemblait à
celui des machines LISP, un système essentiellement comme celui qui
venait d'être développé sur les machines LISP du M.I.T.
mais libre et fonctionnant sur tout type de matériel, pas seulement sur
les machines LISP spécialisées. Et l'autre système
possible était un logiciel d'exploitation plus conventionnel. Et il
était clair pour moi que si je faisais un logiciel d'exploitation
conventionnel, je devais le rendre compatible avec Unix parce que ça
rendait la migration plus facile aux gens alentours. Peu de temps plus tard,
j'en ai conclu que c'était ce qu'il fallait faire. Et la raison,
c'était qu'il n'était pas vraiment possible d'obtenir quelque
chose d'identique au système des machines LISP sur tout type de
matériel. Le système des machines LISP utilise du matériel
spécial, plus un microcode à affichage spécial pour gagner
une bonne vitesse d'exécution et une détection solide des erreurs
pendant le temps d'exécution, en particulier les erreurs sur le type des
données. Pour qu'un système LISP puisse fonctionner assez
rapidement sur du matériel ordinaire, vous devez commencer par faire des
suppositions. En supposant que tel argument est le bon. Et si ce n'est pas le
cas, vous obtenez le plantage du système."
+
+# type: Content of: <p>
+msgid "Of course you can put in explicit checks, you can write a robust
program if you want, but the fact is that you are going to get things like
memory addressing errors when you feed a function an argument of the wrong type
if you did NOT put in things to check for it."
+msgstr "Naturellement vous pouvez y placer des contrôles explicites,
vous pouvez écrire un programme solide si vous voulez, mais le fait est
que vous allez obtenir des choses comme des erreurs d'adressage de
mémoire lorsque vous alimentez une fonction, un argument de type
inapproprié si vous n'aviez pas prévu d'y placer des
éléments à contrôler pour ça."
+
+# type: Content of: <p>
+msgid "So the result is then that you need something running underneath the
LISP system to you catch these errors, and give the user the ability to keep on
running, and debug what happened to him. Finally I concluded that if I was
going to have to have a operating system at a lower level, I might as well make
a good operating-system—that it was a choice between an operating system
and the lisp, or just an operating system; therefore I should do the operating
system first, and I should make it compatible with Unix. Finally when I
realized that I could use the most amusing word in the English language as a
name for this system, it was clear which choice I had to make. And that word
is of course GNU, which stands for “Gnu's Not Unix”. The recursive
acronym is a very old tradition among the hacker community around MIT. It
started, I believe, with an editor called TINT, which means: “Tint Is Not
Teco”, and later on it went through names such as “SINE” for
“SINE Is Not Emacs”, and FINE for “Fine Is Not Emacs”,
and EINE for “Eine Is Not Emacs”, and ZWEI for “Zwei Was Eine
Initially”, and ultimately now arrives at GNU."
+msgstr "Le résultat, c'est qu'il fallait que quelque chose fonctionne
en dessous du système LISP pour percevoir ces erreurs, donner à
l'utilisateur la possibilité de maintenir le fonctionnement et de
déboguer les problèmes qui étaient survenus. Enfin j'en ai
conclu que si je devais avoir à plus bas niveau un logiciel
d'exploitation, je pouvais tout aussi bien faire un bon système
d'exploitation — c'était un choix entre un système
d'exploitation et le LISP ou juste un système d'exploitation ; donc
je devais faire le logiciel d'exploitation d'abord et le rendre compatible avec
Unix. Enfin quand j'ai réalisé que je pouvais utiliser le plus
drôle des mots anglais pour nommer ce système, le choix que je
devais faire était clair. Et ce mot est bien-sûr GNU, qui signifie
« GNU is Not Unix ». L'acronyme récursif est une
très vieille tradition dans la communauté des hackers aux
environs du M.I.T. Il a commencé je crois, avec un éditeur
appelé TINT, ce qui signifie : « Tint Is Not
Teco » et plus tard c'est passé par des noms comme
« SINE » pour « Sine Is Not
Emacs », et FINE pour « Fine Is Not Emacs »,
et EINE pour « Eine Is Not Emacs », et ZWEI pour
« Zwei Was Eine Initially », et finalement c'était
arrivé à GNU."
+
+# type: Content of: <p>
+msgid "I would say that since the time about two and a half years ago when I
actually started working on GNU, I've done more than half of the work. When I
was getting ready to start working on the project, I first started looking
around for what I could find already available free. I found out about an
interesting portable compiler system which was called “the free
university compiler kit”, and I thought, with a name like that, perhaps I
could have it. So, I sent a message to the person who had developed it asking
if he would give it to the GNU project, and he said “No, the university
might be free, but the software they develop isn't”, but he then said
that he wanted to have a Unix compatible system too, and he wanted to write a
sort of kernel for it, so why didn't I then write the utilities, and they could
both be distributed with his proprietary compiler, to encourage people to buy
that compiler. And I thought that this was despicable and so I told him that
my first project would be a compiler."
+msgstr "Je dirais qu'environ deux ans et demi avant de commencer
réellement à travailler sur GNU, j'avais déjà fait
plus de la moitié du travail. Au moment où j'étais
prêt à démarrer le projet, j'ai d'abord regardé
autour de moi ce qu'il y avait de libre déjà disponible. J'ai
découvert un système portatif intéressant de compilateur
appelé « le kit compilateur libre universitaire »
et j'ai pensé qu'avec un nom comme ça, je pouvais peut-être
l'avoir. Ainsi, j'ai envoyé un message à la personne qui l'avait
développé en lui demandant s'il acceptait de le donner au projet
GNU. Et il a dit : « Non, l'université est
peut-être libre, mais le logiciel qu'ils développent ne l'est
pas », mais aussi qu'il voulait avoir un système compatible
avec Unix et qu'il a voulu écrire une sorte de noyau pour lui, alors
pourquoi je n'écrirais pas les utilitaires, comme ça les deux
pourraient être distribués avec son compilateur
propriétaire et ça encouragerait les gens à l'acheter.
J'ai pensé que c'était ignoble alors je lui ai dit que mon
premier projet sera de faire un compilateur."
+
+# type: Content of: <p>
+msgid "I didn't really know much about optimizing compilers at the time,
because I'd never worked on one. But I got my hands on a compiler, that I was
told at the time was free. It was a compiler called PASTEL, which the authors
say means “off-color PASCAL”."
+msgstr "Je ne savais pas vraiment grand-chose au sujet des compilateurs de
linéarisation parce que je n'avais jamais travaillé dessus. Mais
j'ai mis les mains dedans. Et celui dont on m'avait parlé était
libre. C'était un compilateur appelé PASTEL dont les auteurs
disaient que c'était du « PASCAL mal fichu »."
+
+# type: Content of: <p>
+msgid "Pastel was a very complicated language including features such as
parametrized types and explicit type parameters and many complicated things.
The compiler was of course written in this language, and had many complicated
features to optimize the use of these things. For example: the type
“string” in that language was a parameterized type; you could say
“string(n)” if you wanted a string of a particular length; you
could also just say “string”, and the parameter would be determined
from the context. Now, strings are very important, and it is necessary for a
lot of constructs that use them to run fast, and this means that they had to
have a lot of features to detect such things as: when the declared length of a
string is an argument that is known to be constant throughout the function, to
save to save the value and optimize the code they're going to produce, many
complicated things. But I did get to see in this compiler how to do automatic
register allocation, and some ideas about how to handle different sorts of
machines."
+msgstr "Le Pastel était un langage très compliqué
comprenant des dispositifs comme des caractères
paramétrisés et des caractères paramètres
explicites et beaucoup de choses compliquées. Le compilateur
naturellement a été écrit dans ce langage et comportait
nombre de dispositifs compliqués pour optimiser l'utilisation de ces
éléments. Par exemple : le caractère
« string » dans ce langage était un
caractère paramétrisé; vous pouviez dire le
« string(n) » si vous vouliez une chaîne d'une
longueur particulière; vous pouviez également juste dire
« string », et le paramètre était
déterminé à partir du contexte. Maintenant, les
chaînes sont très importantes et nécessaires à
beaucoup de constructions qui les utilisent pour fonctionner rapidement. Et
ça veut dire qu'elles devaient avoir beaucoup de fonctions pour
détecter des choses comme quand la longueur déclarée d'une
chaîne est un argument connu pour être constant dans toute la
fonction, quand il s'agit de sauvegarder la valeur et d'optimiser le code
qu'elles vont produire… beaucoup de choses compliquées. Mais j'ai
pu voir dans ce compilateur comment procéder à l'allocation
automatique de registre et quelques idées sur la façon de
manipuler différents types de machines."
+
+# type: Content of: <p>
+msgid "Well, since this compiler already compiled PASTEL, what i needed to do
was add a front-end for C, which I did, and add a back-end for the 68000 which
I expected to be my first target machine. But I ran into a serious problem.
Because the PASTEL language was defined not to require you to declare something
before you used it, the declarations and uses could be in any order, in other
words: Pascal's “forward” declaration was obsolete, because of this
it was necessary to read in an entire program, and keep it in core, and then
process it all at once. The result was that the intermediate storage used in
the compiler, the size of the memory needed, was proportional to the size of
your file. And this also included stack-space, you needed gigantic amounts of
stack space, and what I found as a result was: that the 68000 system available
to me could not run the compiler. Because it was a horrible version of Unix
that gave you a limit of something like 16K words of stack, this despite the
existence of six megabytes in the machine, you could only have 16Kw of stack or
something like that. And of course to generate its conflict matrix to see
which temporary values conflicted, or was alive at the same time as which
others, it needed a quadratic matrix of bits, and that for large functions that
would get it to hundreds of thousands of bytes. So i managed to debug the
first pass of the ten or so passes of the compiler, cross compiled on to that
machine, and then found that the second one could never run."
+msgstr "Bon, ce compilateur ayant déjà compilé PASTEL,
j'avais à rajouter une entrée pour le C ; ce que je fis.
Puis d'ajouter un arrière-plan pour la 68000 qui devait être ma
première machine cible. Mais j'allais vers un sérieux
problème. Puisque le langage PASTEL était conçu de
manière à ne pas avoir besoin de déclarer quoi que ce soit
avant de l'utiliser. Les déclarations et utilitaires pouvaient
être dans n'importe quel ordre ; en d'autres termes : la
déclaration « forward » du Pascal était
obsolète. Pour cette raison il était nécessaire
d'emmagaziner le programme dans son entier, de le garder dans le noyau et de
l'appliquer d'un trait. Le résultat, c'était que le stockage
intermédiaire utilisé dans le compilateur, la taille de la
mémoire requise, étaient proportionnels à la taille de
votre fichier. Et cela incluait aussi l'espace de pile ; vous aviez besoin
d'une quantité gigantesque d'espace de pile, et j'en ai conclu que le
système 68000 dont je disposais ne pouvait pas faire fonctionner le
compilateur. Car c'était une horrible version d'Unix qui vous limitait
à quelque chose comme 16K de mots de pile, ceci en dépit de
l'existence de six méga-octets dans la machine. Et naturellement pour
générer la matrice des conflits pour voir quelles valeurs
temporaires étaient en conflit ou actives en même temps que les
autres, il était nécessaire d'avoir une matrice quadratique de
bits. Et pour les grandes fonctions cela pouvait prendre des centaines de
milliers d'octets. Aussi je suis parvenu à corriger la première
des quelque dix passes du compilateur en compilation croisée sur cette
machine et j'ai constaté alors que la seconde ne pourrait jamais
fonctionner."
+
+# type: Content of: <p>
+msgid "While I was thinking about what to do about these problems and
wondering whether I should try to fix them or write entirely new compiler, in a
roundabout fashion I began working on GNU Emacs. GNU Emacs is the main
distributed portion of the GNU system. It's an extensible text editor a lot
like the original emacs which I developed ten years ago, except that this one
uses actual LISP as its extension language. The editor itself is implemented
in C, as is the LISP interpreter, so the LISP interpreter is completely
portable, and you don't need a LISP system external to the editor. The editor
contains its own LISP system, and all of the editing commands are written in
LISP so that they can provide you with examples to look at for how to write
your own editing commands, and things to start with, so you can change them
into the editing commands that you really want."
+msgstr "Pendant que je réfléchissais à ces
problèmes en me demandant si je devais essayer de les corriger ou bien
d'écrire entièrement un nouveau compilateur, j'ai commencé
de manière indirecte à travailler sur GNU Emacs. Gnu Emacs est la
partie principale de la distribution du système GNU. C'est un
éditeur de texte extensible qui ressemble de près à
l'Emacs original que j'ai développé il y a dix ans, sauf que
celui-ci emploie le véritable LISP pour son extension de langage. Le
rédacteur lui-même est implémenté en C de même
que l'interpréteur LISP. Ainsi l'interpréteur LISP est
entièrement portatif et vous n'avez pas besoin de système LISP
externe au rédacteur. Le rédacteur contient son propre
système LISP et toutes les commandes d'édition sont
écrites en LISP de manière à pouvoir vous donner des
exemples sur la façon d'écrire vos propres commandes
d'édition et des éléments pour débuter avec. Ainsi
vous pouvez les changer pour les commandes d'édition que vous voulez
vraiment."
+
+# type: Content of: <p>
+msgid "In the summer of that year, about two years ago now, a friend of mine
told me that because of his work in early development of Gosling Emacs, he had
permission from Gosling in a message he had been sent to distribute his version
of that. Gosling originally had set up his Emacs and distributed it free and
gotten many people to help develop it, under the expectation based on Gosling's
own words in his own manual that he was going to follow the same spirit that I
started with the original Emacs. Then he stabbed everyone in the back by
putting copyrights on it, making people promise not to redistribute it and then
selling it to a software-house. My later dealings with him personally showed
that he was every bit as cowardly and despicable as you would expect from that
history."
+msgstr "L'été de cette année-là, il y a environ
deux ans maintenant, un ami m'a dit qu'en raison de son travail au tout
début du développement de Gosling Emacs, il a eu la permission
écrite de Gosling de distribuer sa propre version. Gosling, à
l'origine, avait créé son Emacs. Il l'avait distribué
librement et beaucoup de gens aidèrent à son
développement, avec l'espoir — selon les propres mots de
Gosling dans son manuel — qu'il avait suivi le même
état d'esprit que celui que j'avais donné à l'Emacs
original. Ensuite il a poignardé tout le monde dans le dos en posant un
copyright dessus, en faisant promettre aux gens de ne pas le redistribuer puis
en le vendant à une maison d'édition de logiciels. Les rapports
d'affaires que j'ai eu avec lui par la suite m'ont personnellement
prouvé qu'il était aussi lâche et ignoble que vous pouvez
le voir dans cette histoire."
+
+# type: Content of: <p>
+msgid "But in any case, my friend gave me this program, and my intention was
to change the editing commands at the top level to make them compatible with
the original Emacs that I was used to. And to make them handle all the
combinations of numerical arguments and so on that one might expect that they
would handle and have all the features that I wanted. But after a little bit
of this, I discovered that the extension language of that editor, which is
called MOCKLISP, was not sufficient for the task. I found that that I had to
replace it immediately in order to do what I was planning to do. Before I had
had the idea of someday perhaps replacing MOCKLISP with real LISP, but what I
found out was that it had do be done first. Now, the reason that MOCKLISP is
called MOCK, is that it has no kind of structure datatype: it does not have
LISP lists; it does not have any kind of array. It also does not have LISP
symbols, which are objects with names: for any particular name, there is only
one object, so that you can type in the name and you always get the same object
back. And this tremendously hampers the writing of many kinds of programs, you
have to do things by complicated string-manipulation that don't really go that
way."
+msgstr "Mais de toute façon, mon ami m'avait donné le programme.
Et j'avais l'intention de modifier les commandes d'édition à un
niveau supérieur pour les rendre compatibles avec l'Emacs original dont
j'avais l'habitude. Ceci pour qu'elles puissent manipuler toutes les
combinaisons d'arguments numériques et tout ce que l'on pouvait
s'attendre à ce qu'elles manipulent, en étant pourvues de tous
les dispositifs que je voulais. Mais peu après, j'ai découvert
que le langage d'extension de ce rédacteur, appelé MOCKLISP, ne
suffisait pas à la tâche. J'ai compris que je devais le remplacer
immédiatement pour pouvoir réaliser mon projet. J'avais
déjà pensé auparavant à remplacer
éventuellement MOCKLISP par le vrai LISP, mais ce que j'ai
découvert c'est qu'il fallait le faire d'abord. Maintenant, la raison
pour laquelle MOCKLISP s'appelle MOCK (FAUX), c'est qu'il n'y a aucun type de
structure des données : il n'y a pas de listes LISP ; il n'y a
aucun type de tableau. Il n'y a également pas de symboles LISP, qui sont
des objets nommés : à chaque nom particulier est
attribué un seul objet de manière à ce que la saisie du
nom se rapporte toujours au même objet. Sinon, ça entrave
considérablement l'écriture de pas mal de types de programmes, en
vous obligeant à passer par des manipulations alphanumériques
compliquées qui ne vont pas vraiment dans ce sens."
+
+# type: Content of: <p>
+msgid "So I wrote a LISP interpreter and put it in in place of MOCKLISP and in
the process I found that I had to rewrite many of the editor's internal data
structures because I wanted them to be LISP objects. I wanted the interface
between the LISP and the editor to be clean, which means that objects such as
editor buffers, sub-processes, windows and buffer-positions, all have to be
LISP objects, so that the editor primitives that work on them are actually
callable as LISP functions with LISP data. This meant that I had to redesign
the data formats of all those objects and rewrite all the functions that worked
on them, and the result was that after about six months I had rewritten just
about everything in the editor."
+msgstr "Alors j'ai écrit un interpréteur de LISP pour le mettre
à la place de MOCKLISP. Et pendant le processus, j'ai constaté
que je devais réécrire un certain nombre de structures de
données internes à l'éditeur parce que je voulais qu'il
s'agisse d'objets LISP. J'ai voulu que l'interface entre le LISP et
l'éditeur soit propre. C'est à dire que les objets comme les
tampons, les sous-programmes, les fenêtres et les zones tampon de
l'éditeur soient tous des objets LISP. Pour que les instructions de
l'éditeur qui leur étaient affectées soient
réellement attribuables en tant que fonctions LISP avec des
données LISP. Cela voulait dire qu'il fallait reconcevoir les formats de
données de tous les objets et réécrire toutes lesfonctions
qui leur étaient affectées. Et cela a eu pour résultat,
pendant environ six mois, de me faire réécrire à peu
près tout ce qu'il y avait dans l'éditeur."
+
+# type: Content of: <p>
+msgid "In addition, because it is so hard to write things in MOCKLISP, all the
things that had been written in MOCKLISP were very unclean and by rewriting
them to take advantage of the power of real LISP, I could make them much more
powerful and much simpler and much faster. So I did that, and the result was
that when I started distributing this program only a small fraction remained
from what I had received."
+msgstr "En outre, parce qu'il est vraiment difficile d'écrire dans
MOCKLISP, tout ce qui avait été écrit était
très imparfait. Et en le réécrivant, je pouvais tirer
profit de la puissance du vrai LISP ; je pouvais rendre tout ça
beaucoup plus puissant, beaucoup plus simple et rapide. Alors je l'ai fait. Et
quand j'ai commencé à distribuer le programme, il ne restait
qu'une petite partie de ce que j'avais reçu."
+
+# type: Content of: <p>
+msgid "At this point, the company that Gosling thinks he sold the program to
challenged my friend's right to distribute it, and the message was on backup
tapes, so he couldn't find it. And Gosling denied having given him permission.
And then a strange thing happened. He was negotiating with this company, and
it seemed that the company mainly was concerned with not having anything
distributed that resembled what they were distributing. See, he was still
distributing, and the company where he worked, which is Megatest, was still
distributing the same thing he had given me, which really was an old version of
Gosling Emacs with his changes, and so he was going to make an agreement with
them where he would stop distributing that, and would switch to using GNU
Emacs, and they would then acknowledge that he really had the permission after
all, and then supposedly everyone would be happy. And this company was talking
to me about wanting to distribute GNU Emacs, free of course, but also sell
various sorts of supporting assistance, and they wanted to hire me to help do
the work. So it's sort of strange that they then changed their mind and
refused to sign that agreement, and put up a message on the network saying that
I wasn't allowed to distribute the program. They didn't actually say that they
would do anything, they just said that it wasn't clear whether they might ever
someday do something. And this was enough to scare people so that no one would
use it any more, which is a sad thing."
+msgstr "À ce moment-là, l'entreprise à qui Gosling
pensait avoir vendu le programme a contesté à mon ami le droit de
le distribuer. Le message était alors enregistré sur des bandes
qu'il ne pouvait pas trouver. Malgré tout, Gosling a nié lui
avoir donné la permission. Une chose étrange s'est alors
produite. Il était en pourparlers avec cette compagnie qui semblait
principalement concernée par le fait qu'il avait distribué
quelque chose de similaire à ce qu'elle distribuait. En gros, Gosling
distribuait ce que la compagnie, Megatest, où il avait travaillé,
distribuait aussi. C'est-à-dire ce qu'il m'avait donné; en
réalité une de ses anciennes versions d'Emacs modifiée. Il
allait donc passer un accord avec eux dans lequel il cessait de le distribuer.
Ils voulaient ensuite passer à GNU Emacs, en reconnaissant à
Gosling la permission de le faire après tout et donc
théoriquement tout le monde était content. Alors cette entreprise
m'a entretenu au sujet de leur désir de distribuer GNU Emacs, librement
bien-sûr, mais aussi de vendre divers types de supports d'aide. Et ils
ont voulu louer mes compétences pour aider à faire ce travail.
Aussi, il est un peu étrange qu'ils aient soudain changé d'avis
et refusé de signer cet accord, en mettant un message d'annonce sur le
réseau comme quoi on ne m'avait pas donné le droit de distribuer
le programme. Ils n'ont pas réellement dit qu'ils feraient quelque
chose. Ils ont juste dit qu'il n'était pas improbable qu'ils fassent
quelque chose un jour. Cela faisait suffisamment peur aux gens pour que plus
personne ne l'utilise. C'est triste."
+
+# type: Content of: <p>
+msgid "(Sometimes I think that perhaps one of the best things I could do with
my life is: find a gigantic pile of proprietary software that was a trade
secret, and start handing out copies on a street corner so it wouldn't be a
trade secret any more, and perhaps that would be a much more efficient way for
me to give people new free software than actually writing it myself; but
everyone is too cowardly to even take it.)"
+msgstr "(Parfois je me dis que peut-être une des meilleures choses que
je pourrais faire dans la vie serait de trouver une pile colossale de logiciels
propriétaires encore sous secret commercial et de commencer à en
distribuer des copies à tous les coins de rue en les faisant sortir du
secret commercial. Ça serait peut-être une manière beaucoup
plus efficace pour moi de fournir aux gens du nouveau logiciel libre
plutôt qu'en l'écrivant réellement moi-même ;
mais tout le monde serait trop lâche pour le prendre quand même)."
+
+# type: Content of: <p>
+msgid "So I was forced to rewrite all the rest that remained, and I did that,
it took me about a week and a half. So they won a tremendous victory. And I
certainly wouldn't ever cooperate with them in any fashion after that."
+msgstr "Ça m'a obligé à réécrire tout ce
qui restait qui n'était pas de moi, et je l'ai fait. Il m'a fallu
environ une semaine et demie. Ainsi ils ont gagné une grande victoire!
Il était certain que je ne coopérerais jamais plus avec eux en
aucune manière après ça."
+
+# type: Content of: <p>
+msgid "Then after GNU Emacs was reasonably stable, which took all in all about
a year and a half, I started getting back to other parts of the system. I
developed a debugger which I called GDB which is a symbolic debugger for C
code, which recently entered distribution. Now this debugger is to a large
extent in the spirit of DBX, which is a debugger that comes with Berkeley Unix.
Commands consist of a word that says what you want to do, followed by
arguments. In this debugger, commands can all be abbreviated, and the common
commands have single character abbreviations, but any unique abbreviation is
always allowed. There are extensible HELP facilities, you can type HELP
followed by any command or even subcommands, and get a lengthy description of
how to use that command. Of course you can type any expression in C, and it
will print the value."
+msgstr "Après que GNU Emacs soit devenu raisonnablement stable
— ce qui m'a pris environ un an et demi à tout prendre - j'ai
commencé à revenir sur d'autres parties du système. J'ai
développé un programme de débogage que j'ai appelé
GDB un débogueur en code C symbolique récemment
entré dans la distribution. Réalisé en grande partie dans
l'esprit de DBX qui est le débogueur de l'Unix de Berkeley. Les
commandes se composent d'un mot indiquant ce que vous voulez faire, suivi des
arguments. Dans ce programme, toutes les commandes peuvent être
abrégées. Et les commandes communes sont des abréviations
à caractère unique, sachant que toute abréviation à
caractère unique est permise. Il y a aussi des aménagements
considérables pour HELP. Vous pouvez taper HELP suivi de toutes les
commandes ou même des commandes secondaires et vous obtenez une
description complète de la façon de l'utiliser. Naturellement
vous pouvez taper n'importe quelle expression en C et il en imprimera la
valeur."
+
+# type: Content of: <p>
+msgid "You can also do some things that are not usual in symbolic C debuggers,
for example: You can refer to any C datatype at any memory address, either to
examine the value, or to assign the value. So for example if you want to store
a floating point value in a word at a certain address, you just say:
“Give me the object of type FLOAT or DOUBLE at this address” and
then assign that. Another thing you can do is to examine all the values that
have been examined in the past. Every value examined gets put on the
“value history”. You can refer to any element in the history by
its numerical position, or you can easily refer to the last element with just
dollar-sign. And this makes it much easier to trace list structure. If you
have any kind of C structure that contains a pointer to another one, you can do
something like “PRINT *$.next”, which says: “Get the next
field out of the last thing you showed me, and then display the structure that
points at”. And you can repeat that command, and each time you'll see
then next structure in the list. Whereas in every other C debugger that I've
seen the only way to do that is to type a longer command each time. And when
this is combined with the feature that just typing carriage-return repeats the
last command you issued, it becomes very convenient. Just type carriage-return
for each element in the list you want to see."
+msgstr "Vous pouvez également faire des choses inhabituelles pour un
débogueur C symbolique, par exemple : vous pouvez faire
référer n'importe quel type de donnée de C à
n'importe quelle adresse de mémoire pour en étudier la valeur ou
pour l'attribuer. Par exemple si vous voulez stocker une valeur de virgule
flottante dans un mot à une certaine adresse, vous devez juste
dire : « Donnez-moi l'objet du type FLOAT ou DOUBLE à
cette adresse et attribuez-le ». Une autre chose que vous pouvez
faire est d'étudier toutes les valeurs qui ont été
étudiées auparavant. Chaque valeur étudiée est
placée au dessus de l'« historique des valeurs ».
Vous pouvez vous référer à n'importe quel
élément par sa position dans l'historique. Ou vous pouvez
facilement vous référer au dernier élément juste
avec le signe dollar. Et ça facilite le suivi de la structure des
listes. Pour n'importe quel genre de structure de C qui contient un pointeur
vers une autre structure, vous pouvez faire quelque chose comme
« PRINT*$.next » qui dit : « Sortez le
prochain champ de la dernière chose que vous m'avez montré et
ensuite affichez la structure sur laquelle il pointe ». En
répétant cette commande, vous voyez chaque fois la prochaine
structure de la liste, sachant que dans chacun des débogueurs C que j'ai
vus, la seule manière de le faire est de taper une commande chaque fois
plus longue. Et quand c'est combiné à un retour-chariot
tapé juste après la dernière commande donnée,
ça devient très pratique. Vous avez juste à taper
retour-chariot pour chaque élément de la liste que vous voulez
voir."
+
+# type: Content of: <p>
+msgid "There are also explicitly settable variables in the debugger, any
number of them. You say dollar-sign followed by a name, and that is a
variable. You can assign these variables values of any C datatype and then you
can examine them later. Among the things that these are useful for are: If
there's a particular value that you're going to examine, and you know you are
going to refer to it a lot, then rather than remember its number in the history
you might give it a name. You might also find use for them when you set
conditional breakpoints. Conditional breakpoints are a feature in many
symbolic debuggers, you say “stop when you get to this point in the
program, but only if a certain expression is true”. The variables in the
debugger allow you to compare a variable in the program with a previous value
of that variable that you saved in a debugger variable. Another thing that
they can be used for is for counting, because after all, assignments are
expressions in C, therefore you can do “$foo+=5” to increment the
value of “$foo” by five, or just “$foo++” you can do.
You can even do this in a conditional breakpoint, so that's a cheap way of
having it break the tenth time the breakpoint is hit, you can do
“$foo--==0”. Does everyone follow that? Decrement foo and if it's
zero now, break. And then you set $foo to the number of times you want it to
skip, and you let it go. You can also use that to examine elements of an
array. Suppose you have an array of pointers, you can then do:"
+msgstr "Vous pouvez aussi poser des variables de façon explicite dans
le débogueur, en n'importe quel nombre. Vous posez le signe dollar suivi
d'un nom et c'est une variable. Vous pouvez attribuer les valeurs de ces
variables à n'importe quel type de données de C et vous pourrez
les étudier plus tard. Parmi les choses pour lesquelles c'est utile,
s'il y a une valeur particulière que vous voulez étudier, sachant
que vous allez vous y référer souvent, plutôt que de vous
souvenir de son numéro dans l'historique, vous pouvez lui donner un nom.
Vous pouvez aussi les utiliser quand vous placez des paliers conditionnels. Les
paliers conditionnels sont un dispositif qui existe dans beaucoup de
débogueurs symboliques. Vous dites :
« Arrêtez-vous quand vous serez arrivés à ce
point du programme, mais seulement si une certaine expression est
vraie ». Les variables dans le débogueur vous permettent de
comparer une variable du programme à sa précédente valeur
sauvegardée dans la variable du débogueur. Une autre chose
à laquelle elles peuvent servir, c'est de compter. Parce qu'après
tout, les allocations sont des expressions en C, donc on peut faire :
« $foo+=5 » pour incrémenter la valeur
« $foo » de cinq ou juste
« $foo++ ». Vous pouvez également le faire lors
d'un palier conditionnel. Une manière économe de le voir
s'arrêter la dixième fois que le palier est atteint, serait de
faire « $foo--==0 ». Est-ce que tout le monde suit ?
Faire décroître Foo et une fois qu'il est à zéro,
arrêt. Vous faites démarrer $foo au nombre de fois que vous voulez
qu'il saute et vous le lâchez. Vous pouvez aussi utiliser ça pour
examiner les éléments d'un tableau. Supposez que vous avez un
tableau de pointeurs, vous pouvez faire :"
+
+# type: Content of: <pre>
+#, no-wrap
+msgid "PRINT X[$foo++]"
+msgstr "PRINT X[$foo++]"
+
+# type: Content of: <p>
+msgid "But first you do"
+msgstr "mais d'abord vous faites"
+
+# type: Content of: <pre>
+#, no-wrap
+msgid "SET $foo=0"
+msgstr "SET $foo=0"
+
+# type: Content of: <p>
+msgid "Okay, when you do that [points at the “Print” expression],
you get the zeroth element of X, and then you do it again and it gets the first
element, and suppose these are pointers to structures, then you probably put an
asterisk there [before the X in the PRINT expression] and each time it prints
the next structure pointed to by the element of the array. And of course you
can repeat this command by typing carriage-return. If a single thing to repeat
is not enough, you can create a user-defined-command. You can say
“Define Mumble”, and then you give some lines of commands and then
you say “end”. And now there is defined a “Mumble”
command which will execute those lines. And it's very useful to put these
definitions in a command file. You can have a command file in each directory,
that will be loaded automatically when you start the debugger with that as your
working directory. So for each program you can define a set of user defined
commands to access the data structures of that program in a useful way. You
can even provide documentation for your user-defined commands, so that they get
handled by the “help” features just like the built-in commands."
+msgstr "Ok, quand vous faites ça [des points à l'expression
« Print »], vous obtenez l'élément
zéro de X et quand vous le faites à nouveau, il atteint le
premier élément. Supposez que ce soient des pointeurs vers des
structures, alors vous mettez probablement une astérisque là
[avant le X dans l'expression « Print »] et chaque fois
qu'elle affiche la prochaine structure pointée par
l'élément du tableau. Et bien-sûr vous pouvez
répéter cette commande en tapant retour-chariot. Si une chose
simple à répéter ne suffit pas, vous pouvez créer
une commande définie par l'utilisateur. Vous pouvez dire
« Définissez Mumble », vous donnez quelques lignes
de commandes et vous dites « end ». Il y a maintenant une
commande « Mumble » définie qui exécutera
ces lignes. Et il est très utile de mettre ces définitions dans
un fichier de commande. Vous pouvez avoir un fichier de commande dans chaque
répertoire qui sera chargé automatiquement lorsque vous mettez en
marche le débogueur avec ça en tant que répertoire actif.
Ainsi pour chaque programme, vous pouvez définir un ensemble de
commandes sur mesure pour accéder aux structures de données de
façon utile. Vous pouvez même fournir de la documentation pour vos
commandes, de façon à ce qu'elles soient traitées dans les
aménagements de « help » comme des commandes
intégrées."
+
+# type: Content of: <p>
+msgid "One other unusual thing in this debugger, is the ability to discard
frames from the stack. Because I believe it's important not just to be able to
examine what's happening in the program you're debugging, but also to change it
in any way conceivable. So that after you've found one problem and you know
what's wrong, you can fix things up as if that code were correct and find the
next bug without having to recompile your program first. This means not only
being able to change the data areas in you program flexibly, but also being
able to change the flow of control. In this debugger you can change the flow
of control very directly by saying:"
+msgstr "Une autre chose peu habituelle dans ce débogueur, c'est la
capacité d'écarter les trames de la pile. Parce que je crois que
c'est non seulement important pour pouvoir examiner ce qui se produit dans le
programme que vous déboguez, mais aussi pour le modifier de toutes les
façons possibles. De sorte qu'après avoir trouvé un
problème et avoir su ce qui n'allait pas, vous pouvez arranger les
choses comme si le code était correct et trouver le prochain bogue sans
avoir d'abord à recompiler le programme. Cela signifie non seulement
pouvoir changer en souplesse les secteurs de données de votre programme,
mais également changer le flux de contrôle. Dans ce
débogueur, vous pouvez changer le flux de contrôle très
directement en disant :"
+
+# type: Content of: <pre>
+#, no-wrap
+msgid "SET $PC=<some number>"
+msgstr "SET $PC=<un certain nombre>"
+
+# type: Content of: <p>
+msgid "So you can set the program counter. You can also set the stack
pointer, or you can say"
+msgstr "Et vous pouvez placer le compteur. Vous pouvez également placer
l'indicateur de pile, ou vous pouvez dire :"
+
+# type: Content of: <pre>
+#, no-wrap
+msgid "SET $SP+=<something>"
+msgstr "SET $SP+=<quelque chose>"
+
+# type: Content of: <p>
+msgid "If you want to increment the stack pointer a certain amount. But in
addition you can also tell it to start at a particular line in the program, you
can set the program counter to a particular source line. But what if you find
that you called a function by mistake and you didn't really want to call that
function at all? Say, that function is so screwed up that what you really want
to do is get back out of it and do by hand what that function should have done.
For that you can use the “RETURN” command. You select a stack
frame and you say “RETURN”, and it causes that stack-frame, and all
the ones within it, to be discarded as if that function were returning right
now, and you can also specify the value it should return. This does not
continue execution; it pretends that return happened and then stops the program
again, so you can continue changing other things."
+msgstr "Ceci si vous voulez incrémenter l'indicateur de pile d'une
certaine quantité. Mais en outre, vous pouvez également le dire
pour démarrer sur une ligne particulière du programme ; vous
pouvez placer le compteur à une ligne particulière du code
source. Mais que se passe-t'il si vous constatez que vous avez appelé
une fonction par erreur et que vous ne vouliez pas appeler cette fonction du
tout ? Vous vous dites que cette fonction est trop merdique, que vous
voulez vraiment en sortir et vous faites à la main ce que cette fonction
devait faire. Pour cela, vous pouvez utiliser la commande
« RETURN ». Vous sélectionnez une trame de la pile
et vous dites « RETURN ». Et ça va faire que la
trame de la pile comme toutes celles qui vont avec, seront abandonnées
comme si cette fonction revenait instantanément en arrière. Vous
pouvez aussi spécifier la valeur à laquelle vous voulez qu'elle
revienne. Ça ne prolonge pas l'exécution ; ça simule
le retour et stoppe à nouveau le programme ; vous pouvez ainsi
continuer de modifier autre chose."
+
+# type: Content of: <p>
+msgid "And with all these things put together you thus have pretty good
control over what's going on in a program."
+msgstr "Avec toutes ces choses réunies, vous avez donc un excellent
contrôle sur ce qu'il se passe dans un programme."
+
+# type: Content of: <p>
+msgid "In addition one slightly amusing thing: C has string constants, what
happens if you use a string constant in an expression that you're computing in
the debugger? It has to create a string in the program you were debugging.
Well it does. It sets up a call to MALLOC in that debugged program, lets
MALLOC run, and then gets control back. Thus it invisibly finds a place to put
the string constant."
+msgstr "En outre, une chose assez amusante : C a des constantes de
chaîne. Que se passe t-il si vous utilisez une constante de chaîne
dans une expression que vous calculez dans le débogueur ? Il doit
créer une chaîne dans le programme que vous déboguez. Alors
il le fait. Il crée un appel à MALLOC dans le programme
débogué, laisse MALLOC fonctionner et récupère le
contrôle. Ainsi il trouve de façon invisible un endroit pour
placer la constante de chaîne."
+
+# type: Content of: <p>
+msgid "Eventually when this debugger is running on the real GNU system, I
intend to put in facilities in the debugger to examine all of the internal
status of the process that is running underneath it. For example to examine
the status of the memory map, which pages exist, which are readable, which are
writable, and to examine the inferior program's terminal status. There already
is a bit of a command; this debugger, unlike the debuggers on Unix, keeps the
terminal status completely separate for the debugger and the program you're
debugging, so that it works with programs that run in raw mode, it works with
programs that do interrupt driven input, and there's also a command that
enables you to find out something about the terminal settings at the program
you're debugging is actually using. I believe that in general a debugger
should allow you to find out everything that's going on in the inferior
process."
+msgstr "Quand le débogueur a finalement fonctionné sur le vrai
système GNU, j'avais l'intention d'y installer des aménagements
pour examiner l'ensemble des états internes du processus tournant en
dessous de lui. Par exemple pour examiner l'état de la carte
mémoire, pour savoir quelles pages existent, si elles sont lisibles,
inscriptibles et pour examiner l'état inférieur du terminal du
programme. Il y a déjà l'ébauche d'une commande ; ce
débogueur, à la différence des débogueurs sous
Unix, maintient l'état du terminal du débogueur et celui du
programme que vous déboguez complètement séparés.
De sorte que ça marche avec des programmes qui tournent en mode brut,
avec ceux qui font des interruptions d'entrées dynamiques ; et il y
a également une commande qui vous permet d'apprendre quelque chose sur
les positionnements des terminaux que le programme que vous déboguez
utilise réellement. Je crois qu'en général un
débogueur devrait vous permettre de découvrir tout qu'il se passe
dans le processus inférieur."
+
+# type: Content of: <p>
+msgid "There are two other main parts of the GNU system that already exist.
One is the new C compiler, and one is the TRIX kernel."
+msgstr "Deux autres parties centrales du système GNU existent
déjà. L'un est le nouveau compilateur C et l'autre le noyau TRIX."
+
+# type: Content of: <p>
+msgid "The new C compiler is something that I've written this year since last
spring. I finally decided that I'd have to throw out PASTEL. This C compiler
uses some ideas taken from PASTEL, and some ideas taken from the University of
Arizona Portable Optimizer. Their interesting idea was to handle many
different kinds of machines by generating simple instructions, and then
combining several simple instructions into a complicated instruction when the
target machine permits it. In order to do this uniformly, they represent they
represent the instructions in algebraic notation. For example, an ADD
instruction might be represented like this:"
+msgstr "J'ai écrit le nouveau compilateur C cette année, depuis
le printemps dernier. J'ai finalement décidé que je devais me
passer du PASTEL. Ce compilateur utilise quelques idées du PASTEL et
quelques idées de l'optimiseur portatif de l'université
d'Arizona. Ce qu'ils avaient d'intéressant, c'était de manipuler
plusieurs types différents de machines par des instructions simples et
de là, combiner plusieurs instructions simples dans une seule
instruction compliquée quand la machine cible le permettait. Pour que
cela reste uniforme, ils représentaient les instructions en notation
algébrique. Par exemple, l'instruction ADD pourrait être
représentée comme ceci :"
+
+# type: Content of: <pre>
+#, no-wrap
+msgid ""
+"\n"
+" r[3]=r[2]+4\n"
+msgstr ""
+"\n"
+" r[3]=r[2]+4\n"
+
+# type: Content of: <p>
+msgid "This would be a representation inside their compiler for instruction to
take the contents of register two, add four and store it in register three. In
this fashion you can represent any possible instruction for any machine. So
they actually did represent all the instructions this way and then when it came
time to try to combine them, they would do this by substituting one expression
into another, making a more complicated algebraic expression for the combined
instruction."
+msgstr "C'était une représentation interne à leur
compilateur de l'instruction de : prendre le contenu du registre n°2,
d'y ajouter 4 et de le stocker dans le registre n°3. De cette façon
vous pouviez représenter n'importe quelle instruction pour n'importe
quelle machine. Ils représentaient réellement toutes les
instructions comme ça et quand est venu le temps d'essayer de les
combiner, ils l'ont fait en substituant une expression dans une autre, donnant
une expression algébrique plus compliquée à l'instruction
combinée."
+
+# type: Content of: <p>
+msgid "Sometimes depending on whether the result of the first instruction had
any further use, it might be necessary to make a combined instruction with two
assignment operators. One for this value [pointing at ???]and another one with
this value [pointing at ???] substituted in it with what came from the second
instruction. But if this value was only used that once, you could eliminate it
after substituting for it; there'd be no need to compute it any more. So it's
actually somewhat complicated doing the substitution correctly checking that
the intervening instructions don't change any of these values and other such
things. When you support such things as auto-increment and auto-decrement
addressing, which I do now, you also have to do various checks for those to
check for situations where what you're doing is not value preserving."
+msgstr "Cela dépendait parfois si le résultat de la
première instruction avait une utilité quelconque ou pas mais il
pouvait être nécessaire de faire une instruction combinée
avec deux opérateurs d'assignement. Un pour la valeur [pointer sur ???]
et un autre pour cette valeur [pointer sur ???] à l'intérieur de
laquelle était substitué ce qui provenait de la deuxième
instruction. Si cette valeur n'était utilisée qu'une fois, vous
pouviez l'éliminer après l'avoir substituée ; il
n'était plus nécessaire de calculer. Donc c'est réellement
assez difficile de faire ces substitutions correctement, en vérifiant
bien que les instructions qui interviennent ne vont changer aucune de ces
valeurs ni rien d'autre du même genre. Quand vous devez permettre des
choses comme l'utilisation de l'auto-incrémentation et l'adressage de
l'auto-décrémentation, ce que je fais maintenant, vous avez
diverses vérifications à faire à leur sujet dans les
situations où votre objectif n'est pas de conserver de valeur."
+
+# type: Content of: <p>
+msgid "But after checking all those things, then you take the substituted
combined expression and put it through a pattern matcher, which recognizes all
the valid instructions of your chosen target machine. And if it's recognized,
then you replace those two instructions with the combined one, otherwise you
leave them alone. And their technique is to combine two or three instructions
related by data flow in this way."
+msgstr "Mais après avoir vérifié tout ça, vous
prenez l'expression combinée substituée et vous la placez
à travers un correspondeur de combinaison, qui reconnaît toutes
les instructions valides de la machine cible que vous avez choisie. Quand c'est
identifié, vous remplacez les deux instructions par leur instruction
combinée, sinon vous les laissez seules. Leur technique est de combiner
deux ou trois instructions liées en flux de données dans ce but."
+
+# type: Content of: <p>
+msgid "In the Arizona compiler, they actually represent things as text strings
like this, and their compiler is horribly slow. First I had some idea of just
using their compiler and making changes in it, but it was clear to me I had to
rewrite it entirely to get the speed I wanted, so I have rewritten it to use
list structure representations for all these expressions. Things like this:"
+msgstr "Dans le compilateur d'Arizona, ils représentent vraiment les
choses avec des chaînes de texte comme celles-là, et leur
compilateur est terriblement lent. Au début j'avais l'idée
d'utiliser leur compilateur et d'y apporter des modifications, mais j'ai
compris que je devais le réécrire entièrement pour obtenir
la rapidité que je voulais, aussi je l'ai fait pour pouvoir utiliser des
représentations de structure de liste pour toutes ces expressions. Des
choses comme ceci :"
+
+# type: Content of: <pre>
+#, no-wrap
+msgid ""
+"\n"
+" (set (reg 2)\n"
+" (+ (reg 2)\n"
+" (int 4)))\n"
+msgstr ""
+"\n"
+" (set (reg 2)\n"
+" (+ (reg 2)\n"
+" (int 4)))\n"
+
+# type: Content of: <p>
+msgid "This looks like Lisp, but the semantics of these are not quite LISP,
because each symbol here is one recognized specially. There's a particular
fixed set of these symbols that is defined, all the ones you need. And each
one has a particular pattern of types of arguments, for example:
“reg” always has an integer, because registers are numbered, but
“+” takes two subexpressions, and so on. And with each of these
expressions is also a data type which says essentially whether it's fixed or
floating and how many bytes long it is. It could be extended to handle other
things too if you needed to."
+msgstr "Ça ressemble un peu au LISP mais la sémantique n'est pas
tout à fait la même, parce que chaque symbole est ici
identifié individuellement. Un ensemble fixe, particulier de ces
symboles est défini. De tous ceux dont vous avez besoin. Chacun ayant
une combinaison particulière de types d'arguments, par exemple :
« reg » a toujours un nombre entier parce que les
registres sont numérotés, mais « + » prend
deux sous-expressions, et ainsi de suite. Et à chacune de ces
expressions va également un type de données qui pour l'essentiel
indique s'il est fixe ou flottant et sa longueur en octets. Ça peut
être élargi pour manipuler d'autres choses si vous en avez besoin."
+
+# type: Content of: <p>
+msgid "And the way I do automatic register allocation is that when I initially
generate this code, and when I do the combination and all those things, for
every variable that conceivably go into a register, I allocate what I call a
pseudo register number, which is a number starting at sixteen or whatever is to
high to be a real register for your target machine. So the real registers are
numbered zero to fifteen or whatever and above that comes pseudo registers.
And then one of the last parts of the compiler consists of going through and
changing all the pseudo registers to real registers. Again it makes a conflict
graph, it sees which pseudo registers are alive at the same point and they of
course can't go in the same real register, and then it tries packing pseudo
registers into real registers as much as it can, ordering them by priority of
how important they are."
+msgstr "Et la façon dont j'attribue automatiquement le registre, c'est
qu'au moment où je génère initialement le code, quand je
fais la combinaison puis le reste à toute variable qui entre
théoriquement dans un registre, j'assigne ce que j'appelle un
pseudo-nombre de registre. Un nombre qui commence à seize, ou tout ce
qui pourrait être trop élevé pour un vrai registre de votre
machine cible. Les vrais registres étant numérotés de
zéro à quinze ou toute séquence au-dessus de laquelle
viennent les pseudo-registres. Et là, une des dernières parties
du compilateur consiste à intervenir et à changer tous les
pseudo-registres en vrais registres. À nouveau, il fait un schéma
des conflits, il voit quels pseudo-registres sont vivants au même point.
Et comme ils ne peuvent naturellement pas entrer dans le même vrai
registre, il essaye de regrouper les pseudo-registres dans de vrais registres
autant qu'il peut, en les rangeant par ordre d'importance."
+
+# type: Content of: <p>
+msgid "And finally it then has to correct the code for various problems, such
as happen when there were pseudo registers that don't fit in the real
registers, that had to be put into stack slots instead. When that happens on
certain machines, some of the instructions may become invalid. For example on
the 68000 you can add a register into memory and you can add memory into
register, but you can't add one memory location into another. So if you have
an ADD instruction, and you're headed for a 68000 and both of the things end up
in memory, it's not valid. So this final pass goes through and copies things
into registers and out of registers as needed to correct those problems."
+msgstr "Et à la fin, il doit corriger le code pour les
différents problèmes; comme celui des pseudo-registres qui ne
s'adaptaient pas aux vrais registres et qui devaient être mis à la
place dans des slots de pile. Quand ça arrive sur certaines machines,
des instructions peuvent devenir invalides. Par exemple sur la 68000, on peut
ajouter un registre dans la mémoire et ajouter de la mémoire dans
un registre mais pas ajouter une adresse mémoire dans une autre. Aussi,
si lors d'une instruction ADD vous allez vers des 68000 et que les deux
éléments arrivent ensemble dans la mémoire, ce n'est pas
valide. Donc ce passage final intervient et des éléments sont
copiés dans et en dehors des registres, comme c'est nécessaire
pour corriger ce genre de problème."
+
+# type: Content of: <p>
+msgid "Problems can also arise with index registers. If you're trying to
index by something, then most of the time that code will become invalid if the
index quantity is in memory, except in a few cases on some machines where you
can it with indirect addressing. In the cases when you're doing auto-increment
on an index register you may have to copy the value into a register, do the
instruction, and then copy the incremented value back to the memory slot where
it really lives."
+msgstr "Les problèmes peuvent également surgir avec les
registres d'index. Si vous essayez d'indexer par quelque chose, la plupart du
temps le code deviendra invalide si la quantité d'index est dans la
mémoire. Excepté dans quelques cas sur quelques machines
où vous pouvez le faire avec un adressage indirect. Lorsque vous
procédez à une auto-incrémentation sur un registre
d'index, vous pouvez avoir à copier la valeur dans un registre,
opérer l'instruction et de là copier la valeur
incrémentée en amont du slot de mémoire où elle vit
vraiment."
+
+# type: Content of: <p>
+msgid "There's got room for a lot of hair, and I've not finished implementing
all the hair needed to make really fully efficient."
+msgstr "Il y a de la place pour beaucoup d'optimisation et je n'ai pas fini de
mettre en œuvre tout ce qui est nécessaire pour le rendre vraiment
pleinement efficace."
+
+# type: Content of: <p>
+msgid "This compiler currently works by having a parser which turns C code
into effectively a syntax tree annotated with C datatype information. Then
another pass which looks at that tree and generates code like this [LISP like
code]. Then several optimization passes. One to handle things like jumps
across jumps, jumps to jumps, jumps to .+1, all of which can be immediately
simplified. Then a common subexpression recognizer, then finding basic blocks,
and performing dataflow-analysis, so that it can tell for each instruction
which values are used in that instruction and never used afterward. And also
linking each instruction to the places where the values it uses were generated,
so if I have one instruction which generates pseudo register R[28], and then
another instruction later which uses R[28] and it's the first place to use
R[28], I make the second one point back to the first one, and this pointer is
used to control the attempts to combine the instructions. You don't combine
adjacent instructions, you combine an instruction that uses a value with the
instruction that produced that value. Even if there are other instructions in
between, they don't matter for this, you just have to check them to make sure
they don't do anything to interfere. Then after the combiner comes the dynamic
register allocator, and finally something to convert it into assembly code."
+msgstr "Ce compilateur fonctionne actuellement avec un analyseur syntaxique
qui transforme en réalité le code C en arbre syntaxique,
annoté d'informations en types de données C. Alors un autre
passage examine cet arbre et produit du code comme celui-là [comme du
LISP]. Ensuite viennent plusieurs passages d'optimisation : un pour
traiter par exemple des sauts à travers des sauts, des sauts de sauts,
des sauts de +1 et tout ce qui peut être immédiatement
simplifié. Puis un système de reconnaissance des sous-expressions
courantes trouve alors les blocs de base et effectue l'analyse du flux des
données afin de pouvoir indiquer pour chaque instruction quelles valeurs
sont utilisées dans l'instruction et nulle part ailleurs. Et qui lie
aussi chaque instruction aux endroits où les valeurs utilisées
ont été créées. Donc si j'ai une instruction qui
crée un pseudo-registre R[28] et une autre instruction plus tard qui
utilise R[28], sachant que c'est le premier lieu pour utiliser R[28], je fais
pointer la seconde en arrière sur la première et ce pointeur est
celui qui servira pour contrôler les essais de combinaison des
instructions. Vous ne combinez pas des instructions adjacentes, vous combinez
une instruction qui utilise une valeur avec l'instruction qui a produit cette
valeur. Même s'il y a d'autres instructions au milieu, elles ne sont pas
concernées; vous avez juste à vous assurer qu'elles
n'interviennent pas. Et après le combinateur, vient l'attributeur
dynamique de registre et enfin quelque chose pour le convertir en code
assembleur."
+
+# type: Content of: <p>
+msgid "In the Arizona compiler the instruction recognizer was generated with
LEX. Your machine description was simply a LEX program that LEX would turn
into a C function to recognize valid instructions as strings. What I have is
instead a special purpose decision tree that's generated from a machine
description written in this syntax as if it were LISP. And this recognizer is
used as a subroutine for many different parts of the compiler."
+msgstr "Dans le compilateur d'Arizona, le système de reconnaissance
d'instruction a été créé avec LEX. La description
de votre machine était simplement un programme LEX, que LEX transformait
en fonction de C pour identifier les instructions valides comme les
chaînes. À la place, j'ai un arbre de décision à
usage spécial, créé à partir d'une description de
machine écrite dans cette syntaxe comme si c'était du LISP. Et ce
système de reconnaissance est utilisé comme sous-programme dans
plusieurs parties différentes du compilateur."
+
+# type: Content of: <p>
+msgid "Currently this compiler runs about as fast as PCC. It runs noticeably
faster if you tell it not to do the hairy register allocation, in which case it
allocates registers the same way as PCC does. In its super hairy mode it does
a much better job of allocating registers than PCC, and I observe that for the
VAX it generates the best code I've seen from any C compiler on the VAX."
+msgstr "Actuellement ce compilateur fonctionne à peu près aussi
rapidement que le PCC. Il fonctionne sensiblement plus rapidement si vous lui
dites de ne pas faire une attribution de registre limite. Dans ce cas elle
assigne des registres de la même manière que le PCC. Dans son mode
super-limite, il fait un travail d'allocation de registres bien meilleur que le
PCC et j'observe que pour VAX, il produit le meilleur code que j'ai vu de tous
les compilateurs C sur VAX."
+
+# type: Content of: <p>
+msgid "For the 68000 the code is still not ideal. I can see places where
early stages do things that are not the best, because it can't fully look
ahead. It has a choice in an early stage, and it does the thing that it thinks
is going to be best, but really if it did the other one, a later stage is
actually smart enough to do something even better. But the early stage doesn't
know what the later stage is going to do, so I have more work to do on some of
these things."
+msgstr "Pour les 68000 le code n'est pas toujours idéal. Je peux voir
par endroits, aux étapes antérieures, se passer des choses qui ne
sont pas forcément les meilleures parce qu'il ne peut pas anticiper
vraiment. Il a un choix à faire à une étape
antérieure et il fait ce qu'il pense être le mieux. Or s'il avait
fait l'autre choix, une étape ultérieure aurait été
assez intelligente pour faire encore mieux. Mais l'étape
antérieure ne sait pas ce que l'étape ultérieure va faire,
donc je dois travailler davantage sur ce genre de choses."
+
+# type: Content of: <p>
+msgid "Sometimes this causes it to free up registers unnecessarily. Because
when things wind up in memory and it needs to copy them into registers, it
needs to get registers to copy them into. This means taking registers that it
has already allocated to, and kicking those temporary quantities out to stack
slots. Of course this may invalidate more instructions now that those things
are in memory, not registers, so it has to check again and again. Sometimes it
thinks it has to copy things to registers and really it isn't going to have to,
so it may free up too many things and thus not use all the registers that it
could."
+msgstr "Parfois ça provoque le fait de libérer des registres
inutilement. Étant donné que quand les choses finissent dans la
mémoire, il a besoin de les copier dans des registres. Et il lui faut
des registres pour ça. C'est-à-dire prendre des registres
déjà assignés et virer les quantités provisoires
des slots de pile. Évidemment, maintenant que ces choses sont dans la
mémoire, ça peut invalider davantage d'instructions. Pas les
registres. Donc il lui faut tout le temps vérifier. Parfois il pense
à tort qu'il devrait copier les choses dans les registres, alors il peut
en libérer trop et ne pas utiliser tous les registres qu'il pourrait."
+
+# type: Content of: <p>
+msgid "(Question: Do you have a code generator for 32000?) Not yet, but again,
it's not a code generator it's just a machine description that you need. A
list of all the machine instructions described in this [LISP like] form. So in
fact aside from the work of implementing the idea of constraints on which
arguments can be in registers and which kind of registers, which is something
which was needed for the 68000 and was not needed for the VAX, the work of
porting this compiler from the VAX to the 68000 just took a few days. So it's
very easy to port."
+msgstr "(Question : Avez-vous un générateur de code pour
les 32000 ?) Pas encore, mais à nouveau ce n'est pas un
générateur de code dont vous avez besoin, juste d'une description
de machine. Une liste de toutes les instructions de la machine décrites
sous cette forme [comme du LISP]. En fait, hormis le travail de mettre en
œuvre l'idée de contraintes sur les arguments
— lesquels pourront être dans des registres et dans quel genre
de registres — nécessaires pour les 68000 mais pas pour le
VAX, le travail de portage de ce compilateur de VAX aux 68000 a juste pris
quelques jours. Donc il est très facile à transférer."
+
+# type: Content of: <p>
+msgid "The compiler currently generates assembler code and it can generate
debugging information either in the format that DBX wants, or in the special
internal format of GDB. I'd say the only work needed on this compiler is in
three areas. One: I have to add a “profiling” feature, like the
one that the Unix compilers have. Two: I have to make these register
allocation things smarter, so that I can stop seeing stupid things appearing in
the output. And three: There are various bugs, things that doesn't handle
correctly yet, although it has compiled itself correctly. I expect this will
just take a few months, and then I will release the compiler."
+msgstr "Le compilateur produit actuellement du code assembleur. Et il peut
produire de l'information de débogage soit dans le format que DBX veut,
soit dans le format interne spécial à GDB. Je dirais que le seul
travail à faire sur ce compilateur se situe à trois niveaux.
Un : Je dois ajouter un dispositif de « profilage »
comme celui des compilateurs d'Unix. Deux : Je dois rendre les allocations
de registre plus intelligentes pour ne plus voir de choses stupides
apparaître en sortie. Trois : Il y a divers bogues. Des choses qu'il
ne traite pas encore correctement bien qu'il se soit compilé
correctement. Je pense que ça ne prendra que quelques mois, ensuite je
le diffuserai."
+
+# type: Content of: <p>
+msgid "The other sizable part of the system that exist, is the kernel.
(Question: A pause?) Ah, yeah I guess we've forgotten about breaks. Why don't
I finish talking about the kernel, which should only take about five minutes,
and then we can take a break."
+msgstr "L'autre partie assez importante du système, c'est le
noyau.(Question : Une pause ?) Ah, ouais je devine que nous avons
oublié les coupures. Pourquoi je ne finirai pas de parler du
noyau ? Ce qui devrait prendre environ cinq minutes seulement, et ensuite
nous pourrons faire une coupure."
+
+# type: Content of: <p>
+msgid "Now, for the kernel I am planning to use a system called TRIX (it
doesn't stand for anything that I know of) which was developed as a research
project at MIT. This system is based on Remote Procedure Call. Thus programs
are called domains. Each domain is a address space and various capabilities,
and a capability is none other than the ability to call a domain. Any domain
can create “capability ports” to call it, and then it can pass
these ports to other domains, and there is no difference between calling the
system and calling another user domain. In fact you can't tell which you have.
Thus it is very easy to have devices implemented by other user programs. A
file system could be implemented by a user program, transparently. It's also
transparent to communicate across networks. You think that you're directly
calling another domain, but really you're calling the network server domain. It
takes the information that you gave in the call, and passes this over the
network to another server program which then calls the domain that you're
trying to talk to. But you and that other domain see this as happening
invisibly."
+msgstr "Maintenant pour le noyau, je projette d'utiliser un système
appelé TRIX (il ne ressemble à rien de ce que je connais) qui a
été développé comme projet de recherche au M.I.T.
Ce système est basé sur le Remote Procedure Call
— Appel de Procédure à Distance. Les programmes sont
appelés domaines. Chaque domaine est un espace d'adressage et a diverses
capacités; une capacité n'étant rien d'autre que
l'aptitude à appeler un domaine. Tout domaine peut créer des
« ports de capacités » pour l'appeler et peut
passer ces ports aux autres domaines. Et il n'y a aucune différence
entre appeler le système et appeler un autre domaine d'utilisateur. En
fait vous ne pouvez pas dire lequel vous avez. Ainsi il est très facile
d'avoir des dispositifs mis en œuvre par d'autres programmes utilisateur.
Un système de fichiers pourrait l'être de façon
transparente. Il est également transparent de communiquer à
travers des réseaux. Vous pensez que vous appelez directement un autre
domaine mais en réalité vous appelez le domaine du serveur de
réseau. Il prend l'information que vous avez donnée dans l'appel
et la passe au-dessus du réseau à un autre programme du serveur
qui appelle alors le domaine auquel vous essayez de parler. Mais pour vous et
cet autre domaine, cela se passe de manière invisible."
+
+# type: Content of: <p>
+msgid "The TRIX kernel runs, and it has a certain limited amount of Unix
compatibility, but it needs a lot more. Currently it has a file system that
uses the same structure on disk as the ancient Unix file system does. This
made it easier to debug the thing, because they could set up the files with
Unix, and then they could run TRIX, but that file system doesn't have any of
the features that I believe are necessary."
+msgstr "Le noyau TRIX fonctionne et il a une certaine quantité
limitée de compatibilités Unix, mais il lui en faut beaucoup
plus. Actuellement son système de fichiers utilise la même
structure sur disque que l'antique système de fichiers d'Unix. Ça
rendait plus facile le débogage parce qu'ils pouvaient installer les
fichiers avec Unix et donc faire fonctionner TRIX, mais ce système de
fichiers n'a aucune des fonctionalités nécessaires d'après
moi."
+
+# type: Content of: <p>
+msgid "Features that I believe must be added include: Version numbers,
undeletion, information on when and how and where the file was backed up on
tape, atomic superseding of files. I believe that it is good that in Unix when
a file is being written, you can already look at what's going there, so for
example, you can use “tail” to see how far the thing got, that's
very nice. And if the program dies, having partly written the file, you can
see what it produced. These things are all good, but, that partly written
output should not ever be taken for the complete output that you expected to
have eventually. The previous version of that should continue to be visible
and used by everyone who tries to use it, until the new version is completely
and correctly made. This means that the new version should be visible in the
file system but not under the name it is supposed to have. It should get
renamed when it's finished. Which is by the way what happens in ITS, although
there each user program has to do this explicitly. For Unix compatibility with
the user programs, it has to happen invisibly."
+msgstr "Les fonctionalités qui devraient être rajoutées
d'après moi incluent : les numéros de version, la
restauration, les informations sur quand, comment et où le dossier a
été sauvegardé sur bande, le remplacement nucléaire
des fichiers. Je crois qu'il est bon dans Unix, lorsqu'un fichier est
écrit, que vous puissiez déjà regarder ce qu'il se passe.
Ainsi par exemple, vous pouvez utiliser « tail » pour
voir où ça en est, c'est vraiment bien. Et si le programme
échoue après avoir écrit le fichier partiellement, vous
pouvez voir ce qu'il a fait. Toutes ces choses sont bonnes, mais le
résultat partiellement écrit ne devrait jamais être
considéré comme le résultat final escompté. La
version précédente devrait continuer d'être visible et
utilisée par tous ceux qui tentent de l'utiliser jusqu'à ce
qu'une nouvelle version soit entièrement et correctement
réalisée. Cela signifie que la nouvelle version devra être
visible dans le système de fichiers mais pas sous le nom qu'elle est
censée avoir. Elle devrait être renommée quand c'est fini.
C'est d'ailleurs ce qui se passe dans ITS, bien que chaque programme
utilisateur doive le faire de façon explicite. Pour la
compatibilité d'Unix avec les programmes utilisateurs, ça doit se
passer de façon invisible."
+
+# type: Content of: <p>
+msgid "I have a weird hairy scheme to try to make version numbers fit with the
existing Unix user programs. And this is the idea that you specify a file name
leaving the version number implicit, if you just specify the name in the
ordinary way. But if you wish to specify a name exactly, either because you
want to state explicitly what version to use, or because you don't want
versions at all, you put a point at the end of it. Thus if you give the
filename “FOO” it means “Search the versions that exists for
FOO and take the latest one”. But if you say “FOO.” it means
“use exactly the name FOO and none other”. If you say
“FOO.3.” it says “use exactly the name FOO.3 ” which of
course is version three of FOO and none other. On output, if you just say
“FOO”, it will eventually create a new version of
“FOO”, but if you say “FOO.” it will write a file named
exactly “FOO”."
+msgstr "C'est un arrangement bizarrement effrayant d'essayer de faire
coïncider les numéros de versions avec les programmes utilisateur
présents sous Unix. Il s'agit de l'idée de spécifier le
nom de fichier, en laissant implicite le numéro de version si vous le
spécifiez normalement. Et si vous souhaitez le faire de façon
explicite — soit parce que vous voulez déclarer explicitement
quelle version utiliser, soit parce que vous ne voulez pas de version du
tout — vous mettez un point à son extrémité.
Ainsi si vous donnez le nom de fichier « FOO » cela
signifie « cherchez les versions qui existent pour <FOO> et
prenez la dernière ». Mais si vous dites
« FOO. » cela signifie « utilisez exactement
le nom <FOO> et aucun autre ». Si vous dites
« FOO.3. » cela veut dire « utilisez
exactement le nom FOO.3 » qui naturellement est la version trois de
« FOO » et aucune autre. En sortie, si vous dites juste
« FOO », ça va créer par la suite une
nouvelle version de « FOO », mais si vous dites
« FOO. », ça va écrire un fichier
nommé exactement « FOO »."
+
+# type: Content of: <p>
+msgid "Now there's some challenges involved in working out all the details in
this, and seeing whether there are any lingering problems, whether some Unix
software actually breaks despite feeding them names with points in them and so
on, to try to make it get the same behavior."
+msgstr "Maintenant c'est un défi compliqué de mettre au point
tous ces détails et de voir s'il y a des problèmes persistants,
si vraiment certains logiciels Unix échouent malgré le fait
d'avoir fourni des noms avec des points et ainsi de suite, pour tenter de lui
faire avoir le même comportement."
+
+# type: Content of: <p>
+msgid "I would expect that when you open a file for output whose name ends in
a point, you should actually open that name right away, so you get the so you
get the same Unix behavior, the partially written output is immediately
visible, whereas when you output a name that doesn't end in a point, the new
version should appear when you close it, and only if you close it explicitly.
If it gets closed because the job dies, or because the system crashes or
anything like that, it should be under a different name."
+msgstr "Je m'attends à ce que lorsque vous sortez un fichier dont le
nom finit par un point, vous l'ouvrez en fait avec ce nom tout de suite et vous
obtenez le même comportement qu'Unix : le résultat
partiellement écrit est immédiatement visible. Tandis que quand
vous le sortez avec un nom qui ne finit pas par un point, la nouvelle version
ne devrait apparaître que quand vous le fermez et seulement si vous le
fermez explicitement. S'il a été fermé parce que le
travail a échoué ou à cause du plantage du système
ou de n'importe quoi du genre, il devrait être sous un nom
différent."
+
+# type: Content of: <p>
+msgid "And this idea can be connected up to “star matching”, by
saying that a name that doesn't end in a point is matched against all the names
without their version numbers, so if a certain directory has files like this:"
+msgstr "Et cette idée peut être associée au
« star matching » — correspondance par
étoile (*) — où un nom qui ne finit pas par un point
équivaut à tous les noms sans numéro de version. Ainsi, si
un certain répertoire a des fichiers comme ceci :"
+
+# type: Content of: <pre>
+#, no-wrap
+msgid ""
+"\n"
+" foo.1 foo.2 bar.8\n"
+msgstr ""
+"\n"
+" foo.1 foo.2 bar.8\n"
+
+# type: Content of: <p>
+msgid "If I say “*”, that's equivalent to"
+msgstr "Si je dis « * », ça équivaut
à"
+
+# type: Content of: <pre>
+#, no-wrap
+msgid ""
+"\n"
+" foo bar\n"
+msgstr ""
+"\n"
+" foo bar\n"
+
+# type: Content of: <p>
+msgid "because it takes all the names and gets rid of their versions, and
takes all the distinct ones. But if I say “*.” then it takes all
the exact names, puts a point after each one, and matches against them. So
this gives me all the names for all the individual versions that exist. And
similar, you can see the difference between “*.c” and
“*.c.” this [the first] would give you essentially versionless
references to all the “.c” files, whereas this [the second] will
give you all the versions … well this actually wouldn't, you'd have to
say “*.c.*.”. I haven't worked out the details here."
+msgstr "parce que ça prend tous les noms, les débarasse de leurs
versions et conserve tous ceux qui sont distincts. Mais si je dis
« *. », alors ça prend tous les noms exacts, met
un point après chaque nom et cherche les équivalences. Ça
me donne tous les noms avec toutes les différentes versions qui
existent. Et pareil, vous pouvez voir la différence entre le
« *.c » et le « *.c. ». Ceci [le
premier] vous donnera essentiellement les références sans version
de tous les fichiers « .c », tandis que cela [le second]
vous donnera toutes les versions… bon, pas vraiment, vous devriez dire
« *.c.*. » mais je n'ai pas rendu compte des
détails ici."
+
+# type: Content of: <p>
+msgid "Another thing, that isn't a user visible feature and is certainly
compatible to put in, is failsafeness in the file system. Namely, by writing
all the information on disk in the proper order, arranging that you can press
“halt” at any time without ever corrupting thereby the file system
on disk. It is so well known how to do this, I can't imagine why anyone would
neglect it. Another idea is further redundant information. I'm not sure
whether I'll do this or not, but I have ideas for how to store in each file all
of its names, and thus make it possible if any directory on disk is lost, to
reconstruct it from the rest of the contents of the disk."
+msgstr "Autre chose qui n'est pas une fonction visible par l'utilisateur et
certainement compatible à installer, c'est la protection du
système de fichiers. À savoir, écrire toutes les
informations sur le disque dans l'ordre approprié, en s'arrangeant pour
pouvoir presser le bouton « Arrêt » à tout
moment sans endommager le système de fichiers du disque. C'est tellement
connu que je ne peux pas imaginer qu'on puisse le négliger. Une autre
idée, c'est l'information redondante. Je ne sais pas si je le ferai,
mais j'ai des idées sur la façon de stocker dans chaque fichier
tous ses noms et par là rendre possible si l'un des répertoires
du disque est perdu de le reconstruire à partir du reste du contenu du
disque."
+
+# type: Content of: <p>
+msgid "Also I think I know how to make it possible to atomically update any
portion of a file. Thus if you want to replace a certain subrange of a file
with new data in such a fashion that any attempt to read the file will either
see only the old data, or only the new data. I believe I can do that, without
any locking even."
+msgstr "En outre, je pense savoir comment rendre possible la mise à
jour nucléaire de n'importe quelle partie de fichier. Ceci si vous
voulez remplacer un sous-bloc particulier d'un fichier par de nouvelles
données de manière à ce qu'à toute tentative de
lecture du fichier cela ne permette de voir que celles-ci ou seulement les
anciennes."
+
+# type: Content of: <p>
+msgid "For network support, I intend eventually to implement TCP/IP for this
system. I also think it's possible to use KERMIT to get something effectively
equivalent to UUCP."
+msgstr "Pour le support de réseau, j'ai l'intention par la suite de
mettre en œuvre TCP/IP pour ce système. Je pense également
qu'il est possible d'utiliser KERMIT pour obtenir quelque chose
d'équivalent au UUCP de manière efficace."
+
+# type: Content of: <p>
+msgid "A shell I believe has already been written. It has two modes, one
imitating the BOURNE shell, and one imitating the C-shell in the same program.
I have not received a copy of it yet, and I don't know how much work I'll have
to do on it. Also many other utilities exists. A MAKE exists, LS, there's a
YACC replacement called BISON which is being distributed. Something pretty
close to a LEX exits, but it's not totally compatible, it needs some work.
And, in general what remains to be done is much less that what's been done, but
we still need lots of people to help out."
+msgstr "Un shell qui a déja été écrit je crois. Il
a deux modes. L'un imitant le shell BOURNE et l'autre imitant le shell C dans
le même programme. Je n'en ai pas reçu de copie et je ne connais
pas la somme de travail que je vais devoir accomplir dessus. En outre, beaucoup
d'autres utilitaires existent. Un MAKE existe, LS ; il y a BISON qui
remplace YACC qui est distribué. Quelque chose d'assez proche de LEX
sort mais qui n'est pas totalement compatible et a besoin d'être
retravaillé. Et en général, ce qui reste à faire
est beaucoup moins important que ce qui a été fait mais on a
toujours besoin de beaucoup de gens pour aider."
+
+# type: Content of: <p>
+msgid "People always ask me “When is it going to be finished?” Of
course I can't know when it's going to be finished, but that's the wrong
question to ask me. If you were planning to pay for it, it would make sense
for you to want to know exactly what are you going to get and when. But since
you're not going to pay for it, the right question for you to ask is “how
can you help make it get finished sooner?” I have a list of projects, it
is on a file at MIT, and people who are interested in helping could send me
mail at this Internet address, and I will send back a list of projects. (I
wonder if this is will work (looking at the chalk)). Is this readable? This is
“address@hidden” (just follow the bouncing ball.) And now let's
take a break, and after the break, I will say some really controversial things.
So don't leave now. If you leave now, you're going to miss the real
experience."
+msgstr "Les gens me demandent toujours « Quand est-ce que ça
sera fini ? ». Naturellement je ne peux pas savoir, mais c'est
une mauvaise question. Si vous avez payé pour ça, je comprendrais
que vous vouliez savoir exactement ce que vous allez obtenir et quand. Mais
puisque vous n'allez pas payer, la bonne question à vous poser est
« Comment pouvez-vous aider pour que cela finisse plus
tôt ? ». J'ai une liste de projets, elle est dans un
dossier au M.I.T.. Les gens qui sont intéressés pour aider
peuvent m'envoyer un courrier à cette adresse internet et je leur
enverrai en retour une liste de projets (Je me demande si ça va marcher
[en regardant la craie]). Est-ce que c'est lisible ? C'est
« address@hidden » (suivez juste la « bouncing
ball » (la balle magique)). Et maintenant prenons une pause, et
après la pause, je vais dire des choses vraiment controversées.
Alors ne partez pas maintenant. Si vous partez maintenant vous allez rater la
véritable expérience."
+
+# type: Content of: <p>
+msgid "<strong> [Here we had a 15 min. break] </strong>"
+msgstr "<strong>[Ici, nous avons eu 15 minutes de pause]</strong>"
+
+# type: Content of: <p>
+msgid "I've been asked to announce how you can get copies of GNU software.
Well, one way of course is if you know a friend who has a copy, you can copy
it, but if you don't know a friend who has a copy, and you're not on the
Internet, you can't FTP it, then you can always order a distribution tape, and
send some money to the Free Software Foundation. Of course free programs is
not the same thing as free distribution. I'll explain this in detail later."
+msgstr "On m'a demandé de faire connaître le moyen d'obtenir des
copies du logiciel GNU. Bien, un moyen naturellement est de connaître un
ami qui en a une copie. Mais si ce n'est pas le cas et que vous n'êtes
pas sur l'Internet pour le télécharger, alors vous pouvez
toujours commander une distribution et envoyer une certaine somme d'argent
à la Free Software Foundation (Fondation pour le Logiciel Libre).
Naturellement les logiciels libres ce n'est pas la même chose que la
distribution libre. Je l'expliquerai en détail plus tard."
+
+# type: Content of: <p>
+msgid "Here I have an EMACS manual, of the nicely printed variety. It has
been phototypeset and then offset printed. Although you can also print it
yourself from the sources that come in the EMACS distribution, you can get
these copies from the Free Software Foundation. You can come afterwards and
look at this and also this contains an order for you might copy some
information from, and this [front] picture has also sometimes been enjoyed.
This [pointing at a figure being chased by RMS riding a gnu] is a scared
software hoarder, I'll be talking about him in a moment."
+msgstr "J'ai un manuel d'EMACS, de la série bien imprimée.
Ça a été phototypé puis imprimé en offset.
Bien que vous puissiez également l'imprimer vous-même à
partir des sources de la distribution d'EMACS, vous pouvez obtenir ces copies
de la Free Software Foundation. Vous pouvez venir après et regarder.
Ça contient également une commande pour que vous puissiez copier
l'information, de même que cette page [de garde] qui a été
aussi appréciée : [montrant du doigt un personnage
chassé par RMS à cheval sur un gnu] c'est un accapareur de
logiciel effrayé, je parlerai de lui dans un moment."
+
+# type: Content of: <p>
+msgid "Software is a relatively new phenomenon. People started distributing
software perhaps thirty years ago. It was only about twenty years ago that
someone had the idea of making a business about it. It was an area with no
tradition about how people did things, or what rights anybody had. And there
were several ideas for what other areas of life you might bring traditions from
by analogy."
+msgstr "Le logiciel est un phénomène relativement nouveau. Les
gens ont commencé à distribuer du logiciel il y a peut-être
trente ans. Il y a seulement environ vingt ans que quelqu'un a eu l'idée
de faire du business avec ça. C'était un secteur sans
à-priori sur la façon de faire ou sur les droits que l'on pouvait
avoir. Et il y avait quelques idées sur ce que les autres domaines de la
vie pouvaient apporter comme tradition par analogie."
+
+# type: Content of: <p>
+msgid "One analogy that is liked by a lot of professors in Europe, is that
between programs and mathematics. A program is sort of a large formula. Now,
traditionally nobody can own a mathematical formula. Anybody can copy them and
use them."
+msgstr "Une analogie appréciée par un bon nombre de professeurs
en Europe est celle faite entre les programmes et les mathématiques. Un
programme est une sorte de grande formule. Par tradition, personne ne peut
posséder une formule mathématique. N'importe qui peut la copier
et s'en servir."
+
+# type: Content of: <p>
+msgid "The analogy that's most meaningful to ordinary people is with recipes.
If you think about it, the thing that you have in ordinary life that's most
like program is a recipe, it's instructions for doing something. The
differences come because a recipe is followed by a person, not by a machine
automatically. It's true there's no difference between source code and object
code for a recipe, but it's still the closest thing. And no-one is allowed to
own a recipe."
+msgstr "L'analogie qui a le plus de sens pour les gens ordinaires, c'est celle
avec les recettes. Si vous réfléchissez, ce qui ressemble le plus
à un programme dans la vie ordinaire c'est une recette. Des instructions
pour faire quelque chose. La différence, c'est qu'une recette est suivie
par une personne, pas par une machine de façon automatisée. Il
est vrai qu'il n'y a pas de différence entre le code source et le code
objet pour la recette, mais c'est toujours ce qu'il y a de plus proche. Et
personne n'est autorisé à posséder une recette."
+
+# type: Content of: <p>
+msgid "But the analogy that was chosen was the analogy with books, which have
copyright. And why was this choice made? Because the people that had the most
to gain from making that particular choice were allowed to make the decision.
The people who wrote the programs, not the people who used the programs, were
allowed to decide, and they decided in a completely selfish fashion, and as a
result they've turned the field of programming into an ugly one."
+msgstr "Mais l'analogie qui a été choisie fut celle avec les
livres, sur lesquels s'appliquent le droit d'auteur. Pourquoi ce choix a-t-il
été fait ? Parce que les gens qui avaient le plus à
gagner à faire ce choix particulier ont été
autorisés à prendre la décision. Les gens qui
écrivaient les programmes, pas ceux qui les utilisaient, n'ont pas eu le
droit de décider. Cela a été fait d'une façon
totalement égoïste, en transformant le domaine de la programmation
en quelque chose de sinistre."
+
+# type: Content of: <p>
+msgid "When I entered the field, when I started working at MIT in 1971, the
idea that programs we developed might not be shared was not even discussed.
And the same was Stanford and CMU, and everyone, and even DIGITAL. The
operating system from DIGITAL at that time was free. And every so often I got
pieces of program from DIGITAL system such as a PDP-11 cross assembler, and I
ported it to run on ITS, and added lots of features. It was no copyright on
that program."
+msgstr "Quand je suis entré dans le domaine, quand j'ai commencé
à travailler au M.I.T. en 1971, l'idée que les programmes que
nous développions pourraient ne pas être partagés n'a
même pas été discutée. Comme à Stanford et
C.M.U., comme n'importe qui et DIGITAL également. Le logiciel
d'exploitation de DIGITAL à ce moment-là était libre. J'ai
de temps en temps obtenu des morceaux de programme du système de DIGITAL
comme l'assembleur multi-compatible PDP-11. Je l'ai transféré
pour qu'il fonctionne sur ITS et j'y ai ajouté de nombreux utilitaires.
Il n'y avait aucun droit d'auteur sur ce programme."
+
+# type: Content of: <p>
+msgid "It was only in the late seventies that this began to change. I was
extremely impressed by the sharing spirit that we had. We were doing something
that we hoped was useful and were happy if people could use it. So when I
developed the first EMACS, and people wanted to start use it outside of MIT, I
said that it belongs to the EMACS “Commune”, that in order to use
EMACS you had to be a member of the commune, and that meant that you had the
responsibility to contribute all the improvements that you made. All the
improvements to the original EMACS had to be sent back to me so that I could
incorporate them into newer versions of EMACS, so that everyone in the
community could benefit from them."
+msgstr "C'est seulement vers la fin des années 70 que ça a
commencé à changer. J'ai été extrêmement
marqué par l'esprit de partage que nous avions alors. Nous
espérions faire quelque chose d'utile et nous étions heureux si
les gens pouvaient l'utiliser. Ainsi, quand j'ai développé le
premier EMACS et que les gens ont commencé à vouloir l'utiliser
en dehors du M.I.T., j'ai dit qu'il appartenait à la
« communauté » EMACS. Pour utiliser EMACS vous
deviez être membre de la communauté et ça voulait dire que
vous aviez eu la responsabilité de participer à toutes les
améliorations que vous aviez faites. Toutes les améliorations de
l'EMACS original devaient m'être renvoyées pour que je puisse les
incorporer à de nouvelles versions d'EMACS, de manière à
ce que chacun dans la communauté puisse en bénéficier."
+
+# type: Content of: <p>
+msgid "But this started to be destroyed when SCRIBE was developed at CMU, and
then was sold to a company. This was very disturbing to a lot of us at many
universities, because we saw that this was a temptation placed in front of
everyone, that it was so profitable to be uncooperative and those of us who
still believed in cooperation had no weapon to try to compel people to
cooperate with us. Clearly, one after another, people would defect and stop
cooperating with the rest of society, until only those of us with very strong
consciences would still cooperate. And that's what happened."
+msgstr "Mais ça a commencé à se dégrader quand
SCRIBE a été développé à C.M.U. puis vendu
à une entreprise. Ça a été déroutant pour
beaucoup d'entre nous dans de nombreuses universités, parce que nous
avons vu que c'était une tentation offerte à chacun et qu'il
était bien profitable d'être peu coopératif. Et ceux
d'entre nous qui y croyaient toujours n'avaient aucune arme pour tenter de
contraindre les gens à coopérer avec nous. Sans aucun doute, les
uns après les autres, les gens allaient déserter et cesser de
coopérer avec le reste de la société, jusqu'à ce
qu'il ne reste plus que ceux qui avaient des consciences très fortes
pour continuer. Et c'est ce qu'il s'est passé."
+
+# type: Content of: <p>
+msgid "The field of programming has now become an ugly one, where everyone
cynically thinks about how much money he is going to get by not being nice to
the other people in the field, and to the users."
+msgstr "Le domaine de la programmation est maintenant devenu sinistre,
où chacun pense de façon cynique à combien il va gagner
à ne pas être sympa avec ses homologues et les utilisateurs."
+
+# type: Content of: <p>
+msgid "I want to establish that the practice of owning software is both
materially wasteful, spiritually harmful to society and evil. All these three
things being interrelated. It's spiritually harmful because it involves every
member of society who comes in contact with computers in a practice that is
obviously materially wasteful to other people. And every time you do something
for your own good, which you know is hurting other people more that it helps
you, you have to become cynical in order to support such a thing in your mind.
And it's evil because it is deliberately wasting the work done in society and
causing social decay."
+msgstr "Je veux montrer que le fait de posséder un logiciel est
à la fois matériellement inutile, spirituellement nuisible
à la société et malfaisant. Ces trois choses étant
interdépendantes. C'est spirituellement nocif parce que ça engage
manifestement chaque membre de la société en contact avec des
ordinateurs dans une pratique matérielle inutile aux autres. Et chaque
fois que vous faites quelque chose pour vous-même et que vous savez que
ça blesse plus les autres que ça ne vous aide, vous êtes
obligé de devenir cynique pour pouvoir supporter une telle chose dans
votre esprit. Et c'est malfaisant parce que ça gaspille
délibérément le travail effectué dans la
société en provoquant l'affaiblissement social."
+
+# type: Content of: <p>
+msgid "First I want to explain the kinds of harm that are done by attempts to
own software and other information that's generally useful, then I'll go on to
rebut the arguments made to support that practice, and then I want to talk
about how to fight that phenomenon, and how I'm fighting it."
+msgstr "D'abord je veux expliquer les différentes nuisances
causées par les tentatives de posséder un logiciel ou toute autre
information utile en général, puis je m'appliquerai à
réfuter les arguments qui soutiennent cette pratique, ensuite je veux
parler de la façon de combattre ce phénomène et comment je
m'y prends moi-même."
+
+# type: Content of: <p>
+msgid "The idea of owning information is harmful in three different levels.
Materially harmful on three different levels, and each kind of material harm
has a corresponding spiritual harm."
+msgstr "L'idée de posséder l'information est nocive à
trois niveaux différents. Matériellement nocif à trois
niveaux différents. Et à chaque type de nocivité
matérielle correspond une nocivité spirituelle."
+
+# type: Content of: <p>
+msgid "The first level is just that it discourages the use of the program, it
causes fewer people to use the program, but in fact it takes no less work to
make a program for fewer people to use. When you have a price on the use of a
program this an incentive, that's the word these software hoarders love to use,
the price is an incentive for people not to use the program, and this is a
waste. If for example only half as many people use the program because it has
a price on it, the program has been half wasted. The same amount of work has
produced only half as much wealth."
+msgstr "Au premier niveau, c'est juste que ça décourage
l'utilisation du programme. Du coup, peu de gens utilisent le programme, mais
ça ne demande pas moins de travail pour l'élaborer. Quand on vous
met un prix sur l'utilisation d'un programme en tant
qu'« incitation », c'est le mot que ces accapareurs de
logiciel aiment à employer, c'est une incitation pour les gens à
ne pas l'utiliser et c'est du gâchis. Si par exemple la moitié
seulement de cette multitude de gens utilise le programme parce qu'il a un
prix, le programme a été à moitié gaspillé.
La même quantité de travail a produit seulement la moitié
de richesse."
+
+# type: Content of: <p>
+msgid "Now in fact, you don't have to do anything special to cause a program
to get around to all the people who want to use it, because they can copy it
themselves perfectly well, and it will get to everyone. All you have to do
after you've written the program is to sit back and let people do what they
want to do. But that's not what happens; instead somebody deliberately tries
to obstruct the sharing of the program, and in fact, he doesn't just try to
obstruct it, he tries to pressure other people into helping. Whenever a user
signs a nondisclosure agreement he has essentially sold out his fellow users.
Instead of following the golden rule and saying, “I like this program, my
neighbor would like the program, I want us both to have it”, instead he
said, “Yeah, give it to me. To hell with my neighbor! I'll help you keep
it away from my neighbor, just give it to me!”, and that spirit is what
does the spiritual harm. That attitude of saying, “To hell with my
neighbors, give ME a copy”."
+msgstr "En fait, vous n'avez rien de spécial à faire pour qu'un
programme se répande à tous ceux qui veulent l'utiliser, parce
qu'ils peuvent le copier eux-mêmes parfaitement bien et qu'il finit par
atteindre tout le monde. Tout ce que vous avez à faire, après
avoir écrit le programme, c'est de vous reposer et de laissez les gens
faire ce qu'ils veulent. Mais ce n'est pas ce qu'il se passe. Au lieu de
ça, quelqu'un essaye délibérément d'entraver le
partage du programme. Mais il ne tente pas simplement de l'entraver, il tente
de se faire aider en mettant la pression sur les autres. Toutes les fois qu'un
utilisateur signe un accord de non-divulgation, il a essentiellement vendu tous
ses homologues utilisateurs. Au lieu de suivre la règle d'or et de dire
« J'aime ce programme, mon voisin le voudrait aussi, je veux que
nous l'ayons tous les deux », il a dit : « Ouais,
donnez-le moi. Au diable mon voisin ! Je vous aiderai à le
maintenir hors de sa portée. Ne le donnez qu'à
moi ! » et cet esprit est ce qui cause la nuisance spirituelle.
Cette attitude de dire « Au diable mes voisins, donnez-moi à
MOI une copie »."
+
+# type: Content of: <p>
+msgid "After I ran into people saying they wouldn't let me have copies of
something, because they had signed some secrecy agreement, then when somebody
asked me to sign a thing like that I knew it was wrong. I couldn't do to
somebody else the thing that had made me so angry when it was done to me."
+msgstr "Après être rentré dans les gens qui disaient qu'il
ne me laisseraient pas avoir de copies parce qu'ils avaient signé un
accord secret, quand quelqu'un me demandait de signer un truc comme ça
je savais que c'était mal. Je ne pouvais pas faire à quelqu'un
d'autre ce qui m'avait tant exaspéré quand on me l'avait fait
à moi."
+
+# type: Content of: <p>
+msgid "But this is just one of the levels of harm. The second level of harm
comes when people want to change the program, because no program is really
right for all the people who would like to use it. Just as people like to vary
recipes, putting in less salt say, or maybe they like to add some green
peppers, so people also need to change programs in order to get the effects
that they need."
+msgstr "Mais c'est juste un des niveaux de la nocivité. Le
deuxième niveau arrive quand les gens veulent modifier le programme,
parce qu'un programme ne satisfait jamais vraiment tous ceux qui voudraient
l'utiliser. Tout comme ils aiment varier les recettes, en mettant moins de sel,
ou peut-être aiment-ils rajouter du poivre vert, les gens doivent
également modifier les programmes pour obtenir les effets dont ils ont
besoin."
+
+# type: Content of: <p>
+msgid "Now, the software owners don't really care whether people can change
the program or not, but it's useful for their ends to prevent people.
Generally when software is proprietary you can't get the sources, you can't
change it, and this causes a lot of wasted work by programmers, as well as a
lot of frustration by users. For example: I had a friend who told me how she
worked for many months at a bank where she was a programmer, writing a new
program. Now, there was a commercially available program that was almost
right, but it was just not quite the thing they needed, and in fact as it was
it was useless for them. The amount of change it would have taken to make it
do what they needed was probably small, but because the sources of that program
were not available, that was impossible. She had to start over from scratch
and waste a lot of work. And we can only speculate about what fraction of all
the programmers in the world are wasting their time in this fashion."
+msgstr "Maintenant, les propriétaires de logiciel ne
s'inquiètent pas vraiment de savoir si les gens peuvent modifier le
programme ou non, mais les en empêcher leur est utile pour parvenir
à leurs fins. Généralement quand un logiciel est une
propriété industrielle, vous ne pouvez pas obtenir les sources,
vous ne pouvez pas le modifier et c'est un grand gaspillage de travail pour les
programmeurs aussi bien qu'une grande frustation pour les utilisateurs. Par
exemple : une amie m'a dit qu'elle avait travaillé pendant de
nombreux mois dans une banque où elle était programmeuse, pour
écrire un nouveau programme. Or il y avait un programme disponible dans
le commerce qui était presque bon, mais qui n'était pas tout
à fait ce dont ils avaient besoin. Et tel quel, il leur était
inutile. La quantité de changement que cela demandait était
probablement faible, mais comme les sources de ce programme n'étaient
pas disponibles, c'était impossible. Elle a dû partir de
zéro et dilapider beaucoup de temps. Et nous ne pouvons que
spéculer sur la fraction de l'ensemble des programmeurs du monde qui
perdent leur temps de cette façon."
+
+# type: Content of: <p>
+msgid "And then there is also the situation where a program is adequate make
do, but it's uncomfortable. For example: The first time we had a graphics
printer at MIT, we wrote the software ourselves, and we put in lots of nice
features, for example it would send you a message when your job had finished
printing, and it would send you a message if the printer ran out of paper and
you had a job in the queue, and lots of other things that were what we wanted.
We then got a much nicer graphic printer, one of the first laser printers, but
then the software was supplied by Xerox, and we couldn't change it. They
wouldn't put in these features, and we couldn't, so we had to make do with
things that “half worked”. And it was very frustrating to know
that we were ready, willing and able to fix it, but weren't permitted. We were
sabotaged."
+msgstr "Il y a aussi le cas où un programme est adéquat mais
inconfortable. Par exemple : la première fois que nous avons eu une
imprimante graphique au M.I.T., nous avons écrit le logiciel
nous-mêmes et nous avons installé un bon nombre d'utilitaires
sympathiques. Par exemple, il devait vous envoyer un message quand le travail
d'impression était fini et il vous envoyait un message si l'imprimante
manquait de papier, si vous aviez un travail en file d'attente et pas mal
d'autres choses qui correspondaient à ce que nous voulions. Nous avons
alors reçu une imprimante graphique beaucoup plus intéressante,
une des premières imprimantes laser, mais le logiciel était
fourni par Xerox et nous ne pouvions pas le modifier. Ils n'accepteraient pas
d'intégrer les utilitaires et nous ne pouvions pas le faire
nous-même. Aussi nous avons dû nous contenter de choses qui ne
« fonctionnaient qu'à moitié ». Et
c'était très frustrant de savoir que nous étions
prêts, désireux et capables d'arranger ça mais que nous
n'en avions pas le droit. On nous sabotait."
+
+# type: Content of: <p>
+msgid "And then there are all the people who use computers and say that the
computers are a mystery to them, they don't know they work. Well how can they
possibly know? They can't read the programs they're using. The only way people
learn how programs should be written, or how programs do what they do, is by
reading the source code."
+msgstr "Et il y a toutes les personnes qui utilisent des ordinateurs et qui
disent que les ordinateurs sont un mystère pour eux. Ils ne savent pas
comment ça fonctionne. Mais comment pourraient-ils le savoir ? Ils
ne peuvent pas lire les programmes qu'ils utilisent. La seule manière
pour les gens d'apprendre comment les programmes devraient être
écrits ou comment ils font ce qu'ils font, c'est de lire le code source."
+
+# type: Content of: <p>
+msgid "So I could only wonder whether the idea of the user who just thinks of
the computer as a tool is not actually a self-fulfilling prophecy, a result of
the practice of keeping source code secret."
+msgstr "Aussi je ne peux que me demander si l'idée d'un utilisateur qui
voit l'ordinateur uniquement comme un outil tient réellement ou non de
la prophétie d'auto-épanouissement ; une conséquence
du fait de maintenir le code source secret."
+
+# type: Content of: <p>
+msgid "Now the spiritual harm that goes with this kind of material harm, is in
the spirit of self-sufficiency. When a person spends a lot of time using a
computer system, the configuration of that computer system becomes the city
that he lives in. Just as the way our houses and furniture are laid out,
determines what it's like for us to live among them, so that the computer
system that we use, and if we can't change the computer system that we use to
suit us, then our lives are really under the control of others. And a person
who sees this becomes in a certain way demoralized: “It's no use trying
to change those things, they're always going to be bad. No point even hassling
it. I'll just put in my time and … when it's over I'll go away and try
not to think about it any more”. That kind of spirit, that unenthusiasm
is what results from not being permitted to make things better when you have
feelings of public spirit."
+msgstr "Maintenant la nocivité spirituelle qui correspond à ce
type de nocivité matérielle réside dans l'esprit
d'auto-suffisance. Quand une personne dépense une bonne partie de son
temps à utiliser un système informatique, la configuration de ce
système informatique devient le pays dans lequel elle vit. Tout comme la
manière dont nos maisons et nos meubles sont disposés
détermine comment nous vivons parmi eux. Ainsi va le système
informatique que nous utilisons. Et si nous ne pouvons pas le modifier pour
qu'il nous convienne, nos vies sont alors vraiment sous le contrôle des
autres. Et d'une certaine manière, la personne qui le constate en est
démoralisée : « Ça ne sert à rien
d'essayer de changer ça, ce sera toujours mauvais. Je ne vais rien
gagner à tout déranger. Je ne vais qu'y consacrer mon temps
et… quand j'aurai fini, je m'en irai en tâchant de ne plus y
penser ». Ce genre d'esprit, ce manque d'enthousiasme est ce qui
résulte de ne pas être autorisé à améliorer
les choses quand vous avez l'esprit public."
+
+# type: Content of: <p>
+msgid "The third level of harm is in the interaction between software
developers themselves. Because any field of knowledge advance most when people
can build on the work of others, but ownership of information is explicitly
designed to prevent anyone else to doing that. If people could build on other
people's work, then the ownership would become unclear, so they make sure each
new entry to the field has to start from the beginning, and thus they greatly
slow down the advance of the field."
+msgstr "Le troisième niveau de nocivité se situe dans
l'interaction entre les développeurs de logiciel eux-mêmes.
Puisque tout domaine de connaissance avance davantage quand les gens peuvent
construire à partir du travail des autres. Mais l'appropriation de
l'information est explicitement conçue pour empêcher tout autre de
le faire. Si les gens pouvaient construire à partir du travail des
autres, alors la propriété deviendrait difficile à cerner,
c'est pourquoi ils s'assurent que chaque nouveau venu dans le domaine commence
à partir du début et en ralentissent ainsi
considérablement l'avancement."
+
+# type: Content of: <p>
+msgid "So we can see: How many spreadsheet systems were made all by different
companies, all without any benefit of understanding how it was done before? Yes
it's true, the first spreadsheet written wasn't perfect. It probably only ran
on certain kinds of computers, and it didn't do some things in the best
possible way. So there were various reasons why certain people would want to
rewrite parts of it. But if they had only to rewrite the parts that they
really wanted to improve, that would have made for a lot less work. You may
see how to make one aspect of a system better, you may not see how to make
another aspect of the same system any better, in fact you might have a great
deal of trouble doing it as well. Now if you could take the part that you like
and redo only the part that you have an inspiration for, you could have a
system that's better in all ways, with much less work than it now takes to
write a completely new system. And we all know that system can often benefit
from being completely rewritten, but that's only if you can read the old one
first."
+msgstr "Aussi nous pouvons le constater : combien de tableurs ont-ils
été crées par différentes entreprises sans avoir
tiré bénéfice de ce qui avait déjà
été fait ? Oui il est vrai, le premier tableur qui a
été écrit n'était pas parfait. Il a probablement
seulement fonctionné sur certains types d'ordinateurs et il ne faisait
pas les choses de la meilleure manière possible. Donc il y avait
diverses raisons pour lesquelles certaines personnes voulaient en
réécrire des morceaux. Mais si elles avaient seulement
réécrit les morceaux qu'elles voulaient vraiment
améliorer, cela aurait donné beaucoup moins de travail. Vous
pouvez très bien voir comment améliorer un des aspects d'un
système mais ne pas voir comment en améliorer un autre ; en
fait cela pourrait vous être très difficile de le faire aussi
bien. Si vous pouviez seulement prendre la partie que vous aimez et seulement
refaire le morceau qui vous inspire, vous pourriez avoir le meilleur
système en tout point. Avec beaucoup moins de travail que cela n'en
prend d'écrire un système entièrement. Et nous savons tous
qu'un système peut souvent tirer bénéfice d'être
entièrement réécrit, mais à condition de pouvoir
lire le vieux d'abord."
+
+# type: Content of: <p>
+msgid "Thus, the people in the programming field have evolved a way of wasting
a lot of their time and thus making apparently a need for more programmers than
we really need. Why is there a programmer shortage? Because with intellectual
property programmers have arranged to waste half the work they do, so we seem
to need twice as many programmers. And so, when people point to the system of
intellectual property and say “look at the large employment statistics,
look at how big this industry is” what that really proves is that people
are wasting a lot of money and time. If they talk about looking for ways to
improve programmer productivity, they're happy to do this if it involves
superior tools, but to improve programmer productivity by getting rid of the
explicit things that is done to reduce programmer productivity, that they're
against. Because that would reduce the number of programmers employed.
There's something a little bit schizophrenic there."
+msgstr "Donc, les personnes dans le domaine de la programmation ont
évolué de manière à perdre une bonne partie de leur
temps en créant de ce fait un apparent besoin en programmeurs. Plus
important qu'en réalité. Pourquoi y a-t-il un manque de
programmeurs ? Puisqu'avec la propriété intellectuelle
ceux-ci se sont organisés pour gaspiller la moitié de leur
travail, il semble que nous en ayons besoin de deux fois plus. Quand les gens
se tournent vers le système de la propriété intellectuelle
en disant « Regardez les belles statistiques d'emploi, regardez
l'ampleur de cette industrie »\", cela ne prouve réellement
que du gaspillage de temps et d'argent. Quand ils parlent de chercher des
moyens d'améliorer la productivité du programmeur, ils sont ravis
de le faire si cela implique des outils plus évolués, mais si
cela implique de se débarrasser de choses précises qui pourraient
la réduire, ils sont contre. Puisque cela réduirait le nombre de
programmeurs utilisés. Il y a quelque chose d'un peu schizophrène
là-dedans."
+
+# type: Content of: <p>
+msgid "And the spiritual harm that corresponds to this level of material harm
is to the spirit of scientific cooperation, which used to be so strong that
scientists even in countries that were at war would continue cooperating,
because they knew that what they were doing had nothing to do with the war, it
was just for the long term benefit of humanity. Nowadays, people don't care
about the long term benefit of humanity any more."
+msgstr "Et la nocivité spirituelle qui correspond à ce niveau de
nocivité matérielle se trouve dans l'esprit de coopération
scientifique, qui était si fort, que même les scientifiques dans
les pays en guerre continuaient de coopérer. Parce qu'ils savaient que
ce qu'ils faisaient n'avait rien à voir avec la guerre. C'était
uniquement pour le bénéfice à long terme de
l'humanité. De nos jours, les gens ne s'en inquiètent plus."
+
+# type: Content of: <p>
+msgid "To get an idea of what it's like to obstruct the use of a program,
let's imagine that we had a sandwich, that you could eat, and it wouldn't be
consumed. You could eat it, and another person could eat it, the same
sandwich, any number of times, and it would always remain just as nourishing as
originally."
+msgstr "Pour avoir une idée de ce qui peut empêcher l'utilisation
d'un programme, imaginez un sandwich que vous pouvez manger mais qui ne serait
pas consommé. Vous pourriez le manger, une autre personne pourrait le
manger, le même sandwich, n'importe quel nombre de fois et il en
resterait toujours comme s'il nourrissait autant qu'à l'origine."
+
+# type: Content of: <p>
+msgid "The best thing to do, the thing that we ought to do with this sandwich
is carry it around to the places where there are hungry people; bringing it to
as many mouths as possible, so that it feeds as many people as possible. By
all means, we should not have a price to eat from this sandwich, because then
people would not afford to eat it, and it would be wasted."
+msgstr "La meilleure chose à faire, ce que nous devons faire avec ce
sandwich, est de l'amener partout où les gens sont affamés;
l'amenant à autant de bouches que possible, de sorte qu'il alimente
autant de personnes que possible. Il est certain que nous ne devrions pas
mettre de prix sur ce sandwich, parce que sinon les gens ne se permettraient
pas de le manger et il serait gaspillé."
+
+# type: Content of: <p>
+msgid "The program is like this sandwich, but even more so because it can be
in many different places at once being eaten, used by different people one
after the other. It is as if this sandwich was enough to feed everyone,
everywhere, forever, and that were not allowed to happen, because someone
believed he should own it."
+msgstr "Un programme est comme ce sandwich, mais encore plus, parce qu'il peut
être mangé en même temps dans de nombreux endroits
différents, utilisé par des personnes différentes les unes
après les autres. C'est comme si ce sandwich suffisait pour alimenter
tout le monde, partout, pour toujours, et cela n'a pas pu se produire parce que
quelqu'un a cru qu'il pouvait le posséder."
+
+# type: Content of: <p>
+msgid "Now, the people who believe that they can own programs, generally put
forward two lines of argument for this. The first one is “I wrote it, it
is a child of my spirit, my heart, my soul is in this. How can anyone take it
away from me? Wherever it goes it's mine, mine, MINE!!”. Well, it's sort
of strange that most of them signs agreements saying it belongs to the company
they work for."
+msgstr "Maintenant, les gens qui croient qu'ils peuvent posséder les
programmes proposent généralement deux types d'arguments. Le
premier c'est : « Je l'ai écrit, c'est l'enfant de mon
esprit, mon cœur, mon âme y est. Qui peut me l'enlever ? Où
qu'il aille, il est à moi, à moi, À MOI !! ».
Bien, il est curieux tout de même que la plupart d'entre eux signent des
accords stipulant qu'il appartient à l'entreprise pour laquelle ils
travaillent."
+
+# type: Content of: <p>
+msgid "So I believe this is one of the things you can easily talk yourself
into believing is important, but you can just as easily convince yourself it
doesn't matter at all."
+msgstr "Aussi je crois que c'est l'une des choses que vous pouvez facilement
vous dire en croyant que c'est important, mais vous pouvez aussi
aisément vous convaincre que cela n'a pas d'importance du tout."
+
+# type: Content of: <p>
+msgid "Usually, these people use this argument to demand the right to control
even how people can change a program. They say: “Nobody should be able
to mess up my work of art”. Well, imagine that the person who invented a
dish that you plan to cook had the right to control how you can cook it,
because it's his work of art. You want to leave out the salt, but he says
“Oh, no. I designed this dish, and it has to have this much salt!”
“But my doctor says it's not safe for me to eat salt. What can I
do?”."
+msgstr "Habituellement, ces personnes usent de cet argument pour exiger le
droit de contrôler même la façon dont les gens peuvent
modifier le programme. Ils disent : « Personne ne devrait
pouvoir gâcher mon œuvre d'art ». Bien, imaginez que la
personne qui a inventé le plat que vous projetez de cuisiner a eu le
droit de contrôler la façon dont vous pouvez le faire cuire parce
que c'est son œuvre d'art. Vous voulez y enlever le sel, mais il dit
« Oh, non! J'ai conçu ce plat et il doit y avoir beaucoup de
sel ! », « Mais mon médecin m'a dit qu'il
n'était pas bon pour moi de manger salé. Que dois-je
faire ? »."
+
+# type: Content of: <p>
+msgid "Clearly, the person who is using the program is much closer to the
event. The use of the program affects him very directly, whereas it only has a
sort of abstract relation to the person who wrote the program. And therefore,
for the sake of giving people as much control as possible over their own lives,
it has to be the user who decides those things."
+msgstr "Clairement, la personne qui utilise le programme est bien plus
près de l'événement. L'utilisation du programme l'affecte
directement tandis qu'il y a juste une sorte de relation abstraite avec la
personne qui l'a écrit. Et donc, pour donner aux gens autant de
contrôle que possible sur leurs propres vies, c'est l'utilisateur qui
doit décider."
+
+# type: Content of: <p>
+msgid "The second line of argument they make is the economic one. “How
will people get payed to program?” they say, and there's a little bit of
real issue in this. But a lot of what they say is confusion. And the
confusion is, it's not at all the same to say “if we want to have a lot
of people programming we must arrange for them not to need to make a living in
any other fashion” on the one hand, and to say “We need to have the
current system, you need to get rich by programming” on the other hand.
There's a big difference between just making a living wage and making the kind
of money programmers, at least in the US make nowadays. They always say:
“How will I eat?”, but the problem is not really how “Will he
eat?”, but “How will he eat sushi?”. “How will I have a
roof over my head?”, but the real problem is “How can he afford a
condo?”."
+msgstr "Le deuxième argument est économique.
« Comment les gens seront payés pour
programmer ? » disent-ils, et il y a un peu de vrai
là-dedans. Mais une bonne part de ce qu'ils disent est confus. Et la
confusion vient de ce qu'il n'est pas du tout pareil de dire :
« Si nous voulons avoir beaucoup de gens pour programmer, nous
devons nous assurer qu'ils n'auront pas besoin de gagner leur vie d'une autre
manière » d'une part, et d'autre part de dire
« Nous devons conserver le système actuel, nous devons
devenir riches en programmant ». Il y a une grande différence
entre juste percevoir un salaire pour vivre et se faire du fric comme le font
les programmeurs de nos jours, au moins aux États-Unis. Ils disent
toujours : « Comment vais-je manger ? », mais
le problème n'est pas vraiment de savoir « comment il va
manger » mais « comment il va manger des
sushis ». De même « Comment aurai-je un toit
au-dessus de ma tête ? » mais comment pourra-t'il
se payer un appartement dans une copropriété ? »."
+
+# type: Content of: <p>
+msgid "The current system were chosen by the people who invest in software
development, because it gives them the possibility of making the most possible
money, not because it's the only way anyone can ever come up with money to
support a system development effort. In fact, even as recently as ten and
fifteen years ago it was common to support software development in other ways.
For example, those DIGITAL operating systems that were free, even in the early
seventies, were developed by people who were paid for their work. Many useful
programs has been developed at universities. Nowadays those programs are often
sold, but fifteen years ago they were usually free, yet the people were paid
for their work."
+msgstr "Le système actuel a été choisi par les gens qui
investissent dans le développement de logiciel parce que ça leur
donne la possibilité de se faire le plus d'argent possible, non pas
parce que c'est le seul moyen de soutenir l'effort de développement d'un
système. En fait, aussi récemment qu'il y a dix ou quinze ans, on
aidait au développement de logiciel de différentes
manières. Par exemple, les systèmes d'exploitation de DIGITAL qui
étaient libres, même au début des années 70, ont
été développés par des personnes payées pour
ce travail. Beaucoup de programmes utiles ont été
développés dans les universités. De nos jours ces
programmes sont souvent vendus, mais il y a quinze ans ils étaient
libres et les gens avaient déjà été payés
pour ça."
+
+# type: Content of: <p>
+msgid "When you have something like a program, like an infinite sandwich, like
a road, which has to be built once, but once it is built it pretty much doesn't
matter how much you use it, there's no cost in using it, generally it's better
if we don't put any price on using it. And there are plenty of those things
that we develop now, and pay people to build. For example, all the streets out
there. It's very easy to find people who will program without being paid; it
really is impossible to find people who will build streets without being paid.
Building streets is not creative and fun like programming. But we have plenty
of streets out there, we do come up with the money to pay them, and it's much
better the way we do it than if if we said: “Let's have companies go and
build streets and put toll booths up, and then every time you turn another
street corner, you pay another toll. And then the companies that picked the
good places to put their streets, they will be profitable, and the others will
go bankrupt.”"
+msgstr "Lorsque vous avez quelque chose comme un programme, comme un sandwich
infini ou comme une route qui ne doit être construite qu'une fois,
sachant qu'une fois construite il importe peu de savoir combien de fois vous
l'utilisez, sachant que cela ne coûte rien de l'utiliser, il est
généralement bien mieux de ne pas mettre de coût sur cette
utilisation. Et il y a des tas de choses comme ça que nous
développons aujourd'hui, après avoir payé des gens pour le
faire. Par exemple, toutes les rues là-dehors. Autant il est très
facile de trouver des gens qui programmeront sans être payés,
autant il est vraiment impossible d'en trouver qui construiront des routes sans
être payés. La construction des routes n'est pas créatrive
ni amusante comme la programmation mais nous avons des tas de rues
là-dehors. Nous apportons l'argent pour payer ces gens et c'est bien
mieux comme ça que d'avoir dit : « Laissons les
entreprises faire et construire des routes et des cabines de péage, et
chaque fois que vous tournez à un coin de rue vous paierez un autre
péage. De là, les entreprises qui auront
sélectionné les bons endroits pour mettre leurs routes feront des
profits et les autres feront faillite »."
+
+# type: Content of: <p>
+msgid "There's a funny thing that happens whenever someone comes up with a way
of making lots of money by hoarding something. Until that time you've probably
had lots and lots of people who were really enthusiastic and eager to work in
that field, the only sort of question is how can they get any sort of
livelihood at all. If we think of mathematicians for example, there are a lot
more people who want to be pure mathematicians than there is funding for
anybody to be pure mathematicians. And even when you do get funding, you don't
get very much, they don't live well. And for musicians it's even worse. I saw
a statistics for how much the average musician, the average person devoting
most of his time trying to be a musician, in Massachusetts made; it was
something like half the median income or less. It is barely enough to live on,
it's difficult. But there are lots of them trying to do that. And then,
somehow when it gets generally possible to get very well paid to do something,
all those people disappear, and people start saying “nobody will do it
unless they get paid that well”."
+msgstr "Il y a une chose drôle qui se produit chaque fois que quelqu'un
propose une manière de faire de l'argent en accaparant quelque chose.
Jusque là, vous aviez probablement un bon nombre de gens vraiment
enthousiastes et désireux de travailler dans ce domaine. Et le seul
genre de question qui se posait était : « Comment
peuvent-ils trouver un moyen d'existence ? » Si nous pensons
aux mathématiciens par exemple, il y a beaucoup plus de gens qui veulent
être des mathématiciens purs que de fonds pour que tout le monde
le devienne. Et même lorsque vous obtenez des fonds, vous n'en obtenez
pas beaucoup. Et ces gens ne vivent pas bien. Pour des musiciens c'est encore
pire. J'ai vu des statistiques sur combien le musicien moyen, le péquin
moyen qui consacre la majeure partie de son temps à tenter de devenir
musicien, se fait dans le Massachusetts ; c'était quelque chose
comme la moitié du revenu moyen ou moins. C'est à peine assez
pour vivre, c'est dur. Mais il y en a un bon nombre qui essaient. Et puis,
d'une façon ou d'une autre, quand il devient possible d'être
très bien payé pour faire quelque chose,
généralement tous ces gens disparaissent. Et on commence à
dire « personne ne le fera à moins d'être payé
aussi bien »."
+
+# type: Content of: <p>
+msgid "And I saw this happen in the field of programming. The very same
people who used to work at the AI lab and get payed very little and love it,
now wouldn't dream of working for less than fifty thousand dollars a year.
What happened? When you dangle before people the possibility of making lots of
money, when they see that other people doing similar work are getting paid that
much money, they feel that they should get the same, and thus no-one is willing
to continue the old way. And it's easy after this has happened to think that
paying people a lot of money is the only way it could be, but that's not so.
If the possibility of making a lots of money did not exist, you would have
people who would accept doing it for a little money, specially when it's
something that is creative and fun."
+msgstr "Et j'ai vu cela se produire dans le domaine de la programmation. Les
mêmes qui travaillaient au laboratoire d'I.A. en étant très
peu payés et qui aimaient ça, aujourd'hui ne rêveraient pas
d'un travail pour moins de cinquante mille dollars par an. Que s'est-il
passé ? Quand vous faites miroiter aux gens la possibilité
de faire de l'argent, quand ils en voient d'autres faire le même travail
en étant payés très cher, ils estiment devoir obtenir la
même chose et personne n'est alors disposé à continuer
à l'ancienne manière. Il est facile une fois que cela s'est
produit, de penser que de bien payer les gens est désormais le seul
moyen. Mais ce n'est pas vrai. Si la possibilité de faire de l'argent
n'existait pas vous auriez des gens qui accepteraient de le faire pour pas
grand-chose, particulièrement quand c'est créatif et amusant."
+
+# type: Content of: <p>
+msgid "Now I saw the unique world of the AI lab destroyed, and I saw that
selling software was an intrinsic part of what had destroyed it, and I saw
also, as I explained before, how you need to have free software in order to
have a community like that. But then thinking about it more, I realized all
these ways in which hoarding software hurts all of society, most specially by
pressuring people to sell out their neighbors and causing social decay. The
same spirit that leads people to watch while somebody in the street is getting
stabbed and not tell anyone. The spirit that we can see so many companies all
around us displaying all the time. And it was clear to me I had a choice, I
could become part of that world and feel unhappy about what I was doing with my
life, or I could decide to fight it. So I decided to fight it. I've dedicated
my career to try to rebuild the software sharing community, to trying to put an
end to the phenomenon of hoarding generally useful information. And the GNU
system is a means to this end. It is a technical means to a social end. With
the GNU system, I hope to vaccinate the users against the threat of the
software hoarders."
+msgstr "Maintenant que j'ai vu le monde unique du laboratoire d'I.A.
détruit et la vente du logiciel en être intrinsèquement
responsable, j'ai également vu, comme je l'ai expliqué avant, le
besoin en logiciel libre pour retrouver une communauté comme
celle-là. Mais en y réfléchissant davantage, j'ai
réalisé l'ampleur de la nocivité du logiciel
accaparé sur l'ensemble de la société, plus
particulièrement la pression mise sur les gens pour qu'ils vendent au
détriment de leurs voisins et causant l'affaiblissement social. Le
même esprit qui pousse les gens à observer quelqu'un quise fait
poignarder dans la rue sans le dire à personne. Cet esprit dont nous
pouvons voir tant d'entreprises en faire la preuve autour de nous. Il
était évident que j'avais le choix. Je pouvais faire partie de ce
monde et me sentir malheureux de voir ce que je faisais de ma vie ou je pouvais
décider de le combattre. Ainsi j'ai décidé de le
combattre. J'ai consacré ma carrière à tenter de
reconstruire la communauté de partage du logiciel, à tenter de
mettre un terme au phénomène d'accaparer l'information utile
à l'ensemble des gens. Et le système GNU est un moyen à
cet effet. Il est un moyen technique à des fins sociales. Avec le
système GNU, j'espère vacciner les utilisateurs contre la menace
des accapareurs de logiciel."
+
+# type: Content of: <p>
+msgid "Right now the hoarders essentially claims the power to render a
person's computer useless. There used to be people in the US, most commonly
about fifty years ago, they were in the Mafia, they would go up to stores and
bars, especially bars when bars were illegal of course. They would go up and
say: “A lot of places around here have been burning down lately. You
wouldn't want your place to burn down, would you? Well we can protect you from
fires, you just have to pay us a thousand dollars a month, and we'll make sure
you don't have a fire here”. And this was called “the protection
racket”. Now we have something where a person says “You got a nice
computer there, and you've got some programs there that you're using. Well, if
you don't want those programs to disappear, if you don't want the police to
come after you, you better pay me a thousand dollars, and I'll give you a copy
of this program with a license”, and this is called “the software
protection racket”."
+msgstr "En ce moment, les accapareurs réclament essentiellement le
pouvoir de rendre inutile l'ordinateur d'une personne. Il y avait des gens aux
USA, il y a plus ou moins cinquante ans, de la Mafia qui entraient dans les
magasins et les bars, spécialement les bars hors-la-loi
évidemment. Ils pouvaient entrer et dire : « Pas mal
d'endroits par ici ont brûlé dernièrement. Vous ne voudriez
pas que le vôtre subisse le même sort ? Aussi, nous pouvons
vous protéger contre les incendies, vous avez juste à nous payer
mille dollars par mois et nous nous assurerons qu'il n'y aura pas le
feu ». Et ça s'appelait « le racket de
protection ». Aujourd'hui nous en sommes à quelque chose
près à ce qu'une personne nous dise « Vous avez un
joli ordinateur ici et vous utilisez quelques programmes. Bien, si vous ne
voulez pas que ces programmes disparaissent, si vous ne voulez pas que la
police vous poursuive, vous feriez mieux de payer mille dollars et je vous
donnerai une copie de ce programme avec une autorisation », et
ça s'appelle « le racket de protection de
logiciel »."
+
+# type: Content of: <p>
+msgid "Really all they're doing is interfering with everybody else doing what
needs to be done, but they're pretending as much to them selves as to the rest
of us, that they are providing a useful function. Well, what I hope is that
when that software Mafia guy comes up and says, “You want those programs
to disappear on your computer?”, the user can say “I'm not afraid
of you any more. I have this free GNU software, and there's nothing you can do
to me now.”"
+msgstr "Vraiment, tout ce qu'ils font c'est interférer avec tous ceux
qui font ce qui doit être fait, mais ils prétendent fournir,
davantage pour eux-mêmes que pour le reste du monde, une fonction utile.
Bon. Ce que j'espère, c'est que quand ce type de Mafia du logiciel entre
et dit : « Vous voulez que ces programmes disparaissent de
votre ordinateur ? », l'utilisateur puisse
répondre : « Je n'ai plus peur de vous. J'ai le logiciel
libre GNU et il n'y a rien que vous puissiez me faire
désormais »."
+
+# type: Content of: <p>
+msgid "Now, one of the justifications people sometimes offer for owning
software, is the idea of giving people an incentive to produce things. I
support the idea of private enterprise in general, and the idea of hope to make
money by producing things that other people like to use, but it's going haywire
in the field of software now. Producing a proprietary program is not the same
contribution to society as producing the same program and letting it be free.
Because writing the program is just a potential contribution to society. The
real contribution to the wealth of society happens only when the program is
used. And if you prevent the program from being used, the contribution doesn't
actually happen. So, the contribution that society needs is not these
proprietary programs that everyone has such an incentive to make, the
contribution we really want is free software, so our society is going haywire
because it gives people an incentive to do what is not very useful, and no
incentive to do what is useful. Thus the basic idea of private enterprise is
not being followed, and you could even say that the society is neurotic. After
all when an individual encourages in others behavior that is not good for that
individual we call this a neurosis. Here society is behaving in that fashion,
encouraging programmers to do things that is not good for society."
+msgstr "Maintenant, un des moyens de justifier parfois le fait de
posséder le logiciel est l'idée de donner l'envie aux gens de
produire des choses. Je soutiens l'idée de l'entreprise privée en
général et l'idée de vouloir gagner de l'argent en
produisant des choses que d'autres aiment à utiliser, mais ça se
détraque dans le domaine du logiciel maintenant. Produire un programme
propriétaire, ce n'est pas la même contribution à la
société que produire ce programme et le laisser libre. Parce que
l'écriture du programme est juste une contribution potentielle à
la société. La vraie contribution à la richesse de la
société vient seulement quand le programme est utilisé. Et
si vous empêchez l'utilisation du programme, la contribution ne se
produit pas vraiment. Aussi, la contribution dont la société a
besoin ne réside pas dans ces programmes propriétaires que tout
le monde a tellement envie de faire. La contribution que nous voulons vraiment
est celle du logiciel libre. Aussi notre société se
détraque parce qu'elle donne aux gens l'envie de faire ce qui n'est pas
utile et aucune envie de faire ce qu'est utile. Ainsi l'idée
fondamentale de l'entreprise privée n'est pas comprise et vous pourriez
même dire que la société est névrotique. Car
après tout, quand un individu encourage dans le comportement des autres
ce qui n'est pas bon pour lui, vous appelez ça une névrose. Ici
la société se comporte comme ça, en encourageant les
programmeurs à faire des choses qui ne sont pas bonnes pour la
société."
+
+# type: Content of: <p>
+msgid "I'm unusual. I'd rather believe that I'm a good member of society and
that I'm contributing something, than feel that I'm ripping society off
successfully, and that's why I've decided to do what I have done. But every
one is at least a little bit bothered by the feeling that they are getting paid
to do what's not really useful. So let's stop defending this idea of
incentives to do the wrong thing and let's at least try to come up with
arrangements to encourage people to do the right thing, which is to make free
software."
+msgstr "Je ne suis pas commun. Je préfère croire que je suis un
bon membre de la société et que je contribue à quelque
chose plutôt que de sentir que je l'arnaque avec succès et c'est
pourquoi j'ai décidé de faire ce que j'ai fait. Mais tout le
monde est plus ou moins tracassé par le sentiment d'être
payé pour faire ce qui n'est pas vraiment utile. Aussi cessons de
défendre l'idée d'encourager à faire la mauvaise chose et
essayons au moins de proposer des arrangements pour encourager les gens
à faire la bonne, qui est de faire du logiciel libre."
+
+# type: Content of: <p>
+msgid "Thank you."
+msgstr "Merci."
+
+# type: Content of: <p>
+msgid "<strong>[After this RMS answered questions for about an hour. I have
only included a very few of the questions and answers in this version. The
tape was bad, and I didn't have the time to do a proper job on all of it]
</strong>"
+msgstr "<strong>[Après ça, RMS a répondu à des
questions pendant environ une heure. J'ai seulement inclus très peu de
ces questions et réponses dans cette version. La bande était
mauvaise, et je n'ai pas eu le temps de faire un travail approprié sur
la totalité]</strong>"
+
+# type: Content of: <dl><dt>
+msgid "<b>Q</b>: Has anyone tried to make problems for you?"
+msgstr "<b>Question :</b> Est-ce que quelqu'un a tenté de vous
causer des ennuis ?"
+
+# type: Content of: <dl><dd>
+msgid "<b>A:</b> The only time anyone has tried to make a problem for me was
those owners, so called, self-styled owners of Gosling Emacs. Aside from that
they have no grounds to do so, so there is not much they can do. By the way,
I'd like to call everyone's attention to the way in which people use language
to try to encourage people to think certain thoughts and not think of others.
Much of the terminology current in the field was chosen by the self-styled
software owners to try to encourage you to try to make you see software as
similar to material objects that are property, and overlook the differences.
The most flagrant example of this is the term “pirate”. Please
refuse to use to use the term “pirate” to describe somebody who
wishes to share software with his neighbor like a good citizen."
+msgstr "<b>Réponse :</b> La seule fois qu'on a tenté de me
causer des ennuis c'était avec ces propriétaires
prétendus, soi-disant propriétaires de Gosling Emacs. Hormis le
fait qu'ils n'en avaient aucune raison, ils ne peuvent rien faire de plus.
D'ailleurs, je voudrais attirer l'attention de tout le monde sur la
façon dont les gens se servent d'un langage pour essayer d'encourager
les gens à penser certaines choses et à ne pas penser à
d'autres. Une grande part de la terminologie actuelle dans le domaine a
été choisie par les soi-disant propriétaires de logiciel
pour tenter de vous encourager à voir le logiciel assimilé
à des objets matériels comme une propriété et
oublier les différences. L'exemple le plus flagrant en est le terme
« pirate ». Refusez s'il vous plaît d'utiliser le
terme « pirate » pour décrire quelqu'un qui
souhaite partager le logiciel avec son voisin comme un bon citoyen."
+
+# type: Content of: <dl><dd><p>
+msgid "I forgot to tell you this: The idea of copyright was invented after the
printing press. In ancient times authors copied from each other freely, and
this was not considered wrong, and it was even very useful: The only way
certain authors works have survived, even in fragments, is because some of them
were quoted at length in other works which have survived."
+msgstr "J'ai oublié de vous dire ceci : L'idée de droit
d'auteur a été inventé après la presse
imprimée. Dans l'ancien temps, les auteurs se copiaient les uns les
autres librement et ceci n'était pas mal considéré. Et
c'était même très utile : certains travaux d'auteurs
ont seulement pu survivre, même en fragments, parce qu'ils ont
été cités longuement dans d'autres travaux qui, eux ont
survécu."
+
+# type: Content of: <dl><dd><p>
+msgid "This was because books were copied one copy at the time. It was ten
times as hard to make ten copies as it was to make one copy. Then the printing
press was invented, and this didn't prevent people from copying books by hand,
but by comparison with printing them, copying by hand was so unpleasant that it
might as well have been impossible."
+msgstr "C'était parce que des livres étaient copiés une
fois à ce moment-là. Il était dix fois plus dur d'en tirer
dix copies qu'une seule. Alors la presse a été inventée.
Et ceci n'a pas empêché les gens de copier les livres à la
main. Mais par comparaison avec le fait de les imprimer, les copier à la
main était si désagréable que cela pouvait rendre la
tâche tout à fait impossible."
+
+# type: Content of: <dl><dd><p>
+msgid "When books could only be made by mass production, copyright then
started to make sense and it also did not take away the freedom of the reading
public. As a member of the public who didn't own a printing press, you
couldn't copy a book anyway. So you weren't losing any freedom just because
there were copyrights. Thus copyright was invented, and made sense morally
because of a technological change. Now the reverse change is happening.
Individual copying of information is becoming better and better, and we can see
that the ultimate progress of technology is to make it possible to copy any
kind of information. [break due to turning of tape]"
+msgstr "Quand les livres ont pu être produits en masse, le droit
d'auteur commençait à avoir un sens. De plus, celui-ci n'a pas
confisqué la liberté de lecture publique, puisqu'en tant que
membre du public qui n'avait pas de presse vous ne pouviez pas copier de livre
de toute façon. Aussi vous ne perdiez aucune liberté à
cause du droit d'auteur. Il a été inventé et se comprenait
par un changement technologique. Or aujourd'hui le changement inverse se
produit. La copie individuelle d'information se fait de mieux en mieux et nous
pouvons voir que la finalité du progrès technologique est de
permettre de copier n'importe quel genre d'information… [coupure due
à la rotation de la bande]."
+
+# type: Content of: <dl><dd><p>
+msgid "Thus we are back in the same situation as in the ancient world where
copyright did not make sense."
+msgstr "Ainsi nous retournons dans la même situation que dans le monde
antique où le droit d'auteur n'avait pas de sens."
+
+# type: Content of: <dl><dd><p>
+msgid "If we consider our idea of property, they come from material objects.
Material objects satisfy a conservation law, pretty much. Yes it's true I can
break a chalk in half, that's not it, and it gets worn down, it gets consumed.
But basically this is one chair [pointing at a chair]. I can't just sort of
snap my finger and have two chairs. The only way to get another one is to
build it just the way the first one was build. It takes more raw materials, it
takes more work of production, and our ideas of property were evolved to make
moral sense to fit these facts."
+msgstr "Si nous considérons notre concept de propriété,
ça vient des objets matériels. Les objets matériels
satisfont une loi économique, plutôt pas mal. Oui c'est vrai, je
peux casser une craie en deux mais ce n'est pas ça, et elle va s'user,
se consommer. Mais fondamentalement ceci est une chaise [pointant une chaise du
doigt]. Je ne peux pas simplement claquer des doigts et en avoir deux. La seule
manière d'en avoir une deuxième, c'est de la construire comme l'a
été la première. Ça prend plus de matières
premières, plus de travail de production et nos idées de
propriété ont été développées pour
qu'il y ait un sens moral à ce que ces faits concordent."
+
+# type: Content of: <dl><dd><p>
+msgid "For a piece of information that anyone can copy, the facts are
different. And therefore the moral attitudes that fit are different. Our
moral attitudes comes from thinking how much it will help people and how much
it will hurt people to do certain things. With a material object, you can come
and take away this chair, but you couldn't come and copy it. And if you took
away the chair, it wouldn't be producing anything, so there's no excuse. I
somebody says: “I did the work to make this one chair, and only one
person can have this chair, it might as well me”, we might as well say:
“Yeah, that makes sense”. When a person says: “I carved the
bits on this disk, only one person can have this disk, so don't you dare take
it away from me”, well that also make sense. If only one person is going
to have the disk, it might as well be the guy who owns that disk."
+msgstr "Pour une partie d'information que tout le monde peut copier, les faits
sont différents. Les attitudes morales correspondantes sont
différentes. Les attitudes morales proviennent de la réflexion
sur le nombre de gens que cela va aider et le nombre de gens que cela va
léser de faire certaines choses. Lorsqu'il s'agit d'objet
matériel, vous pouvez venir emporter cette chaise mais vous ne pouvez
pas venir la copier. Et si vous emportiez la chaise, elle ne produirait rien,
il n'y a aucune excuse. Si quelqu'un dit : « J'ai
travaillé pour faire cette chaise, une seule personne peut avoir cette
chaise, ça peut aussi bien être moi », nous pourrions
aussi bien dire : « Ouais, c'est
compréhensible ». Quand une personne dit :
« J'ai gravé les bits sur ce disque, une seule personne peut
l'avoir alors n'essayez pas de me l'enlever », ça se comprend
aussi. Si seulement une personne peut avoir le disque, ça pourrait aussi
bien être celui qui le possède."
+
+# type: Content of: <dl><dd><p>
+msgid "But when somebody else comes up and says: “I'm not going to hurt
your disk, I'm just gonna magically make another one just like it and then I'll
take it away and then you can go on using this disk just the same as
before”, well it's the same as if somebody said: “I've got a magic
chair copier. You can keep on enjoying your chair, sitting in it, having it
always there when you want it, but I'll have a chair too”. That's good."
+msgstr "Mais quand quelqu'un d'autre arrive et dit : « Je ne
vais pas abîmer votre disque, je vais juste en faire un autre comme lui
par magie et je l'emmènerai et vous pouvez continuer à utiliser
ce disque comme vous le faisiez avant ». Bien, c'est la même
chose que si quelqu'un disait : « J'ai un copieur magique de
chaise. Vous pouvez continuer à profiter de votre chaise en l'ayant
toujours à disposition mais j'en aurai une aussi ». C'est
bon."
+
+# type: Content of: <dl><dd><p>
+msgid "If people don't have to build, they can just snap their fingers and
duplicate them, that's wonderful. But this change in technology doesn't suit
the people who wants to be able to own individual copies and can get money for
individual copies. That's an idea that only fits conserved objects. So they
do their best to render programs like material objects. Have you wondered why,
when you go to the software store and buy a copy of a program it comes in
something that looks like a book? They want people to think as if they were
getting a material object, not to realize what they have really got in the form
of digital copyable data."
+msgstr "Si les gens peuvent ne pas avoir à construire mais juste
à claquer des doigts et reproduire, c'est merveilleux. Mais ce
changement technologique ne convient pas aux gens qui voudraient pouvoir
posséder des copies particulières et en tirer de l'argent. C'est
une idée qui ne correspond qu'aux objets conservables. Aussi ils font
leur possible pour transformer les programmes en objets matériels. Vous
êtes-vous demandé pourquoi quand vous allez dans un magasin de
logiciel et que vous achetez une copie de programme, cela revient à
acheter quelque chose qui ressemble à un livre ? Ils veulent que
les gens imaginent qu'ils obtiennent un objet matériel, pas qu'ils
réalisent que ce qu'ils ont vraiment obtenu est sous forme de
données numériques copiables."
+
+# type: Content of: <dl><dd><p>
+msgid "What is a computer after all but a universal machine? You've probably
studied universal Turing machines, the machines that can imitate any other
machine. The reason a universal machine is so good is because you can make it
imitate any other machine and the directions can be copied and changed, exactly
the things you can't do with a material object. And those are is exactly what
the software hoarders want to stop the public from doing. They want to have
the benefit of the change in technology, to universal machines, but they don't
want the public to get that benefit."
+msgstr "Après tout, qu'est-ce qu'un ordinateur à part une
machine universelle ? Vous avez probablement étudié les
machines universelles de Turing, des machines qui peuvent imiter n'importe
quelle autre machine. La raison pour laquelle une machine universelle est si
bonne, c'est que vous pouvez lui faire imiter n'importe laquelle. Et les modes
d'emploi peuvent être copiés et changés, tout ce que vous
ne pouvez pas faire avec un objet matériel. Et c'est exactement ce que
les accapareurs de logiciel veulent que le public arrête de faire. Ils
veulent avoir l'avantage du changement technologique vers les machines
universelles mais ils ne veulent pas que le public l'obtienne."
+
+# type: Content of: <dl><dd><p>
+msgid "Essentially they are trying to preserve the “material object
age”, but it's gone, and we should get our ideas of right and wrong in
sync with the actual facts of the world we live in."
+msgstr "Pour l'essentiel, ils tentent de conserver « l'âge de
l'objet matériel » mais celui-ci est fini et notre conception
du vrai et du faux devrait être synchrone avec les faits réels du
monde dans lequel nous vivons."
+
+# type: Content of: <dl><dt>
+msgid "<b>Q</b>: So it boils down to ownership of information. Do you think
there are any instances where, you opinion, it's right to own information?"
+msgstr "<b>Question :</b> Ainsi ça réduit les droits de
propriété de l'information. Pensez-vous qu'il y ait des exemples
où, selon vous, il est bon de posséder l'information ?"
+
+# type: Content of: <dl><dd>
+msgid "<b>A:</b> With information that's not generally useful, or is of a
personal nature, I would say it's OK. In other words not information about how
to do things, but information about what you intend to do. Information whose
only value to others is speculative, that is they can take some money away from
you, but they can't actually create anything with it. It's perfectly
reasonable I'd say to keep that sort of thing secret and controlled."
+msgstr "<b>Réponse :</b> Pour une information qui n'est pas utile
au public ou à caractère personnel, je dirais OUI. En d'autres
termes, pas l'information sur la manière de faire les choses mais sur ce
que vous avez l'intention de faire. L'information dont la seule valeur pour les
autres est spéculative. Celle qui leur permet de vous faire perdre de
l'argent mais avec laquelle ils ne peuvent réellement rien créer.
Je dirais qu'il est parfaitement raisonnable de garder ce genre de chose secret
et sous contrôle."
+
+# type: Content of: <dl><dd><p>
+msgid "But in terms of creative information, information that people can use
or enjoy, and that will be used and enjoyed more the more people who have it,
always we should encourage the copying."
+msgstr "Mais en termes d'information créatrice, celle que les gens
peuvent utiliser ou dont ils peuvent profiter et qui le sera d'autant plus que
plus de gens l'auront, nous devrions toujours en encourager la copie."
+
+# type: Content of: <div>
+#. TRANSLATORS: Use space (SPC) as msgstr if you don't have notes.
+msgid "*GNUN-SLOT: TRANSLATOR'S NOTES*"
+msgstr " "
+
+# type: Content of: <div><p>
+msgid "Please send FSF & GNU inquiries to <a
href=\"mailto:address@hidden"><em>address@hidden</em></a>. There are also <a
href=\"/contact/\">other ways to contact</a> the FSF. <br /> Please send
broken links and other corrections or suggestions to <a
href=\"mailto:address@hidden"><em>address@hidden</em></a>."
+msgstr "Veuillez envoyer les requêtes concernant la FSF et GNU à<a
href=\"mailto:address@hidden"><em>address@hidden</em></a>. Il existe aussi <a
href=\"/contact/\">d'autres moyens de contacter</a> la FSF. <br /> Veuillez
envoyer les liens orphelins ou d'autres suggestions sur cette page Web aux <a
href=\"/people/webmeisters.html\">webmestres de GNU</a> àl'adresse <a
href=\"mailto:address@hidden"><em>address@hidden</em></a>."
+
+# type: Content of: <div><p>
+msgid "Please see the <a
href=\"/server/standards/README.translations.html\">Translations README</a> for
information on coordinating and submitting translations of this article."
+msgstr "Veuillez consulter le <a
href=\"/server/standards/README.translations.fr.html\">README des
traductions</a> pour des informations sur la coordination et la soumission de
traductions de cet article."
+
+# type: Content of: <div><p>
+msgid "Copyright © 1987 Richard Stallman and Bjrn Remseth"
+msgstr "Copyright © 1987 Richard Stallman et Bjrn Remseth"
+
+# type: Content of: <div><p>
+msgid "Permission is granted to make and distribute verbatim copies of this
transcript as long as the copyright and this permission notice appear."
+msgstr "La reproduction exacte et la distribution intégrale de cet article
est permise sur n'importe quel support d'archivage, pourvu que cette notice
soit préservée."
+
+# type: Content of: <div><div>
+#. TRANSLATORS: Use space (SPC) as msgstr if you don't want credits.
+msgid "*GNUN-SLOT: TRANSLATOR'S CREDITS*"
+msgstr "Traduction : Miluz.<br /> Révision : <a
href=\"mailto:trad-gnu@april.org\">trad-gnu@april.org</a>"
+
+# type: Content of: <div><p>
+#. timestamp start
+msgid "Updated:"
+msgstr "Dernière mise àjour :"
+
+# type: Content of: <div><h4>
+msgid "Translations of this page"
+msgstr "Traductions de cette page"
+
- www/philosophy/po stallman-kth.fr.po,
Cédric CORAZZA <=