
Twenty Years of Open Source Erlang: A Retrospective from the trenches - francescoc
https://www.erlang-solutions.com/blog/twenty-years-of-open-source-erlang.html
======
andruby
I used Erlang before Elixir and it was awesome, albeit with a syntax that
required getting used too. I've often looked at bridging the gap between Ruby
and Erlang, and closely watched and tested solutions like Reia [0],
Erlectricity [1] and Ernie [2].

I was delighted when Jose started getting involved in the space and released
Elixir. Thanks Jose!

[0] [http://reia-lang.org](http://reia-lang.org)

[1] [https://gilesbowkett.blogspot.com/2007/05/erlectricity-
erlan...](https://gilesbowkett.blogspot.com/2007/05/erlectricity-erlang-ruby-
bridge.html)

[2] [https://github.com/mojombo/ernie](https://github.com/mojombo/ernie)

~~~
the_clarence
Is Elixir more than just a ruby syntax of erlang? Because I prefer Erlang’s
syntax.

~~~
josevalim
Elixir is more than syntax. Or rather, it is not even about the syntax :) This
is a common question, so I even gave a talk about it some time ago:
[https://www.youtube.com/watch?v=V5fMQcSy3y8](https://www.youtube.com/watch?v=V5fMQcSy3y8)

Elixir features meta-programming, structs and protocols, first-class
documentation, strong focus on the tooling, some abstractions that make
concurrency more accessible (such as tasks and streams), etc.

However, Erlang and Elixir share a lot! They have the same data-types (with
the same names and even the same syntax for almost all of them), the runtime
is the same, and the same foundation about processes, fault-tolerance and
distribution.

My suggestion is to go with whatever "touches your heart" because, even if
Elixir has its own features, they are more alike than they are different and
most concepts you learn for one will also apply to the other.

~~~
davidw
> They have the same data-types (with the same names and even the same syntax
> for almost all of them),

As someone who mostly has just used Erlang, but has looked at Elixir some, I
think one of the things I appreciate about Elixir is some of the Erlang warts
that you've managed to work around, like having strings be Erlang binaries.

~~~
elbrujohalcon
I agree with davidw, 100%

------
fmap
The article is underselling Erlang's meteoric success. "Adoption was slow
during the first few years." \- After 5 years there was an international
conference devoted to Erlang, a global community around it and the language
enjoyed commercial success from the beginning.

It just goes to show that Erlang fills a real niche that is ill served by most
other programming languages. Programming distributed systems remains painful
in 2018 - not because there aren't any theoretical solutions to make it
easier, but because there are astonishingly few _practical_ systems that offer
built-in support. Erlang is such a practical system and if you didn't already
look into the language it is well worth your time to pick it up. :)

------
binaryapparatus
What an amazing language. I am working on a Elixir project, with a lot of
Erlang peaces used directly. Integration is flawless and beautiful to observe.
I do have many languages in my toolbox but only few of them were truly
exciting for me, Haskell six or so years ago and Elixir/Erlang/OTP this year.

~~~
Sileni
I've really wanted to dig into functional languages like this, because I love
the theoretical benefits they provide, but haven't really sunk my teeth into
one in a way that would let me understand the flavor.

Let me ask, were you immediately drawn to Haskell and Erlang, or was it a
feeling that grew while working with them? Would you recommend working with
Haskell or Erlang directly before trying out a language like Elixir, or should
I go high level down?

Thanks

~~~
binaryapparatus
I did initial plunge into Haskell when I started using xmonad, looking at
config file was visibly 'something else'. I would probably recommend starting
with Haskell first -- if you want to properly blow your mind that's the way to
go. All the principles are common so diving into Elixir took very little time
afterwards. Some principles are getting their way into imperative languages
and it is much easier to grasp them on pure functional level first.
Understanding and using map, filter and reduce, in JS project, was much easier
to grasp immediately because they borrow that logic from functional languages.

Elixir is beautiful but probably few notches easier to understand and write
than Haskell. Reason I would start with Haskell is that it doesn't hide
functional logic with syntactic sugar. For example variables in Elixir are not
mutable but since you can assign to the variable already used in function, it
can prevent programmer from understanding what immutable really means.

------
jimbokun
I had never watched Erlang the Movie before, this is truly a gem:

[https://www.youtube.com/watch?v=uKfKtXYLG78](https://www.youtube.com/watch?v=uKfKtXYLG78)

This is a great way to explain the benefits of Erlang. Anyone who has tried to
write robust, distributed systems should immediately see the benefits. Even
all of these years later.

~~~
francescoc
I use Erlang the Movie and its Sequel
[https://www.youtube.com/watch?v=rRbY3TMUcgQ&t=9s](https://www.youtube.com/watch?v=rRbY3TMUcgQ&t=9s)
whenever I teach my classes at Oxford Uni. #studentlife :-)

~~~
davidw
I dearly wish he'd make more videos. I also loved 'MongoDB is web scale' \-
[https://www.youtube.com/watch?v=b2F-DItXtZs](https://www.youtube.com/watch?v=b2F-DItXtZs)

------
innocentoldguy
I've been engineering software for almost 30 years and no languages have ever
been more enjoyable for me to work with than Erlang and now Elixir. I'd like
to thank the teams behind both languages for making my career interesting
again.

Specifically, I love working with pattern matching, OTP, and the functional
nature of both languages. Thanks Erlang (and Elixir) guys!

------
whizzkid
Not specifically Erlang but I have used Elixir and it was one of the rare
languages that blew my mind when it comes to new ways of thinking when
implementing things.

How not to love some of these features!

    
    
       [first, second | remaining_of_people] = list_of_people
    
    
       greeting = fn
         %{name: name} -> "Hello, #{name}!"
         %{} -> "Hello, Anonymous Stranger!"
       end

------
losvedir
Full time Elixir dev here. This was a very neat walk down memory lane. Thanks
for sharing! Since Elixir is so new, and I wasn't that aware of Erlang prior
to it, it's sometimes easy to forget just how long Erlang has been around!

------
xutopia
I didn't hear about Erlang as much as I did since Elixir came out and showed
me the power of the VM and its ecosystem. As a ruby developer it's easy to
pick up Elixir and I'm learning so much more about functional programming and
systems than I did ever before.

~~~
justbaker
The Elixir core oddly was my first taste of an Erlang project. I'm amazed at
how the ecosystem and language has expanded since 2011. Jose Valim is a very
personable person and thriving code ecosystems are built around individuals
like that.

------
dudul
I really like Erlang and Elixir, but I'm really worried when I see a tech
stack that is still trying to figure out deployment and runtime configuration
of systems.

I'm not trying to be inflammatory here. As per many resources such as "Phoenix
in Action" deployment is still a major culprit. And Dockyard themselves (one
of the major Elixir shops, where McCord works actually) have a full time guy
on the payroll to try to solve the problem of runtime configuration.

It just sucks, because these are 2 major concerns of any production-ready
stack.

~~~
pmarreck
For managed deployment (with a free tier) check out
[https://www.gigalixir.com/](https://www.gigalixir.com/)

~~~
alxndr
Satisfied occasional user of Gigalixir here! I have a side project chugging
along on their free tier.

------
hellbanner
Fantastic tutorial:
[http://learnyousomeerlang.com/book](http://learnyousomeerlang.com/book)

------
mahesh_rm
Kudos to Francesco and the guys at Erlang Solutions for their outstanding work
in the open source high concurrency field!

~~~
francescoc
Thanks, but it is not only us at ESL. Thank Joe, Mike, Robert and Jane, the
OTP team and Ericsson first and foremost, and the community as a whole. It has
been an amazing journey, looking forward to the next 20 years :-)

------
dhab
My limited understanding of erlang/elixir is that it helps easily run actor
model programs (fail-safe loosely defined as something with retries built-in)
in a grid of long-running interconnected instances. With more and more focus
on "serverless" development that I am being exposed to, I am curious to know
if it is a good fit in this space. Say if you are constrained to use AWS
serverless solutions - sqs, sns, dynamodb, lambda, cognito, api-gateway ...
etc, with event-sourcing (for event-drivenness) with retries
(automatic/configurable), (why) would using erlang/elixir vs say
nodejs/typescript/go/haskell/java be a good choice (let's assume you equally
love these languages for the sake of not getting in to 'but X is better than
lang Y')?

~~~
lotyrin
The modern serverless paradigm is a way to give these more traditional
computing runtimes/languages a lot of the features of Erlang/OTP.

The downside to having all of these things in services on the network and
outside of the runtime is latency. Imagine a runtime where everything is a
message, everything goes into inboxes/queues but passing many of those
messages is zero-copy, doesn't hit a network interface, and going from the
calling code to the called code isn't even a OS level context switch -- so the
message is written to and read from a core/thread's local cache lines.

~~~
dhab
For fault-tolerance in case the box is unresponsive for whatever reason, I
think you would have to have a network behind a load balancer. So the issue of
network latency still exists, but probably to a lesser extent?

~~~
lotyrin
Yes, obviously some things will need to be persisted, and some of those things
might be some of your queue entries -- so a persisted network queue (and
network things to dequeue from it) can definitely be a necessity for that
reason as well.

------
tormeh
Erlang truly is something. It's amazing how much effort is expended trying to
achieve even a semblance of its functionality in other languages/ecosystems.

------
cdelsolar
I forget where I read that there were estimated to be only about 1K
professional Erlang coders in the world. That seems absurdly low. Does anyone
believe this is actually true?

~~~
jimbokun
If true, it's astounding so few programmers wrote systems that handle such
astounding amounts of data.

~~~
stcredzero
That's what people used to think of Symbolics Lisp machines. Customers would
assume Symbolics had a team of thousands of programmers, when really it was
about a dozen.

~~~
pmarreck
One of my favorite CS profs had one of those. I remember visiting his office
hours so he could show it off to me.

I didn't do well in the class (it was a bit out of my league at the time) but
I ended up in a career in software dev anyway

------
zem
had to smile at the nod to adrian mole :)

