After a long period of warring, the Ruby on Rails and rival Merb teams decide to just get along. Built on the same foundation, Rails and Merb differed just enough to attract avid developer communities that often clashed. However, the desire to make a more bulletproof solution brings the two camps together to deliver a gift to Ruby application developers looking for a stronger, more scalable Rails.
Rubyists of the world unite!
Well, that's exactly what happened over the recent holiday 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
also known as RoR or simply Rails.
Like some other open-source efforts that produce similar technology-read
and Spring, for one-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. The Merb team used to
emphasize 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 rumor
took off in summer of 2008 that Twitter was considering abandoning Rails, the
primary reason given was that problems with Rails scalability were causing
problems for Twitter. Those rumors of Twitter dropping RoR proved not to be
In any event, on Dec.
23, 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
"We realized 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."
In a Dec. 23 post, Hansson wrote:
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 called Dec. 23 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.
Click here to read more about Merb for enterprise development.
"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 realized 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
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 delve into that here. Suffice it to
say the teams understood they had way more in common than not.
And, said Hansson:
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.