Merb: Rails Alternative Takes Modular Approach
- By John K. Waters
- 10/27/08
Engine Yard has just released the community version of a new Web framework for building Ruby applications. Dubbed Merb, the open source framework written in Ruby is "super-light and super-fast," according to the company, which is positioning it as an alternative to Rails.
Rails, of course, is the framework that catapulted Ruby to the popularity it enjoys today. In fact, when developers talk about Ruby on Rails (RoR), they often simply say "Rails."
Both Merb and Rails are Model View Controller (MVC) frameworks, but where Rails is monolithic, the Merb architecture is modular. It's based on an extensible, pluggable architecture, and the code base was kept to the bare minimum.
This modularity is the key difference between the two, and the need for it among Ruby developers was the driver behind the project's creation, explained Engine Yard's Yehuda Katz, chief maintainer of the Merb project. Katz, who works full time on Merb application development, sees the framework's modularity as a missing level of flexibility that Ruby developers need as they move into the enterprise and the cloud.
"Rails is great for getting up and running with an app that other people have built before using known technologies," Katz said. "It's highly tuned for specific cases. But once you get out of that zone, you have to fight with Rails quite a bit."
Merb also provides developers working on smaller applications a way to replicate common Rails tasks with less overhead and a higher degree of customizability, he said.
The Merb architecture is object-relational mapping (ORM)-agnostic, and gives coders a wide range of choices among JavaScript libraries and template languages, Katz said. It offers flexible routing and better control over groups of processes, and additional features can be plugged into the framework using standard gems. (RubyGems is a Ruby packaging system that provides a standard format for distributing Ruby programs and libraries.)
"This isn't one giant framework here," Katz added, "so it's easy to opt out and just use the pieces you need."
Another feature of this release (Merb 1.0), Katz pointed out, is the "Merb Stack," a coherent maintained stack designed to allow developers to start building new applications immediately; there's no time wasted putting together a complete stack of their own. Also, Merb 1.0 is built on a single master process, rather than several disparate processes. That approach makes it possible for groups of Merb processes to share memory. That memory sharing capability leads to more efficient handling of multiple requests over short periods of time, Katz said, and better control over groups of Merb processes.
"Ruby continues to be one of the fastest-growing programming languages in terms of adoption," said Ezra Zygmuntowicz, founder of the Merb project and co-founder of Engine Yard, in a statement. "Merb offers Ruby programmers another choice for building Ruby applications. We believe this release of Merb and the community enthusiasm we've seen for the project since its inception are testaments to a healthy and robust Ruby ecosystem."
San Francisco-based Engine Yard is also responsible for Rubinius, an open source virtual machine for running Ruby programs and a Ruby core library.
The APIs in the Merb community edition are set, and the framework is nearly ready for prime time, with just a few kinks to be worked out, Katz said. The company expects to release the final version by the end of October.
Merb is licensed under the MIT license. "Merb started out about two years ago as a little hack," Katz said. "As a fledgling project that went a little beyond the hack, we wanted to encourage adoption. We thought this license would be better for enterprise adoption than the GPL. We didn't want people to be scared of the license"
The name "Merb" is a merging of "Mongrel" and "erb." Mongrel is an open source HTTP library and Web server for Ruby applications; erb is an implementation of the eRuby templating system. The original Merb hack was a Mongrel handler with built-in controller and view templating with erb.
A Merb 1.0 preview is now available for download here.
About the Author
John K. Waters is a freelance journalist and author based in Mountain View, CA.