On Mon, Dec 18, 2017 at 5:43 PM Evgeny Khramtsov <xramtsov@gmail.com> wrote:

There is a very similar story: Erlang and Elixir. If somebody doesn't
know: Elixir runs in Erlang VM (BEAM) and has Ruby-like syntax (Erlang,
on its turn, has obscure for many Prolog-like syntax). No doubt, Elixir
became more popular than Erlang (at least, judging by Github stars),
but still not popular enough (below top20 in any language charts). I
think this is because it's still functional language and this distracts
many. Furthermore, such separation splitted the community into two
camps, writing the same tools/programs, but only in different languages.
What's worse, now all job offers contain Erlang/Elixir requirement
(which makes no sense to me, frankly).


FWIW, I think the Erlang community is greatly benefiting from the Elixir community and vice versa. I'd hope the same thing happens with ReasonML and OCaml.

Elixir got a pretty firm ground to stand on since you have many years of (industrial) backing in the Erlang ecosystem. But a lot of the better improvements in the quality-of-life of a programmer is a direct result of Elixir's core team wanting to improve notation, error reporting and so on for the developer. These changes are definitely improving Erlang as well.

I think it is wrong to see these things as "wars". People, when programming, are subjective and prefer different notations. I've always been partial to statically typed ML languages such as OCaml and Standard ML, and I find their notation more clear than e.g., the Erlang or Haskell notation[0]. But judging by people in general, '{' / '}' bracketed notation stemming from a language such a C looks to be extremely popular and familar to people. To the point where "Erlang syntax is ugly", in which as much is misunderstood about its semantics as are its syntax.

The key point is that you have a large group of programmers, mostly Javascript, Python or Ruby people, who would never ever pick up Erlang due to its syntax. But they'll gladly pick Elixir as their core language. All we have to teach them is proper error handling Erlang/OTP style and they'll easily give back to the community at large. If there are a good argument for diversity in an ecosystem, this is really it.

[0] I may be "Erlang user of the year, 2017", and have many years of Erlang experience, but I've always lamented that the language has no static type system.