Lite erlagd Erlang historia

Det inte ovanligt att bakgrunden till ett programmeringsspråk ibland rymmer en del motgångar. T.ex. språket Java uppstod som fågeln Fenix i askan efter Project Green, som bl.a. innehöll programspråket Oak. Det språket hade en för den tiden remarkabel egenskap, att kunna dynamiskt ladda in ny kod i ett exekverande system. Oak hade i sin tur inspirerats av ett annat system, som också hade blivit ett kommersiellt fiasko, nämligen det postscript-baserade fönstersystemet NeWS. Gemensamt för alla dessa var innovatören James Gosling. Under nedläggningsfesten i Colorado-bergen demonstrerade en utvecklare en webbläsare han utvecklat i Oak, som kunde ladda ned små Oak-fragment och animera saker-o-ting på webbsidan. Detta var 1994 och alla förstod att man skymtat framtiden. Resten är vad som kallas historia.

Men frågan är om inte Erlangs berg-o-dal-bane historia tar priset. Under slutet av 80-talet och början på 90-talet arbetade Joe Armstrong på Ericssons Datalogi labb i Älvsjö (söder om Stockholm) med utveckling av språket Erlang.

Den akademiska perioden

Till att börja med var detta ren forskning, men med inriktningen att identifiera ett lämpligt programspråk för nästa generations tele-växlar. Man byggde samma system i en rad olika programspråk, såsom Ada, Concurrent Pascal m.fl, utan att något av dem höll måttet. Dock blev Joe (och hans kolleger) intresserade av Prolog och mer specifikt Concurrent Prolog och dessa kusin Parlog. Både inspirerade av CSP, som var högsta akademiska mode just då. Detta ledde fram till ett samarbete mellan Ericsson, KTH-TDS och SICS, där man experimenterade fram ett nytt programspråk inom ramen för Prolog (meta-interpretator).

Med tiden så utkristalliserades ett programspråk som bar syntaxen av Prolog, men som exkverade mer som LISP och hade egenskaper hämtade från Actors-modellen. Man tyckte det var klart fyndigt att namnge språket som en hyllning till Agner Krarup Erlang, en matematiker som lade grunden för modern trafik-teori som används inom telecom-ssytem och att det samtidigt kunde uttydas som ERicsson LANGuage.

Under första halvan av 90-talet utvecklades språket och kapade banden till Prolog, med både egen virtuell maskin (JAM och senare BEAM) och kompilator skriven i språket själv (som sig bör). Det här var den akademiska perioden i Erlangs leverne.

Jag var vid denna tid adjunkt på KTH i Stockholm, och hade förmånen att umgås i samma forskarkretsar som Erlang-gänget. Vid denna tid var själv jag “fanatisk” C++ programmerare och ansåg att överlagring av komma-operator var nästan det bästa sedan skivat bröd 🙂 De gånger jag träffade Joe grälade vi mest om objekt-orienteringens förträfflighet eller fasa. Trots olika åsikter var jag ändå road av språket Erlang och när jag förde in språket i min undervisning om tråd-programmering på KTH 1991/1992, var det första gången som Erlang förekom i den vanliga akademiska undervisningen.

Erlang the Movie

Erlang hade egenskaper såsom fel-tolerans och möjlighet att dynamiskt ladda om kod i ett exekverande system. Detta demonstrerades förtjänstfullt av den video som spelades in, kallat Erlang the Movie. Missa inte detta tidsdokument.

Filmen inleds av Bjarne Däcker (chef för DL-Lab), följt av Joe Armstrong och Mike Williams (team lead) som introducerar språket. I filmen görs telefonsamtal över en fysisk tele-växel (MD-110), som hanteras av Erlang. Program-exekveringen förklaras av Robert Virding framför en SUN-3 workstation.

För min undervisning på KTH, hade vi fått låna en portabel MD-110 av Bjarne och eleverna hade som en av sina labbuppgifter uppgiften att programmera ett litet tele-system i Erlang. Först körde de i en grafisk simulator, jag utvecklat. När deras program fungerade, bokade de tid för att köra på den riktiga hårdvaran. Gissa om det var uppskattat att se sin kod fungera “live”.

AXE-N Projektet

Utanför det labb Joe arbetade i, pågick något helt annat i resten av Ericsson (Telecom). Man arbetade med nästa generation av AXE växlar, kallat AXE-N. Önskan var att upprepa bedriften från 70-talet, när AXE-10 hade sopat mattan med konkurrenterna och lade grunden det världsomspännande företag som vi känner det idag. I detta mycket ambitiösa projekt fanns det två grundpelare, vad programutveckling beträffar, C++ och objekt-orienterad design. Emellertid, av outgrundliga skäl, saknades den tredje grundpelaren nämligen concurrent and real-time systems programming, eller rätt-o-slätt trådprogrammering.

Under denna tid ville man överhuvudtaget inte höra talas om Erlang. Man kan lugnt säga att Erlang-gänget var mobbade internt inom Ericsson, men mycket respekterade överallt annars.

Trots stora ambitioner och mycket satsade pengar, körde AXE-N projektet rätt in i bergväggen. Man kunde börja ana vartåt det lutade redan 1993, men det var först under 1994 som det stod klart för flertalet att AXE-N inte skulle lyfta. När väl slutet tillkännagavs, utsågs också en “syndabock”. Det blev språket C++, som också bannlystes. Självfallet var det inte C++, som var grundproblemet men det var bekvämt att kunna skylla på något enkelt. Detta lade också grunden för en fördom/misstänksamhet mot C++, som fortfarande än i våra dagar florerar här-och-där inom Ericsson.

