It's the process, stupid...

| | Comments (8)

(yes, as you can guess by the subject I'm highly irritated right now... calibrate accordingly)

Project repositories should build and install out of the box without much intervention on the developer's part. Period. That is simply pragmatic. All scripts, recipes, data should be in the repository to make the checkout self-sufficient. 100% reproducible software should be a mandatory goal of all software projects. It should be as close to a 2-step process (check out and type make) as possible. How hard is that?

Go back and read that again. I'm asking for software to simply build (and preferably build simply). The shock! The horror! But really, how hard is that?

Yet, I keep running across developers who's thinking is simply broken. There really isn't any other rational explanation that I can come up with, no matter how I try to put myself in their shoes. Open source projects should build. Period. How hard is that???

The latest project I'm having problems with is RMagick. Not only does it not build out of the box (it even requires scripts that he doesn't have in any source revision system), but the developer actually rejected my bug on the issue. How the hell are you going to get other developers actively working on your project if you don't even want them building it? By acting that way you've violated the "open" part of "open source".

RMagick has major process, build, and stability issues, esp on OSX. Every couple of weeks the damn thing breaks on one of the projects I'm working on. That is incredibly painful because builds of RMagick take 45 minutes or so. A simple tweak I submitted brings that down to less than 5 minutes. That tweak (and others I suggested via email) was later resubmitted by the developer without attribution, nice huh?

Building software... This is so far from rocket science that it isn't funny.

In short, the project is borked, the author is aloof, and I'm wasting a ton of time on the software. I'm now looking at switching to GD2 or forking and making this open source project actually open. ZenMagic anyone? (eric hates the "k" and won't work on it if it is "ZenMagick")

8 Comments

I'd be up for some work on that. RMagick is something I use more than I'd like.

So you have 3 or 4 reasons to fork -- do you have any reasons not to? I think we'd all win if a poorly maintained project got a skilled maintainer like yourself.

Okay, so you want to fork. Nothing wrong with that. I understand Eric's reluctance to use the "k" - it's dorky. On the other hand, it does provide the mental bridge between this lib and the (Image|Graphic)Magick toolset. If you're going to break the mental bridge, why not have a little fun with the naming?

  1. ZenVision (obvious, but on the other hand, it's obvious);
  2. ZenAngel (hey, it shows up in the thesaurus for "image");
  3. ZenIdol (how's a little blasphemous graven image reference inconsistent with the world and works of Zenspider?).

And if you're forking, maybe you want to fork away from the *Magick dependency as well. I mean sure, it works on most platforms I've tried, but there's always GD or Imlib or a PIL-style roll-your-own.

Just a few stray thoughts when I should be working on this stupid Python code.

I wasted a whole day "installing" RMagick on Mac OS X 10.4.6. ImageMagick itself was a monster to build. Then the rmagic gem install process resulted in an environment where I'm able to use Magick with this code:

require 'RMagick' include 'Magick'

However the gem itself is broken. This code causes a NameError on the include statement:

require 'rubygems' require_gem 'rmagick' include Magick

I found that the GD2 library and gd2 gem installed properly.

No, the gem isn't broken. requiregem doesn't do what you think, it just "activates" the gem, it does not require it. In the next release of rubygems I beleive it is renamed. The reason some gems work with requiregem is because they include an "autorequire = 'somefile.rb'" statement in their gemspec. Jim has stated that autorequire is a bad idea, and no gems should be using it for will probably be removed.

You should never use require_gem unless you need to use the functionality provided by that command -- ensuring the user has a specific version of a gem. Just do:

require 'rubygems' require 'rmagick'

Oh, and don't include Magick into your namespace just to save a few keystrokes.

  1. Install darwinports
  2. sudo port install rmagick
  3. That's it.

Good enough for me.

Slight correction:

  1. sudo port install rb-rmagick

Leave a comment