On the sorry state of Java (and Scala) packaging

Now that I’m back in Developerland for a while, it’s all coming back to me. The hatred for the release engineering process. The hatred for other people who probably hate the release engineering process as much as myself, and therefore don’t do a good job with it, either.

Case in point (any involved parties, don’t take it personally): Trying to take Akka Actors for a spin, but with Scala 2.8 beta 1 instead of 2.7. First I run into: Scala 2.8 won’t accept class files compiled with 2.7. Okay, fine, we’re all open sourcers here, so I’ll just fetch the closure of deps for Akka and compile the few source projects written in Scala (there appears to be three: configgy, jsjson and sbinary).

Let’s start with configgy. Akka depends (via Maven — ooh the excellent and every helpful and never-buggy Maven) on Configgy 1.4.7, so let’s go fetch the sources for 1.4.7. Sure enough, there is a binary in the Ivy/Maven repo on lag.net (lag.net/repo/net/lag/configgy/1.4.7)

The sources for configgy are on Github. Oh, shoot it’s down. “GitHub is Temporarily Offline”. Checking Twitter:

Connectivity problems from front-ends to file servers. Looking into it now.

Okay, eventually GitHub came back up. Back to searching. No 1.4.7 branch for Configgy. No tag for 1.4.7. Oh, so how do I get the sources that went into the 1.4.7 binary? Perhaps I should get the source drop from the Configgy home page. Oh, 1.4 release. Well, it can’t be that much older. Oh, but it’s a binary-only release. Of course it is.

So, no easy way to get the sources, therefore no way to compile a new version that actually works with Scala 2.8. Ah, well. Could just go with head of Configgy and hope for the best.

C’mon people (and this is also a note to self!) How difficult is it to actually tag your (my) repos when making a release? How difficult is it to do a simultaneous source drop? If you expect people to use your (my) shit and be happy about it, do your (my) release engineering properly. Sheesh…