Friday, April 27, 2007

Monoculture in open source software

Slashdot recently posted a story linking to an article about the "why Microsoft wins the development war so often." The excerpt from the Slashdot article:

"Microsoft offers the certainty of no choices. Choice isn't always good, and the open source community sometimes offers far too many ways to skin the same cat, choices that are born more out of pride, ego, or stubbornness than a genuine need for two different paths. I won't point fingers, everyone knows examples... The reality is that there are good, practical reasons that drive people into the arms of the Redmond tool set, and we need to accept that as a fact and learn from it, rather than shake our fists and curse the darkness."

I'm wondering how true this is for other people. Joel Spolsky posted an article last year about choices being headaches (ironically talking about Microsoft!), but referring to GUI interface design, rather than choosing software in general. Even though Joel is referring to the quirky shutdown menu for Windows Vista, I'd like to think that it also applies to the context of the Slashdot article. I've noticed some projects fork off of others for no reason, or the ones listed above (pride, etc.); but regardless of the reason, it feels like the open source world has way too many paths to pick from. And to top it off, sometimes none of those paths are even worthwhile!

Don't get me wrong, the concept of open source software is good (even the software that's platform dependent on certain proprietary operating systems). I do think, though, that the whole "diversity" among existing software can be rather annoying. Quality software doesn't need to be forked (how many Firefox forks are out there, and who bothers to use them?). Maybe this is one reason why I'm still an avid Windows user; I have less decisions to make, and hurray for that.

11 comments:

Luke said...

Things get forked all the time but unless there is a real purpose, no one pays the fork any real attention. There is a natural selection that occurs. Just like your example: there are many forks of FF but most people still just use FF. It's not really a choice if you don't know it exists. I only know of one FF fork off the top of my head but I'm sure there's more.

My point: there's only a choice if you *want* a choice. Otherwise you can just pick the most popular.

Anonymous said...

==
...
no one pays the fork any real attention. There is a natural selection that occurs.
...
It's not really a choice if you don't know it exists.
...
My point: there's only a choice if you *want* a choice. Otherwise you can just pick the most popular.
==

s/fork/operating system/

That's why I use Microsoft... it's most popular!!

Ok, so my humor is bad, but still...

saiyr said...

This works for awhile, but after a certain threshold, there isn't really isn't a "right" decision to go with, in terms of popularity. For example, if I'm running Linux, should I run GNOME or KDE? Or Xfce, etc? If I want to program a GUI application that's cross-platform, do I use GTK or Qt or wxWidgets (*cough* none of the above)?

Firefox is a good example of open source done right. There aren't huge amounts of competition from other people in the open source browser market or anything, but this isn't always the case. When this happens, how do you decide? Obviously the answer is to try and find the "best" solution, but not everyone has the time or motivation to do so.

