Crowds
Just like swayed by emotions huge crowds of people move the markets, the very same crowds, but of a modest size, move open source software.
Unfortunately, just like it is with any large-enough crowd, it first “selects” or converges to mediocrity, and then even degeneration.
There is a nice quote:
“Such is modern computing: everything simple is made too complicated because it’s easy to fiddle with; everything complicated stays complicated because it’s hard to fix.” — Rob Pike
Rob’s culture forced him to omit a couple of important details - to fiddle with by large number of ignorant degenerates, and low-effort fiddling without any prior understanding.
Java and the exuberance in the publishing industry
Java is indeed a monument of human stupidity. I remember when suddenly the market was flooded with Java books and every single chud as talking about how great the Java is and that everything else is just worse.
It takes some proper, classic education to see how badly it has been “designed” (ignoring everything that has been researched outside the imperative Algol tradition), given that all the major advances in PL has already been accomplished (Common Lisp, CLU, Scheme, Standard ML and even Erlang has already been developed).
Anyway, today they are reaping what they sow. The cap just does not work unless you tight particular versions or even binaries together. The next step for them is, of course, adopt the fucking Nix cancer, because they cannot maintain stable interfaces.
PHP
With arrival of PHP 2.0 suddenly everyone became a web-site maker.Yes, that was a site, not an app – the era right before webshit.
The crucial notion here is that literally no one realized what a fucking fractal of bad design (google it) it was, everyone used to be over-excited about this new meme.
Javascript and webshit
I cannot even begin to talk about this fucking abomination, but if one combines all the principal and fundamental fuckups of both Java and PHP one might get a glimpse of what a modern Javascript ecosystem is.
Crappy libraries by unqualified degens, even more crappy tools “designed” by uneducated and ignorant, with almost everything, which could have been done wrong has been done wrong.
Today Javascript is the number one language on all charts. Think about it for a minute.
Python and the “learn to code” meme
Contrary to all the mentioned above, Python at least has been designed by a well-educated, mathematically inclined person, which is absolutely required.
After MIT switched to Python from Scheme as the main teaching language for its CS courses (which was the worst planetary-scale disaster since MS Windows 3.0) it literally cannot stop winning.
Nowadays it seems that literally everyone, and your mom, is a Python “programmer”, partially due to these “machine learning”, “tensorflow”, and “numpy” memes. Academia is literally swimming in Python code.
Here we can witness our first serious “experiment” of how huge crowds are shaping the codebase and literally moving an ecosystem in a particular direction. It is not only amateurs and academics, but titans like Google, that contributed a lot of code.
The main factor is the high-quality and well-polished “scientific stack” - a set of complex, optimized C++ and Fortran libraries for numerical methods and recently – deep learning.
Nowadays everyone and their mom is a data scientist, you know. Pact Publishing spews out tens of “books”, mostly by Indian authors, every single year.
The Rust madness
Last but not least, there is this new the most loved language in existence. Loved by those, who have no clue about Standard ML or Ocaml or Scala 3 or Erlang or Haskell or the last 40 years of programming languages research. The very same Algol/C++/Java coders.
Rust could have been way better designed if they read a book or two before creating cool PHP for system programming.
Universal pattern-matching of Erlang, Modules of Ocaml, type-classes of Scala, type extensions of Haskell could have made it into the language, but we got another PHP instead.
But guess what? Today everything has to be rewritten in Rust, you know. Just like everything has to be re-implemented in Java some 20 years ago. But yes, they have traits, and some rudimental pattern-matching, and that at most one mutable reference, guaranteed by the type system, which is a real innovation, but even CLU had a pure subset (way before Scala or whoever).
Anyway, whatever. The main point of this essay is to show how crowds move the whole open source ecosystem. One should never ever try to fight a crowd. They are exponentially stronger. So, just try to understand what exactly is going on, at least in principle, and just ride the wave, like traders of surfers do.
The beautiful (CLU, SML, Haskell) or really principle-guided (Scheme, Scala 3) and really innovative (Erlang) languages will always remain being niche ones, but it worth learning the principles and the fundamentals behind them all.
There is actually a small set of fundamental principles, which tie them to the Lamda Calculus and the universal language of mathematics. I think I found them all already, just struggle to express them adequatiely in a concise written form.