Elixir Design Goals
elixir-lang.org
elixir-lang.org
But I especially enjoyed Erlang's concurrency model and OTP. In a few hours, I was able to go from basic message passing, to a simple OTP server, to distributed processes communicating between multiple VMs, and finally to a supervised OTP server with automatic restart on crash. Erlang provides an awful lot out of the box, and Elixir makes it quite friendly-looking.
However, it's not a mature environment yet. The tools are pretty good for a young language, but the ecosystem is still small. Nonetheless, there's some cool stuff out there already:
Experimental web framework: https://github.com/elixir-lang/dynamo Mnesia distributed DB wrapper: https://github.com/meh/amnesia Heroku buildpack: https://github.com/goshakkk/heroku-buildpack-elixir
I'll need to build a larger system in Elixir, but the my initial impressions are good.
It is good to see Elixir work on it alongside Erlang. I don't think everyone will jump ship to Elixir. For example I like Erlang's syntax (I might be in the minority) but meta-programming and ease of access to BEAM for newcomers is great.
I am a long term hater of Javascript (global state, aargh!) and I have been giving coffeescript a whirl (no global state, yay!).
One of the (unexpected) side effects is that I appreciate the readability of coffeescript vs javascript much more than I expected.
Jose Valim is also giving a talk at a conference I am organising next month (http://mostlyfunctional.com), so I am tilting heavily at the moment...
Even Joe Armstrong likes Elixir!
http://joearms.github.io/2013/05/31/a-week-with-elixir.html
Here's a direct quote: "This is good shit."
Which is less work than adding coffeescript to your toolchain.
If you're going to write a server application, even REST and HTTP, Erlang and Elixir is a superb choice (I would argue better than Ruby with Sinatra, for example) because of the concurrency model and the ability to handle protocols and binary data.
There are also a few nice template libraries for Erlang (for example https://github.com/mojombo/mustache.erl) so if you just need some templating and don't mind writing some glue yourself it could still be a good option.
Key Advantages: * better performance * easier to write services that stay up thanks to OTP * better memory management
The common strength that elixir shares w/ Ruby is that is also very expressive
The main loss is a much drearier ecosystem.
It goes without being said, but the choices the VM make will ultimately impact what is or is not possible for the languages on top of it. I have never taken the time to investigate JRuby or IronPython, but I have imagined this is a reason why few people love the original and VM-ported editions: one must assume Ruby code becomes less Ruby, Python less Pythonic, once moved to different VM architecture.
[0] http://joearms.github.io/2013/05/31/a-week-with-elixir.html
The language source code is incredibly clean and well documented. It's been a joy to work with so far.
Out of curiosity: if you are doing DB migrations, what are you running on Elixir that requires it? You building web apps or just utilities running on top of a DB?