The ups and downs of Erlang

June 28, 2009 · Posted in Erlang · 4 Comments 

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.

Introscope extensions

June 26, 2009 · Posted in Java · Comment 

Back in January 2005 I joined an existing San Francisco based company named Wily Technology. This was the beginning of a few years of hectic traveling, hacking and trouble-shooting. Meaning I traveled around in Europe, mostly UK and Germany, working at customer sites (some very large banks) helping them with performance and problem analysis of large Java EE systems.

The tool Wily provided was named Introscope and was the first tool in its market segment when it started in 1999 and was the market leader all the time. One of my key missions was developing (hacking) numerous extensions for Introscope based on customer requests or my own observation of what I though the customers (or we professional consultants) needed.

As part of my re-launch of Ribomation as an independent consultant I have partnered with CA-Wily to partly do what I once did for Wily. Wily Technology was later acquired by CA. During this spring I have helped a governmental institution in Northen Sweden with a roll-out of Introscope as a monitoring solution for their Java systems.

One specific task was to enable alert integration with Tivoli. Back at the Wily era, I wrote an alert action extension for OpenView integration. In this case, I decided to make the extension more general and versatile, ant not tied to any specific SMC tool. The end-result is now released as open source and can be found here: SMC AlertAction.

New organization of RiboUtils

June 26, 2009 · Posted in Java · Comment 

When re-launched Ribomation in April this year I hastely re-organized the web site as well, moving this blog into blog.ribomation.com and setting up the new ‘corporate’ site using Drupal. Something I (intentionally) left for a later time was making a new home for RiboUtils, my over the years collection of small helper classes and tools.

Now have I started to take care of its new home. From now on you can find all RiboUtils at lib.ribomation.com. The starting page is extremely lame, but it show the links to the directory of the maven generated docs, the maven repo and the subversion repo.

What remains to do, is regenerating all maven docs updating the page links and import the sources into subversion. This is something I will do gradually, hrm…, some rainy day.