I just finished reading the paper A History of Erlang by its inventor Joe Armstrong. It’s really a fascinating story and I can really recommend reading Joe’s own words regarding the invention and development of the language.
Back in the late 80′s and beginning of the 90s I spent some time with Joe and the other guys around Erlang. I wasn’t an Erlang advocate myself, rather the oppsite and we had several debates regarding object-orientation versus process-orientation. I belonged to the C++ camp. Anyway it was fun and I became interested in the language.
At this time I had just started as an assistant professor teaching real-time systems programming at Royal Inst of Technology (KTH). At first, I was looking at Ada as the teaching language to use. However, the compiler license alone exceeded my course budget. Instead I found Concurrent C, which was a hybrid languge provided a superset of Ada’s message passing mechanism on top of ordinary C. As a companion to Concurrent C, I selected Erlang, which allowed me to illustrate both different solutions but also common design patterns in the field of concurrent programming. At this time when I started with academic education in Erlang I was the first in the world
Well, enough talk about me.
What I really would like to draw to your attention is the organizational environment of the Erlang team. Erlang started as a research project in concurrent language design using logic programming languages as the basis. Prolog was the primary choice, however it was rather a rapid implementation language for various design ideas. In the beginning of the 90s, Ericsson was involved in a large project intended to be the future and replacement of AXE-10, which was the major revenue machine since the 70s. The project was named AXE-N and it focused on C++ and object-orientation from the language point of view. In this context, a semi-functional and concurrent language as Erlang, was simply as plugging a square into a round hole. So Erlang was sort of persona non-grata. During this time period nobody outside the Erlang team cared about the language and they were free to do almost anything they wanted, such as building up a user base outside Ericsson.
However, AXE-N had a lot of wrong premisses and soon things started to crack. I was a supervisor for several MSc thesis projects at the time, and acquired some technical insights, which convinced me that this couldn’t end happily. In 1995, AXE-N project finally collapsed and a lot of money had been wasted. One immediate conclusion was that it must be something wrong with C++ and it became banned. The aftermath of that ban can still be felt here and there within Ericsson.
Now, Erlang became reconsidered and selected as the primary language for the resurrected AXE-N project. One consequence was that Erlang now was considered a company assest and the external user base just an unconvenience. On the flip side was the team got heavily funded and they could grow the team several times the original size. It was during these years the Erlang library OTP was formed. In many respects, this was a fruitful time period of Erlang.
However, nothing lasts forever. In 1998, the halcyon days was over. Well, the year started with great achievement. They demonstrated a GPRS system at the GSM World Congress and at CeBIT. But some fractions within Ericsson didn’t like the idea of a symbolic, functional and concurrent language. During spring 1998, they had mobilized enough organizational power to issue an ‘anathema’ of Erlang.
This couldn’t and cannot be described without using the word ‘catastrophe’. The team was devastated and became disillusioned. People started to drop off. During the fall of that year a plan took form of resistance. Step one of the plan was to convince the organization that Erlang could be released as open source.
On 2 December 1998, Erlang was announced to be open source. A few days after, the whole Erlang team resigned and went to the newly created company Bluetail.
Bluetail, was initially a great success. But they couldn’t sustain the dot gone crash. Bluetail was first acquired by Alteon Web Systems and six days later that company was acquired by Nortel Networks. One of the major competitors of Ericsson. Shortly after, Nortel became a victim of the telco crash and most of the work force of former Bluetail was fired.
Since these turbulent days, Erlang has slowly raised from the ashes primarily as an open source project. Recently it has gained a lot of attention when people realized that there are some impressive Erlang applications out there. Such as the chat system of Facebook, the SimpleDB of Amazon WebServices (AWS), several financial systems such as Kreditor. A good overview of the state of the art usage of Erlang is the recent London conference. The master himself (Joe) gave a talk about Erlang in retrospect.
In summary, the life of Erlang has been a real roller-coaster. Now let’s go back in time to the early years of Erlang. At the same time Erlang was cooking in the lab of Ericsson (Ellemtel in Älvsjö, south of Stockholm), another language was cooking outside Standford University. Its name was -at that time- Oak. Oak was from the beginning supported by its hosting company. However, it didn’t reached its objective and was terminated in 1994. During the termination party one member demonstrated a demo of a web browser that could load Oak programs dynamically and make the “dead” web page alive. This was a turning point and the project resurrected to investigate how to best utilize the new program form called applet. The language changed name to -I’m convinced you’ve already guessed it- Java. The rest is what is frequently called ‘history’.
Now, compare these two languages. They were created more or less at the same time. Erlang had a head start. Both are dynamic. Both has built-in support for concurrency, although comming from different angles. Both are designed with fault-tolerance in mind. Both has support for dynamic code replacement.
Erlang failed to reach the masses and Java succeeded. One might argue that the world wasn’t ready for functional programming in the mid-90s and the step from C++ to Java was a very smooth step to take. This is indeed a fair standpoint.
On the other hand, Java was all the time treated as a loving child by its hosting company (Sun), but Erlang as an unwanted child by Ericsson. I’m convinced this is the key explanation why we are not programming E2EE applications today. What a pity.
A final word; you might wonder where comes my recent interest in Erlang from. The reason is I’m about to start develop a course in Basic Erlang for Informator intended for Ericsson. After 20 years, the loop is closed.


A few comments.
It is not true that the whole team resigned. In 1996, two major product development projects started, that used Erlang as its core technology. This is also when OTP was born, and the responsibility for Erlang was transfered from the Comp Sci lab to a more regular Ericsson design unit. Of the people who left for Bluetail, most were CSLab, and a few were at the OTP unit. There were enough Erlang experts available to replace those who resigned (who were actually involved in the main Erlang/OTP development), and the show could go on.
Also, AFAIR, Nortel didn’t fire most of the Bluetail team. Some, who were not actively working on the product, were let go. By now, I think they’ve all gone on to other things, but a significant part of the Bluetail gang developed several products for Alteon/Nortel first. Kreditor, Tail-f and Synapse were three companies started by (or with great help from) ex-Bluetail people.
BTW, CSLab, after transfering Erlang into production, went on to research other things that unfortunately didn’t see the light of day. They did some tremendously exciting stuff code-named “Communication machine”. Exaggerating a little bit, it was the IPhone 10 years ahead of time, with clunkier hardware.
Indeed there is something wrong with C++, just as there is something wrong with every language. It is the wrong tool for many of the types of project that large telecommunication companies run. I think using C++ for building complex distributed soft-real-time products in projects with several hundred developers is simply asking for trouble. I will stipulate that small teams of very experienced programmers can do almost anything in C++, but what this too often translates to is that they build a brilliant prototype that is then transferred into a large project with mere mortals who will find a hundred different ways of shooting themselves not just in the foot, but in all parts of the body.
thats funny
Pretty cool post. I just stumbled upon your blog and wanted to say
that I have really liked reading your blog posts. Anyway
I’ll be subscribing to your blog and I hope you post again soon!
Hmm. Is it true?