As a guy who deployed several Golang projects in production… believe me, their runtime is not micro.
And I agree with your criticisms on Golang. It had a very good shot at being a globally universally useful language, yet they can’t get rid of nil to this day (to add insult to injury, they even have untyped and typed nils! ) and still don’t have sum types (C tagged unions / Rust enums) and no pattern-matching.
Oh, and it’s a runtime error to send to a closed channel.
Unfortunately Golang is still plenty useful even despite its drawbacks. Hence the eternal dilemma whether to use it.
Every time I think of Elixir it feels so surreal, because even though it’s one of the “smaller” langs, it has such a good level of pretty much everything. You’ll usually find one clearly dominant option for every niche, and it’s not just good enough, it’s actually world-class. Frameworks for web, embedded, machine learning, domain modelling, data processing, stuff that is not even a thing in most mainstream languages, like Ash or Broadway for example. Frankly, I don’t think Elixir having a small community or not being backed by Big Tech is a bad thing. You guys are more than enough.
I would also like to add that is refreshing that Erlang and Elixir are not US centric. Don’t take this the wrong way, I don’t have anything against the US (other than a very specific orange ape), but in the last 20+ years almost everything in the tech space as been US driven. Elixir is in my view a more geographically distributed () language/ecosystem/community and that in my books is as great as not being part of Big Tech.
Great blog post Lars! A similar sentiment has definitely been echoed on places like this forum over the last decade; that one of the reasons we love Elixir and Phoenix (and many other projects, like Nerves, Nx, Membrane, Elixir Desktop, Scenic, Ash, Hologram, ECSx, etc) is because they don’t belong or are controlled by a giant corporation (and perhaps especially, one that has shown it cannot be trusted).
I think this kind of support (one based on a more personal level) results in a certain kind of robustness, because as you note, their direction isn’t dictated by the whims of companies whose primary aim is to make as much money as possible - something that often conflicts with the fundamental ideals and essence of what we think of as community.
Btw, some other interesting things that might be noteworthy:
As far as I am aware, Plataformatec was set up by a group of friends (we have at least two other co-founders here on the forum besides José: @hugobarauna and @georgeguimaraes). So in the scale of sole trader > family business > SME, you could say that it might fall in-between a family business and SME.
Many people are grateful that Erlang is backed by Ericsson and not one of the FAANG or FAANG-like tech giants. Ericsson appears to be much more corporately responsible than others (many people have worked for them for decades - this is usually a good sign as well). I actually shared this story on the Erlang Forums a little while back but I actually met a CEO of Ericsson many years ago. He was sitting at the back of the plane (so not in first/business class) and one of the crew said he does so because he does not like to waste shareholder money, and that the back of the aeroplane is actually the safest in the event of a crash. So not only was he saving his company money but he was smart too! This may seem like a small thing but this sort of thing reflects (and often influences) company culture - which is usually instilled from the top down.
Out of all the languages that were similarly hyped around the same time as Elixir (including Elm, Crystal, Rust and Go (tho Go and Rust are older at around 18 years old now) Elixir is the only one that took off that wasn’t backed by a giant.
I fear it might become more difficult for newer languages to take off moving forward, and it remains to be seen whether AI may help, or hinder things for them.
I think it’s a shame actually that Crystal hasn’t taken off in a similar way yet - imagine if we could write nifs in Crystal instead of having to learn something like Rust - Crystal is inspired by Ruby too (their slogan used to be: Fast as C, Slick as Ruby). (I wonder if we as a community could help or help make that possible.)
Elixir is testament to the power of genuine community - well done everyone
I don’t track React closely. Maybe I just hear about the breaking changes and churn because people just make noise when it hurts. I have not gotten the impression that React is stable. My impression may be wrong.
I may be wish-casting about Oracle. I do hear about what they do. They completely screwed up a hospital implementation recently here in Sweden, hard enough that it was rolled back. But yeah, I am sure they’ll be around for roughly an eternity.
I do have used React for many years and it’s been a blast. Often things around it break but there has been relatively few revolutions within it’s apis, and only one major one which was changing the state management to Hooks. Which eliminated a need for third party state libraries almost completely for me. These were not necessarily stable nor good ideas in the first place (like Redux). But that was introduced in 2019.
The good thing about React is that it’s backed by a “big tech” entity that actively uses it internally (Meta).
The bad thing about React is that it’s also used by a third party frameworks like Next.js which are indeed extremely buggy and a steaming pile of, umm, spaghetti code. Some good ideas, however, there, but horrible implementation and indeed very unstable. Backed by Vercel, which I would’t call “big tech” myself.
Circling back to the original topic, I actually wish some sort of “big tech” was heavily invested in Elixir and ecosystem because that brings resources and stability and some overarching plan to the ecosystem.
As you say, Oracle is not good at that, but others are - from Google through Meta to Microsoft - they do manage and support tools we use daily and depend on in our work as developers.
Oracle is doing good precisely what you pointed out - sucking out money out of big corporations but really preferably the government and they don’t shy away butchering project after project as long as their contractual terms say they’re good. I really dislike them as a company too, but they’re not going anywhere for now AFAIK.
I never understood this argument, what makes a tool made by a big corporation more valuable? Meta doesn’t make money from designing good software and compared to the giants before them (the telecom industry), the quality and innovation of software they deliver is borderline mediocre(especially the last years).
Yes, I agree that having a good financial backing is great, but at the end of the day throwing money at a problem doesn’t necessarily solve it. I think this is the point that a lot of posts here try to make: despite all of the odds, elixir and erlang keeps on bringing amazing innovations in the face of giants that have unlimited resources and as the time will pass by this gap will only get bigger.
Quite often it simply boils down to “$TRENDY_COMPANY uses $THING. $TRENDY_COMPANY is successful. I want to be successful. Therefore I will use $THING.”
There’s plenty of examples of this at large, and it’s a powerful effect that cannot be ignored. Many if not most technologies are successful in spite of their shortcomings, not because of their technical merits [1], simply because a trendy and large enough backer pushed for it.
I’d like to expand a bit on this; it’s not so much that we cannot do these things. Of course we could implement time-based scheduling powered by signals/timers, and have actually done so in various flavors over the years without publishing it. We experiment with far more things than people realize.
The problem is that these clever solutions are, more often than not, not very maintainable. There are just a handful people working on the runtime system right now, and we simply don’t have the bandwidth for complicated solutions. Whatever we implement must be maintainable by everyone else on the team with minimal time to switch, and preferably also the community at large.
JSON probably being the worst offender judging by how popular it is despite having no redeeming qualities whatsoever. “Human-readable” does not count because you’re going to be examining it through a program anyway, it’s not like you can decipher it by looking at your SSD/wire with a magnifying glass. ↩︎
The ideal theory is that since they are dogfooding it, their devs will make sure it’s ergonomic and useful. Whether that works or not, well… I think history mostly speaks for itself.
Story of 90% of all business decisions in this civilization… since forever really.
If memory serves, a number of people said that the Linux kernel just does not lend itself to fully preemptive scheduling as much as we like it to? Sorry if spouting a falsehood here, I might remember wrongly. I heard people say that some of the *BSD OS-es are doing this better and are a better target for experimenting with directly-kernel-backed features when aiming for real-time low-latency preemptively-scheduled software. I’d be surprised if this is still the case and if Linux still lags behind in this department but oh well, its kernel development is a whole different beast and usually extremely conservative…
If you have any links to discussions I’d be curious to go check them out.
I doubt that. While they are major contributors, a certain man will not hesitate to tell them to “f*ck off” if they want to take the project in a direction he doesn’t like. Guess they are shareholders and investors at the same time.
“Big tech” are both majority contributors in terms of source code being delivered by their employees, kernel maintainers, but also importantly the funding comes from them.
Of course Linus can do whatever he wants, as he owns also trademarks etc. and he has demonstrated that he is able to do that perfectly well in the past. In majority of the cases it wouldn’t make sense to rebel against these stakeholders.
I also think this is a very good model, and especially good one with someone of personality like Linus that is very assertive (to put it mildly).
The important thing in that situation is that they don’t give him reasons to rebel – not often anyway. 95% of the time everyone is incentivized to work towards the common bigger vision.
The copyleft license used by Linux (GPL) certainly helps in keeping the project independent too.
But I generally disagree with the sentiment that “big tech” is bad, or what some above expressed about lack of innovation. I think there’s space for both: start ups and big tech, and they can and do innovate on scale that couldn’t be achieved by smaller companies. For example, much of the innovations done in the AI space required ungodly amounts of money to be spent on hardware, data and other resources and it may have been done by hands of start ups like OpenAI but they were backed by “big tech”. Also, Transformers were invented in Google if I recall so there’s that too.
Linux is owned by big techs (plural). On the other hand, languages are usually owned by one big tech (Google owns Go, Oracle owns Java, …)
Although the situation with Linux is much better than say Java because of the check and balance among the big techs, and Linus being a darn good tech visionary and leader, there is still the risk of “what happen after Linus”