Convincing someone Elixir/Phoenix will still be thriving in 5 years

Well, I just found that: GitHub - ergo-services/ergo: An actor-based framework with network transparency. For creating event-driven architecture using technologies and design patterns of Erlang/OTP in Golang. Zero dependencies. :smiley:

Currently doing this with terraform and it’s been amazingly painless so far aside from one gotcha related to nginx. Highly recommend it as a viable Rails exit strategy

1 Like

you are comparing some random github project (maybe its great, I don’t know) with a battletested framework used in multiple critical applications.

I don’t compare. I just show that the uniqueness of OTP is temporary.

Not true at all, many projects have declared that they’ll reimplement the OTP – I know 4 in the Rust ecosystem alone – and yet nobody has done it just yet.

Turns out this stuff is not easy. :stuck_out_tongue:

6 Likes

This is why OTP is and will always be unique for me. It has been used in some of the largest concurrent systems, and still is, developed. I looked in to some of the other systems in Go and Rust and none of them stood out like the Erlang / Elixir ecosystem did, some of them have better performance but highly concurrent systems are not just about performance. Elixir makes this battletested ecosystem even more accessible. Especially for people like myself that moved from Ruby. Just my 2 cents. To answer the original question of “Will it still be thriving in 5 years” - I do not know if it will be thriving but I think it will still be here and still be production ready.

2 Likes

It is particularly difficult to put a “battletested for decades” sticker on any new OTP-clone.

2 Likes

I know, I know, and that would be a good opportunity to quote those famous words from Robert Virding, but, honestly, some day it will be there. I’m scared that would drive away some interest from Elixir, but it is also a good thing that OTP designs spread.

1 Like

I’d like to look at it like @AstonJ does – namely that such efforts will lead to cross-polination that will benefit all sides.

3 Likes

It’s ok Andy, I understand that a number of people (in all sorts of languages) hold similar opinions and I just wanted to highlight a major benefit that is often missed - in fact some studies have been commissioned on a topic closely related to this and I am planning to post about it at some point :smiley:

I definitely agree with this when it comes to BEAM languages - in fact there have been some interesting studies commissioned on this which again I will share at some point :003:

However I do agree somewhat with @lud when it comes to non-Erlang/BEAM languages. Robert and Joe have said that, yes, other languages like Java can copy Erlang, but it’ll take them at least 10 years to get as good… well that was 5 years ago :icon_eek:

So I would surmise that:

  • If Erlang/BEAM langs then the choice can be helpful
  • If not a BEAM lang, then it’s competition (although there are benefits to competition in that it can be a catalyst for progress - as we’ve seen with Ruby/Rails after Elixir/Phoenix attracted a lot of their users, but it can also be a risk - ideally you want to progress without being cornered into it)
2 Likes

Newbie perspective here

As a graphic designer, I wanted to learn to web development for years - but fighting all the weird error messages of javascript made me feel stupid.

That changed when I started learning Elixir: Even though there wasn’t a lot of beginner tutorials, It felt like a breeze compared to Javascript. It just made sense!

The code is beautiful and clean, the iex shell is my best friend and the community here makes me feel safe and welcome. :heart:

Yes, the stories of BEAM, OTP, Whatsapp, Discord and Bleacher Report was nice – but it was really the extreme love and enthusiasm in the blog posts that drove me here (and discovering the beginner-friendly eBook “Joy of Elixir”)

Now…. I understand that convincing conservative managers is important, but won’t that problem fix itself in 5-10 years if enough people discover and fall in love with Elixir?

I think the bigger issue here is the fact that there isn’t a lot of beginner-friendly resources to learn Elixir. There are only 7 beginner courses on Udemy, and there no is app like Mimo or Enki to learn Elixir on the go (don’t worry, I’m planning to fix this :sweat_smile:).

I’m not worried – these resources will pop up in time (and I will do my fair share here), but we can all contribute in rebranding Elixir to become a beginner-friendly (or “second-rate dev” friendly :kissing_heart:) alternative.

PS: When convincing my partner that our agency should go all in for Elixir, he said the development speed was the most effective argument I made.

11 Likes

Nope, not really. These people’s brains click like this: “we will not use the less popular thing because there are more popular things” which is of course circular logic that doesn’t survive logical scrutiny: somebody had to give the now-popular things a chance when they were less popular, right?

