Hacker News new | ask | show | jobs
by mjackson 4293 days ago
I'm constantly impressed by the level of execution of the Elixir project. In ~3 years they have accomplished much more than many other language ecosystems have to date.

It's great to see the core maintainers understand that you need MUCH more than just a compiler, runtime, and std lib to create a truly vibrant ecosystem. The Elixir project includes a standard way to do templating, a powerful and robust shell, a very full-featured unit testing library (not just assert statements), a standard logging system (this is sooo often overlooked), and, to top it all off, a build system that also lets you manage dependencies!

I honestly can't name any other ecosystem where you can just jump in and all these problems are already solved for you by the core project maintainers, instead of by 3rd parties competing for mindshare. It's truly refreshing because it gives the community a common language and toolchain to work with and get stuff done.

Hats off to everyone involved! You guys continue to amaze me.

4 comments

I couldn't have said it any better myself. On my way to Elixir I made short stops to Go and Rust. I was immediately impressed by the quality of mix (Elixir's build tool, task runner and dependency manager) and how easy it made getting started with Elixir. José's experience in the Ruby and Rails communities are really evident when you see the quality of tooling in Elixir.
> I honestly can't name any other ecosystem where you can just jump in and all these problems are already solved for you by the core project maintainers

I'm on the Dart team. We ship the SDK with a native VM, dart->js compiler, set of core libraries, package manager, and build system. There are canonical packages managed by the team for unittesting (using a Jasmine-style API) and logging.

I do have to admit the logging stuff isn't that baked, but the rest of the pieces are heavily used and have a lot of community-wide mindshare.

Not that I'm trying to steal any of Elixir's thunder here. I'm continually impressed by how polished everything they do looks. As someone who went through a language's 1.0 announcement, I really like how they clearly listed their compatibility expectations going forward.

Hats off to you guys as well. That's a TON of work. :)

What % of Dart's development is sponsored by Google? Not trying to get a dig in at you guys, but it's also interesting to note that Elixir has come this far without the financial backing of one of the wealthiest tech companies in the world.

well, maybe not one of the wealthiest, but Platformatec[1] does (at the very least) sponsor José to work on Elixir.

1: http://plataformatec.com.br/

And with Elixir, there is no chance for a future 'runs best on Chrome' campaign, no chance that you'll be trapped in a corporate-controlled walled garden. Not that I'm trying to raise doubts about Dart. Jose and team have delivered one of the most amazing projects ever - look forward to using Elixir for years to come.
Well Dart runs in a VM outside of Chrome now and could be compared to NodeJS in that regard.
Don't know or have plans to use Elixir for now since I have always seen the Erlang VM as tackling only the problem domain of requiring high fault tolerance and distributed computing systems but no so much for general purpose programming as languages like ruby/python/js/clojure etc. For example: how may programmers are writing systems like Riak, Amazon's SimpleDB, CouchDB, RabbitMQ every day?

That said, from reading the article you forgot to mention Hex, the package manager.

Whether you - as a programmer writing them - realize it or not, many complex web apps would benefit greatly from Erlang concurrency, distributed computing and fault tolerance support. Every time I'm forced to use Celery or multiprocessing or a cronjob - and that happens quite often in nontrivial projects - I wish I worked with Erlang.

I learned to love Erlang some time ago and its various quirks are mostly invisible to me, as I generally know them well and am working around them reflexively. However, I recognize that for people who don't know Erlang yet, Elixir provides a much easier path to obtaining full power of Erlang VM and ecosystem. It can also benefit more experienced erlangers, as it improves some Erlang features and then adds some totally new ones.

Elixir is a language which makes Erlang better suited to high-level, glue-like scripting purposes, while still providing full access to things Erlang does exceptionally well. In a way it's an effort to make Erlang reach outside of its specific niche by making many things traditionally hard or unpopular in Erlang easy to do in Elixir.

In short, if you're a serious programmer who works on anything that has a server or is related to network in some way (which includes all web apps, most mobile apps backends, all IM software, many different services like Dropbox and many more) - you owe it to yourself to try Elixir out. Now that the "awkward syntax" and many (admittedly) irritating quirks of Erlang are gone and you're left with just the good parts you have really no reason not to learn and use it.

> I have always seen the Erlang VM as tackling only the problem domain of requiring high fault tolerance and distributed computing systems

I think the reason for Erlang and Elixir's increase in adoption is that a lot of modern day Web applications have these same needs. Don't you want your web application or mobile app to handle failure in a way that doesn't bring the entire system down, and be scaled across several nodes easily?

Elixir runs on the Erlang VM, and has all of the same attributes of fault tolerance and distributed computing.

The point about a lot of quality applications being in Erlang is well taken, though the interop is effortless.

I agree. The tooling that is released WITH the language is an amazing bonus. Of course, no one is forcing you to use ExTest, but it's amazing that they decided to just give it to you with the platform itself.