Stephen Cofer

December 9, 2008

More Insane Dependencies

Filed under: Linux, Rants — doktorseven @ 9:02 pm

And it’s not dbus this time, I promise!

As a developer, I do like to use GTK+ as my graphical toolkit of choice. As much as I dislike Gnome, I have no real issues with the toolkit it uses — it’s lightweight, simple to use, and can be done in a huge variety of languages, including plain C (so many these days require C++, for some odd reason). One of the nice utilities for coding in GTK+ is a program called Glade, a user interface designer that you can simply load in a text-based file to your application and reference the named parts of your GUI in your program to automatically create a GUI quickly and simply. Good for rapid development, and even good for prototyping even if you’re doing everything manually in C (which I end up doing most of the time).

Emerging Glade in Gentoo brought up a strange dependency, however — Scrollkeeper, a method to catalog documentation, and something I neither wanted nor needed. Why the strange dependency, I wondered? Looking at the source tree, I found out why: it “depended” on Scrollkeeper for the sole purpose of updating Scrollkeeper itself! This strange bit of logic gave me an instant headache, and made me wonder why the build process for Glade didn’t simply check to see if Scrollkeeper existed on the system and only updated it if it did. Apparently the very notion of someone having a system with no Scrollkeeper on it was foreign to the developers of Glade — what kind of fevered madman would have a Linux system without Scrollkeeper! — and they plowed ahead secure in their delusion, checking for Scrollkeeper in the configure process and giving the user an error if it wasn’t found, since obviously it needed Scrollkeeper to update Scrollkeeper!

So a bit of hacking on some of the files in the source tree to keep the configure process from dying and the make process from erroring out when it didn’t find Scrollkeeper (the hard way — I just removed all references to it), and the program built, installed, and ran just fine.

Developers, we don’t all want all of this unnecessary fluff on our systems. Please keep this in mind when you create your packages.

Further dbus pollution

Filed under: Linux — doktorseven @ 8:13 pm

Hate to continually harp on dbus here, but this is really beginning to irritate me. I generally have gone with Seamonkey 2.0 alpha as my main browser due to my increasing disgust with the bloat and behind-the-scenes activity (not to mention the hideous Awesomebar — if I wanted to search my History, I’d open up my History and search it), but apparently the builds all come with dbus as a dependency. It was tolerated on Ubuntu and systems that forced the hideous poison onto me, but now that I’m running a dbus-less system, it has become an issue.

Generally, thanks to a lack of interest in taking the time to compile the hideously bloated Firefox and Seamonkey, I’ll just download the binaries, and even so in Gentoo. I currently have the -bin version of Firefox 3.0.4 installed, which does not have that hideous dbus dependency. The ebuilds do not have Seamonkey alphas available, so getting them means a manual install (as I have before in Ubuntu) from a download. But now that the Seamonkey binary has a need for dbus, I had to try compiling the thing from scratch — and failed due to some sort of problem with the build (not sure if it was their end or mine). My fear is that Firefox 3.1 will suffer the same fate on its release, but at least Gentoo will likely provide a tested ebuild to allow a pain-free compile without dbus.

It’s really become a pain now. My anti-dbus campaign has reached new levels of frustration and fist-shaking at those responsible for this abomination.

As an aside, I’d like to praise WordPress for its revamp of the Dashboard (administration section for each blog). It looks very clean, and I like it. Thank you for continuing to improve the best blogging software out there and providing us with free space to write.

December 1, 2008

Wow, I need to write more.

Filed under: Rants — doktorseven @ 8:31 pm

I’ll try harder to do so. I have a lot floating around in my mind about the state of the Linux world, but I just forget that I have this outlet to do so (or just too lazy…).

Linux is becoming Windows

Filed under: Linux — doktorseven @ 8:21 pm

I like to have control over my computer. Generally, when my computer thinks it knows better than I do, 99% of the time or more, it’s wrong. I like to tell it what to do and how to do it, and I expect it to do only that and nothing more.

