It struck me as odd that despite working with Elixir at my day job, and it being my first choice for a number of different problem spaces, I have somehow neglected to write about it until now. Maybe that’s because it’s a lot of pressure to “get it right” and live up to the lofty standard set by the Elixir community in a lot of their work. Regardless of the why, it’s time to rectify that.
I’ve been working in Elixir for just shy of 3 years (the 16th will be the anniversary of my first commit). Even in that short amount of time watching the language and the community grow has been really special. Elixir itself is still young; the first release occurred in 2014. It’s really a testament to José Valim (creator of the language) and the community around it that Elixir has come as far as it has in such a short amount of time.
I generally try to be cognizant of my own limitations. After all, humans are fallible, and I’m no different. There are a host of problems that are very difficult, and distributed logic is one of those things. Outside of those that have specialized in those domains, I don’t think the average person should be confidently writing solutions for them when real people are going to be depending on those solutions. And that’s the magic of Elixir, or rather OTP, in that it has a 35+ year track record of solving those distribution problems. It gives individuals like myself the tools and patterns to confidently write distributed code while generating very little risk. That’s huge.
Mind you, OTP doesn’t completely solve that complexity for you. There are still a lot of “gotchas” that come with distributed code that you have to handle yourself (such as netsplits). It does make the complexity of distribution managable though, to such a degree that there’s many problems I would never want to solve in any language but Elixir/Erlang.
Which is not to say that Elixir owes all of it’s success to José’s wisdom in leveraging the foundation Erlang built. The ecosystem around Elixir generally has a level of polish that I haven’t really experienced elsewhere. I attribute this to the pragmatic leadership in the community, both from José himself and from the individuals that have crafted the many purpose-built libraries and frameworks that make it such a productive ecosystem. Some of the novel ideas coming out of this space have even inspired other communities to take notice and copy those patterns in their own frameworks, such as LiveView and LiveWire.
Elixir & Erlang are both remarkable pieces of software, with vibrant communities, and I am very fortunate to work in this space.