3 Obtaining Erlang/OTP and books/articles about it

Open Source Erlang/OTP can be downloaded from
the open source Erlang
site. The site provides full source code as well
as binaries for Windows machines. This is probably the best
place to go to make sure you're getting the latest version.

The Debian
Distribution of GNU/Linux, and derivatives such
as Ubuntu, includes various versions Erlang in different
releases, under interpreters. The version tends to
lag a long way behind Erlang Solutions' package (above).

For the BSDs, the 'ports' collection has up to date versions of
Erlang.

Users within Ericsson can use Ericsson's internally supported
version of Erlang from
www.erlang.se.

The Open Source Erlang Licence is essentially
the Mozilla (Netscape) Public Licence with a few modifications
to make it compatible with Swedish law.

As far as I understand, this means you can obtain Erlang
for free, use it to build cool systems and sell them
without Ericsson coming around to charge you money.
For an authoritative statement, you'll need a lawyer.

The documentation delivered with open source erlang,
as both man pages and
html, is the most up-to-date reference to both the
OTP libraries and Erlang itself. On unix systems,
an easy way to read the man pages is erl -man gen_tcp
.

Different books are aimed at different audiences, so recommending
one in particular is difficult. The currently available books in
English, starting with the most recently published, are:

Introducing Erlang by Simon St. Laurent, 2013,
is a very gentle introduction to Erlang for beginners.
It's available directly from the publisher.

Learn You Some Erlang for Great Good! by Fred Hebert
is a beginners' book about Erlang, published in 2013. It's
available directly from the publisher and also
for reading online.

Erlang and OTP in Action by Martin Logan, Eric
Merritt and Richard Carlsson was published in 2010. You can
buy it from various online bookstores, or directly from the
publisher.

Erlang Programming (A Concurrent Approach to Software
Development) by Francesco Cesarini and Simon Thompson
was published in 2009. Get it from Amazon etc or directly from
the publisher.

Programming Erlang: Software for a Concurrent World
(Joe Armstrong) is a book about Erlang written by one of the
original inventors, published in 2007. You can buy it on paper
from Amazon and other online bookstores, or directly from
the publisher.

The only way to keep completely up to date with Erlang internals
is to examine the source code. This section lists some material
which can help with understanding the code, but keep in mind that
they all age, i.e. the article/paper/presentation describes the
code as it was at a particular moment, which is often some
time ago.

The
Standard Erlang spec (1999) aims to define the Erlang language.
There is currently no compiler which actually implements everything
exactly the way Standard Erlang specifies.
This specification is quite precise; it's intended as a reference,
not a bedtime read! Compiler and tool implementors will find
this useful, as will advanced Erlang programmers.

Core Erlang
(2004) is an effort to define an Erlang-like language which is
nicer to compilers and language tools and can be automatically
generated from Erlang. Erlang compilers from R10 onwards can
generate Core Erlang from normal Erlang code. They can also
generate .beam files from Core Erlang.

The internals of the BEAM file format are described on
Björn's homepage (2000) . Eventually
this will/might include a description of the
virtual machine's instructions. Björn also includes some
benchmarks comparing different versions of the BEAM machine.
You may also want to take a look at the beam_lib
module.

There are a couple of books about specific types of applications
which use Erlang as the main language in the book:

Building Web Applications with Erlang by Zachary Kessin

Handbook of Neuroevolution Through Erlang by Gene I. Sher

The standard text about data structures in functional languages
is Purely Functional Data Structures by
Chris Okasaki. The parts about laziness (about half of the book)
do not apply to Erlang, but are interesting nonetheless.
An early
version of the book is available online, the book itself is
available from many online booksellers.

Structure and Interpretation of Computer Programs
is a standard introductory text to functional programming. It is
available both on paper and
online.

When you write Erlang code you want to share, there are quite a number of
ways to share it. The place to announce such things is the Erlang Questions
mailing list, or, in the case of patches, the Erlang Patches mailing list.
Where you put the actual code is up to you.

If your code is a correction, modification or extension to an
existing part of OTP, the usual way of spreading it is via github, the
wiki has instructions.

If your code is a new application or library, some common ways of
distributing it are:

Even though Erlang is a fairly mature language with a large
established code-base, changes and enhancements are still
being incorporated. There is a mechanism
called the Erlang
Enhancement Proposal which formalises the process.

Erlounge and User Groups

Every so often,
someone puts out an invitation on erlang-questions to
informally discuss Erlang over a few beers. Past Erlounges
have been in Sweden (Stockholm), Scotland, the USA (Atlanta,
New York, Chicago, North
Carolina, Schaumburg, Seattle, SF Bay area,
Arlington, Washington DC), France (Paris), China (I can't read the
characters which described the location), Italy, Germany (Aachen),
Poland (Krakow), New Zealand (Wellington) and others. There's a
wiki page on erlangcentral.org listing known usergroups.