Guld-åren

AXE-N kraschen kom däremot att betyda jackpott för Erlang-gänget, eftersom språket nu plötsligt utsågs till att vara det stora framtidslöftet. Under åren 1995-1998, så var detta Erlangs guld-år. Både pengar och mycket folk styrdes om till att vidareutveckla Erlang. Det var bl.a. under denna tid som applikations-biblioteket OTP utvecklades.

Katastrof-året

Men, säg den lycka som varar för evigt. Katastrof-året 1998 inleddes med en rad internationella framgångar. Erlang-gruppen demonstrerade ett GPRS system vid GSM World Congress och CeBIT konferenserna och framtiden såg gnistrande ljus ut. Trodde man.

I lönndom hade en annan fraktion på Ericsson lyckats övertala ledningen att några egen-utvecklade “konstiga” språk, skulle man inte hålla på med. Framtiden skulle stavas Java i stället och programspråks-utveckling skulle skötas av aktörer utanför Ericsson.

Med omedelbar verkan så bannlystes språket Erlang inom Ericsson, våren 1998. Alla resurser, som pengar och folk, drogs bort och pågående Erlang-baserade projekt fick order om att implementeras om i något annat programspråk. Det säger sig självt att det inte går att oförhappandes skriva om all programkod och ändå hålla projektens tidsramar. Vissa fiffiga projekt-ledare kom på idén att replikera med att “vi håller inte på med Erlang, vi håller på med OTP”. På så sätt kunde man köra vidare under radarn ett tag till. Så kom det sig att än i våra dagar kallas Erlang för OTP. Om du går till Erlangs nedladdningssida, så kan du se namngivningen som OTP Release 15.

En plan tar form

Givetvis var Erlang-teamet, med Joe i spetsen, förkrossade. Det stod helt klart att det inte fanns någon framtid för dem inom Ericsson. Då föddes tanken på en exit-strategi.

Joe lyckades övertala ledning att släppa språket fritt som open-source, eftersom företaget inte själva ville använda det. Sagt och gjort, efter den sedvanliga byråkratiska tiraden förklarades Erlang som open-source den 2  december 1998.

8 dagar senare, den 10 december 1998, slutade hela “kärn”-gänget kring Erlang. I hemlighet hade man skapat ett dot-com bolag med risk-kapital och hela baletten. Det nya företaget hette Blue-tail och blev mycket omskriven för sin spektakulära, fel-toleranta och skalbara mail-server skriven i Erlang.

Blue-tail gick upp i det blå

Strax efter millennieskiftet förvärvades bolaget av Alteon Web Systems och man “cash:ade in”. Bara några dagar senare förvärvades Alteon av Nortel Networks. Nortel var vid denna tid Ericssons argaste konkurrent. Tja, så kan det gå.

Emellertid, så slog telecom-krisen till och alla aktörer drabbades hårt. Vem minns inte dåvarande Ericsson-chefens svar på en fråga från en reporter:  “Är det ljuset i tunneln nu?” och svaret “Nä, snarare ett tåg”. Nortel drabbades hårdast och gick i konkurs, varpå det tidigare Erlang-teamet splittrades för vinden.

Erlang – Borta med vinden

Efter telecom-kraschen var Erlang i praktiken dött. Det levde vidare dock i en del system som fanns i produktion och givetvis i sinnet hos de forna hjältarna.

Erlang – Återkomsten

Med idogt folkbildnings-arbete på otaliga internationella konferenser och med lyckosam kombination av Internets framväxt och åtföljande krav på skalbarhet, så återhämtade sig Erlang under andra hälften av 00-talet. Många företag hade börjat leta efter ett språk som bättre kunde hantera ett mycket stort antal samtidiga operationer och kommunikations-konversationer. Erlang var svaret på många böner.

När sen självaste Facebook tillkännagav 2007 att deras nya chat-system var utvecklat i Erlang, blev intresset glödhett. Amazon utvecklade en NoSQL databas för sitt moln AWS, kallat SimpleDB. Damien Katz utecklade en egen NoSQL database kallat CouchDB. Här på hemmaplan grundlades företaget Kreditor (numera Klarna) av tre Handels-studenter och med hjälp av KTH-kompisar implementerades hela deras system i Erlang. Även aktie-mäklaren NordNet utvecklade vissa del-system i Erlang.

Erlang vs. Java – Hur det kunde ha varit

Under 90-talet utvecklades två programspråk, vilka har fler likheter än skillnader. Java av James Gosling och Erlang av Joe Armstrong. Båda språken exekveras med en virtuell maskin, JVM respektive BEAM (Bogdan’s Erlang Abstract Machine, efter Bogumil Hausman som först skapade Turbo Erlang). Båda språken var ursprungligtvis tänkta för inbyggda system, telecom för Erlang och konsument-elektronik för Oak (Java’s föregångare). Båda hade stöd för att dynamiskt ladda in kod i ett exekverande program. Båda hade stöd för feltolerans. Båda hade ett stort standard-bibliotek. Båda hade direkt stöd för såväl tråd-programmering som TCP kommunikations-programmering.

Men det fanns en avgörande skillnad i hur deras omgivning behandlade dem. Java, kan man säga, var ett älskat barn, medan Erlang var det oönskade och förskjutna barnet. Tänk, rent hypotetiskt, om Ericsson hade varit lika generösa med stöd och support för Erlang, som SUN Microsystem var för Java. Ja, då hade vi alla programmerat i Erlang i stället och implementerar webbsystem i E2EE.

Länkar