Diatribes - Computer, Economic & Political

This blog is really just for me. If you find something interesting on it, leave me a comment. If you disagree with something, let me know what and why. In this blog I am just putting some of my thoughts for computers, the economy, politics, and other topics in writing.

03 July 2006

Building from source sucks

No really, it sucks. A lot of GNU/Linux purists (and gentoo users) might be upset to hear me say this, but it is true. I know about the advantages – small speed boost, tweakability, and bragging rights from having built your system from source. These are neat things, sometimes critical things. But for an end user, even a sophisticated one, source sucks.

Now that isn’t to say distributing source is a bad idea, it isn’t. The GPL is one of the most revolutionary ideas in the copyright area there has been for a long time. And it is a great idea, if a developer drops a project, if it was GPL anyone can pick it up again. That is brilliant. And it certainly isn’t within anyone’s right to force developers to build binaries for every system – it isn’t feasible and it would impose more of a burden on developers, most of whom are volunteers, than is necessary.

But really, building from source sucks. Let me tell you why I think so:

1. It rarely works out of the box. Sometimes it does, but the larger the program the less likely it is to work. I spent an unconscionable amount of time trying to build a certain program. It was about 50 MB. I never did get it, eventually I found a pre-rolled deb from some unaffiliated site. Now sometimes building from source works beautifully, I built Hamachi in less than five minutes with no problems. But as always YMMV.

2. Dependency hell. Once I read the instructions on how to make the program, often I find that I needed quite a few libraries. One time, I started building the libraries themselves from source, but then I realized they were probably in the debian repositories. So I used apt-get for the rest of the libraries until I found that I already had an older version of one of the libraries that I needed, and I couldn’t upgrade that library without a major overhaul of the system. I tried getting an older version of the program, I tried to build the new library from source, I googled, I shook my fists, screamed and punched the wall – all to no avail.

3. Reading man pages, readmes, usenet posts, and other forms of research suck. Not to say they aren’t useful, they can be. But all the reading is often more work than the program is worth. I’ve spent hours deciphering readmes and config files and the make file itself. After all of this, I’ve gotten snubbed by the developers on usenet channels, which isn’t that uncommon though there are a lot of helpful people out there. I started checking everywhere for people with the same problem, others had the problem but no solutions had been posted (just vague advice).

4. Uninstalling. Once I get an app built from source, sometimes I don’t want it anymore. Not for disk space reasons alone, sometimes for compatibility reasons. Guess what – when you build from source, the make file vomits files all over your system. They’re in /usr/bin they’re in /home/user/.program, they’re all over the bloody place. You can hunt them down, or ignore them. Usually I ignore them. Contrast that with a deb or rpm you’ve installed. Go to kpackage, aptitude, synaptic, or any other good package manager, and it is just a few clicks to get that binary blob off of your system.


What is the solution to this? Obviously developers or contributors can create binaries. That works, but as I said before, it is a bit burdensome to require that of all developers. I understand the technical difficulties with getting source to compile everytime, on every system, easily. Instead, what I think would fix this, is is an easier way to convert source into a deb/rpm file.

To a great extent this involves getting the source to compile correctly on every machine. But what about the unification process in Oregon. Or the LSB (linux standard base). No one can (or should) force developers to submit to these processes, they may be too stringent or not supported widely enough, but we need something like this.

Imagine if source could easily be turned into a binary. As easily as say, converting an RPM to a DEB with Alien. Source would be easy enough everyone could just use source. Developers wouldn't have to offer two types of download - source and binary. This could save open source developers (nevermind sourceforge) a terrific amount of resources - bandwidth, storage space - and time - no more compiling each iteration of the program on each platform. If nothing else I think this could really make open source development easier, quicker and more attractive.

6 Comments:

Anonymous Anonymous said...

this is an awful post that just highlights the users lack of knowledge and patience. But you are correct in one aspect, that packages exist for lame users who have no idea what the hell they are doing. I can't argue against ones right to be ignorant.....

07 July, 2006  
Blogger jambarama said...

It is totally fair to call my post "awful" and claim that it highlights a "lack of knowledge and patience."

You are probably right, but rather than just assert that this is true, call me out! Show me where I am lacking understanding?

From my perspective, it very nice of developers/contributors to distribute binaries! I just don't think they should have to.

In my opinion (which you clearly disagree with, which is fine) source shouldn't be so hard to compile that only an elite few can create binaries.

07 July, 2006  
Anonymous Anonymous said...

there's a difference between saying something sucks, and something is difficult. Your article clearly states that compiling from source sucks. I will admit that it can be rather difficult without reading the documentation first, but i have never once run into a problem compiling from source that couldn't have been avoided by reading the docs.

07 July, 2006  
Blogger simon said...

sorry but this is bullshit. there are a lot of source distris out there that handle a lot of the "problems" you mentioned.
im using gentoo and im completly satisfied with how portage does its job.

07 July, 2006  
Blogger jambarama said...

@jack - You are absolutely right, when I said "sucked" I meant it is difficult and no fun. Of course that is what I usually mean when most people I know say suck, but perhaps we should be more exact.

I knew people would react like this, but for explanatory power, let me make this clear. I read documentation prior to trying to build something from source. And I read man pages, help forums and any resource I can get at when it doesn't work.

I strongly believe your experience of having "never once run run into a problem compiling from source that couldn't have been avoided by reading the docs" is abnormal. I hope you aren't lying, but in any event - this is very atypical for most reasonably competent people who have built a medium or larger size app from source.

@SSN - There are source-based distros that handle this for you. I agree 100%. But building everything from source is probably not necessary. Portage is amazing, I loved FreeBSD for a long time, I still do. But I'm not talking about FreeBSD or Gentoo's portage - emerge rocks, but what about the .tar.gz you get from sf.net that isn't in the tree or the repositories. Even on Gentoo, NOT all the problems with source I mentioned are ironed out.

12 July, 2006  
Anonymous Anonymous said...

It's the same old cry about open source.

There still are people (higher up in corporate ladder) who can't operate a Win PC.

Other point is people seek comfort zones and care less to learn what works behind the scenes. More of an attitude problem than an 'educate and correct' phenomenon.

20 December, 2006  

Post a Comment

Subscribe to Post Comments [Atom]

<< Home