Sunday, December 14, 2008

The hell that is Gnome and Xorg

Gnome and Xorg are fine pieces of software but they're a real pain to build. This is a rant I've been thinking about venting for a couple of years now.

First off, Xorg used to be OK when it had the monolithic build but then it split into hundreds of pieces and the maintenance overhead went up a hundredfold (for anyone who creates packages). It has become as tedious to build as Gnome.

Gnome has always been a pain, the developers say "modularity" is the brilliance underlying Gnome. Modularity is good. Modularity is excellent. Modularity makes things easier. But NOT when you break your project into a gazillion pieces. If you do that then it's just shattered. KDE understands this, their desktop is modular but "grouped" into larger packages, effectively turning it into a monolithic/modular hybrid. Basically, there is modularity within the packages while the packages themselves are monolithic. The advantage is that the desktop packages can be managed by a small group of people or even a single individual because the dependency chains become shorter. And you still get to keep modularity for developers. The disadvantage is that security patches become tougher to roll out because the packages become much bigger. With that in mind - I'll take one big package over a hundred small ones ANY day.

I am still using Xorg 6.9.0 because it's the last monolithic version of X. Why? I simply do not have the time to manage the modular Xorg - you need a team to do that or settle for a hackish build system (ala Slackware). Slackware's build system works well enough to ship modular X but if you take a closer look you'll notice the packages do not even have proper descriptions because there is simply too many of them to bother. In addition - broken down into so many small pieces it becomes much harder to understand what each piece is supposed to do. It's like puzzles - A few big pieces is easier to fit together than hundreds of very small ones.

Update: I switched to modular Xorg quite some time ago, my opinion remains the same however. In fact, to migrate I had to write a script that automatically generated the package build scripts for each tarball so I wouldn't have to do it all manually. Also interesting is that there are many bits of the modular Xorg that suffer from neglect and no longer compiles, this especially applies to drivers (there are dozens of drivers that for one reason or another has been abandoned yet is still included in the Xorg distribution).