Ruby on Rails and rival Merb teams have finally decide to get along. Built on the same foundation, Rails and Merb differ just enough to attract avid developer communities that often clashed. However, the desire to build a better solution brings the two together to deliver a gift to Ruby application developers looking for a stronger, more scalable Rails.
Well, that’s exactly what happened over the recent Christmas break. The once warring Ruby on Rails and rival Merb communities decided to mend their rift and work together to integrate the best of Merb into the next major release of Ruby on Rails, also known as RoR or simply Rails.
Like some other open-source efforts that produce similar technology – take JBoss and Spring, for one example — the development teams can tend to at best not trust one another, or at worst, just plain not like one another. It is no secret that there have been flame wars between the Rails and Merb communities. Merb has been referred to Ruby on Rails for the enterprise environment. The Merb team used to emphasise that its goal was to make RoR more scalable, and one of the knocks against Ruby on Rails has been that it doesn’t scale well. Indeed, when a rumour took off in summer of 2008 that Twitter was considering abandoning Rails, the main reason given was that problems with Rails scalability were causing problems for Twitter. Those rumors of Twitter dropping RoR proved not to be true, however.
In any event, on 23rd December 2008 the Ruby Team and the Merb teams decided to bury the hatchet and merge some of the best ideas from Merb into what will become Rails 3.
“We realised that we wanted largely the same things for Web development in Ruby,” Rails creator David Heinemeier Hansson said in an interview with eWEEK. “We just happened to care in part about different but complementary things. So instead of continuing on duplicating so much of the stuff that everyone wanted to have as the same, we decided to instead join forces and spend our energy on just working on the complementary aspects.”
Hansson added, “The Merb guys are bringing over the best ideas from Merb into Rails 3 … Yehuda Katz, who was the Merb lead developer, has joined the Rails core team.”
“It’s Christmas, baby, and do we have a present for you. We’re ending the bickering between Merb and Rails with a this bombshell: Merb is being merged into Rails 3!”
We all realized that working together for a common good would be much more productive than duplicating things on each side of the fence. Merb and Rails already share so much in terms of design and sensibility that joining forces seemed like the obvious way to go. All we needed was to sit down for a chat and hash it out, so we did just that.”
The aforementioned Katz dubbed 23rd December a “fairly momentous day” in the history of Ruby Web frameworks.
Despite the plans to merge Merb ideas into Rails, the Merb team said it is not abandoning the Merb project.
“Merb was started by Ezra [Zygmuntowicz, Merb co-founder] to address a very well-known and painful shortcoming of Rails two years ago: its [in]ability to take file uploads,” said Tom Mornini, CTO and co-founder of Engine Yard, a Ruby application hosting company that employs some of the primary Merb developers.
“We always saw Merb as complementary to the Rails stack, yet some in the Rails community saw us as competition,” Mornini said. “So we opened negotiations about a year ago with DHH and it didn’t come to fruition, really. Then we reopened the conversation about four or five weeks ago and we said we want to put this behind us; there are very valuable assets in Merb that should be put in Rails, and DHH agreed”.
Mornini said the Rails community “quickly saw the advantage of having a single unified Ruby on Rails community, and a powerful version of Rails that could shed the scalability and other issues”.
Indeed, Mornini said, “Merb became a testbed for things the Rails guys didn’t accept in the beginning but wanted to do. … [I]t is interesting how your perspective changes over time. We always wanted to support Rails and we felt we were. But when we realised people were threatened by what we were doing we knew we had to act quickly” to counteract that perception and push for a merge.
He added, “We wanted to put behind us the concept that you can’t scale Rails, for the overall community and because that’s our backyard.”
So when will the first fruits of the merged Rails and Merb technology be available?
Hansson said the flow of Merb ideas into Rails 3 is already under way, particularly an effort to bring Merb’s provides/display into Rails 3.
Katz told eWEEK, “The team is working hard to do a preview release of Rails 3 at RailsConf 2009, which will take place in May in Las Vegas [… ] Based on current progress there is a good chance we’ll have something that will represent what Rails 3 will look like. It won’t be an alpha, but more of a beta … yet not a release candidate”.
In separate blog posts, Hansson and Katz discussed what is being brought over from Merb into Rails and how. I won’t go into that here. Suffice it to say the teams understood they had way more in common than not.
“Once we realized that, it seemed rather silly to continue the phantom drama. While there’s undoubtedly a deep-founded need for humans to see and pursue conflict, there are much bigger and more worthwhile targets to chase together rather than amongst ourselves. Yes, I’m looking at you, J2EE, .NET and PHP”.