February 19, 2012

Open source or how to make bad-quality software

First of all, let me say that the title doesn't (and wont) match all and every single open source project. There are really good open source projects!

Said that, let me start. One of the main problems with open source is XKCD 927 and the (ridiculous) need of writing and re-writing the same code again and again, and making it more maintainable and optimised, instead of just making it work and making users use it.
I'll backup that with one of the most recent examples I can think of: Dolphin, KDE's file manager. You see, Dolphin has been here for around 5 years, maybe even 6. The 2.0 version was released a few weeks ago, and there was a major rewrite that would allow even more awesomeness and beauty... Err... I'm still not able to rename a file in Dolphin without seeing an annoying input box instead of making the file's label writeable (as in Mac OS or Windows).

Another example is Ark, KDE's WinRar equivalent. Ark has been around here since ever, yet I'm still not able to make it try all possible plugins for a file instead of failing after trying only one. (bug) That's probably a 50 lines patch, but nobody fixed it.

Yeah, yeah, I know what you'd say now: "Fix it yourself!". That's just a brilliant answer. I'm willing to see some guy from a support center of a proprietary software that you paid for telling you the same thing. I know Open Source just doesn't work that way (mainly because I'm working in an open source project), but that's just not the point. If you're going to write some software, do it right! Don't just write some crap telling everyone that you accept patches. If it's not working properly, don't release it until it's finished.

I could write at least 1000 more examples, but instead of that I want to tell you where does the problem come from, or at least where I think it does come from.
As I said earlier, it comes from XKCD 927, or as the majority of us, geeks, call it: liberty of choice.

If you have read some of my other posts, this will sound familiar to you: there are hundreds of music and video players for Linux, non of them is good. There are at least a dozen of file managers and all of them are just ugly and buggy. There are as many package managers as distros. Why? Aren't they all doing the same thing? The only main difference I can think of is fetching/installing precompiled packages (Debian,  Ubuntu, Arch) or fetching source and compiling (Gentoo, Arch with yaourt).

The excess of possible choices is making Linux experience as general suck (I'm Arch-only user since 2 years, only-Linux-die-hard user since 8). IMHO something is going terribly wrong if an experiences developer and Linux user is saying that Linux experience as general sucks. Isn't it?

And, imho, that's why Linux is not going to make it in the desktop pc's any time soon: because of the low quality it has. Just compare the servers market: you can get a Windows with IIS or Linux with Apache/nginx (yes, of course you can get BSD with god-knows-what-web-server). Windows with IIS just sucks. Bad performance, low security, ... It's obvious that the best choice is Linux with Apache/nginx. No doubt there, no confusion.

Let's compare desktops: You can get Windows, Mac OS or some of the 9.358.267 distros around there (good luck choosing the right one). Also, good luck choosing between the different desktop environments. I mean, there is the performance factor that makes you choose a good looking desktop environment or a light-weight desktop environment. But what about the other ones?

Also, I almost forgot to mention another big problem: confusion. We, geeks, think that everybody understands how applications work. That's a big error. They don't.
You'd say: "They can read the docs hitting F1". Of course! That would be great. Only that docs are inexistant or badly-translated. Even further, the number of possible choices of distros, desktop environments, applications and so on create a get-help-from-a-friend situations impossible.
Pick up two non-experienced Windows/Mac users. They can help each other because they use exactly the same software.
Get two non-experienced Linux users. Possibilities that they could help each other are really low.

Having the possibility to choose between N number of applications is good only when all of them are good.

Before going in a rage state trying to defend your ideas about why I'm wrong, think about what you just read. Maybe read it again. Talk about it with non-computer-savvy people. If you still think that I'm wrong, say it in the comments section.