(A clarification: I normally develop using the uber-MacBook Pro, but I have a personal policy of only doing development using virtual machines; therefore I normally don’t use the OS X side of my laptop for any kind of development, unless what I’m working on can only be developed in OS X. As you’ll see later on in the article, for this reason I don’t have common programming tools, such as XCode, installed by default.)
Even though I’m a core contributor to at least one open source project, and in the course of my job I use a lot more (read: LAMP and a lot more), there’s one thing that bugs me a lot about most Open Source software: exactly how “un-user friendly” a very large portion of it tends to be.
Case in point: this morning I was reading this post by my friend and co-worker Torrey Rice, and noticed a neat little tool he talks about called PNGCrush. Now, being both a developer and a creative designer (I’m the one that designed the Dojo Toolkit website, and the upcoming Dojo API tool), something like this would be awesome; being able to effectively compress PNG images well is always a big thing.
So I go to grab it.
First thing that happens: the PNGCrush page tells you it’s part of a bigger package called DarwinPorts. DarwinPorts is the open source version of Darwin that Apple released a while ago and has found a lot of community love. So to use PNGCrush, you first need to download and install DarwinPorts.
OK.
So I download DarwinPorts, and try to install it. Of course, the install script hangs the first time–probably because I have a number of apps running that might be interfering. But they don’t tell you that; it just hangs.
Sigh.
OK. So I shut everything down and try it again. This time it installs no problem. Yay!
Next step.
The install instructions then tell you that you need to update to the latest version by kicking open a terminal window and typing a command.
Fine. So I do.
Five minutes later, I finally see some activity–but I was never told that something was happening in the first place. Once again, the command seemed to hang. (Note that this was the 5th time I tried it; the first four times I thought nothing was happening, and forced a quit on the command).
Great!
Except now it starts downloading what looks like a shitton of files. Jesus!
…fast forward, 5 minutes later…
Once it’s done synchronizing itself to the repository (I’m assuming that’s what it was doing), it attempts to compile things for you. That’s nice; you don’t have to dive into doing that yourself. Except it will fail, again with some cryptic messages, if you don’t happen to have…wait for it…a C compiler installed–which, if I remember correctly, is either not, or at least not in the path that the DarwinPorts selfupdate expects.
Sigh. OK.
So now I’m at the point where I’ve downloaded XCode from the Apple Dev Connection site (1.1GB later) in the hopes that maybe this is what DarwinPorts needs to get itself going correctly.
What fun.
So here’s a message to the Open Source Developers of the World:
Please please PLEASE try to remember that not everyone who is trying to use your code is as deeply familiar with it as you are–and write some fricking human-readable instructions and messages, so that people like me (smart people but not familiar with your stuff) don’t sit here and waste hours of precious time just to get decent PNG compression on a set of images.
Please.
UPDATE
Once XCode was done installing (and 20GB of HD space later), I was able to compile DarwinPorts no problem. However, I had to go hunting for the actual directory the PNGCrush portfile landed in, which was definitely not clear from the instructions on the PNGCrush home page. Again, a simple sentence such as “cd to the directory the PNGCrush portfile would be in, such as this” would have been more than helpful; instead, “cd /opt/local/bin/portslocation/dports/pngcrush” is what you are told, which looks an awful lot like a real cd command, complete with real directory location, to me. Instead, it was located somewhere else very deep (I can’t find it now); all I can say is thank God for Spotlight and Quicksilver.
(Also, for the Drupal team: how about either simplifying some of your API, or at least provide a very clear starting point so that someone familiar with PHP can at least start hacking on your system without spending hours of frustration finding out about all the magic you pulled?)
2 Comments
I am the author of pngcrush. I think your complaints are really with the downstream packager of DarwinPorts, not with the pngcrush author.
‘“cd opt/local/bin/portslocation/dports/pngcrush” is what you are told,’
That instruction is nowhere in the upstream pngcrush distribution.
Thanks for persisting with the installation, though.
Glenn
Hi Glenn,
Yeah, I think I would agree with you; the issue for me was definitely more with DarwinPorts than pngcrush itself.
Thanks for finding this old-ish post though