The year of the Linux fail

Posted in Linux on 02.11.2012.

It has come to my attention that once again the waters of open source ocean have been stirred, this time by the discussion between Linus Torvalds and Miguel de Icaza (on G+).

Then came this article, titled "How would you fix the linux desktop?".

Before you continue to read, please bear in mind the following:

  • This text is longish..if you have stuff to do, go and do it, it's not worth it.
  • If you're going to get pissy and call me a troll because I disagree with you - go away.
  • I am a full-time linux user. I love linux. I love working with it and recommending it to everyone I know. I am not a Windows fan, nor am I an Apple rich kid.
  • I am a software developer who, when not procrastinating (often, sadly), likes to get shit done - efficiently.
  • I am in all likelihood going to continue using linux for as long as possible.

What you're going to read below may not be the most pleasant thing you've ever read. In fact, if you're a linux fan, you're probably going to be pissed by the end of it. Before you post an angry comment about how stupid I am (but still somehow smarter than you), remember the above. This is just constructive criticism, not bashing. I'm going to criticise all the things I wish to see improved, so that one day linux takes over the majority of market share.

It's a stupid dream, and you probably know it as "the year of desktop linux". I'm now going to reverse that, and name it [fanfare.wav] "the year of the linux fail".

Don't get me wrong. I believe linux has the technological superiority. But WindowsTM is catching up. Developers working for M$ are a smart bunch, they will start implementing stuff only unix/linux had. In fact, they already started doing that: have you noticed that every WindowsTM user has a 'home' folder now?

So let's see why did linux fail in spreading. There are several factors, and every single one is important. Some are at the core of it, some are spread around like human stupidity (bad, right?).

Where the hell is it

Speaking of those at the core, here is one, huge, mega-collosal problem of every linux distribution out there - the file system. The more perceptive of you will already know what I'm talking about, even before I start talking about it. The linux filesystem is a horrible, horrible mess. Because this:


doesn't make any sense at all. If you try to say it does, I'm going to be honest and say you're full of shit. There is no way in hell that having this many folders for executables and libraries can be justified rationally. It's just ridiculous. And we've known for quite some time why this is so!

Some may say "Well, isn't LSB doing something about this?" No, I don't think they are. Sure, they may change things for the better..a bit..while swimming in a pile of shit. What we need is to get out of that pile. Not by modifying the existing structure of the filesystem, but by reinventing it entirely.

It is time to do something radical about it. Not just tweak it. Like not call the /etc folder /etc. Will these changes ever happen? Probably not. Fail.

I won't pretend I have a solution for all this, because I don't know the details of the system that well. But I'd like to see something like this:

/home/[user]/applications/[app name]
/applications/[app name]
/system/applications/[app name]

And it's simple too:

  • /home/[user]/applications - contains individual applications WITH ALL THEIR GODDAMN LIBRARIES, IMAGES AND SHIT. I fail to see why one has to be an admin to install something as simple as a text editor. I also fail to see why libraries and resource files must be spread all over the damn filesystem (with the exception of configuration files, which should probably go into some sort of ~/.config and only there). Libraries here should probably override those at the system level for this individual app.
  • /home/[user]/applications/bin - included in the user $PATH, when you want to add non-system applications to your path. Optionally, the installer can ask the user to create a link here immediately.
  • /applications and /applications/bin - same as above, but for all users, and of course, only root can install stuff here. Is it a system app? No? It belongs here. There is no reason why something like a media player or a web browser needs to be installed in the system, since it is not essential to the system in any way imaginable.
  • /system/bin - Merge all the bin and sbin folders here.
  • /system/config - This is what used to be called /etc for no apparent reason.

How do I even

Speaking of something even more mind bogging, let's talk about usability. You want the masses to use linux? You want it to spread like ebola? Well, sucks to be you then. Me as well.

Because linux has no viable desktop environments right now. I've already written about this earlier, but this is not the whole picture. The current desktop situation is quite sad.

I know, I know, you have a very nice desktop. You're using ${insert your desktop/wm here}, and you've tweaked it just right. But guess what: you TWEAKED it to get it right FOR YOU. In all likelihood, it involved painstaking editing of configuration files, googling your ass off and visiting IRC channels to get some of that shit done.

