In the last years, the Elixir programming language has gained a lot attention in the Ruby community. It was created by José Valim, a member of the Rails core team, and further made popular by Dave Thomas of the popular Ruby pickaxe book. Elixir is built upon the Erlang Virtual Machine and is compatible with existing Erlang code which gives it access to a large number of Erlang libraries including OTP, a framework for writing distributed and fault-tolerant programs. Elixir itself aims at improving the extensibility and productivity of the language. The Erlang Factory Lite Conference in Berlin offered a great opportunity for Oliver Noack, Nicolas Dillmann and me to meet the people behind both Elixir and Erlang, and learn a lot about the future of both languages, as well as real world use cases of them.
The conference day was started by José Valim, the creator of the Elixir programming language. He explained that the reasons behind creating a different language on top of the Erlang VM were that he loved a lot of the underlying concepts of Erlang but that he was also missing some parts regarding extensibility and programming productivity. He explicitly stated that having a different syntax was not the driver of the language but that the syntax naturally evolved into a ruby-like syntax because of his experience with Ruby just as Erlang has borrowed some syntax from Prolog. José also explained that compatibility with Erlang was always a major concern while creating the language in order to build on Erlang’s rich and powerful ecosystem. One major part of improving the extensibility of the language is done via protocols, a feature that is borrowed from clojure and enables extending existing functions to work with custom data types. One of the core protocols is the Enumerable protocol which allows to provide custom collection types and then use the default Enum functions of Elixir. The increased productivity is reached by providing a set of tools around the language which were explained in more depth in a later talk by Eric Meadows-Jönsson: Mix is an extensible build tool for Elixir and Erlang that allows to create and manage applications. Hex is Elixir’s package manager. The tools provide a set of conventions and lead to a uniform project layout as well as an easier start for new developers. José ended his talk with a preview of potential future elixir features, such as distributing stream processing over multiple processes.
The second talk was given by Robert Virding, one of the developers of the Erlang language. In a very interesting and entertaining fashion, he talked about the creation and evolution of Erlang. The reason behind creating the language was not to build a functional language or to implement a certain concurrency model, but to solve the real-world problem of making the development process of the AXE telephone exchange easier. The solution had to be concurrent, scalable, continuous and fault tolerant and the language evolved to solve those problems. Robert also explained the patterns behind OTP (Open Telecom Platform) which is suited for way more than telephone switches. He finished with the observation that the programming community is recently realizing how important the underlying messaging principles behind Erlang are.
In the remaining talks, one could learn a lot about the rich Erlang ecosystem and real-world use cases. Martin Rehfeld showed how running applications can be updated without downtime via hot code loading and also explained the pitfalls one has to think of when doing so. Brian Troutwind explained how a complex Erlang system can be monitored. His problem domain is real time ad bidding where it is crucial to meet hard time limits. He explained the basic underlying monitoring facilities of the Erlang VM and then recommended using exometer for monitoring as it is built in a distributed and extensible fashion.
If you are interested in the mentioned talks as well as all others, you can find the slides to all talks uploaded on the conference website.
The conference ended with a small party at the conference which we left early in order to take the opportunity and visit the Ruby User Group Berlin which luckily happened to take place on the same day. The whole day was a great experience. It was really interesting to have a look outside the Ruby world and get to know a lot of people of the Erlang community as well as getting in touch with some core people behind creating a new programming language.