On platforms
Apr. 27th, 2011 12:35 pmAt some stage the seminal KDE vs Gnome paper vanished from its original home, and while it's still available in a few places (such as here) it set me thinking. What are the fundamental differences between Gnome and KDE development? There's lots of little differences (2006: Gnome parties on a beach. Akademy has melted ice cream in the rain) but they're both basically communities made up of people who are interested in developing a functional and interesting desktop experience. So why do the end results have so little in common?
Then I read this and something that had been floating around in my mind began to solidify. KDE assumes a platform and attempts to work around its shortcomings. Gnome helps define the platform and works on fixing its shortcomings.
It's pretty easy to see this across the platform. The developer of the Gnome Bluetooth support has multiple commits to the underlying Bluetooth stack, while nobody who's committed to bluedevil appears to. The main developer of the Gnome Networkmanager support is Networkmanager upstream, with the same applying to the Gnome power management infrastructure. And when Gnome developers find limitations in graphics drivers, those tend to be fixed in the graphics drivers rather than worked around in the UI code. KDE builds on top of what's already there, while Gnome is happy to flatten some mountains first.
I should emphasise that I'm not criticising KDE here[1]. These are both rational development models. One optimises for making things work and will compromise on functionality in order to be more portable to different underlying operating systems. The other optimises for additional functionality at the cost of being tied to a much smaller number of underlying operating systems that have to be completely up to date. But understanding that this distinction exists is key to understanding fundamental differences between the projects, and any argument about which is better or about how there should be more collaboration has to take these fundamentally different approaches into consideration. My personal belief is that a tightly integrated platform is going to produce a more compelling product in the long run than one built on top a series of abstraction layers, but we'll see what happens in the long run.
And then, of course, there's Unity and Canonical's gradual effort to turn Ubuntu into a platform distinct from either Gnome or KDE. But that's a separate post.
[1] Well, except for the melted ice cream at Akademy 2006. But I think that's fair.
Then I read this and something that had been floating around in my mind began to solidify. KDE assumes a platform and attempts to work around its shortcomings. Gnome helps define the platform and works on fixing its shortcomings.
It's pretty easy to see this across the platform. The developer of the Gnome Bluetooth support has multiple commits to the underlying Bluetooth stack, while nobody who's committed to bluedevil appears to. The main developer of the Gnome Networkmanager support is Networkmanager upstream, with the same applying to the Gnome power management infrastructure. And when Gnome developers find limitations in graphics drivers, those tend to be fixed in the graphics drivers rather than worked around in the UI code. KDE builds on top of what's already there, while Gnome is happy to flatten some mountains first.
I should emphasise that I'm not criticising KDE here[1]. These are both rational development models. One optimises for making things work and will compromise on functionality in order to be more portable to different underlying operating systems. The other optimises for additional functionality at the cost of being tied to a much smaller number of underlying operating systems that have to be completely up to date. But understanding that this distinction exists is key to understanding fundamental differences between the projects, and any argument about which is better or about how there should be more collaboration has to take these fundamentally different approaches into consideration. My personal belief is that a tightly integrated platform is going to produce a more compelling product in the long run than one built on top a series of abstraction layers, but we'll see what happens in the long run.
And then, of course, there's Unity and Canonical's gradual effort to turn Ubuntu into a platform distinct from either Gnome or KDE. But that's a separate post.
[1] Well, except for the melted ice cream at Akademy 2006. But I think that's fair.
Bad Science?
Date: 2011-04-27 06:19 pm (UTC)Re: Bad Science?
Date: 2011-04-27 06:41 pm (UTC)Re: Bad Science?
Date: 2011-04-27 06:59 pm (UTC)Also, from their experience with KDE 1, 2, and 3... they used to have some lower level stuff and then they suffered from having trouble maintaining it. I'm thinking here mainly of their soundserver that I can't seem to remember the name of. One of their ideas with 4.0 was that they wanted to abstract more in the underlying KDE libs so that those developing KDE apps would have a stable, unchanging foundation to develop on... and wouldn't have to worry about if the underlying sound system changed or some other underlying piece changed. KDE decided to manage the damage in their abstraction layer... making it easier for the app developers. There seems to be a certain validity to that. With GNOME, if the underlying stuff changes, as if often does, all of those apps have to be fixed. App developers already have the big task of refactoring for widget set changes (gtk2 to gtk3, qt3 to qt4)... why not make something easier for them?
So, my guess is if you asked the designers of the KDE libs why they aren't doing what some of the GNOME devs are, they'd tell you that they learned from previous mistakes. :)
Again, not criticism of anyone... just an unproven set of assumptions and comments! hehe
Scott Dowdle
dowdle@montanalinux.org
Re: Bad Science?
Date: 2011-04-27 07:01 pm (UTC)Re: Bad Science?
Date: 2011-04-27 07:25 pm (UTC)Re: Bad Science?
Date: 2011-04-27 08:32 pm (UTC)ryan rix
Re: Bad Science?
Date: 2011-04-27 08:52 pm (UTC)- Chris
Re: Bad Science?
Date: 2011-04-27 08:55 pm (UTC)(Of course, we've then ended up with phonon implementations for xine, vlc and gstreamer with varying degrees of leakiness in the abstraction. I'm not sure that one's an amazingly strong argument, but people still seem to be using it so I guess they're happy enough)
Meh
Date: 2011-04-27 06:38 pm (UTC)Re: Meh
Date: 2011-04-27 06:50 pm (UTC)But anyway.
The graphics driver changed in a minor release, yes. It changed in a way that should have broken nothing, because nothing should have been trying to identify version-specific bugs by parsing meaningless vendor strings. KDE took the pragmatic approach of doing so because it was the easiest way to work around a bug. Gnome simply asserts that drivers must have a certain level of functionality and works with the X developers to ensure that that's the case. The outcome is that KDE works better with older drivers, while Gnome doesn't get broken by changes like this. Deciding which approach is better depends on what your aims are.
Re: Meh
Date: 2011-04-27 11:05 pm (UTC)Re: Meh
Date: 2011-04-27 11:28 pm (UTC)Re: Meh
Date: 2011-04-28 09:33 am (UTC)If you want to fully understand the situation around 4.5 please read my lengthy mail to the mesa developer list. It is that long as it explains the situation and is required to understand each other which I think is a prerequisite to work together in the end.
Re: Meh
Date: 2011-04-28 12:44 pm (UTC)Yes, and that's exactly the difference I'm describing. Gnome's approach is to require working drivers. KDE's is to work with the drivers that exist.
Re: Meh
Date: 2011-04-28 02:56 pm (UTC)Gnome has so far not been in such a situation with the graphics drivers as they were able to develop Gnome Shell against future driver releases. I wish Gnome to never face such a situation. But really it is not like "we require working drivers and will work with the driver developers", reality might differ from the ideal world. I really think that it is difficult to judge this without having ever been in such a situation and maintaining an OpenGL compositor.
All this "platform thinking" you derive from my decisions, is just a wrong conclusion. We did not have an easy decision on how to handle the situation and in the end decided for an approach we believed as the most suitable for KDE, the drivers and most important our users.
Re: Meh
Date: 2011-04-28 03:03 pm (UTC)no subject
Date: 2011-04-27 06:50 pm (UTC)- Chris Cunningham
no subject
Date: 2011-04-27 06:57 pm (UTC)no subject
Date: 2011-04-27 08:40 pm (UTC)- Chris
no subject
Date: 2011-04-27 08:46 pm (UTC)no subject
Date: 2011-04-27 09:13 pm (UTC)- Chris
no subject
Date: 2011-04-27 09:17 pm (UTC)no subject
Date: 2011-04-27 10:35 pm (UTC)platform definition problems
Date: 2011-04-27 07:05 pm (UTC)Re: platform definition problems
Date: 2011-04-27 07:11 pm (UTC)Re: platform definition problems
Date: 2011-04-27 10:50 pm (UTC)no subject
Date: 2011-04-27 07:13 pm (UTC)no subject
Date: 2011-04-27 07:23 pm (UTC)no subject
Date: 2011-04-27 08:18 pm (UTC)no subject
Date: 2011-04-28 01:43 pm (UTC)no subject
Date: 2011-04-27 08:25 pm (UTC)In fact, the "fix shortcomings" approach is a very rare approach and in my opinion it's one of the great success stories of the GNOME community[1]. Though I'm not entirely sure how much of this can be attributed to GNOME and how much of it should be attributed to the corporate sponsors (read: Red Hat).
But I suppose you'd have to think hard to find another project that participates in the development of surrounding software as much as GNOME does. Maybe around the kernel there's a bunch of projects that do?
[1]: another big success story is i10n.
no subject
Date: 2011-04-27 08:44 pm (UTC)no subject
Date: 2011-04-27 11:51 pm (UTC)But I'm not a fan of the cross-platform argument. If you want to be cross-platform, the same argument applies, just that there's more platforms you should cooperate with. (Which then leads to the question of why GNOME only targets/integrates with one platform. But I guess that's a different topic and the answer is the same as the one or Xorg.)
Sponsoring issues
Date: 2011-04-27 08:44 pm (UTC)no subject
Date: 2011-04-28 02:38 pm (UTC)Ironic
Date: 2011-04-27 11:48 pm (UTC)In addition I know of at least one KDE dev finding difficulty getting patches accepted into Wayland. But it's easier to say you're working with upstream when you *are* the upstream, isn't it? :)
Re: Ironic
Date: 2011-04-28 01:45 pm (UTC)The poppler maintainer is a KDE guy, in fact.
no subject
Date: 2011-04-28 09:31 am (UTC)Two things that might have contributed to KDE's choice of handling things.
For one until recently it has been very hard to get changes/improvements/additions into Qt, thus requiring a kind of duplication in KDE libs. If it is hard to influence your most important upstream you might not feel trying with one you are not as connected with.
A second one would be (mostly politically motivated) opposition to choices of technology. E.g. using GObject based libraries in runtime infrastructure such as NetworkManager will not be considered an issue for any KDE frontend, while doing the same on QtCore based libraries can very likely be one on the GNOME side.
no subject
Date: 2011-05-25 05:33 pm (UTC)Akademy 2006
Date: 2011-04-28 01:54 pm (UTC)Re: Akademy 2006
Date: 2011-04-28 01:56 pm (UTC)Re: Akademy 2006
Date: 2011-04-28 02:00 pm (UTC)no subject
Date: 2011-04-28 02:57 pm (UTC)Not quite...
Date: 2011-05-01 05:49 am (UTC)I don't know if its just that a lot of gnome developers happen to also be major distro contributors, or work at the various commercial distros that make these sorts of decisions, but it seems every time the gnome crowd thinks up a fancy new toy, it gets accepted without a lot of testing or forethought, to the ultimate annoyance and frustration of users everywhere.
Of course the same thing happened with KDE 4, distros jumped the gun way too fast in including 4.0 as the default KDE version. At the time I recall the KDE project saying "DO NOT MAKE 4.0.0 the default" fairly loudly, yet it happened anyhow. And it seems the same thing is happening with Gnome 3, and things like Unity.
Maybe I'm being overly critical, but its just the pattern that seems to be playing out. It's happened over and over, and people just don't seem to be learning from their mistakes. We don't need new stuff just because its new. It should fit a need, and work reliably, then be transitioned to be a core component, not before.
Re: Not quite...
Date: 2011-05-02 01:07 pm (UTC)Like I said, if you assume that you're targeting a fixed platform then you'll make compromises in order to workaround driver bugs and shortcomings. That gets things working, but can result in issues in the long term. If you assume that you're targeting a "correct" platform and then work on ensuring that correctness, you spend more time with things not working but end up without any of those compromises.
Re: Not quite...
Date: 2011-09-08 06:23 pm (UTC)I think the problems here come from trying to do a complete architecture shift, which never works quickly. Basically very little works correctly with Pulse from *either* the driver *or* the application end. I suppose this has to do with none of the users of Pulse understanding the interface they should be programming to, but it makes for a big pain.
That said, KDE managed to make exactly the same mess with Phonon! Apparently you can screw people's desktops with *either* approach.
3D
Date: 2011-05-01 08:29 pm (UTC)Re: 3D
Date: 2011-05-02 01:03 pm (UTC)Reasons for KDE vs Gnome
Date: 2011-05-23 11:04 pm (UTC)Second, much Gnome development, and essentially all GTK development, is done in C, the language of the underlying platform. It's not surprising that someone who prefers C will be more comfortable hacking X than someone who prefers C++ like most KDE hackers.