2009
11.04

Linux sucks

So another six months and another Ubuntu disaster has been released.  So you, Ubuntu users, now have four choices:

  1. Perform an in-place upgrade with the real chance it’ll totally wreck your system.
  2. Perform a clean upgrade and have to reinstall everything and set it all up again.
  3. Download the LTS for three years of legacy apps and packages.
  4. Don’t do anything and live with an unsupported OS with legacy apps and packages.

The ridiculous thing is if you want to do something even as simple as upgrade Firefox to the latest version you must upgrade your whole OS.

If I wanted a new toaster I wouldn’t buy a new house.  If I wanted to upgrade the CD player in my car I wouldn’t buy a new car.  Yet why is acceptable to be forced to upgrade your whole OS to get new software?  This hasn’t been the case in my experience of the whole history of IT – barring major version jumps – yet nobody ever seems to mention this is a bad thing.  If I was ‘converted’ to Ubuntu when it was released – and the first version I used was Warty – I would be on my eleventh re-install.

For some reason though it seems Linux developers have this fascination with solving things at entirely the wrong level.  Applications are something you add to the OS – they are not an integral part (or shouldn’t be).  Yet 99% of the distro cruft out there is just a forked version of another forked version of some random distro with some different apps.  99% of the ‘buntu’s are exactly the same – Ubuntu Christian Edition, Edubuntu, Ubuntu Studio etc.  They are, at best, a theme pack and a few apps yet you have to download and install a whole new OS, and instead of only spending time on the things that are necessary you now have to support a whole new OS.

Ultimately there are only six or so ‘required’ distros:

  • Gnome Desktop
  • KDE Desktop
  • Old KDE Desktop (as the new one is still Alpha)
  • X-less server
  • Server with X
  • Low hdd/ram/cpu version

PCLinuxOS, Mint, Mepis, Fedora, all the ‘buntu’s, Mandrake**, OpenSUSE, CentOS, gOS etc etc all have exactly the same target audience and mission statement.  They are all either KDE or Gnome with the usual apps and no real tangible differences except having customised key systems (installers, filesystems, config methods).  Linux advocates bleat on all the time about how Microsoft “doesn’t follow standards” yet each main distro has a proprietary software format which doesn’t work on other versions.  It’s ludicrous.  The whole point of standards is interoperability, yet Linux distros cant even standardise among themselves!

Another example is drivers in the kernel.  If I want to get a new driver for Windows (or OSX) I simply download and install it, which is usually a very easy process.  If you want a new driver for Linux you have to upgrade your whole kernel or OS.

It gets even more ridiculous when the ‘Linux is just a kernel’ crowd pipe up (as they inevitably do) as if that is the case surely Gnome is just another app, and it can be upgraded and replaced without requiring a whole new OS just to add a new notifications area.  Microsoft has been bashed daily for years for tying IE into Windows, yet in Linux just about everything is tied to the OS.

Then lets look at the repository.  A centralised storage point of tens of thousands of apps, which need to be updated and kept current, and are only relevant to the distro that uses it.  It’s ridiculous.

Think of the cumulative man-hours wasted by unnecessarily supporting thousands of distro’s that do pretty much the same thing in parallel.  Imagine what could be done with the time freed up by not having hundreds of lists of tens of thousands of bits of software and what great things could be done with that time?

On OSX and Windows these things are simply not necessary.  Software comes as an extra, supplied by the very people that make it, with the bonus that OS maker doesn’t have to waste time supporting it and you get updates when they are actually released.  Same with drivers – if Foocorp wants to release a widget they don’t have to involve anyone* if they don’t want to.

Correct development practices require writing modular, self contained, block of code.  The reason you don’t write sprawling 1000+ line functions is that when you do you risk causing a problem somewhere else.  Keeping everything self contained means that unless you actually fiddled with it directly it will continue to work.  I have libraries I use that I wrote years ago that I have not looked at the code in equally as long.  It’s self contained and the only thing I need to know is the interface – which is constant.

