You are here

Wild rationalizations

Linux Hater's Blog - Sat, 12/07/2008 - 5:48am
I was getting a little worried that I wouldn't have something appropriate to close of K-pride week with, but then sweet feces rained down from heaven. It's an article from Sebastian K├╝gler from the KDE board of directors, explaining the "11 myths of KDE 4".

Here we go...
Actually, KDE 4.0 is just the beginning. KDE 4.0 has the beginnings of a publicly usable desktop and applications. KDE 4.0 also marks the stability of the libraries and their programming interfaces so application developers can actively start using them in their application. The new features and frameworks need some time to be implemented in a user-visible way. In that light, KDE 4.0 marks the beginning of the availability of KDE4-technology-based applications.

Assuming that KDE 4.0 delivers the full possibilities of its libraries and frameworks to the user is unrealistic. The merit of the infrastructural work that has led up to 4.0 will be seen in the coming releases, with KDE 4.1 showing first signs of an increased pace of development thanks to the new foundations.

KDE 4.0 is the starting line, not the finishing line.
So it turns out, that in almost every other major software release every made, a .0 release is used to convey some semblance of completeness. Like it or not, it's convention. It's a language of sorts, used by software producers to communicate to their users. Yes, I know. .0 releases usually suck for any software. But in the majority of the cases, it's due to unintentional bugs. In other words, it's not by design. But you know, KDE decided it was so awesome that it could totally ignore this convention .0 isn't anything. It's just the start, they said. We know it sucks. We told you so.

If that's not arrogance, I don't know what is. And they thought a few posts on blogs nobody reads would clarify it for the rest of the world. Yea. Uh huh.
This has been consistent in all communications. We only failed with KDE 4.0 if we measure the work based on others' criteria, not our clearly stated goals. We're glad that so many people eagerly anticipated the 4.0 release, but in some cases the expectations were heightened despite our efforts. We do understand the excitement that built up over 2 years, but we've actually had discussions on trying to meter/throttle people's exuberance and expectations for 4.0 so that they would not feel let down when 4.0 was released.
Well, apparently you didn't discuss enough. Because I think you kinda failed.
Let's look at it from a broader perspective for a while. Let's see it in the Grand Scheme of Things to Come. The big question that should come up is: couldn't we have released what will now be KDE 4.1 as KDE 4.0? If that would have been possible, it would surely have been the right choice. But it was not possible, because of several reasons.

Release early, release often. One of the pillars of Free Software development is to release your software as soon as it is useful to others, so people can jump in.

Nobody has ever promised that KDE 4.0 would be functionally equivalent to KDE 3.5. With KDE 4.0 we have delivered a stable set of libraries and a basic functional desktop. 4.0 in technical terms means: From this point on, our libraries will remain binary compatible until 5.0. Not releasing 4.0 at that point means holding back hundreds of application developers from porting and releasing their applications. Not releasing would hurt these applications - they wouldn't receive the attention to detail they deserved. We're talking about core applications like Dolphin, but also whole parts of KDE like the Educational applications, Graphics applications, and the games. Not releasing them would also mean less new contributors and users than they deserved - another thing we didn't want.


You guys are so amazingly wrong that, well, it's amazing.

Release early, release often is a well-known strategy, sure. But nowhere does it say release things in forms that will confuse users into thinking it is a complete release.

Yes you didn't say that 4.0 would have all of 3.5. But look at all the other software that's been released. In most cases, (N+1).0 has all (or at least most) of the features of N.0 and a little bit more. And those new features mostly work, as well as the old features. This is what users expect when you call it 4.0.

No, as far as I can tell, you guys called it 4.0 because you knew it had this effect. It's not release early, release often so that all the devs can better coordinate. Instead, it was call it 4.0 so that we can trick a bunch of users to test our fancy new library code even though it breaks all the features that they're used to. And if they fall for it, we'll just say that we warned them subtly.

As you have found, users don't care about a release that only lays the foundation for binary compatibility and has no features that they actually want to use. And guess what? That's also why people don't go for Vista. Do you have to copy everything that Microsoft does?

