Friday 12 May 2006
Bad Choices
I was reading an interesting critique of the KDE Phonon framework and its comments. Without taking sides in that particular debate (although adding a layer of abstraction over complex frameworks that themselves are basically the same sort of abstraction over other components gives me a very queasy feeling), I do feel like ranting about comments like this:
ALERT! Most "users" have no idea what a multimedia framework IS. They don't know which one they're using, or which one they should be using. Pretty much everyone just wants something that works out of the box. If the user is ever forced to understand multimedia frameworks and choose one, just to get things to work, then something has gone catastrophically wrong.
I sometimes hear the slogan "Free software" (or "Linux") "is all about choice" used to defend this kind of diversity. That is a very misleading statement. Free software gives you all kinds of choices about what you can do with code, but a lot of those choices are bad ones. Sharing code has many advantages over forking or duplicating --- mainly avoiding wastage of development resources, but also simplifying deployment and support, and avoiding the need to pile on abstraction layers like Phonon which have their own costs. You shouldn't fork or duplicate unless you have a very good reason. Interestingly, we see very few forking decisions, and those we see seem to have good reasons behind them. Sadly, we see a lot of duplication decisions and mostly their justifications don't convince me.
[It could be that there are actually a lot of forking decisions but forks get resolved quickly (by all but one of the forks dying or merging back), while duplications don't. I wonder...]
This is particularly important when dealing with libraries and frameworks which other components depend on. If we have five MP3 players, that's not a terribly big deal. But if we have five GUI toolkits, then every GUI app has to choose one of those toolkits which encourages the creation of four clones of that app, i.e. more fragmentation.
Anyway, offering users a choice of which largely-equivalent desktop to use, or which multimedia framework to use, or which of five dozen crappy text editors to use*, isn't doing anyone any good compared to what could have been if those developers had pooled their efforts. It's far too late for the KDE/GNOME breach to ever be healed, but I still wish for consolidation in other areas of effort.
[* I have yet to find one Linux text editor with all the features I want. If the authors of some of the dozens of text editors out there had instead contributed to an existing editor, I think I'd have a better chance.]
It also lets the user choose whatever he or she wants. If a user likes Xine more than GStreamer, he or she can choose to use it.
ALERT! Most "users" have no idea what a multimedia framework IS. They don't know which one they're using, or which one they should be using. Pretty much everyone just wants something that works out of the box. If the user is ever forced to understand multimedia frameworks and choose one, just to get things to work, then something has gone catastrophically wrong.
I sometimes hear the slogan "Free software" (or "Linux") "is all about choice" used to defend this kind of diversity. That is a very misleading statement. Free software gives you all kinds of choices about what you can do with code, but a lot of those choices are bad ones. Sharing code has many advantages over forking or duplicating --- mainly avoiding wastage of development resources, but also simplifying deployment and support, and avoiding the need to pile on abstraction layers like Phonon which have their own costs. You shouldn't fork or duplicate unless you have a very good reason. Interestingly, we see very few forking decisions, and those we see seem to have good reasons behind them. Sadly, we see a lot of duplication decisions and mostly their justifications don't convince me.
[It could be that there are actually a lot of forking decisions but forks get resolved quickly (by all but one of the forks dying or merging back), while duplications don't. I wonder...]
This is particularly important when dealing with libraries and frameworks which other components depend on. If we have five MP3 players, that's not a terribly big deal. But if we have five GUI toolkits, then every GUI app has to choose one of those toolkits which encourages the creation of four clones of that app, i.e. more fragmentation.
Anyway, offering users a choice of which largely-equivalent desktop to use, or which multimedia framework to use, or which of five dozen crappy text editors to use*, isn't doing anyone any good compared to what could have been if those developers had pooled their efforts. It's far too late for the KDE/GNOME breach to ever be healed, but I still wish for consolidation in other areas of effort.
[* I have yet to find one Linux text editor with all the features I want. If the authors of some of the dozens of text editors out there had instead contributed to an existing editor, I think I'd have a better chance.]
Comments
What if Phonon dies? Every bit of software could die, and I agree with many commenters that Phonon is more likely than GStreamer to lose support.
In either case, apps have to be rewritten.
This choice is probably not meant for the end-users, as a linux distributor picks the default framework for them.
I guess KDE wants to use the choice to make switching the "backend-framework" easier if the currently supported one(s) become unmaintained. This seems reasonable to me for the "beep on new message" kind of "multimedia" and given their experience with aRTS
Having said that I feel the same (without even knowing what queasy means) on the "abstracton of an abstraction" thing. Also, implicitly calling the fabolous Vim crappy isn't a nice thing to say :)
P.S.: Last I heard, creating toolkits was quite fun - even OpenOffice and Mozilla work on their own.
Also, in this particular case, KDE made a decision for a framework in the past and got burnt because they got stuck with this particular framework (which went unmaintained, has design issues etc.) So they decided not to make the same mistake again and have now created the possibility to switch frameworks without breaking ABI compatibility.
Having choices it's good, but it isn't good when you see two programs that fulfill almost the same function but each one has some points that it is missing in the other one, so someone thinks that the solution it is to create from scratch a third program with the best ideas of each one.
Instead of working to improve existing code too many people chooses to rewrite the same ideas and fix the same problems that have been fixed previously wasting time just because there's something in the previous program that they don't like or the learning curve is too step so you end up with a gazillion of useless programs instead of just a few good ones.
I'm not really sure whether it will end up being good or bad, but it does have some good points. It is being maintained by the KDE project, so all their apps can pretty much assume it will be good thoughout the KDE 4 lifetime. Plus no one wants another situation like ARTS where you are stuck with it because of API compatibility.
As for the editors, a sigh of relief from me... I thought I was the only Linux user who hated both vim and emacs, and didn't find all the features they wanted in KWrite/GEdit/NEdit/what-have-you.
That said, recent GEdit with its pile of useful (developer oriented) plugins works well for me.