Elixir Users' Survey 2016 Results

The deployment section’s results are interesting. Where should the Docker/Heroku responders be pointed to for better solutions (e.g., edeliver -> VPS / Dedicated server)?

And the non-web related uses of Elixir are insightful.

Javascript flavored Erlang?..perhaps that was referring to ElixirScript?

:grin: :grin: :grin: :grin: Great results, thanks for doing the survey! Elixir is phenomenal. :grin: :grin: :grin: :grin:

1 Like

The 1.4 GenServer docs include a short guide over the most useful functions from sys http://elixir-lang.org/docs/master/elixir/GenServer.html#module-debugging-with-the-sys-module


Maybe Docker/Heroku is exactly what they need?

Yes, that’s a valid response.

My request for a “better” solution is related to the following:

A whopping 71% of Elixir developers rate their OTP experience as below average. This tells me that we need to do a better job as a community on OTP-related outreach. Fault tolerance is one of the biggest selling points of Elixir, and OTP is the path to it.

I have two deployment-related takeaways from this. First, we as a community should find a way to expose new users to releases earlier in their Elixir experience. Secondly, we need more examples that clarify the simplicity and value of Erlang’s distribution – Docker and Heroku inherently cripple the value the Virtual Machine can provide.

Yeah, I mentioned to @knewter yesterday that I wasn’t a great fan of that comment and that it at least should be elaborated on. Hex runs on Heroku and it’s working fine for us.

1 Like

Part of the issue, I think, is that a lot of learning resources for Elixir don’t teach OTP properly. I’m talking about Programming Elixir, and Elixir in Action. What I mean by this is that, to me, OTP isn’t just a set of modules that abstract functionality, they’re building blocks for architecting your software, and I don’t think these learning resources do justice by using toy problems to illustrate how to use them. It wasn’t until I went over Programming Phoenix that I saw a ‘real-world’ example with the wolfram infosys backend that gets built in the book as part of the Rumbl app.

I would love to see an example of a (feature-bare) application that uses OTP behaviours but still architected in the way it would be in the ‘real world’, with explanations as to why any particular behaviour was used and why it’s the right way to use them that way.

edit: For example I’m still pretty fuzzy on why and when you would use a GenServer.

1 Like

Just a nitpick, the single quote in page title (the title you see on browser tab) got converted to html entity &39;. Otherwise thanks for sharing the result, interesting to know many people coming from JS, I think they may very well be NodeJS devs.

I believe few of the reasons are about clustering Erlang nodes, OTP releases, and hot upgrades?

There are already several threads discussing Heroku’s shortcomings in this forum:

OTP releases are not needed the way Heroku does deploys or you can create releases and deploy the slug manually if you prefer that [1]. Clustering is not needed for the vanilla web apps Heroku is targeted to and neither are hot upgrades. Besides the people doing proper production hot upgrades are a small minority.

If you need those things then don’t use Heroku, that’s easy. But saying that the platform inherently cripples VM is unfair.

[1] https://devcenter.heroku.com/articles/platform-api-deploying-slugs

Hmm, this makes me wonder, is it a good thing or a bad thing?

I do get your concern, though. The phrasing is a bit too dismissive. It’s great to hear that Hex is running well on Heroku. Is it possible to share the details (dyno type, memory usage, load, etc.)? :slight_smile:

If you don’t need then you don’t need it :). For most people it’s probably not worth the extra complexity and testing effort.

It runs on a single hobby dyno 512mb. Memory usage is around ~130mb and peaks at 250mb when rebuilding the registry. Load is around 0.1-0.2 except for during traffic peaks. The traffic is 100-200rpm with peaks over 2000rpm. We don’t host the repository on Heroku, so most traffic goes to Fastly CDN that hosts it.

1 Like

I don’t know Elixir in Action seemed to present OTP very well in my opinion. There is always an option to read Designing for Scalability with Erlang/OTP.


That’s an interesting point Eric. Hex seems to exercise a lot of Elixir’s best capabilities.

Go read this year’s OTP and Erlang book from O’Reilly (already mentioned). It was written by OTP veterans.

1 Like

I’m sure it’s a great book, in fact i bought it a couple of weeks ago and have it on my list. But I think this is part of my point that there needs to be better Elixir+OTP learning materials rather than being pointed to Erlang resources to get a better grasp on OTP.

edit: now maybe I’m just slow at grasping the concepts, that’s perfectly valid too.

Meh, both languages are very similar so I don’t mind but I see your point though between:

  • Official guide + docs
  • Elixir in Action
  • Little Elixir & OTP Guidebook
  • Conference talks

and some open source projects I don’t think that much more is needed… most people’s OTP projects are for work and thus closed source.

1 Like

I would challenge that with Oracle nowadays. Just saying…

I give Microsoft credit for:

1 Like

Lacks a ton of features that I’ve been using in vim and emacs for decades, I’ve found it hard to use…

OGod that is horribly done, we have it at work, completely sandboxed distinct processes and filesystem, it may as well be running in a virtual machine…

I… have made very long posts about the mis-designs that both the JVM and .NET VM’s have done because of their poor language design. :wink:

That actually scares the crap out of me…

1 Like

OK so assume no credit from you for Microsoft :slight_smile:
Last time I was on docker global mentor week meetup , and where … in Microsoft Office :smiley:

I think Microsoft is learning how to make money from Linux :slight_smile: