Why Linux Succeeded
riskmusings.substack.com
riskmusings.substack.com
There's a lot of stuff out there that's good, but didn't make it for "various reasons". Time and chance happen to all men, as it says in the Good Book.
The vision and individual will of Mr Torvalds cannot be discounted as a factor; yes all the communities around Linux did the work but they had not crystallized around a different core.
If M$ hadn't been such pure shits in the late 80s and onward, they could have had a lot of that community themselves. I think, in hindsight, the world may have worked out better for it tho. I can imagine a "source available" xenix based world where M$ plays the role of Apple without the lovingkindness. Imagine a human face being stamped by a "windows update" wait screen... forever.
As proven by hordes of UNIX developers using macOS and WSL.
Work was all about HP-UX, AIX and Solaris, the exception being CERN in 2002.
They were slowly transitioning from Solaris into Linux for the clusters, while most researchers were either adopting OS X or Windows 2000.
Everyone else let it fall down hard on the floor, after management run the company into the ground.
It was Oracle that delivered into production the first UNIX with hardware memory tagging, still the best one at it today.
It was Oracle that made MaximeVM into a real product with GraalVM.
It was Oracle that pushed Java design from its long term stagnation.
Yes there were victims along the way.
Without Oracle not even the former ones would have taken place.
“Oops. We accidentally bought a CPU design, a complete enterprise OS, a virtual machine, an Office suite and quite a handful of other things. Let’s just pretend we didn’t.”
Or what exactly has survived the sellout?
Java would have died at version 6, never open source (process was finalized under Oracle's management).
GraalVM would never existed.
Solaris would have died.
All Sun assets would have been taken by the debt collectors and done accordingly.
(One could debate whether keeping Java alive was a good thing.)
Solaris licenses are still being sold, then again, Oracle hatters tend to like free beer instead of understanding how to keep lights on a running business.
You're way of in the weeds.
Kindness, or care from a company only means that pretending that emotion towards something is financially better than not caring, or eradicating that something.
I can just imagine Microsoft-internal politics went against the idea?
Eventually it got replaced by Interix, which was further replaced by SUA until Windows 8.
Naturally nowadays Linux syscalls compatibility relevance grew to the point that even other UNIXes have Linux compatibility layers, so WSL made more sense than plain POSIX.
1) Over time it changed and morphed to include every feature people wanted. It started as a 386, single core kernel whereas now it supports every processor and 1000s of cores.
2) Linux always had the least amount of friction to get stuff working. Back in the early days, trying to get any rando program to compile and work on SunOS, AIX, HPUX, etc -- it was a touch and go / pain the ass process. IF your system had a compiler, you were probably missing any number of dependancies. Linux, you could always get stuff to compile and work.
3) Desktop - Yes, the "year of the desktop" hasn't happened. However, the 30+ years of trying has yielded the best options for a *NIX based environment.
Yeah, the proprietary vendors really shot themselves in the foot with unbundling, or the practice of moving packages out of the base install and into "products" people had to buy separately. Linux distros could be batteries included because of the GNU tools and, to some extent, the BSD tools that got ported, not to mention other ecosystems like X and LaTeX and various browsers, etc.
GitHub is incredibly good tool, unparalleled even.
Has GitHub stopped violating our licenses already?
If they cared, they would be buying Linux OEM hardware instead of giving money to Apple.
https://www.theregister.com/2021/05/13/guido_van_rossum_cpyt...
IIRC there's a similar problem with VS Code's official C++ and C# tools.
Microsoft's strategy as I interpret it is to embrace Linux as the server OS most will choose, but to stay relevant double down on providing the development and deployment experience. .NET Core makes their flagship backend framework available on Linux, and WSL makes that case easy to test from the comfort of your Windows computer, using Visual Studio. The same Visual Studio that just so happens to integrate well with MSSQL and Azure.
If you aren't an enterprise, there is Visual Studio Code for the languages you like, with even bigger emphasis on making Linux development a smooth experience on a Windows computer, along with extensive Azure integrations if you want them.
Decisions and investments made over time while using a cloud platform is its own stickiness.
The GPLv2
Linus Torvalds
—-
GPLv3 would have flopped. BSD results in variants and splinters. as a dictator Linus made a ton of good calls - and a dictator making good calls is pretty efficient.
The part that makes me laugh is fsf ignoring the views of their number one success as they fragmented copyleft with GPLv3. Linus has built THE most successful community collaboration. Instead the FSF brought in the lawyers
When attempting to be relevant to people who can enrich your product (i.e. hackers), working code is way more important than whether you write letters and a slash before the "linux" part of the name.
Linus is a hacker first and foremost, and ideology takes a backseat. FSF has the cart before the horse.
Please count the Linux-based systems.
Distros are just that: different distributions of the (largely same, interchangeable) software. There is no splintering where it matters: legally and technically.
In the BSD world you will have companies like Sony take BSD into their closed source world. The linux equivalent would be some semi-free environment like Android.
Yeah, just use a chroot. It's the same kernel. You could also just distribute static binaries or have your dynamic libs bundled in a single .AppImage file.
>glibc versions?
Linux guarantees source compatability, but doesn't guarantee binary compatability (unlike most proprietary software like ms-windows).
>X11 vs Wayland?
X11 and wayland are different protocols, but Wayland is reverse-compatible with X11.
>System-d vs init.d ?
I don't know much about init systems, but I don't use systemd, I use OpenRC and it works fine with "systemd-dependent" software like GNOME or KDE by using elogind[0][1] for example.
>Android?
For android apps, you can containerize an android userspace with tools like Waydroid[2].
[0] https://wiki.gentoo.org/wiki/Elogind [1] https://github.com/elogind/elogind [2] https://waydro.id/
Debian's installation manual has a section on how to perform chroot installs. That is, there's a documented process for how to install Debian within another Linux distribution should you choose / need to do that.
It came about because the original author was hoping to try out Debian on a Red Hat system.
It's all userland over the kernal.
These days, even at the process level (or using tools such as jails), it's possible to define largely independent contexts for each individual process. CPU, memory, and kernel are common and/or shared, but other resources can be strongly segregated.
It says a lot that "systemd vs init.d" instead of "systemd vs sysvinit" was there.
The question is not about the ecosystem, though, but about the kernel itself. Yes, there are embedded vendors (mostly networking equipment, and especially routers) who violate the GPL by not complying, but generally speaking, hardware vendors who choose Linux publish sources.
Those sources may not ever make it into mainline, but the device trees/drivers for embedded stuff does provide a reference for a cleaner, better implementation.
Compare to FreeBSD for the Playstation's management layer. Where are the contributions for Cell support? Where are the patches Sony certainly needed to make for wifi and bluetooth? Where are the patches from Juniper for validated FIPS?
Industry modifications to FreeBSD and Minix (and maybe NetBSD too?) were never sent back upstream or were sent back with a delay.
Splinters in Linux-based systems are still open source so good modifications can be added to upstream.
The most popular software that was derived from (a number of predecessors and) FreeBSD, Apple’s Darwin, is free software, nobody stops anyone from taking code from there. In fact, quite a few FreeBSD developers are (were?) paid by Apple.
Sony also used FreeBSD in PlayStation 4[2] and to my knowledge their modifications have not been open sourced. I may be wrong though.
[1] https://en.wikipedia.org/wiki/Intel_Management_Engine#Design
[2] https://en.wikipedia.org/wiki/PlayStation_4_system_software
That is true, I should have phrased it more carefully.
> In a way, that makes BSD more free than the GPL.
Yes, BSD is a permissive license and GPL isn't. But the original question was whether GPL leads to more splinters or BSD.
I think that the copyleft nature of GPL leads to fewer "effective" splinters since good modifications can be merged into upstream, and what is left unmerged tends to be less important to the success of the parent project. This has helped Linux gain momentum and unfortunately hasn't much helped the BSDs or Minix. I would like to see the BSDs succeed but I suspect that the permissive license has been one of the impediments to that.
And the companies that did this paid a price for it when FreeBSD moved forward and they were left behind holding a whole bunch of patches.
After the learning the hard way about withholding non-secret sauce patches, many companies contribute back anything that they find in the 'common code' that wouldn't threaten their value proposition. You will regularly see patches with the "Sponsored by" tag in the commit logs:
* https://www.freshsource.org/commits.php
Here's one from a few hours ago by Netflix:
* https://www.freshsource.org/commit.php?message_id=75ad24775b...
NetApp, Dell-EMC Isilon, Juniper, iXsystems, pfSense, etc are often seen in base, but also in ports and also drivers (Intel, Chelsio, Mellonox).
* https://en.wikipedia.org/wiki/List_of_products_based_on_Free...
Or at least one that matters.
Everything is open source, we mostly keep up with Linux development and upstream all of our patches but some take time so we have our own branch. Still entirely open source.
But code talks and talk walks, the android folks were solving real issues - so my own view would have been to be supportive of their efforts which were not insignificant.
And they all take the same source from upstream and maintain compatibility. Packaging and some user-space dependencies aside, binaries run on any Linux system.
Though this helped a lot, I believe the commandment "Do not change user space" was a much larger factor. In some upgrades of any of the BSDs, some user program will crash depending upon what changed in base. Linux, hardly ever happens, I have never had an issue with User Space on Linux Upgrades.
Windows does actually have superb backwards compatibility.
For FreeBSD at least, only in major version releases (12.x->13.x); with minor updates (13.1->13.2) there is API/ABI stability. (Free)BSD also has good kernel compatibility, so you don't have to worry about kernel drivers breaking 'randomly' with each update.
However, if you install the compatibility libraries then even recompiles may not be necessary:
* https://www.freshports.org/misc/compat12x/
* https://www.freshports.org/misc/compat11x/
“In some sense, you only hit what you aim at. What was the goal of the Linux community--to replace Windows? One can imagine higher aspirations.”
- Bill Joy, 2010.
Or, you know, neither, like Window Maker.
They're probably more successful than Window Maker.
My experiences as a person tell me that people and egos and circumstances constantly conspire against goals, ambition, and vision. There's always something that stymies a project. Maybe it's someone's ego. Maybe it's a problem that drains someone out completely. Maybe it's just a bad day for someone.
When networks of people are able to join together and fight entropy enough to sustain the life of a project... Wow. Just wow.
Anyone who added any type of energy into Linux that sustained it for everyone has my admiration.
For running web apps and hobby projects, I always use Linux (Debian and Ubuntu distros).
To me, Linux is the operating system for anything where I only interact with via the command line. This usually means VMs or containers for my web apps and hobby projects. Most cloud environments that I know of (AWS, Linode, Digital Ocean, Vultr, GitHub actions) support Linux.
While I have been curious about trying out other OS's like OpenBSD or CoreOS, my experience with Linux seems to be the most portable. It would never occur to me to even try running a web app on a VM or container that isn't Linux.
It's the same for me. Windows for desktop and Linux for servers.
(from my perspective, it's a modern miracle to be able to run "apt-get install libreoffice" at a command-line and have freely-available, no-license required office software available within a few moments including nearly like-for-like functionality and file-format compatibility with other office suites)
I have no doubts that both Gimp and Open office are close to feature parity, but the UX is just not there. The user interface has to be super slick everywhere because an average user is very spoilt.
One hope I have is that Windows have been going down the drain usability wise, so hopefully they'll screw up things even worse in Windows 11/12 etc, so the competition could pick up on it.
> if I'd go to my office colleagues and tell them to run some commands in the shell, they'd think I'm mad.
Depends on the colleagues, potentially - I often feel like I underestimate what other people are capable of learning, and that the resulting conversations can seem unintentionally condescending as a result of that (i.e. not preparing and demonstrating what's possible for fear that someone may not understand).
> The user interface has to be super slick everywhere because an average user is very spoilt.
Yep, that makes sense. However, whether I'm an employee, a business owner, an investor, or a partner who wants to see a business succeed: if I learn that the company is spending on software when there are lower-cost alternatives available that are ignored largely due to look-and-feel concerns.. some cognitive dissonance may develop. Especially if the potential cost savings could be pooled with others towards resolving those issues.
(on a potentially more practical note: what I hear from you is that user experience frustration can lead to dissatisfaction with software; I'm not sure what the best routes forward there are, other than encouraging further feedback and finding ways to improve and promote product design in user-facing FOSS)
But without that (and no one has figured out how to do it so far) I agree, I cant see it happening.
If you are thinking about Android, go have a chat with Termux guys how their adoption of Java APIs is going on.
But I also think it's actually a good thing I'm part of a tiny minority. Malware authors target Windows because it dominates the desktop. If suddenly 25% of the world's desktop users switched to, say, Ubuntu and GNOME, that would probably change. Right now, I enjoy all the benefits Windows users get from their desktops, without the drawbacks.
I submit that Torvalds' genius could be subdivided into technical heft vs. laissez faire management.
He made the in-vs-out calls more or less optimally, and leveraged the "libertaian" feel of the GPL, without getting bogged down by FSF ideology.
It was a small target to hit. The pattern might be less difficult to replicate now, but would a Theo de Raadt be able to carry the torch?
Torvalds nailed the timing/location problem.
Given the choice between standards and varying compliance (and there were a plenty of these and so #ifdef IRIX... never went away) and just picking one sub-optimal solution that was available on commodity hardware, the outcome was obvious.
The same situation is playing out in other industries as well right now.
Think about it. Most of the reasons people are giving for "why Linux succeeded" also apply to BSD. And these things have all applied to BSD for a long time.
Maybe it's some variation on the "first mover principle" where Linux just got there first. But I don't think that's a very good explanation.
Personally I think that the license has a lot to do with it.