This is one of the reasons I left Windows so long ago. Windows enjoys automating stuff and taking the administration of the system out of my hands. When I tell it that I do not want to automate certain things, I expect it to obey and not change back, and with Windows, sometimes getting it to do exactly that is an adventure. Many times, it’s simply impossible.

With Linux, I discovered an OS that did exactly as I said, exactly how I said, and nothing more. Configurations were basically straightforward scripts or configuration files that told the OS exactly what I wanted, and at no time did it ever think that it should do any more. It was very liberating and very exciting to use such an OS that I had ultimate control over.

But modern Linux is attempting to get away from all that. For the sake of user-friendliness and to get new users, Linux has begun to collect an arsenal of daemons (programs that run in the background to accomplish certain tasks, like services in Windows) that do nothing but automate pretty much everything. Configuring the X server with xorg.conf? Becoming obsolete. Why should users waste time when X and the collection of daemons can figure out your hardware for you and configure it by itself?

Of course the answer is that often, the “automatic” configuration is dead wrong, and worse, fixing it requires disabling the entire suite of daemons and such to keep X from automating everything. I have yet to see an automatic configuration of X that sufficiently detects the requirements of my (admittedly old, yet still perfectly useful) CRT monitor. I either get 640×480 with no ability to modify it or 1600×1200@60Hz with no 3D acceleration, neither of which is acceptable. (Also, for some horrible reason, the latest nvidia drivers apparently use the refresh rate settings as a sort of internal catalog for the resolutions, causing them to incorrectly report odd values like 57Hz as the refresh rate, which causes problems for some applications — I have to disable “DynamicTwinView” in the nvidia video card section of xorg.conf to get rid of this madness.)

But it’s not just X, it’s the entire battery of daemons that have no real purpose other than to make things slightly more convenient for new users and things horribly inconvenient for experienced users who are often trying to set things up properly for the new users. Take dbus (please, take it, and don’t come back!), an invention created by some twisted mind that decided that passing information from one application to another needed more than simple scripting and created a horribly complicated Windows-like application messaging system that does nothing but take up resources. Take pulseaudio, which hasn’t learned the lessons of aRts and ESD that a daemon-based sound manager for mixing audio causes more problems that it solves (we need to get people to purchase audio cards with functioning hardware mixers via ALSA, or rewrite ALSA to take care of mixing there instead of using a half-baked method of mixing that isn’t consistent over all applications). Take Avahi/mDNSresponder, giving zeroconf configuration to a resource-hogging daemon instead of a simple script. Take hald, which does the above-mentioned “automatic hardware detection and configuration” for X and other programs that can be done much more reliably by hand.

I could go on; Ubuntu alone has a ton of these unnecessarily complex things running at startup, and it seems like every new version adds several more. What we need to do is create scripts and user-friendly configuration dialogs to enable effective configuration of a system for a new user, not throw a lot of unnecessary garbage onto their system just to configure things that eventually spreads out to infect other distributions as it is doing now. Then Ubuntu users can ease into the true Linux way of doing things by having a system that JustWorks(tm) after install but not be crippled by a lot of Windows-like automatic configuration so they can learn that the true strength and power of Linux comes from learning how to manually configure your system, and not just leaning on a bunch of automated stuff that makes it nearly impossible to strip a system down far enough to effectively manage it.

Sadly, as I said, this garbage is infecting other distributions now as well, and it is making it very difficult even on source-based distros such as Gentoo to run a system not dirtied by this garbage. I fear that as time goes on it will get even worse, and sadly there aren’t many places to go from here.

(And why should I care if these things are taking up the large amount of resources available in computers today? Because resources are resources, and any amount is that much less available to what really matters, which is the programs I run. Plus, they simply aren’t necessary when you know how to configure things yourself — which is how it should be when using Linux — and it’s just foolish to have things running that are not necessary.)

Blog at WordPress.com.