EMACS wordt 50 jaar

Door Simson Garfinkel ’87, PhD ’05 20 oktober 2026

Bijschrift: Kunstwerk uit het EMACS-handboek van Richard Stallman uit 1981. Latere versies van het handboek hadden een omslag met een middeleeuwse ridder op een yak. De complexe maar speelse illustraties weerspiegelden de hackercultuur van die tijd. (Internet Archive)

Programmeren was vroeger een heel andere ervaring dan we nu kennen. Sterker nog, de eerste programmeurs schreven helemaal geen code; de zes vrouwen die in 1946 aan de ENIAC werkten, een van de eerste computers ter wereld aan de Universiteit van Pennsylvania, deden dit door fysiek schakelaars, kabels en plugborden te configureren.

Enkele jaren later programmeerden MIT-ingenieurs de Whirlwind door code te ponsen op papieren tape die vervolgens in het geheugen van de computer werd geladen, waardoor het een van de eerste "stored-program" machines werd. Later stapten zij en anderen over op ponskaarten, één kaart voor elke regel code.

Tegen het begin van de jaren 60 konden programmeurs met interactieve computers een "line editor" (regelredacteur) gebruiken om hun code te typen op teletypes: grote, luidruchtige machines met een toetsenbord en printer. Ze typten één regel code per keer, en hun werk werd opgeslagen op een draaiende harde schijf ter grootte van een moderne wasmachine. Er bestonden toen nog geen full-screen teksteditors, zoals we die nu kennen, waarmee programmeurs veel regels tegelijk op een scherm kunnen zien en wijzigen.

Een van de eerste instrumenten van dit type, EMACS, wordt dit jaar 50 jaar en is nog steeds veel gebruikt.

EMACS draaide in 1976 voor het eerst op de vroege videoterminals van het MIT Artificial Intelligence Laboratory, maar de kernconcepten waren zo krachtig dat het in de daaropvolgende decennia voor veel verschillende besturingssystemen werd herschreven. Apple leverde het zelfs mee met Mac OS X. Daarnaast hielp de gemeenschap voor het delen van software die rond EMACS ontstond bij het ontstaan van de moderne beweging voor vrije software en het GNU/Linux-besturingssysteem.

De wortels van EMACS

De oorsprong van EMACS ligt bij de TECO-teksteditor (oorspronkelijk de "Tape Editor and Corrector"), die Dan Murphy ’65 in 1962 creëerde voor de pioniers-computer PDP-1 aan MIT. De commando's van het programma waren hoofdletters: een gebruiker typte "I" om tekst in te voegen, "D" om een teken te verwijderen, enzovoort. Toen tape als opslagmedium werd vervangen door bestanden op een enorme gedeelde schijf, kwam de "T" in "TECO" te staan voor "Text". Na verloop van tijd werd TECO een volledige taal die programmeurs konden gebruiken om nieuwe commando's te maken, zogenaamde macro's, voor het bewerken van hun code.

In het najaar van 1971 creëerde Carl Mikkelsen ’76 Control-R, een add-on programma voor TECO dat gebruikmaakte van "glass teletype" terminals met videoschermen. Control-R toonde wijzigingen in het bewerkte bestand direct op het scherm; de programmeur hoefde niet langer elke regel opnieuw uit te printen om de wijzigingen te zien. Het nadeel was dat het scherm slechts een paar regels code tegelijk kon tonen.

"Ervaren en geavanceerde gebruikers vonden EMACS aanzienlijk bruikbaarder dan enige van de voorgaande vormen van bewerken." — Bernard S. Greenberg, SM ’74

Van Control-R naar EMACS

In 1976 zag Richard M. Stallman, een onderzoeker bij het MIT AI Lab, tijdens een bezoek aan het AI Lab van Stanford een full-screen editor genaamd "E". Geïnspireerd keerde hij terug naar MIT en begon hij Control-R te verbeteren. De belangrijkste wijziging in de onderliggende structuur van het programma was dat elke toets een eigen macro uitvoerde wanneer deze werd ingedrukt, waardoor Control-R veel gemakkelijker aan te passen was. De hackers van het lab namen Stallmans code met enthousiasme over en begonnen commando's te wijzigen en toe te voegen.