@ Logan: it would be funnier if it was actually true. Unless you do run Windows (again?). Who knows? Not me :(

dnissley said...

"When this happens, how do you decide?"

As a pretty much exclusive linux user, I would disagree with you that the questions become headaches. I find my choices of libraries almost as trivial as yours in windows. I think it only seems that way because you are primarily a windows user.

I think that the questions get answered through experience with the various libraries that are available to you, and as a fairly inexperienced developer I am at the stage at which I am experimenting with all these different libraries, and forming opinions about each one as I go, as to which ones I prefer.

For example, if I am going to program a desktop application without thinking I know I am going to use mono to program it, use gtk# as the gui toolkit.

How did you decide to use WPF (or whatever its called now) for shaim (besides the obvious reason that it might have been chosen before you were a commiter)? Why not wxwidgets or tk or whatever? It was because you didn't care about making it cross-platform combined with the fact that you are experienced in developing for windows. If you were a developing n00b (or cared about being cross-platform) you might have been tempted to use glade# or wxwidgets.

saiyr said...

Well, the entire article actually applies to open source software in general, including libraries that are oriented towards to Windows. Doing research on various libraries (for example, .NET IRC libraries) is really annoying. There's no easy way to tell which library will be better in a popularity contest. I shouldn't have to experiment with several different libraries before picking one, and I shouldn't have to pick between two libraries that have mutually exclusive features. It's an annoying waste of time, in my opinion.

The decision to use WPF in shaim used the same reasoning as mine: cross-platform GUI toolkits are [mostly] crappy. When I use Windows, I want my programs to look and act like I'm using Windows, not as if I was using GNOME or KDE in Linux. I think wxWidgets does a better job than most, but still, each OS has inherent usability standards.

The architecture around shaim still allows for it to be cross-platform. The non-UI portions all are .NET 1.1/2.0-oriented, which should run fine on Mono. The UI is actually implemented by inheriting an interface, which means you could use wxWidgets, GTK#, etc.

This is a somewhat similar, but more confined architecture compared to libpurple (formerly libgaim). The basic idea is the same; the library provides communication libraries for several instant message protocols, while Gaim and Adium are different front ends for it.

dnissley said...

Regardless, too much choice is better than the alternative: too little. Imagine if you had to rewrite that irc library from scratch (...or did you?).

Obviously it's all about a balance between the two, and compromises must be made, and well, in the open source world those, admittedly, get made far less than they should. It's all about the ego.

Oh and I'm assuming you've heard about gaim's name change based on you're referring to libpurple. Or are you not large enough a project that AOL cares about it's trademark?

Unknown said...

This topic will always be in debate. Saying that having too many choices is better than having too little is very subjective. Where do you draw the line between too many and too little? Also note, that this isn't exclusive to software, and that this has impacts from buying groceries to buying groceries. We can spend days debating on weather having 3 choices is better than having 30. http://www.amazon.com/Paradox-Choice-Why-More-Less/dp/0060005688

Anyways, @dan, yes, I do run windows on my laptop. I find that hassling with things isn't worth my time and most of the time I just want things to work. With windows, things work out of the box 90% of the time. You can't say things like that with Linux.

That's not to say I don't run Linux either... I have a Linux box for my Linux uses, but I am primarily a Windows user. And also I wanted to see the hype behind Vista, so I put that on my laptop to check it out.

saiyr said...

Yeah I was going to say something along the lines of what Logan said--mainly because I think on the other end of the line. I think another reason, ego aside, is that some projects "forget" to document, and so it's extremely difficult for other people to use. It sucks because these projects still make top hits on Google! What do you do, in this case? If you're me, you pretend it doesn't exist and keep looking. Kind of hypocritical if you end up making your own library (I've made two IRC clients now, for classes though), but nobody wants to document someone else's work. That's incredibly painful on so many levels.

@ Logan: I'm the same way. I do have a computer that runs Linux (headless server and all), but for desktop/laptop purposes, I still run Windows.

saiyr said...

Oh, and AOL doesn't care about us, yet. We've talked about the possibility, though.

Luke said...

I've never thought Linux was harder or more of a hassle to use than Windows. In fact, I think Windows is way more of a pain in the ass. I have to search for software on the internet. Then I have to pay for it or "crack" it. Package management is a hassle and nothing ever gets uninstalled correctly. Windows takes forever to boot and login (the Linux and Windows labs in Lawson have the same hardware but login time for Windows is much longer).

Not to mention the applications on Windows (especially the one's by Microsoft) are completely bloated. Agreeing with Logan, its hard to know where to draw the line but I think it's pretty easy to say that there are way too many features on some Windows apps. Since they aren't open source, code has to be replicated all over the place and it makes interprogram integration horrible on Windows. I could go on and on but my point is, I agree that simplicity and ease of use is better but, for me Linux has achieved that through choices, modularity of applications, and simple, concise applications.

They day Windows is easier for me to use, I'll start using it =) I think certain paradigms just click with certain people. We can debate all we want but as long as people are different, choices are a help. You chose to use Windows and I chose Linux.

@Logan, I know you've given Linux a damn good try and I respect your *choice* to use Windows because of that.

P.S. do trackbacks work with blogger?

saiyr said...

I think you're making too big of an emphasis on Microsoft products on Windows--I hardly use any of them. I'm pretty sure all of the software I use is free, albeit sometimes not open source. I'll give you points for boot and login time, even though usually I don't care--I leave my computer on.

I think the reason why Microsoft products feel so bloated is because they really have to cater to consumers. You and I probably don't use some of the wackier features of Word, but I guarantee you that someone does. Extremely modular architecture is not acceptable for a lot of the non-technical users, so it's really bloated. I think OpenOffice has gone that route as well.

But really, for probably all of us, difficulty doesn't matter much. I'm sure Logan can run fine on Linux if he needs to (in lab), and I know I can. I know I've personally spent a few too many hours on getting Linux distributions up and running, so am I just really, really bitter? Maybe.

Also, no, I don't think trackbacks work. Google has "backlinks" instead. If your blog is scanned by their BlogSearch service (http://blogsearch.google.com/) I think a backlink automatically appears. Kind of weak? Yeah, probably.