L'Emacs originel est né dans les années 70 au MIT. Il a été écrit par Richard Stallman, initialement avec Guy Steele, un informaticien américain, spécialiste de la conception de langages de programmation et impliqué dans la conception de Common Lisp, Scheme, Fortran 90 et Java. L'Emacs originel ne fonctionnait que sur PDP-10, un ordinateur créé à la fin des années 1960 par Digital Equipment Corporation. De nombreuses versions d'Emacs ont donc été écrites dans les années suivantes pour d'autres systèmes informatiques, notamment pour les machines Lisp, des ordinateurs conçus pour interpréter Lisp efficacement et nativement. Emacs n'a pas tout de suite été écrit pour Unix.
Le premier éditeur similaire à Emacs à fonctionner sur UNIX est Gosling Emacs développé en 1981 par le créateur du langage Java, James Gosling. Il est écrit en langage C et son langage d'extension, Mocklisp, a une syntaxe très similaire au Lisp, mais n'a pas de liste ou d'autre type de données structurées. Gosling a en premier lieu permis de redistribuer Gosling Emacs sans restriction formelle, mais l'a vendu à Unipress Software en 1984, le rendant ainsi logiciel propriétaire.
Après Gosling Emacs, Richard Stallman a écrit sa deuxième implémentation d'Emacs, elle aussi développée en C et fonctionnant sous Unix. Le père du mouvement du GNU a-t-il volé le code source de James Gosling ? C'est ce qui semble ressortir d’une interview de James Gosling qui date du mois de mars, mais qui fait surface à un moment où la réputation et le leadership de Richard Stallman sont déjà mis à mal par l’affaire Epstein.
James Gosling : RMS a copié tout mon code source et juste changé les notes de copyright
James Gosling est interrogé sur son histoire par Hansen Hsu et Marc Weber du Computer History Museum. Près de trois heures s'écoulent et on aborde l'Emacs de Gosling. Dans le vif du sujet (après 2h53min) et rebondissant sur ce que racontait le créateur de Java, Hsu pose une question. « Alors, votre algorithme d'affichage a été incorporé par Richard Stallman dans GNU Emacs ? » En guise de réponse, Gosling affirme : « En fait, c'était plus que ça. Il a essentiellement pris tout le code source... C'est vrai. [GNU Emacs] a commencé avec tout mon code source et [RMS] a juste modifié les notes de copyright ».
« Vraiment ? Il a donc simplement volé votre programme... et l'a revendiqué comme étant le sien ? » Lance Hsu, qui ne manque pas de rire, apparemment étonné d'une telle déclaration. Mais James Gosling confirme ce qu'il vient de dire : « Ouais », avec un long soupir, donnant l'impression d'être gêné par une triste vérité qu'il venait de révéler. Il ne trouve presque plus les mots pour continuer pendant quelques secondes. Puis il commence à donner plus de détails sur l'histoire.
Ce qui s'est passé, d'après le créateur du langage Java, c'est qu'à cette époque, il est arrivé à une étape dans ses études où il a compris que soit il devenait "Mr Emacs" à vie, soit il accordait plus de temps à ses études pour obtenir son diplôme, et il a estimé qu'obtenir le diplôme était plus important. Alors, il s'est tourné vers tous ceux qui étaient susceptibles d'être intéressés par son Emacs pour leur demander s'ils voulaient en assurer la maintenance. Il s’est tourné notamment vers des gens du MIT, de l'UCLA, etc. Tous appréciaient bien Emacs, mais ils avaient tous des emplois à plein temps. Donc personne ne pouvait s'en occuper.
« J'ai même demandé à Stallman, et sa réponse n'était pas juste "non", c'était plutôt un "non" catégorique, surtout parce que c'était pour Unix... Le fait est qu'à cette époque, pour Stallman, Unix était le diable et il l'a clairement fait savoir", explique James Gosling qui a toutefois réussi à trouver deux personnes qui étaient prêtes à maintenir Gosling Emacs. Elles dirigeaient une petite entreprise appelée Unipress. James Gosling leur a demandé de faire en sorte que le programme soit gratuit pour les universités et à un prix dérisoire pour les autres utilisateurs. Et ils ont dit : « Bien. Nous sommes juste deux gars dans un garage. Nous n'avons pas besoin de beaucoup. Et [Gosling Emacs] semble être assez populaire, alors nous pensons que nous pourrons avoir de quoi payer notre loyer et nous nourrir. » C'est ainsi que Gosling Emacs a été cédé à la petite entreprise. Mais Stallman semble avoir été terrifié par l'idée que l'Emacs de Gosling était devenu un logiciel propriétaire alors que l'Emacs originel qu'il a écrit était associé à un esprit de partage et de coopération.
James Gosling, en 2005
« Stallman panique et il se procure une copie de mon code source, et modifie beaucoup de choses. En réalité, il ne l'a pas fait. Il a juste édité la quasi-totalité des en-têtes de droits d'auteur, avant de republier le programme sous le nom de GNU Emacs. Et ensuite, IBM et Digital Equipment (DEC) l'ont récupéré et commencé à le distribuer », explique Gosling. « Ainsi, les deux types dans le garage qui se débrouillaient bien ont soudainement découvert qu'IBM et DEC distribuaient leur produit gratuitement et qu'ils étaient en train de faire faillite. Ils ont donc décidé de poursuivre DEC et IBM. Cela s'est transformé en un très grand procès et ils ont gagné. C'était une sorte de victoire à la Pyrrhus. Donc, IBM et DEC leur ont payé des dommages, mais cela n’a pas arrêté GNU Emacs. »
« C'est ainsi que les choses se sont poursuivies et que ces gars-là ont changé d'activités, ce qui m’a toujours fait me sentir mal, car ils se sont vraiment fait avoir. Eh oui, donc au tout début de GNU Emacs, c'était littéralement ligne pour ligne [mon code source] ». James Gosling explique qu'il y a des « témoins experts » qui ont fouillé dans le code source de Richard Stallman et qui ont reconnu que c'était pareil à son code. « Ils ont en fait découvert que rien n'avait été changé dans certains des premiers fichiers sources de GNU Emacs distribués. » Mais ensuite, cela a évolué pour devenir le GNU Emacs que tout le monde utilise aujourd'hui.
L'interview révèle encore que lorsque l'entreprise Unipress a traduit IBM et DEC en justice, elle a ignoré Stallman simplement parce qu'il n'avait pas d'argent. « Je veux dire, vous ne pouvez pas poursuivre un sans-abri, n'est-ce pas ? Vous savez, [Stallman] avait des opinions étranges sur les modèles économiques de l'époque », explique Gosling dans la vidéo suivante (lire à partir de 2:53), où il raconte comment Stallman lui aurait piqué son code source.
RMS : Gosling semblait être influencé par le même esprit de partage et de coopération que celui de l'Emacs originel, mais il a changé par la suite
En 2002, RMS partageait son expérience avec Lisp et le développement de GNU Emacs. Parlant de sa deuxième implémentation d'Emacs, voici un extrait des propos du père du mouvement du logiciel libre : « Le langage de bas niveau n'était plus du langage machine, mais du C. C'était un bon langage, efficace pour des programmes portables fonctionnant dans un système d'exploitation de type Unix. Il y avait un interpréteur Lisp, mais j'ai implémenté des méthodes pour les tâches spéciales d'édition directement en C : manipuler les piles de l'éditeur, insérer des interlignes, lire et écrire des fichiers, réafficher la pile à l'écran, gérer les fenêtres de l'éditeur. »
« Cela dit, ce n'était pas le premier Emacs écrit en C et fonctionnant sous Unix. Le premier a été écrit par James Gosling et s'appelait GosMac. Une chose étrange est arrivée à Gosling. Au début, il semblait être influencé par le même esprit de partage et de coopération que celui de l'Emacs originel. J'ai d'abord distribué l'Emacs originel aux gens du MIT. Quelqu'un voulait le porter sur Twenex – il fonctionnait à l'origine sur l'Incompatible Timesharing Systema (ITS) que nous utilisions au MIT. Ils l'ont porté sur Twenex, ce qui signifiait qu'il y avait quelques centaines d'installations dans le monde qui pouvaient éventuellement l'utiliser. Nous avons commencé à le leur distribuer, en posant comme règle que « vous deviez renvoyer toutes vos améliorations » pour que tout le monde en bénéficie. Personne n'a jamais essayé de faire appliquer cette règle, mais autant que je sache les gens coopéraient effectivement. »
« Au début, Gosling avait vraiment l'air de collaborer dans cet esprit. Il a écrit dans un manuel ce qu'il appelait le programme « Emacs » en espérant que d'autres dans la communauté l'amélioreraient jusqu'à ce qu'il soit digne de ce nom. C'est la bonne approche pour créer une communauté : demander aux gens de se joindre à vous pour participer à l'amélioration du programme. Mais après cela, il a apparemment changé d'état d'esprit et vendu le programme à une entreprise », explique Richard Stallman, avant de continuer :
« À ce moment-là, je travaillais sur le système GNU (un système d'exploitation libre de type Unix que beaucoup de gens nomment par erreur « Linux »). Il n'y avait pas d'éditeur Emacs libre fonctionnant sur Unix. J'avais en revanche un ami qui avait participé au développement de l'Emacs de Gosling. Gosling lui avait donné, par courriel, la permission de distribuer sa propre version. Il m'a proposé d'utiliser cette version. Puis j'ai découvert que l'Emacs de Gosling n'avait pas réellement de Lisp. Il avait un langage de programmation connu sous le nom de « mocklisp », qui ressemblait à la syntaxe à Lisp, mais n'avait pas ses structures de données. Donc les programmes n'étaient pas des données et des éléments vitaux de Lisp manquaient. Ses structures de données étaient les chaînes de caractères, les nombres et quelques autres choses spécialisées. »
« J'en ai conclu que je ne pouvais pas l'utiliser et qu'il me fallait tout reprendre à zéro, à commencer par l'écriture d'un véritable interpréteur Lisp. J'ai progressivement adapté toutes les parties de l'éditeur aux structures de données du vrai Lisp plutôt qu'à des structures de données ad hoc, de manière à permettre aux programmes Lisp des utilisateurs d'accéder aux structures de données des parties internes de l'éditeur pour les manipuler. »
Richard Stallman
« Ce second Emacs était du « logiciel libre » dans le sens moderne du terme ; il faisait partie d'une campagne politique explicite pour libérer le logiciel. L'essence de cette campagne était que chacun devait être libre de faire les choses que nous faisions au temps du MIT, travailler ensemble sur du logiciel et travailler avec qui voulait travailler avec nous. C'est la base du mouvement du logiciel libre – l'expérience que j'ai eue, la vie que j'ai vécue au labo d'IA du MIT : travailler sur le savoir de l'humanité, sans empêcher qui que ce soit de le réutiliser et de le disséminer. »
Votre avis
Richard Stallman a-t-il vraiment volé le code de James Gosling ? La question se pose encore étant donné que rien dans les propos de Stallman ne laisse croire qu'il aurait copié le travail de James Gosling. Il affirme être parti de zéro.
La chose certaine est que Stallman n'a jamais cherché à se faire de l’argent sur Emacs. Il a voulu simplement le garder « libre ». Mais s'il s'avère que James Gosling a raison, la motivation de Stallman justifie-t-elle ce dont il est accusé par quelqu'un d'aussi respecté que le créateur de Java ?
Sources : Transcription de l'interview de James Gosling, Richard Stallman (Mes expériences avec Lisp et le développement de GNU Emacs)
Et vous ?
Qu'en pensez-vous ?
S'il s'avère que James Gosling a raison, la motivation de Stallman justifie-t-elle ce dont il est accusé ?
Voir aussi :
Richard Stallman était invité à prendre la parole au siège de Microsoft Research, l'initiateur du mouvement du logiciel libre partage son expérience
RedHat recommande la « diversité » au conseil d'administration de la FSF pour la succession de Richard Stallman dans une lettre ouverte
Un ancien mainteneur de noyau de GNU partage ses réflexions sur le départ de Richard Stallman : « il est temps que la communauté des logiciels libres quitte l'adolescence et passe à l'âge adulte »
« Richard Stallman ne parle pas et ne peut pas parler au nom du mouvement du logiciel libre », a déclaré la Software Freedom Conservancy qui désapprouve ses commentaires sur l'affaire Jeffrey Epstein