This group thought that they could US( our results as
a vehicle for investigate ing their own software architec-
tures. This began a period of collaboration which led
to the development of Erlang as a fully fledged lan-
guage and to a new range of Ericsson products.
During the period 1986-1988 members of the computer
science lab worked closely with the Bollmora group,
meeting once or twice a week. During this time the
Prolog interpretor (and the language which it defined)
changed rapidly, The language grew and evolved and
somewhere along the line acquired a name, Erlang,
named in honor of the Danish mathematician Agner
Krarup Erlang (1878- 1929) whose name is associated
with the telecoms industry.
The jam machine
By about 1988 is was clear that Erlang as it was now
called wss a good language for prototyping telephone
exchanges . It was a strange mixture, with declar-
ative features (inherited from Prolog), multi-tasking
and concurrency (inherited from EriPascaJ and Ada)
and an original combination of error handling mecha-
Erlang was, however, tar too slow to be used for prod-
uct development, The Bolhnora group did some mea-
surements and decideil t}lat for product development
they needed a system that was 40 times faster than
the Prolog interpreter
This requirement lead to the development of a number
of different abstract lnachines and compilation tech-
niques used for implementing Erlang. A cross compiler
from Erlang to Strand  was developed. After a num-
ber of experiments tht JAM  machine was invented.
This was based on the Warren Abstract Machine with
added primitives for concurrency and exception han-
By this time the Erlang effort had grown to three peo-
ple. Mike Wifliams wrote a byte code emulator for
JAM code, I wrote the compiler and Robert Virding
wrote the support libraries.
While we only ever distributed one version of the sys-
tem to externaf user:., internally there were severaf
competing Erlang “engines” where we experimented
with different implementation techniques.
The resulting JAM implementation was delivered to
the Bollmora group in 1989. Fortunately it was 70
times faster than the original Prolog interpretor - un-
fortunately they had now revised their original esti-
mates and wanted a machine that was 280 times faster
than the original.
During the period 1989-1994 the Erlang “group” ex-
panded (there has ne~,er been a formal group). Claes
Vikstrom joined the group in 1990 and added distribu-
tion to the language. The original language had been
designed with “hooks’ for adding distribution - but
this was Iiever actually done until Claes implemented
The Bollmora group had now decided to go ahead
and build a new PABX in Erlang. Erlang wasn’t fast
enough but it was generally thought that the perfor-
mance problems could be solved. In 1992 they started
development of a product called the “Mobility Server”,
In 199.5 this was launched and became part of the
“Consono” product range. At the time of writing the
Mobility Server is marketed in 12 countries. Among
other things it is used to control the DECT mobile
phone in the European Parliament in Strasbourg.
Fight for acceptance
During the period 1992-1996 it was by no means clear
that Erlang was suitable for programming large-scale
industrial products. While we were very successful in
a number of smalf projects, Erlang programming and
programmers stilf represented a very small percentage
of the programming effort at Ericsson.
The Mobility server project continued and we attracted
several new smalf projects. During this time we were
involved in maasive “guerilla marketing” activities. I
don’t think there was a single person in Ericsson who
ever came out of Bjarne’s3 office without a copy of the
Erlang manual under their arm!
Performance has always been a major problem. In
1992 Bogumil Hausman started work on the BEAM.4
The BEAM compiles Erlang to C which can then be
compiled with a conventional C compiler. The BEAM
can afso compife to threaded code which can be freely
intermixed with compiled code.
Compiled code is faster but takes up more space than
threaded code. In a large embedded system with mil-
lions of lines of code, the volume of object code can be
a major problem,
Infrequently used and non-performance critical parts
of the system can be compiled to threaded code while
performance critical parts of the system can be com-
piled to native code. There are performance tools
which we can use to analyse the system and find out
which parts of the system need to be native code com-
The BEAM is described in . In many applications
the BEAM is comparable with C in performance terms.
The BEAM replaced the JAM as the principle system
for new product development in 1997.
Up to 1995 most users were “enthusiasts” and Erlang
spread internally within Ericsson by “word of mouth”.
We didn’t find new users, they found us.
As the language spread we needed to produce training
material and hold courses to train new users. Initially,
all courses were held at the Computer Science Lab by
members of the Erlang “group”. Whife holding such
courses was great fun, demand soon far outstripped
In April 1993 a new company “Erlang Systems” was
formed to handle sales, marketing, education and con-
sulting of Erlang. We had been in the fortunate posi-
tion of having supervised a number of Master degree
Boss of the computer science lab.
4 Bogdans’s Erlang Abstract machine.