Thoughts on the Ruby/Merb merge

Seeing as I was living under a rock at the time I only heard about this one a few days ago, well over a week after it was announced. What a bombshell.

To sum it up in a nutshell, it’s a "win win" situation. "Win win" because the Rails community has suddenly got onboard a motivated cadre of highly professional, elite developers. And "win win" because the Rails community is going to get some nice, free goodies like improved performance, better modularization, and possibly even a stable API to work with at last.

That last one, the API stablity, is the one which I’m having the most trouble believing is true. This is the one which is going to actually make the most difference to developers’ quality of life. I’m pinching myself. Wake up, you’re dreaming, I say. This is too good to be true. I’ve been living for too long with the pain of shifting-sands APIs and the mindless busywork of fixing code-churn-induced breakage at every point release.

But I digress.

You’ll notice that there’s one side in this deal which is getting most of the benefit in this "win win" situation. Rails wins, and, er, Rails wins too!

Rails has basically nothing to lose and everything to gain from this transaction. It’s basically impossible for the code quality to get worse as a result of this deal; it can only get better and it seems likely that it will. For Merb, on the other hand, it’s not so clear.

The Merb folks are putting a lot on the line here. Notice that the result of the merger is called "Rails 3", not "Merb 2" (or any combination of the two names). There’s no room for equivocation: Merb’s basically about to be subsumed by the much larger Rails juggernaut. The very name will gradually fade away and lose relevance, even if somebody decides to keep the fork alive (and it seems inevitable that someone will). Merb is giving away its identity, and smiling all the while.

Hard not to think about those moves where the black-suited mobsters trick someone into signing their life-savings away… "Don’t do it!", you scream, "Can’t you see that they’re tricking you?". But it’s no use… they sign anyway.

What do Merb folks stand to gain from this? Well, I guess the Merb experts will find it easier to get work as consultants, to speak at conferences (Rails conferences, of course) and the like. There’ll probably be a tangible economic benefit. But they’re doing this at a great cost of freedom. They might end up with more money in their pockets, but are they going to feel happy with what they’re doing when they sit down in front of their keyboards? Only time will tell.

The Merb team was tight-knit, focussed, homogenous with respect to coding "philosophy". They’re about to find themselves floating like motes in the seething masses of Rails fans, much more labile, volatile, and easily-swayed than the directed, "hard core" group the Merb folk came from. Ideas which were self-evident back when it was just Merb are suddenly going to have to be defended against a barrage of pedantic, inane attacks. (Unless, perhaps, the Merb "kool aid" effect kicks in much like the "Git/GitHub" one did, and the Rails folks will bend over backwards to welcome with open arms anything at all that comes from Merb.)

I said that the Rails codebase can only get better out of this. If I were coming from Merb, though, I’d be very worried about what’s going to happen to the Merb codebase. What’s going to happen to all of those clean, neat ideas when they are jettisoned to fight for purchase among the flotsam, debris, and cruft that’s accumulated in Rails over the years?

All in all, I’ve been pretty darn surprised by all this. Not from the Rails side; it’s bleedingly obvious that they’d leap at the chance to incorporate all the good ideas and great engineering work from the Merb team. It’s the other side of the deal which really shocked me; the question, why on Earth did the Merb folks agree to this? DHH must be one hell of a persuasive bugger behind the scenes. If Apple ever loses Steve Jobs then perhaps we’ve already found a successor with a Reality Distorsion Field of his own.

Of course, as a Rails user, I couldn’t be happier about this "win win" situation that’s been handed to us on a silver platter. For a long time now I’ve considered Merb to be technically superior, but I have enough investment in Rails and in Rails projects that the differential wasn’t convincing enough (and the deficits in Rails weren’t serious enough) to make me move (and I’m sure are lots of people out there now thinking just like me, thank goodness I didn’t switch to Merb back when I first looked at it). All of a sudden, here comes the promise that that technical superiority will be incorporated into my framework, and a lot of the rough edges hopefully taken off in the process. A nice little Christmas present indeed.