Most managers are followers, not leaders. Don’t pay much attention to them unless your salary directly depends on it.

And even the above example falls apart because stuff like Tcl, Perl, PHP and Python took off simply because there was nothing [much] else at the time! Not because they were good. Why is this so hard to get for many I’ll never know. But I stopped being interested in discussing with people who conflate popularity with quality. Quality COULD contribute to popularity, absolutely (and history knows many examples). But popularity is not CAUSED by quality directly (and history also knows of many examples of hugely popular things that are used just because they are popular and for no other reason; like a Ponzi / pyramid scheme). Here’s where most people can’t make the distinction.


I’ll join @AndyL here by saying that the only way to win against the conservatives is to completely and utterly ignore them and do your thing outside their circle of influence.

My first Elixir job in fact came from me disobeying a direct managerial order and rewriting a reporting service in Elixir, which accelerated it 17x - 25x times. :077: Management were displeased but they then relocated me to another division that needed much more of these reports (and their legacy Rails code was taking hours to finish one report). And I got a 20% pay bump out of it, too.

Just one anecdote for you. Staying on the beaten path isn’t as safe or rational as many would have you believe.

3 Likes

I have been a developer and a manager at different time so I disagree. Managers are not even part of the technical team; they belong to the management team that manage several parallel technical teams. So they are not supposed to be technical leaders anyway.

You should pay attention to what your manager says and try to put yourself in their shoes in order the understand what they mean. On the other hand, managers should refrain from making technical judgements because they are not the ones sweating at coding and fixing bugs.

2 Likes

I do that. Every good dev does that.

What I disagree with is when they start telling me how I should do my job.

Exactly. I think we are saying the same thing with different words.

1 Like

The problem is that Database over-head always dominates such scenarios

Regarding the speed and flexibility … I understand that most people are comparing to Rails/Ruby, Python etc. but I think, in corporate environment, JAVA really dominates. And here we have a different beast . Its very fast, static typing language, recent years SringBoot or Quarkus are used often, so development is very flexible. Quarkus brings small memory footprint. We use SpringBoot + Vaadin for most of development, Vaadin is like LiveView on steroids available for years. It communicates backend changes to UI using websockets. You can build very large UI complicated apps just with backend knowledge (or most) . And at the end, its also quite stable, running production apps for an year without restarts (if there is no further development needed) . I think here is something we must compete with in a corporate world.

I understand differences between JVM and BEAM … but in a real world there are not so many problems I can’t manage in JVM properly.

5 Likes

I wasn’t aware of Vaadin, but it looks like something this community should take seriously. Seems very comprehensive and parts of it are certainly something to aim for for Ex and LiveView as a stack.

@te_chris what parts?

The manner in which the database is accessed actually matters quite a bit. For example PostgreSQL forks the postmaster and each connection is backed by an OS process. Without a pooling solution such as pgPool, pgBouncer, etc. you would quickly saturate the database host with processes. Once you reach that point, if you can’t afford to run fewer connections, you will have to start reading from replicas which come with their own problems… Ecto uses DBConnection on the other hand which essentially conducts statement level pooling (AFAIK).

Management of shared / scarce resources via pools or some kind of queue system (like GitHub - fishcakez/sbroker: Sojourn-time based active queue management library) is very easy due to how Erlang/OTP based applications are usually structured. In Java, this almost means using threads which come with their own headaches, but you can probably solve them all with money.

The concurrency story is worse with Ruby/Rails… You better pray that all your gems are “threadsafe” and that you are running Puma / Passenger in production (and know that they come with their own caveats). I have had success using GitHub - ruby-concurrency/concurrent-ruby: Modern concurrency tools including agents, futures, promises, thread pools, supervisors, and more. Inspired by Erlang, Clojure, Scala, Go, Java, JavaScript, and classic concurrency patterns. which does indeed use real threads on JRuby but even that solution had an unexplained failure rate of a few transactions per million, so it adds up.

ps. One aspect I really like about Elixir is actually in how pattern matching allows me to build complicated authorisation claim structures with very little code required (and it is much easier to test too)

1 Like

Undoubtedly

Yes, I came from Ruby to Elixir for all these advantages that we found on BEAM.

Me as well.

PS: My early response could give the impression that I was criticizing, but to me BEAM is the best platform to build scalable server-side software and Elixir is the best language plenty of affordances that we love.

1 Like