We all know these arguments. An outsider comments on Linux distribution plurality and says that the lack of a unified platform is what hurts Linux adoption. This argument is not without its merits, but it isn't exactly a valid argument anyway. The first main issue with it is an obvious one. If no one singularly owns and controls Linux, no one would be able to pull all variants off of the virtual shelves and standardize the community on a singular distribution. Beyond this, there exists an entirely practical reason for distribution plurality that people tend to overlook.
One of the biggest causes of distribution variation is actually just package selection. This wouldn't be the case if applications were easy to install 100% of the time, but they aren't. Most people are not going to be willing to rebuild their compilers, install fifty other packages, change/create 10 environment variables, symlink 20 libraries, and add 3 groups to their machines just to install a single package... and nor should they be. People who are not willing to do these things are not stupid. They are not lazy. They are simply unwilling to do something that ought to have been made simpler by the programmer(s) who created the package. This is a cost/reward scenario that they perhaps rightly feel is heavy on cost and not so much on reward. The thought by the developer(s) is something like "we coded this for Linux, which is a fractured platform, but we made no effort to accommodate any differences that may arise from release to release of even a single distribution, library, or even our own application. Figure it out yourself, because we are too busy, too arrogant, and don't care." In response to this issue, members of the community began making distributions that include everything a day to day user would ever need. All of the annoyances of getting software to work are taken care of by the distribution creator(s), and the rest of the community is free to simply use their computers.
The problems that exist with software installation wouldn't be so terrible if everyone actually documented the software that they create. Quite often, you will find that certain packages are available only for a specific distribution. No other binaries are available. No dependency listings are available. Nothing. You install Ubuntu in a virtual machine. You save a list of every package listed in the default install. You then install the package you originally wanted. You list every file in every package that the targeted package requires. You then scour the internet looking for the project from which each individual file originates. Nothing. Google reveals nothing about your plight at all. No one has ever apparently wanted to run program X on distribution Y. You post your inquiry on a message board (possibly the message board for the targeted package). Nothing. In the history of computing, this is must be a first. No. Thousands of people have had this very problem. Thousands of people get so frustrated by this type of bull shit that they actually go back to using Winders or OSX.
Why does this all happen? (1) Many programmers go fully native for every application that they write without worry of portability. This makes the applications highly non-portable from distribution to distribution, library version to library version, architecture to architecture, and OS to OS. (2) Many programmers mistakenly assume that Ubuntu is the only Linux distribution that matters. (3) The IT field is snobbish, and the technorati look down upon the poor plebian masses despite the fact that it is those plebian masses for whom everyone in IT really works.
So, seeing as most of the software developers out there are never going to change their opinions about any of this, distribution developers/packagers/whateveryoucallthem took on the task. You can use Pinguy and have everything plus the kitchen sink thrown onto a DVD. You can use Slackware and have a ton of different libraries available. For anything not on the install disc you have your repositories, and if that's your cup of tea Debian has the largest repositories of all. It's funny that when the closed-source world decided to create software repositories they called them "app stores" and the idea was "revolutionary."
There were a few issues with these solutions of course. First, no one can ever agree on a package format or build system so we have tons of them. Second, no one can ever agree upon which applications are best to include. This leads to many holy wars (Vi/Emacs, GNOME/KDE, MPlayer/VLC, etc...). Third, everyone wants to be chief. These three reasons cause endless forking and an infinite number of respins. Shortly after Ubuntu was first released there were six versions: Ubuntu, Ubuntu AMD64, Kubuntu, Kubuntu AMD64, Xubuntu, Xubuntu AMD64. A seventh was created not long after, and that was the server version. Within a few releases, Ubuntu had a graphical installer that required a bit of computing power. For lesser machines, we now had a low memory "alternate" version of all of these that excluded that graphical installer and live environment. That makes 14 total versions within the official Ubuntu camp. That's 6 main versions, add in alternates, add in 32bit and 64bit server... 14 total versions. Some people weren't satisfied with any of those 14 and unofficial respins started popping up faster than pricks in a brothel.
The nice thing about standards is that there many from which to choose!
Oh wow, here I actually expected a positive outlook on distro pluralism, but I guess I misinterpreted that title..
ReplyDeleteAnyway, most of your arguments go along the lines of "why can't humanity just agree on one language/cuisine/culture/music/whatever, then it would be SO much easier to serve everyone.."
And what's with that counting of 64bit versions as separate spins? That's just ridiculous...
maybe you'd like to download a DVD which has both i686 and amd64 software on it just to install half of it, but I certainly don't.
The other spins are there because of choice of desktop environments, which I am VERY grateful for, and not due to disagreements.
"Many programmers mistakenly assume that Ubuntu is the only Linux distribution that matters."
I am sorry? How do I program specifically for Ubuntu? I can develop in GTK or QT, but Ubuntu?
FOSS software usually has FOSS dependencies, of which the majority is usually cross-platform, so again, how do you specifically code for Linux unless it's related to X11/systemd/etc?
Might this have something to do with frustration from only finding debs when you were on a non-debian platform? If yes, I've been there too.. but it's definitely not the programmers or anyone else's fault.
I have to agree though on the part that sometimes I feel programmers need to pay more attention to using libraries whose sources/wikis can easily be located on the net, and in case they aren't, they ought to at least include links. But, this opinion only stems from a very small number of experiences.
@俺久郎, I didn't mean for this to be against or for distribution plurality. I was just trying to explain a few uncommon reasons as to why there are soooo many distributions.
ReplyDelete