Saturday, December 8, 2012

Linux is Free and it Shows


"Year of Linux Desktop" has always been a delusion of grandeur, or the so called pipe dream at best. It'll remain so for the future n-number of years, cos Linux is free and it shows, feels and works like everything free, with a connotation of "Cheap".

There's no problem in its being free and open source as long as it works for the majority of userbase, which it certainly doesn't. Why? Because it lacks the commercial gloss people are used to. Against popular belief, you won't have to practice closed/proprietary means to achieve that polish and gloss. All that's important is certain orderly and cohesive approach to how software work, in both users' and developers' point of view, and a clear direction. For example, Android is both opensource and free, yet it brims that much desired commercial gloss, courtesy the big G's focus on user experience. The Big G knows what to flaunt, what to hide, and so on.. and on..

On Android you don't bother which bootloader to load - grub or lilo, which DE to choose from - KDE, Gnome, LXDE, Blackbox (there're a dozen others), how to set system initiation - systemd, sysvinit, innserv... how the sound and audio subsystems talk to the rest of the system, bla..bla..bla... Here these ugly system software work under the hood, users are unaware of it for a lot of good reasons. This is how the big G establishes order in an otherwise chaotic open source model of software development.

The prevailing model of linux and the software built around it suffer from three perennial diseases due to its overtly free nature of "Fork everything and Break everything" development:

#1 Shoddy quality of software: Forking model of development that leads to bad testing, rapid release cycle and unnecessary overdo. Users are often forced to fix certain problems where they should not happen in the first place. For example, a certain sound card works out of the box on a certain distribution, needs to do some manual editing of certain config file on some other in order the sound to work, wherein still others the users are forced to remove a certain component and install/build something on their own. Whereas the kernel versions, alsa/pulse components, DEs and the usual software stack are the same across all these examples. Reason? Bad integration! Morever, these type of user annoyances are not restricted to sound only, they are there in network, graphics, power usage, and then some more, in other application software too. The situations/annoyances aggravate further when every distribution puts together certain types and versions of the system and application software different from every other and in a different way, where most of them seem similar on the surface.

#2 Overkill: Forking and freedom to do everything leads to unnecessary overkill of time and efforts and further contributes to shoddiness in software quality. For example, what KDE or Gnome should do? Develop DEs and a few DE-specific tools/appls, right? But that's not the case, they keep constant focus (and ignore the core activities) on things they should not do in the first place. First of all, application software should not be DE-specific, yet every DE, be it KDE or Gnome, has its own set of office suits, browsers, messengers, media players/managers and system utilities and tools. This, more often than not, results in poor duplicates of certain industry standard software. Intrigued? Just compare KOffice with LibreOffice, K3B with Brasero or XCDroast...? Everybody loves to skin a frontend, cos its' tough and boring to squash the bugs out of standard libraries such as gtk and qt, and backends such as cdrdao or growisofs.

#3 Always in transition: Lastly, this forking and chaotic nature of development creates an environment where the platform is always in a state of transition. Consider the period of transition such as hal >> udev, alsa >> pulse, xserver >> wayland, module-init-tool >> kmod. Sadly, it has been so from the very beginning, and it will remain so till eternity. It is a major contributor to user annoyance. How about consolidating various forks, putting enough manhours and creating something that will just work, in stead of forking every which way possible and breaking things on the way.

I'm sure only very few will agree with me. Cos most of the so called open source community members consider free software as a cult than a tool for general well being. For them choice (read it Chaos) is everything. And yet they expect a placebo effect to these perennial diseases of bad quality and performance. They'll poop, fork here and there, make badly integrated incohesive software tank to drive to the nearest supermall, whereas a lean street bike would have been a better choice.

How about this