Here's a thought: THIS IS NOT OKAY.

Why it's not okay? Because the average user doesn't give a shit about reading shitton of manuals, chatting with "y u stupid? it's simple just RTFM dude!" idiots or googling for centuries just to install a desktop theme. If your grandma can't do it - it is bad.

And now that the two used-to-be-best desktop environments, Gnome and KDE, have gone apeshit with making themselves less usable, and more importantly less configurable, what other options are there? Can you think of anything you could give to your grandma? Could she install an app in two clicks and find it immediately on the menu? If your answer is yes, you are most likely a filthy liar.

Stranger in a strange land

Hey, let's talk about developing apps for linux! As a developer, I've had wet dreams of me developing desktop apps for linux, even when I was still on Windows. What happened next, was a very unpleasant awakening. To write an app for linux, you have to deal with so much fragmentation, it not even remotely funny. In fact, I'll boldly say that it's completely unfunny.

When you want to develop an app for Windows, there is virtually no question about which language to choose, which framework or which GUI toolkit you're going to use. And that's a good thing.

Don't give me that "choice!" bullshit. There is still choice on Windows. You can still do stuff in other languages and frameworks. But if you're a business company and you want to make sure your app works on windows, you're probably going to go with .NET and C#. Again, this is a good thing.

What do you pick on linux? Python? Ruby? C/C++? GTK? QT? WxWidgets? Tk? How do I know my shitty app is going to run on 99.99% of all linux PCs out there? How can I know it will look and act the same? With linux, you might as well shoot yourself in the foot right now.

Not only you have too many shit to choose from, because even if you choose a particular shit, you have no idea what libraries the target system is going to have. You have no idea what will the file structure be on the target system, since every dipshit distribution out there has it's own idea of "good filesystem". Almost worse than that is the inconsistency between different GUI toolkits, even between different versions of the same toolkit. Your app may look fine on your system, but wait until someone in Taiwan installs it on a high-contrast theme. Or someone tries to run it with even a slightly different configuration.

In short, developing apps for linux looks like a horror story. When I read about the "dll hell" on Windows, I thought that was bad. Boy was I wrong. I can only guess that maintaining apps on linux is even worse. I say guess because I've given up for now, my wet dreams all dried up and turned into a desert.

Don't even get me started on contributing to existing projects. Yeah, I tried that as well. But when I found out I have to install the universe with all the dependencies in order to freaking BUILD something? No. Just...NO. Hey, I know, what about...

Installing software

Repositories are awesome, they really are. Here's another thought: self-contained setup with all the shivadamned dependencies and resources...and shit. It installs the app in a single self-contained app folder. It puts the lotion on it's skin.

Moving on.

I accidentally a user

So what's the first thing you discover when you try to use linux as a dumb user? Papercuts! Yes, those same papercuts Ubuntu tries to eradicate - unsuccessfully. Not only does every user app have them, even the WMs have them! You want to play a game in fullscreen while running compiz? Well, screw you! You want to have a file manager which remembers all the settings consistently? Screw you again! The list just goes on and on.

I understand that most apps are created when a developer wants to scratch his itch. But this is absurd. A lot of the apps offered are just a heap of amateurish attempts at something serious - many of them look great on screenshots, but as soon as you start using it for real, shit breaks down. Hard.

Completely mental

Just look at the shitty comments here. If you ask me, that is a perfectly legitimate review. User tries out shit + shit doesn't work = review with bad grades. But you get a lot of unreasonable arguments from partially braindead fanboys with no sense of real-life environment. I particularly liked one comment which said the following:

The funniest part is that after failing to get the screenshot tool to run by clicking the button the reviewer didn't try another tool and didn't check that the tool he tried was even installed, he didn't seek support, nor did he troubleshoot in any way.

Do you know WHY he didn't do all that shit? BECAUSE HE SHOULDN'T.

Last time I checked, this was the odindamned 2012. If this is a modern OS, things should work out of the box. If it's a piece of shit, then no, it shouldn't. And you're telling me we should justify a thordamned screenshot app not working?! NO.

