As a rails developer primarily, and someone dabbling with Elixir/Phoenix on the side, I get this feeling, too. It's taken the best of rails, dropped the annoying parts (e.g.: weird pluralization stuff, magic connection between instance variables in controllers and views, an explosion of path helpers (Phoenix's approach is basically post_path(:index), post_path(:show, 5), etc.)), and then put it on the rock solid Erlang VM.<p>I remember hearing the "genesis story" of Elixir. IIRC, José was working on ensuring Rails was thread safe. He did so, but was dismayed with the difficulty and felt like he was fighting Ruby. So he stepped back, and thought that if concurrency is the future, he should find a better language for it. He looked into immutable, functional languages (Haskell, Clojure, Erlang), and realized that Erlang is built for an arguably harder problem: distributed computing, and made the connection that concurrency is sort of a smaller case of that. He worked with Erlang for awhile before deciding that it could be improved by building on it.<p>Going through the Elixir tutorial and seeing how you could "simulate" state, by spinning up an infinite loop in another process and sending messages to it was mind bending. And learning about Erlang's OTP principles has made me really think about robustness differently. I really do hope Elixir/Phoenix become the next big language and web framework.
I don't know much about Elixir but it seems like a really interesting language. The space it's trying to fit is definitely something needed: a good, flexible, high level language like Python/Ruby but with strong concurrency support and a functional paradigm.<p>Can anyone give more information on the nature of Elixir's type system? Without digging into the docs I see elixer-lang says that its dynamically typed, but how strongly typed, is it robust, does it have ADTs, inheritance, etc?<p>edit: looking an inch deeper, I see that it has 'protocols,' which seem like typeclasses, and 'typespecs,' which seem like gradual typing
<i>I think part of it is that with Erlang it is not as easy to get up and running with a new website.</i><p>I'm doing this at present and there is no special difficulty.<p><i>And things like package management, build tools, meta-programming, unicode handling and web frameworks are not as straight forward as in languages such as Ruby.</i><p>Erlang's module system means that a chunk of the raison d'etre behind language-specific package managers is already alleviated. The rest - dependency management and building, is handled quite well by tools like Rebar. One can also leave Rebar as a dependency tool strictly (which is its primary purpose anyway) and use whatever they like for a build system. Plain old Makefiles can work just fine, and it's not like most language-targeted build systems aren't some shiny variation of make, anyway.<p>Metaprogramming isn't quite as easy as in many OO languages, but it's hardly out of reach. The parser, the lexical scanner and other components are all exposed as Erlang modules, and there are projects such as the BossDB ORM that use parser transforms to provide features such as parameterized modules, which allow for using Rails-like ActiveRecord patterns, among other things.<p>Unicode handling? I think this might be a knock on Erlang's string handling. Strings are represented as iolists of Unicode points (integers) which goes with much of Erlang's philosophy in lists and tuples as being the prime data types. Space efficiency and real-world usage usually has strings passed as binaries, but most web frameworks and libs can handle them plainly nonetheless.<p>Web frameworks? Chicago Boss for a Rails-like, Nitrogen and N2O for real-time and extremely high load applications, or even just plugging in to web servers like Cowboy or Yaws can be enough for a RESTful backend.
Given some were touting Go as the next big language what - 12-18 months ago - can anyone enlighten me why Elixir would be different to Go. Or where Go didn't live up to its promises?
I think the next big thing is Meteor. Here's why:<p>1. Real-time baked in.<p>2. Uses Javascript (tons and tons of developers know at least enough to use Meteor)<p>3. Sane templating engine.<p>4. Same wow effect I had when I first started Rails.<p>5. Fantastic build system.<p>Pheonix and Elixir may be the bees knees, but unfortunately because it uses a functional language, it drastically cuts down the mindshare of developers. I don't even know any developers in real life that use functional languages. Looks interesting but that's the reality.
I thought Erlang was abandon within Ericsson, and it was Open Sourced so people can continue to use it.
Can anyone explain what is Erlang Public License? Why not something like Apache, GPL or MIT?
I've been monitoring Elixir on HN for a while now, looks like an interesting direction to take.<p>I wanted to know which direction Elixir is going to take? Will Elixir be mostly compatible enough with Ruby so that Rails can run directly off on Elixir?<p>Is there a plan to change Rails enough to run on Elixir?<p>How does the community feel about Elixir? I'm certainly interested in the concurrency aspects of Elixir (ie. no GIL) and everything else that Erlang has to offer.<p>The developers of Elixir were core Rails developers so please forgive me if I'm getting the wrong impression here.
Not about Elixir specifically, but don't people get tired of switching languages? What, people will now have to port all Ruby libraries to Elixir (or, at the very least, relearn them), and then a few years down the line to the next thing? Isn't this a huge waste of effort? Not to mention the poor CTO who gets a job at such an early-adopter company in 15 years, and finds out the codebase is made up of 7 different languages, four of them have been defunct for years? I mean, a language's benefit must <i>at least</i> cover all the switching costs, the fractured codebase costs and then some to justify adoption. Are all the new languages such huge advances over older ones that they do that?
This isn't a criticism of Elixir (I've never used it, so I can't do that), but how can one just declare something "The Next Big" thing?