The argument that without a 4.0 release, downstream developers couldn't get to work is pure bullshit. Companies do this all the time. They release pre-release builds so that people can write new pieces on top. What is it about a 4.0 release that is suddenly going to make a bunch of developers start working on KDE4 versions of their apps? Nothing. It's still just as inconvenient. If they want to write a KDE4 version, they have to do a SVN checkout anyways.

And by the way, it is shocking that you guys have the audacity to bring up binary compatibility as any kind of justification. All open source projects seem to think binary compatibility means that old binary apps link and load. They always forget the crucial third part: the old apps also have to work. Making sure old binary apps work is a lot harder than making them link and load. You actually have to test things. But I know that's beyond y'all so I won't tire my fingers explaining it to much.
Yet the publicly perceived quality of KDE seems to concentrate on Plasma, the newest, but most visible component of KDE 4. For this kind of new technology, it simply takes a bit of time and feedback from users until the user experience we could deliver in the past can be reached.
Uh huh. 'round here I believe they call that a beta.
A second issue is packaging. KDE 4.0 is relatively hard to package, not due to it being that difficult - packaging it is far easier and faster than KDE 3.x. But it is new, and new things always require an adjusting period. CMake, SVN, many new dependencies, many new architectural pieces, changes in the internal structure of the major KDE packages like KDElibs and KDEbase...it'll take a while for packagers to get used to those. We probably can't expect distros to put out KDE 3.5.x-quality packages for at least a few months. By the time 4.1 is released, though, they will have some experience, and will hopefully get it done rather quickly. (If you want the proof - just check out a few different KDE 4.0 distributions...they differ wildly in terms of stability, features, default setup, and more.)
Oh it's the distro's fault is it? If you actually cared, you'd work to make packaing and distribution easier. But instead, you change stuff all over the place, and then blame the distros for not getting it right. Impressive is your foresight.
A third reason is for finding rare, obscure, or corner-case issues. Many of the problems in KDE 4.0 can and will be fixed by the KDE hackers. But many can't. By pushing the boundaries of technology, you'll be pushed back. We've exposed issues in drivers, architectural issues in X, window management, Qt, and more. Without an earlier release to start getting user feedback, these simply would've appeared in the delayed first release, and would've bit users just as hard as they're biting now.
Again. 'round here they call that a beta. Or maybe an alpha. Maybe you should have called it "KDE-4 Completely Untested Edition"
And finally, KDE is a very complex beast, technically and socially. It consists of hundreds of applications, an extensive development framework and a desktop on top of that and literally hundreds of contributors with diverse backgrounds. It is plain impossible that all those things happen to be finished at the same time. We were able to release a basic first version of the desktop along with the development framework and an already very good looking set of applications. We did fail in communicating well enough this complex situation. But then, we're software developers, we create software ... And creating good software is not just about writing good code. It's about delivering it. Marketing it. Testing it. You guys are such a prominent open source project, and yet you continually show that world that you have no idea how to do anything except be architecture astronauts.
While the underlying technology provides lots of new means to interact with computers and will have even more ways of working with different sets of users on different devices, the desktop interface in KDE 4.0 and KDE 4.1 is mostly backwards compatible with desktops as we've seen them in the last 20 years, containing a panel to switch between applications, a menu launcher, and several bits of functionality such as the clock. Users are not forced to learn new paradigms unless they want to take advantage of new features such as the dashboard and applets.

The desktop interface has not been radically redesigned in the last twenty years. The KDE team is working on laying the groundwork for new and innovative ways of dealing with the desktop while providing the traditional ways of interacting with the desktop so current users are not alienated.
If the idea of desktop hasn't changed in 20 years, then why change your implementation every three? Do you know why even Windows Vista implements a 'classic' mode? It's because users get used to the pixels not just the "paradigms". They know what their close buttons and title bars look like. It matches how they all look in their training manuals. Not constantly changing things allows others to build on top of your work, to actually learn things, and maybe even document them. I think you guys should really go out into the real world and see how many people even understand what "minimize" and "maximize" mean. After 20 years, many people still don't even get the paradigms, and yet you're changing how everything looks, and relying on the fact that the paradigm is the same. It sounds like a fool-proof plan if you ask me.

KDE, as a Free Software project, is more open to its users than any other comparable software team. All mailing lists are open to suggestions, development can be closely followed through SVN, and developers are usually easily reachable for interested parties, either through their mailing lists, on IRC, or directly via email.

