I liked this post about how open is Erlang/OTP as a development project. Being open is not only about having a free software or open source license, it is also about the way of managing the development process and the interactions inside the community.
According to that post, Erlang lacks a public development repository, a public bug tracker, and internal library documentation in order to be completely open.
I agree and would add a new thing that is lacking: an Erlang Foundation (similar to, for example, the Gnome Foundation) acting as an umbrella for coordinating all the efforts (projects, conferences, hackfests, tools, regional communities, marketing) and the different actors (users, developers and companies) cooperating around Erlang.
In other words: converting the Erlang language and platform in the “Erlang free software project”.
In November 2002, Joe Armstrong, one of the Erlang fathers, gave an invited talk at the Lightweight Languages Workshop (LL2), organized by the MIT.
The talk was titled “Concurrency Oriented Programming in Erlang”, and the video is still available in .ram format. The slides can also be downloaded from the web page.
I think that watching the talk -which is still very fresh almost 4 years later- is a really interesting way of learning more about the Erlang approach for programming complex distributed control systems.
Some years ago, during my stay at the Ericsson CSLab, I learnt from Joe that the key feature of Erlang was not being a functional language but being a distributed one, meaning by distributed that the concurrency model was built-in as a basic part of the language. In the talk, this concept is developed with all the detail.
Bruce Tate writes a nice article comparing the concurrency models in Java and Erlang (and talking about how Java could learn from Erlang) at IBM developerWorks.
If you got interested in Erlang after my previous blog entry on the topic, you probably want to know more about the community created around the language since it became Open Source in 1998. Well, here goes a list of interesting events, webpages and mailing lists related to the Erlang community:
- Open Source Erlang webpage, all kind of information and documentation related to the language and the platform can be found here.
- Erlang User Conference, yearly conference, hosted by Ericsson in Stockholm, where the last projects related to Erlang from a professional point of view are presented.
- Erlang Workshop, yearly conference, co-located with the PLI’s and the ICFP conferences, where the last projects related to Erlang from a research point of view are presented.
- erlang-questions mailing list, the main Erlang discussion list. There is more information about other mailing lists here.
- Planet Erlang, aggregates the
weblog entries of the Erlang users and developers.
- Erlang Foundation, is one of the fresh new ideas for expanding Erlang outside of the current community, but it is still under discussion. A proposal was presented in the Erlang User Conference 2004.
Erlang is a programming language designed in the late 80s at the Ericsson CSLab, a research laboratory that was in operation from March 1, 1984, to June 30, 2002, at Ericsson, Älvsjö, 10 minutes by commuter train from the center of Stockholm.
The language was designed for programming telecom systems, where handling concurrency, being fault tolerant, and having easy to maintain systems which are working 24×7 are some of the most important issues. After analyzing some of the available programming languages and technologies, the research group in charge of selecting the best language for Ericsson’s telecom systems, decided to implement a new one from scratch. About a decade later, after being used by Ericsson internally for several projects, in December 1998 the language was released as Open Source.
Erlang has several key features and advantages over other options:
- It is declarative, with a high abstraction level. In fact it has a lot in common with functional languages like Haskell or ML. This means less code, and easiest to maintain programs. There are some articles claiming that Erlang programs have four to ten times less code than C or Java programs.
- The language is process oriented (as opposed to object oriented), and handles massive concurrency and message passing. Concurrency and distribution are inside the language, not an addition as in Java or C.
- Hot code loading. Systems can easily be upgraded without stopping.
- Powerful fault tolerance mechanisms based in organizing the program in supervision trees.
- Transparent and very natural distribution. A program designed for working in a machine can be distributed among several ones almost without changing the source code.
- Independence from hardware and operating system.
- Open Telecom Platform (OTP): a set of applications, libraries, design patterns (Erlang behaviours), and programming rules and all kind of things for making life easier for people programming in Erlang
As a summary: Erlang is a very interesting language, and an option you should have a look into if you have plans for implementing a telecom system or a control system, where the advantages of the technology are more powerful. I am not saying that Erlang cannot be used for other kind of projects (there are some examples of using it for banking or business management applications), but in this area is almost unbeatable.
I will talk more about this language from now on, in the Erlang section of the weblog.