(I’m not a Rails hater, but I hate the Java haters in the Rails community, and there are a ton of them)

So, a few weeks ago I linked to a funny video from RailsEnvy that made fun of Java programmers. In it, they make fun of jars, the packaging format for Java that has existed since the beginning of Java. I laughed because, yes, I got the joke the Rails guys were making, but in the back of my mind I went, “Gosh, gems seem like more of less the same thing.” No matter, we’ll forgive the Rails guys their crowing (heck, it would be impossible to admire their work if one didn’t ignore the constant crowing).

Then, today, I run across a number of blogs that want developers to release everything as gems. Everything, including full applications. Then there’s conversations about unpacking the gems into the vendor tree in your Rails apps.

At this point, I’m ready to throw up. I was simply confused at the first part, uncomfortable about packaging my whole app as a gem, and then completely ill by the end. Folks, you’re over-engineering your build/test cycle! Seriously, STOP!

Regardless of my actual opinion here, I really just want to point out that the entire bit about hating jars is about hating manual dependency management. All platforms have some variation of it. Perl and Ruby have gone the way of standardizing on a “one true way” to distribute libraries for the core lang (CPAN modules and gems, respectively). Java has only relatively recently enjoyed widespread adoption of Maven 2 and things like buildr. Historically dependency resolution and installation was a manual process.

All of this doesn’t eliminate the fact that as you try to package external dependencies and deal in higher level bundles, you have to manage those dependencies. None of the automated solutions are perfect. I find it funny that a community that beats up on Java fairly constantly is actually reinventing the exact same solution for the problem. And, since it’s a solution coming out of the Rails community, it’s “teh awesome!”

Yes, I’m whining. And really, I’ve never seen a community so proud of it’s NIH syndrome. Yeesh. It’s not everyone, but a lot of the haters are truly unfamiliar with what they’re hating on.

(and yes, I understand the original issue with plugin versioning in Rails and why it needs a solution… and I’m okay with dropping them in favor of RubyGems because, see, I’m coming from the Java world where we used these things called jars and… God, I’m back to the beginning of this post again, aren’t I?) :)