What does "open to its users" mean exactly? Because from your actions, it seems to mean that there's some web form that they can fill out to complain, but you won't really listen because you never really cared in the first place.

The developers do depend on precise information, however. Vague statements such as "I don't like the new foobar" are hard to address. Precise reports detailing current and expected behavior along with use cases (and sometimes a bit of patience) increase the odds of issues being addressed. Insulting, whining, or spreading FUD does no good to a developer's motivation to address issues; instead the usual effect is to cause the developer to become demotivated in regards to fixing a particular issue. Users that would like certain functionality in KDE 4 should be collaborative and helpful and open to new solutions.

Unbelievable. You guys totally botched the communication around your brand spanking new release, and yet your telling your users to exercise caution when communicating. That's rich. I wish I were that rich.

Also, I think you forgot a sentence: "Developers who wish to be helpful and respected should listen to and understand the actual problems that the users are facing."

In some cases, we need to balance out when to listen to certain users or not. After all, we are probably leaving some people comfort zone. There is always resistance to change, yet change is necessary for survival. A certain amount of room for innovation is needed, and in fact lies at the heart of Free Software. KDE 3.5 wouldn't be the stable product it is now without ignoring some of the voices once in a while, and KDE 4 would never become reality.

I believe ol' GWB said it more succinctly. "You're either with us, or you're against us."

But really, the best part is at the end...

"KDE should just have ported KDE 3.5 to Qt 4 and not add all that other experimental stuff right away"

This is not a stupid idea and it was heavily considered. The problem with it is two-fold: social and technical.

Socially speaking, it assumes redirecting development effort is effective. To a certain extent it is, but for quite a few developers not developing features often means not developing at all. Not everybody is good at low-level stuff (or willing to do it). This has bitten us and other projects in the past and present. The development of KDE 4 has been slower than it would've been if we would be able/willing to force developers to work on whatever some top-down managers think is good...but it's just not how FOSS works.
Have you guys heard of the old 20/80 rule? You spend 20% of your time implementing your features. Then 80% of the time testing them and debugging them. What you've pretty much told me in this paragraph is that you guys only do the 20 part, and nobody wants to do the 80 part, and that's how FOSS works. Thanks, really. You've explained a lot.

But just in case there's some sense in this whole article, let me hear out your technical arguments.

Technically speaking, two arguments. First, an only-ported release would in time have to be reworked again, so we couldn't promise binary compatibility, and the first release would be useless for development of third-party applications. It would really be nice for users, but a total waste of time from the point of view of developers - the progress of KDE as a development environment would be minimal at best. And that development environment happens to be the major focus of KDE 4.0 - we want to push the Free Desktop further (long-term vision).

As I've stated already, the kind of binary compatibility that you guys provide is not even useful. So why would anyone care? And which binary-only app that uses KDE libraries is everyone clamoring for? I can't think of a single one.

You also claim that this work would be a total waste of time for developers. Well, go ahead, rewrite the code. You'll have wasted a bunch of users time who bothered to learn your crappy desktop in the first place, and then you'll end up wasting your developers time too because all your users will have left in disgust. Oh wait. I get it. Are you guys secretly trying to see how much total time you can waste? Haha. That's funny.

A second problem would be the fact the developers would have to port a huge amount of old code which wouldn't be needed on the new platform. Prime example here are KDesktop and Kicker. Many users asked the KDE developers to port Kicker and KDesktop to Qt 4, but they didn't because it would be a huge job and in the long run unmaintainable anyway. In other words, it would delay the release of Plasma by at least another year, with no long-term benefit at all. The same goes for audio and video capabilities, all chat and PIM related capabilities, etc. In other words, a LOT.

No long-term benefit? How about the benefit that your users will love you because they will get incrementally newer features. Maybe they will actually believe that FOSS works and help you get more users and more contributors. But no, back to the sad reasoning that is all too typical of KDE. "Ohhh its too hard! Let's start over! Fuck the users!"

There's some brain cells in the back of my head that secretly hope that your users will continue to protest against you and drive your whole damn project into irrelevance. Unfortunately, those brain cells are getting louder and louder.