And this...I guess the core problem. The mentality of linux users and more importantly - linux app developers. Somehow, it's okay if things break. Because you can..troubleshoot it. And RTFM. And google it. And apt-get something else. How on earth did these things become "okay", I have no bloody idea. Because when stuff breaks, I don't want to troubleshoot, I want to shoot the troublemaking developer. I want my system to work, no questions asked.

Final point, I swear.

I know many will say that "this-and-that distro is not meant for desktop", it's meant to be used by hackers and experienced users. Fine, fine point. I honestly have no problems with that. But I'm not talking about those distributions. The things I talk about above are present in all distributions, including those so-called "user-friendly" distributions: Ubuntu, Mint, Fedora, openSUSE etc.

In the end, I'm going to quote another comment from the link above, by some random guy named Tony:

Statement: "I'm not an expert, I don't think I can handle Linux"

Counter: "It's just as easy as Windows! And better!"

and then later:

Statement: "It was too difficult, this didn't work"

Counter: "You n00b, you're not l33t enough. Go back to Windows"

That about does it.

p.s. If you're going to post a comment, don't be a dipshit or I will remove it.. Calling me gay, fag or noob is not a valid argument. But if you're going to disagree politely, one kudos to you! If in doubt, go back to the list at the beginning of this article.

Article comments — View · Add

Page 1 of 2
1 · 2

poulet :: 06.11.2012 14:36:31
Nice way to put in relief bunch of things in Linux, nice article.

"There is no reason why something like a media player or a web browser needs to be installed in the system, since it is not essential to the system in any way imaginable."

Note from marketing: Are you kidding us?? xD
Logan :: 23.11.2012 04:01:35
I think I agree with everything save 1.5 things:

0.5) Perhaps rather than doing away with many choices, they need a common back-end binding. For example, Windows has CLR which allows many different languages to access the same .NET runtime API's. It's pretty fantastic. If Linux had something like this (for really any branch of software), it would greatly increase the devlopability(?) of... well, those things. Definitely needs a major overhaul, but I think the greater choice is a benefit in the long run IF something like a linux CLR can be developed.
Logan :: 23.11.2012 04:01:56

1.5) On repositories... I see no benefit to what you're saying. With repositories, the package manager should handle dependencies for you if the program creator packaged the thing worth a damn. If not, then the all-in-one solution will fail as well. So, for both arguments, let's assume the developer is good enough to distribute it properly. Well, with the all-in-one distribution, it's very inefficient and you have multiple copies of the same libraries lying around. With Repos, you just have to install what you don't have, and it SHOULD be taken care of for you. Besides, there sort of is self-contained sets: Debs, RPMs, etc. Now, the segmentation between distro's in that case DOES annoy me.

Made me split it up.... Sorry.
Amar Ashworth :: 12.12.2012 01:27:26
Linux is trash, albeit compelling trash it is still just amateur trash. The defenses for Linux are just couched arguments for an utterly underdeveloped OS. The fact that I cannot find a single distro that will run Netflix out of box, because of Linux's own internal issues with DRM,or the fact that not a single distro will run my printer properly even with drivers, Or that Linux does not display color correctly, etc. etc. media problems, etc. etc.
Henk Hagedoorn :: 15.11.2013 14:30:43
I agree with what you are saying - I am also a Linux user, as well as a programmer.
Instead of constantly trying to 'innovate' (see e.g. Gnome 3, Unity, etc) satisfying their own ego's, they should focus on streamlining and incrementally improving the software. A desktop environment is not a goal in itself, but only serves to start 'real' software.
Yes, the Window's dll hell is nothing compared to what Linux offers. This has prevented me from developing Linux software for many years. I would recommend Lazarus, which solves this problem, It does not compile against the C/C++ headers which can change - never change an external interface !!!. The applications do not need to be installed. They will have a size of >= 2 Mb - with the right compiler options. There are no dependencies, libraries, etc. You can also create Windows, Mac and Raspberry Pi applications: create once, compile everywhere.