InfoQ

News

Merb Will Be Merged Into Rails 3.0

Posted by Werner Schuster on Dec 23, 2008

Community
Ruby
Topics
Performance & Scalability ,
Ruby on Rails
Tags
Merb ,
Ruby on Rails ,
Rails Plugins ,
Rails

Big news in the world of Ruby web frameworks: Merb and Rails will be merged. Merb, started by Ezra Zygmuntowicz, who explains the change

So our two teams started talking to see if we could put our differences aside and come together for the common good. We've laid out a roadmap of what and how to integrate merb' best features into rails-3.0. I think we have a great plan that will make Rails the best framework in existence. It will be a blend of the best things we have discovered while working on merb, while keeping the Rails aesthetic people have grown to love.
You can expect to get a kick ass, fast, memory efficient version of rails(merb) this spring!


David Heinemeier Hansson, the crator of Rails, explains the future of Rails will look like with Rails 2.3 which will be followed by Rails 3.0

Rails 2.3 is just around the corner. We hope to wrap up and release in January. It's a blockbuster release packed with goodies to the tilt. But as soon as that's done, all eyes will be on Rails 3.

InfoQ recently featured an interview with Yehuda Katz where he explains many of the concepts that are now being merged into Rails. The specific changes that will merge Merb into Rails 3 are explained in David's announcement, as well as in the announcement by Merb's Yehuda Katz, such as the public API:

As of Rails 3, Rails will have a defined public API with a test suite for that API. This was one of the major differentiators of Merb. This will allow users and plugin developers to have a clearer, more stable API to build against. It should also significantly reduce plugin breakage from release to release.

David also explains the reasons behind this:

Rigorous API: Too many plugins break when Rails is updated because it's not clear where they can safely hook into the internals and when they're monkeypatching and should expect things to break. The Merb guys committed to a public API with tests to ensure that it wouldn't break. They'll bring over that line of thinking and give Rails 3 a tested and documented API for extensions that won't break willy-nilly with upgrades.

Rails 3 will also inherit Merb's focus on modularity, a topic that was hotly debated recently in the Merb and Rails communities. In short, rails-core will be created, which reflects merb-core, a minimal version of the web framework, as Yehuda explains:

Rails will be retrofitted to make it easy to start with a "core‚" version of Rails (like Merb's current core generator), that starts with all modules out, and makes it easy to select just the parts that are important for your app. Of course, Rails will still ship with the "stack‚" version as the default (just as Merb does since 1.0), but the goal is to make it easy to do with Rails what people do with Merb today.

David explains that Rails 3 will continue to offer default subsystems, but also work well with alternative systems:

Framework agnosticism: Rails will always have a default answer to every question within the stack. If you don't care about testing frameworks, you'll get test/unit. If you don't care about which ORM, you'll get Active Record. But some people do care and want something else. Some people want RSpec for testing, others want to use Sequel or Data Mapper for ORM, others again prefer Haml for templating, and some might prefer jQuery for Ajax. All these people should feel like Rails is welcoming them with open arms. Yes, we'll have a default, but we shouldn't have any form of discrimination against alternatives.

Further changes will bring Merb's performance to Rails 3.

A big questions now is of course: what about developers using Merb? Yehuda explains:

In particular, we will do Merb releases with deprecation notices and other transitional mechanisms to assist developers in tracking down the changes that will come between Merb 1.x and Rails 3. Expect a number of interim releases that get incrementally closer to Rails 3, and expect parts of Merb (most notably the helpers) to be ported to run on Rails 3 in order to further reduce friction.
To be perfectly clear: we are not abandoning the Merb project. There are many production applications running on Merb that are relying on both timely bug fixes and a clear path to the future.

Ezra also adds that EngineYard, who's been sponsoring Merb for a long time, has an interest in a smooth transition:

And we will provide a clear upgrade path to Rails 3.0 for merb apps. We still have quite a few merb apps running internally at [EngineYard] and will want an upgrade path for our own apps as well.

The Merbist blog also has some information about the merge.

What do you think of the merge?

Great idea with great humility by Kent Fenwick Posted Dec 24, 2008 11:45 AM
Re: Great idea with great humility by Ivan Lazarte Posted Dec 31, 2008 1:37 PM
  1. Back to top

    Great idea with great humility

    Dec 24, 2008 11:45 AM by Kent Fenwick

    I think its great that the battle of the Ruby Web Frameworks will end in a synergy combining the best of both worlds.

    The Rails Core Team and Merb Core Team were able to check their egos at the door and make decisions that would benefit the entire community. This is why I love Ruby. It seems to foster this kind of innovation.

    Thank you

  2. Back to top

    Re: Great idea with great humility

    Dec 31, 2008 1:37 PM by Ivan Lazarte

    I think it's more a survival tactic for the Ruby web dev community. Tiobe confirms decreasing interest in Ruby: www.tiobe.com/index.php/content/paperinfo/tpci/.

Educational Content

Brian Marick on 4 Challenges and 5 Guiding Values of Agile Software Development

Brian Marick takes us through a quick tour of the most important values and challenges to adopting Agile successfully (they aren't the typical challenges and values we hear in the community).

Are You a Software Architect?

The line between development and architecture is tricky. Does it exist at all? Is an ivory tower actually needed? There's a balance in the middle, but how do you move from developer to architect?

Agile – A Way of Life and Pragmatic Use of Authority

The word 'authority' sometimes produces an allergic response in hard-line agilists. Freedom and authority – both are bad if misused and both are good if used in right spirit for a noble cause.

Getting Started with Grails, Second Edition

"Getting Started with Grails" brings you up to speed on this modern web framework. Companies as varied as LinkedIn, Wired, and Taco Bell are all using Grails. Are you ready to get started as well?

Using ITIL V3 as a Foundation for SOA Governance

Those familiar with only ITIL V2 often scoff at the thought that ITIL could serve as a governance framework for SOA. With ITIL V3, the focus of the framework shifted towards service-orientation.

Adrian Colyer on AspectJ, tc Server and dm Server

SpringSource CTO Adrian Colyer discusses AspectJ, SpringSource's dm Server and tc Server products, OSGi and Scrum.

Adam Wiggins on Heroku

Heroku's Adam Wiggins talks about Rails, Background Jobs, Add-Ons, Ruby, and how Heroku manages to work around Ruby's inefficiencies using Erlang and other languages.

SOA as an Architectural Pattern: Best Practices in Software Architecture

For Grady Booch the foundation of a good architecture is patterns, SOA being just one of many patterns. In this Second Life presentation, Booch attempts to bring more clarity on what architecture is.