When is Elixir going to be famous?

Spacemacs (emacs + vim) is getting a lot of love lately. http://spacemacs.org/

3 Likes

Just my (not so) quick experience on this:

I live in a place where technology moves really slow. People here are just starting to get on the RoR bandwagon, which leaves me bewildered. Luckily, Iā€™ve had a chance to travel to SF and spend some time with some very talented engineers in events, airbnb, ā€¦ etc. One of them told me about FP, made me research it, and now Elixir is my main backend language. When I went back to my country, people havenā€™t even heard of Elixir! I did a talk, developed an Elixir backend for one of the startups, and gave away some stickers, lol.

Shortly after, I visited the startup scene in Tokyo. I tried to meet the most reputable and skilled engineers there, and found the biggest RoR shop (at CookPad) and also a gaming startup with a backend built with Clojure. Engineers from both companies have heard of Elixir, but I was the first developer they met in Tokyo who is actually building something with it.

So, itā€™s probably the natural course of any language, to kind of spread steadily as more people talk about, organize events and suchā€¦ Another takeaway was the market segment. Elixir is my personal choice, but Iā€™ve met engineers moving to Go, thanks to Googleā€™s marketing, Clojure, for it being around longer than Elixir, and now Swift 4 is promising us first-class concurrency, using actors and such ā€¦

Finally, I would like to add that Elixirā€™s best chance at hitting mainstream is targeting developers who are new to backend development. Personally, Iā€™ve never done serious backend development before Elixir. Iā€™ve used Flask, Google App Engine, a bit of Rails, and even C++ but I really hated it. Elixir clicked with me a lot better than the others. Since I didnā€™t have any ā€œemotionalā€ attachments to other languages, adopting Elixir was a no-brainer.

6 Likes

Thank you @brightball. I have indeed looked into spacemacs - it was certainly popular in that favorite IDE thread. I include that under the ā€œand variantsā€ in my post, and I still stand by my comments! :open_mouth:

2 Likes

I highly agree with your comments about Go and its adoption, etc. I went with Elixir because of my previous comments elsewhere: I see Erlangā€™s implementation of the actor model as a naturally distributed and concurrent architecture, whereas I see Goā€™s implementation as a highly focused collection of concurrency patterns (but Iā€™m not a Go expert). The barrier to entry with Erlang is what Iā€™m talking about with the need for better tooling. IMO Elixir is already doing just about everything else with regards to dropping barriers and being attractive.

I also wanted to mention on the static vs dynamic aspect: I have recently come to appreciate guards as essentially more powerful ā€œstaticā€ type contracts. If I expect a certain type in a function signature, I create a guard for it. On top of that, for free, I get even more robust contract declaration through the same guard mechanism. So whereas in .Net I would have to implement Code Contracts using a separate extension that combines static analysis and interweaved runtime injection (if using runtime contracts). So what Iā€™m saying is, guards provide both ā€œtypingā€ and the more advanced (pre-condition) ā€œcontractsā€ as a natural, tried-and-true aspect of the language. I think also that with a bit of syntactic sugar, guards could even be implemented with a ā€œtypeā€ syntax similar to:

def foo(bar) when is_atom(bar) do

becomingā€¦

def foo(<atom> bar) do

or however you want to indicate a type. But, and I hate to sound like a broken record, there needs to be kick-butt tooling to give us solid intellisense, jump-to-def, and refactoring (at a minimum!).

3 Likes

You all really should look at atomā€™s plugins. I have dialyzer linting, intellisense, etcā€¦ Iā€™m even thinking of converting from vim to atom at homeā€¦ >.>

Not for speed reasons, but because typing catches a holy-hell-ton-of-bugs at compile-time instead of randomly ā€˜laterā€™. Even if it is just a typing only for the specific language, even if it is optional, even if it compiles down to a dynamically types language, having types still means catching a holy-hell-ton-of-bugs at compile-time.

What plugins do you use? I use Atom exclusively for Elixir and I only have two installed: the official one and the one guy one guy called ā€œatom-elixirā€ I think.

I have installed:

  • atom-elixir
  • atom-elixir-playground (Iā€™m not sure if Iā€™ve ever touched this one yet though)
  • autocomplete-elixir (love it)
  • build-elixir
  • elixir-cmd
  • language-elixir
  • linter-elixir-credo (love it)
  • phoenix-elixir-snippets

Iā€™m not entirely sure all which commands and functionality I use from which, but I like my work-flow.

EDIT: I also use Elm, and the atom-plugins for elm well out-do that for other IDEā€™s.

4 Likes

I want to reply to this (and obviously I am), but I donā€™t want to hijack this thread. Iā€™ve started a new thread on elixir atom configuration if you wouldnā€™t mind continuing there.

Oliver Steele: The IDE Divide (2004-11-21)

Basically sufficient effort has been expended to convince the language-mavens - typically a lot more effort is needed to attract the tool-mavens.

1 Like

And I will pay for a license the next day.

Same here