Dat zorgde voor een probleem voor Guy Steele Jr., SM ’77, PhD ’80. Als promovendus in het lab moest Steele regelmatig andere lableden helpen bij het debuggen van hun programma's. "Ik merkte dat het veel moeilijker voor me was om iemand te helpen die een van deze pakketten gebruikte dan iemand die gewoon TECO gebruikte," herinnert hij zich. "Uiteindelijk schoot het me te binnen om te proberen een consensus te bereiken over een standaardset Control-R-commando's die iedereen zou kunnen gebruiken."

David Moon ’75, een ander lid van het lab, hielp mee. Stallman sloot zich ook aan en nam uiteindelijk de leiding over. Samen wees de groep een standaardset commando's aan die gebruikmaakten van de Meta-toets, die op veel van de vroege toetsenborden van het lab zat: Meta-F verplaatste de cursor een woord vooruit, Meta-B een woord terug, enzovoort. Ze noemden het resultaat EMACS, kort voor "Editor Macros" of "Editing Macros". "Mijn doel was niet om een geweldige nieuwe teksteditor te bouwen," zegt Steele. "Ik probeerde een sociaal probleem op te lossen."

Desalniettemin was EMACS een geweldige nieuwe teksteditor. Waar Control-R lastig kon zijn, konden EMACS-gebruikers "zonder enige technische ervaring" binnen enkele minuten of een uur leren hoe ze brieven, e-mails en zelfs programma's moesten bewerken, volgens een geschiedenisverslag van Bernard S. Greenberg, SM ’74. Ondertussen vonden "ervaren en geavanceerde gebruikers EMACS aanzienlijk bruikbaarder dan enige van de voorgaande vormen van bewerken."

Stallman begon EMACS te distribueren aan iedereen die hem een magneetband en een gefrankeerde retour envelop stuurde. "EMACS kost niets; in plaats daarvan word je lid van de EMACS-gemeenschap voor het delen van software," schreef hij in het handboek uit 1981. "De voorwaarde voor het lidmaatschap is dat je alle verbeteringen die je aan EMACS aanbrengt, terugstuurt."

Bijschrift: Programmeringshandleidingen voor het Multics-besturingssysteem. Terwijl hij bij Honeywell werkte, schreef Bernard S. Greenberg zijn eigen versie van EMACS voor het systeem. Deze was zo goed dat Honeywell het commercialiseerde. (MIT MUSEUM)

Commercialisering en de GNU-beweging

Greenberg besloot ondertussen zijn eigen versie te schrijven voor Multics, een vroeg besturingssysteem dat op dat moment in handen was van zijn werkgever, Honeywell. De EMACS van Greenberg won in 1980 de eerste prijs op de International Honeywell Software Conference, waarna Honeywell het begon te verkopen. Honeywell was niet de enige die een versie van EMACS vermarktte: James Arthur Gosling, een afgestudeerde van Carnegie Mellon die later de ontwikkeling van de programmeertaal Java zou leiden, maakte een versie die hij uiteindelijk als commercieel product verkocht.

Deze overgang van gratis naar betaalde software spoorde Stallman uiteindelijk aan om een project te starten voor het creëren van een besturingssysteem dat vrij gedeeld en door gebruikers verbeterd kon worden. Hij modelleerde deze inspanning, het GNU Project, naar het steeds populairder wordende Unix-besturingssysteem van Bell Labs. "GNU" was kort voor "GNU's Not Unix", een verwijzing naar het feit dat het, in tegenstelling tot Unix, gratis zou zijn.

De eerste grote applicatie van het project was GNU Emacs (nu geschreven met kleine letters). Het GNU/Linux-besturingssysteem was nog jaren verwijderd, dus ondanks het doel om een volledig vrij besturingssysteem te creëren, draaide GNU Emacs aanvankelijk op Unix. Uiteindelijk zou het draaien op een reeks besturingssystemen, waaronder Linux maar ook andere Unix-gebaseerde systemen. Toen Apple in 2001 Mac OS X lanceerde, de eerste release van hun Unix-gebaseerde besturingssysteem, was GNU Emacs inbegrepen.

Apple stopte in 2019 met het leveren van GNU Emacs, maar het bedrijf heeft nog steeds een programma genaamd mg ("Micro GNU Emacs"). Hoewel het de meeste EMACS-commando's ondersteunt, mist het een geïntegreerde programmeertaal, waardoor het door sommigen een "surrogaat-EMACS" wordt genoemd.

Ondertussen heeft een groot deel van het besturingssysteem van Apple nog steeds verborgen ondersteuning voor EMACS-commando's. Het toetsenbord heeft geen Meta-toets, maar Control-Option-B verplaatst de cursor één woord terug, en Control-Option-F één woord vooruit.