Driver code should be self contained.  It should use a stable ABI so that once the driver is written for a major kernel version it should just ‘work’.  Software should be as self contained as possible, relying on a stable API to access system functions.  At no point should the OS designers have to care what the driver or software code is.  It shouldn’t even be necessary to look at it.  Yet when MS released driver code for Linux there was a huge outcry that it didn’t follow coding standards etc and it appeared to be impossible to just compile it, yet I would put money on the fact that Windows and OSX driver code follows their respective OS’s coding standards without issue.

The very fact that a kernel update can break previous drivers is a sign that something is wrong.  The fact that it appears to be impossible to simply install some software like you would on any other OS without having to deal with a mess of dependancies and problems to the point that you are required to update your whole OS is not just ‘another way of doing it’.  It’s stupid.

It would be interesting to work out what percentage of the Linux development community is engaged in these pointless make-work tasks that shouldn’t even exist in the first place.  Between that and reinventing the wheel (Hello ALSA, Pulse Audio, Gnote etc) It’s no wonder nothing ever seems to get done.

* Microsoft do like to sign drivers for stability reasons, but it’s not mandatory, just advisable.

** To me it will always be Mandrake.  Mandriva sounds like gay slang.

10 comments so far

Add Your Comment
  1. Jesus Piestar, I thought you were a goner, then you go and put up like 10 posts in two days!

    You said it all. There’s so much work replication in Linux that sometimes I think that if everyone worked together on 3-4 distros, Linux might have a chance against Apple and Microsoft!

  2. “So another six months and another Ubuntu disaster has been released. So you, Ubuntu users, now have four choices”

    fifth choice -> UseDistroX™

    “The ridiculous thing is if you want to do something even as simple as upgrade Firefox to the latest version you must upgrade your whole OS.”

    ICanUpdateAllMySoftwareWithOneClick™

    ” Linux advocates bleat on all the time about how Microsoft “doesn’t follow standards” yet each main distro has a proprietary software format which doesn’t work on other versions.”

    LinuxStandardBase™

    “Driver code should be self contained. It should use a stable ABI so that once the driver is written for a major kernel version it should just ‘work’. Software should be as self contained as possible, relying on a stable API to access system functions”

    ABI? API?
    JustReleaseTheSource™

    “Between that and reinventing the wheel (Hello ALSA, Pulse Audio, Gnote etc) It’s no wonder nothing ever seems to get done.”

    Choice™

    “It gets even more ridiculous when the ‘Linux is just a kernel’ crowd pipe up (as they inevitably do) as if that is the case surely Gnome is just another app, and it can be upgraded and replaced without requiring a whole new OS just to add a new notifications area.”

    TalkToUpstream™

    “On OSX and Windows these things are simply not necessary. Software comes as an extra, supplied by the very people that make it, with the bonus that OS maker doesn’t have to waste time supporting it and you get updates when they are actually released”

    OSXAndWindowsAreNotFreeLibre™

    in one ear and out the other, eh Kerb

  3. I’d just say leave them and their plaything OS to chase their tails until the whole thing collapses into one big rotten heap if only they’d stop trying to sell it to the ignorant masses.

    Every time Linux has been presented to Joe User, it has been rejected. Out of all of the reasons given, I’ve never seen anyone admit that Joe just didn’t like it.

    Now they are pushing the thin client model again (groan), because if there’s one shining hope for Linux it’s as a platform upon which to use some other paradigm to get your work done – just like the lusers with virtualbox XP installs, or who use terminal services into an NT box. On its own it’s pretty pointless because ItsAllAboutTheApps(tm)

    Yes, the future of linux – running embedded systems that run someone elses platform because that’s where the apps are.

  4. @ Anonymouse – Thats one of the funniest (and depressingly true) things I have seen in a long time. I can see the expanded freetard answers in my head as I read it. I guess nobody is right – they will never get it, and it’ll just trundle along until it implodes.

  5. Not understand linux move forwarding. For long time not care about user only devloper. Now move to caring about users more which is why use graphical interface instead of command line type.

  6. If I wanted a new toaster I wouldn’t buy a new house.

    LOL. That’s the best phrasing I’ve ever heard.

    If I was ‘converted’ to Ubuntu when it was released – and the first version I used was Warty – I would be on my eleventh re-install.

    …in five years. Yet all of us know of XP installs still humming along fine after five years (especially after the introduction of SP2).

    Ultimately there are only six or so ‘required’ distros

    Realistically, these could even be consolidated within an umbrella release since it’s not like the software is fundamentally different between them: just install options. All-in-all, the differences between these targets could easily be covered by something like Debian’s ‘tasksel’ dialog. If you exclude third party software this wouldn’t even consume more than a few hundred megabytes.

    Think of the cumulative man-hours wasted by unnecessarily supporting thousands of distro’s that do pretty much the same thing in parallel.

    It gets even worse. There’s a lot of software out there that gets repackaged over and over but sees little activity upstream. Inactivity doesn’t mean the software is useless–quite the opposite: it’s an indicator of the software’s stability. However, hours and hours are spent recompiling the same release over and over for nothing more than a lateral move, by definition.

  7. ” Linux advocates bleat on all the time about how Microsoft “doesn’t follow standards” yet each main distro has a proprietary software format which doesn’t work on other versions.”

    LinuxStandardBase™

    when someone retorts the infamous LSB “standard”, remind him that the LSB mandates its own set of libraries (“environment”) and its own runtime linker devoted to load LSB libraries from their own path (instead of native ones in the normal path) to serve LSB compliant applications – an LSB compliant distribution may have the lsb linker installed as a symlink to the native one, but from the LSB’s perspective it’s different linkers and environments anyway ( more than two, if you want to support different LSB versions – different lsb-ld.so.n linkers are explicitly mentioned), bolted on and coexisting>b> …
    now, there’s a name for something like this, but “Common Denominator Standard Specification” is
    not it …

  8. For long time not care about user only devloper. Now move to caring about users more which is why use graphical interface instead of command line type.

    the GUI has been invented in the 80′s, and the creation of consistent and comprehensive GUIs for administering a system without having to type commands ( something that being a slow typing SW designer, i personally appreciate) has long been proven feasible, so it’s about time for an OS that wants to be “the desktop of the future”

    but the problem with linux is that a) even as a console driven OS, linux is buggy and inconsistent (for the sake of “choice” – see ACLs, support for which may or may not be installed on the current kernel, and varies from “more or less” to partial to buggy to nonexistent across the userland); and b) serious sw development ( especially on something as complex as an OS kernel) is about design besides implementation (analyze requirements, then study overall structure and APIs between components, then implement mechanisms behind those APIs) and good practices (if and when APis prove lacking, extend them but retain compatibility for at least an assured time window, don’t remove/replace them with different ones all of a sudden), so the fact that linux developers don’t grasp this concept, or deliberately choose to ignore it in order to churn out subpar code (that even The Finn has judged “bloated”) or pursue their political agenda, makes me think that all this “for developers” thing is a big lie

    and don’t tell me that kernel APIs are made volatile since all drivers shall be open source… architecture and development are orthogonal matters, drivers can be decoupled from the kernel proper, AND be GPL’ed at the same time

  9. I agree.

    I tried Puppy and it won’t recognize my WiFi.

  10. Actually this isn’t really like getting a new house to get a new toaster, it’s more like changing the wallpaper in the whole house, and getting new furniture (from IKEA) to get a new toaster. Getting a new house to get a new toaster would be like getting a new computer so you can upgrade FF. Or maybe it’s like moving to another country to get a new toaster. Whatever…it’s always a lot of senseless bullshit…

    …then again, some people like doing that kind of shit….don’t they…but not me. And I’m still in my first install of SP1!

    The main thing is that those fucking releases are supposed to be for the people, by some people…and they just fuck up people.