With the recent open-source movement, more and more major software choices are using more open toolchains for development. This has also given Linux the opportunity to rise. With the increasing number of software applications, more and more people consider Linux as their primary operating system. As a result, Linux's desktop market share (including other *nix systems) is approximately 5%, which is a considerable market share for an operating system.
However, Linux has never been a unified system. The last time it resembled a system was during the era of GNU and SysV, when people were still using them. Since then, Linux has become more fragmented, and its ecosystem has become more scattered. This has led to a situation where there are hardly any general-purpose software developers who would choose Linux as their primary target. What is the reason behind this?
The Marketplace Creates High Entry Barriers#
Both Linux distributions and software developers have to package their software in different ways, similar to selling their goods in different marketplaces. This can be seen as a good thing, but it often leads to compatibility issues of various sizes.
A qualified Linux user often has to encounter and solve numerous problems and then share their solutions on websites for others to refer to. However, even as someone who has been using Linux as my primary operating system since high school, I completely gave up on Linux when Windows Subsystem for Linux (WSL) was introduced in 2019. I believe we should find some reasons from within.
When I first started using Linux (Ubuntu 14.04), I encountered numerous bugs. However, many people on forums and websites responded to my issues with a somewhat hostile attitude, saying things like "You don't know this? Please check the man pages or search for it yourself." This was extremely difficult for a beginner like me. I didn't even know about the existence of man pages, and I never received proper education on Linux or any experience with Unix-based operating systems to know how to use man pages.
When I gained some basic Linux skills, I found that RPM-based distributions were more common. However, when I started using Fedora, I encountered the same problems again. Where were the documentation and guides?
Just like shopping in a large marketplace, you may know what kind of pesticides and fertilizers were used on the vegetables, where they were grown, and which country's seeds were used. But can you know all the details? No, you can only see fresh vegetables that have been cut and sprayed with water.
The Lack of Ecosystem Cannot Be Solved by Open Source Enthusiasm Alone#
I have never experienced a Linux distribution that can capture users' minds at the same level as Windows. From XP to Windows 11, if you want to use the full suite of Office, you can only do so on Windows. On Linux, there are only rough alternatives like OpenOffice. Discussing open-source spirit with regular users is not very useful because no matter how loud the slogans are, they won't make a difference.
Take Photoshop, for example. I think Linux's attitude is ambiguous. If it's not difficult to port to Linux, why doesn't Adobe do it? The truth is, there is no "if" because many Adobe products originated from Mac, and the core of Mac is based on BSD, which GNU has also worked on with GNU NeXT. It's just that these arrogant people don't welcome non-open-source software and insist on developing their own alternatives. Just compare GIMP and Krita. Which one looks more user-friendly? Do you expect graphic designers to use software full of bugs and with a UI that is extremely unattractive?
Loose and Dispersed#
Anyone who has used Windows has probably heard of the registry, control panel, and settings.
A great invention of the last century
According to Microsoft's unreliable statistics, Windows has twice as many configurable options as Linux.
Now, let's look at configuring Linux. Forget about the registry; you need to edit various .conf or .ini files in different folders such as /etc, /usr, /usr/local, and ~/.local using editors like nano or vim, with their peculiar syntax.
And if that's not enough... have you heard of multiple versions? There's one in /etc, one in /usr, one in /usr/local... You can't even be sure if your configuration is effective. And now, more and more software just throws their configuration files into ~/.software. Great, we've won.
Although many people criticize the registry, would you choose between adjusting the registry and group policies or SELinux and Systemd?
By decoupling, we have obtained more difficult-to-use interfaces.
And that's not all. Look at DBus. How many implementations are there? The commonly used ones include:
- Apple: We all use COCOA.
- Microsoft: COM interfaces are still alive.
- Linux: Systemd dbus, kdbus, gtdbus, qtdbus, libdbus
The problem is that you are several times more complex than them. You introduce so many options, some go into the kernel, some are distributed with software... it's really frustrating.
One of the directories that can easily frustrate sysadmins
This is my etc directory, with thousands of different files and dozens of different description languages. It's like a joke.
Some may argue that Linux's ancestors are Unix#
Do you remember how Unix expanded?
That's right, it was because it was user-friendly. In the past, everyone had their own set of idiotic interfaces (similar to Linux today). Buying a computer meant using a specific OS, and changing computers meant changing OSes. Data couldn't be migrated in between (similar to Linux today). So, a group of game developers spent a week developing a prototype of Unix.
The rise of Unix and the C language demonstrated that simplicity, directness, and practicality are conducive to spreading. However, the current open-source community and hacker culture seem strange, as if they don't want novices (like me) to integrate into this circle. They are self-enclosed, and the things they create are becoming increasingly incomprehensible (like our beloved k8s).
Another counterargument is: Didn't Unix users fix things themselves in the past?#
You can see the proportion of computer users with higher education back then. As computer systems became more complex, a great operating system could be written in just 10,000 lines of code. Now, even a scripting language requires more than 10,000 lines. The era of solving everything with a black screen and green text shell is long gone. Furthermore, Linux's user environment now consists of over 2,000 packages, each of which is likely to require specialized knowledge.
Times have changed. Previously, a 200-page book could detail all the functions of an operating system. Now, I think it's difficult for a single person to remember all the top-level modules of an operating system.
During the time when Unix was popular, almost everyone was half a programmer. I remember my father saying that in their time, they had to manually load the graphics card, adjust the resolution, load the sound card, mount a floppy disk, mount another one... until finally executing the game. How many people can do the same things in a Linux CLI now?
In conclusion, my viewpoint is that the current approach is outdated. As developers, we can leave some room for configuration during development, but the era of everything being configurable or allowing users to tinker with everything has passed.
Final Thoughts#
The wheels of history keep turning. As for what the future operating system will look like, no one has a definite answer. However, the development direction of technology will undoubtedly be more user-centric, allowing everyone to enjoy the benefits of technology. Products that achieve this will definitely be successful. Windows 3 became successful this way, as did Mac's NeXT. Who will be next? It will definitely be something that is more user-friendly than its predecessors.