Yehuda Katz is a member of the Ember.js, Ruby on Rails and jQuery Core Teams; he spends his daytime hours at the startup he founded, Tilde Inc.. Yehuda is co-author of best-selling jQuery in Action and Rails 3 in Action. He spends most of his time hacking on open source—his main projects, like Thor, Handlebars and Janus—or traveling the world doing evangelism work. He can be found on Twitter as @wycats and on Github.

Can’t we all just get along?

Following up on Ezra’s great post today, I wanted to throw out my thoughts on the topic.

Pretty much since I got started on the Merb project (which I did primarily to get an awesome mailer in; I spent a long time wrestling with ActionMailer on a corporate project), people have looked at the Merb project as competition for Rails.

Honestly, to some degree, we’ve fueled that by providing benchmarks and comparisons between Merb and Rails. And since our architecture is so similar, it’s only natural that people’s initial reaction upon looking into Merb is, “Why should I use this instead of Rails?”

The truth is, Merb scratches a completely different itch from Rails. Rails was responding to the almost comical amount of configuration needed to get started on the Java or PHP “stacks” at the time. Its siren song was in making as many common choices for you as possible so you’d be able to start building your app quickly and efficiently.

Rails was a massive success. It changed the way the world looked at web development. Struts 2 touts convention over configuration and Cake PHP is virtually a clone of Rails.

Today, Merb exists not to supplant those ideas, because we fundamentally agree with convention over configuration, the common usage of the MVC pattern, the use of RESTful resources, and a bundle of other things that Rails introduced to the world. Instead, our niche is making life easier for hackers, those who find themselves repeatedly delving into the framework itself to squeeze the last bit of performance or customization out of it.

It is true that we think there are concepts in Merb that are incremental improvements over Rails. But we are not unhappy when those things make their way into the Rails core. Last month, Ezra spent a week porting over Merb’s rack support into Rails, and I spent a day improving the speed of the Rails Inflector by an order of magnitude. We’d love to see our provides API make it back into Rails, and we’ve already begun to see Rails focus more on efficiency and speed in the past few months.

The fundamental difference between Merb and Rails, the one that will likely remain as the most salient features of Merb slowly find their way into the Rails codebase, is our emphasis on hackability, and the Rails emphasis on get-up-and-go. We do not see this as a competition; we see it as a way to widen the appeal of Ruby (the language that we all love), and to keep people who fell in love with Ruby through Rails from falling out of love with Ruby when their needs become more about squeezing the very last drop of performance and customization out of Ruby.

To that end, I intend to continue pushing improvements from Merb back upstream to Rails. Some of them, like my Inflector change, will likely take some time to make it all the way back to the Rails trunk because they may break backwards compatibility, but the patches will be sitting in my github repository for the next backwards-compatibility breaking release :)

Let’s all be friends!

Ruby will be better for it.

6 Responses to “Can’t we all just get along?”

Jeeze, thank you! Don’t know why people get so worked up about this stuff.

What do you mean “almost comical amount of configuration”? It’s so sad that it’s hilarious!

I said it on Ezra’s blog, “Amen, brother”. I’m “new” to Ruby as it’s only been about two years for me but I like the original mantra, “Matz is nice so we’re nice”.

@Evan It’s so sad that you *think* it must be a joke.

I’m very glad to see both Merb and Rails doing so well, and I’m sure I’m not the only one who appreciates all the hard work you’re putting in. Thank you! :)

I’ve been playing around with Merb but didn’t use it in a project (yet) cause things got delayed and delayed since Rails 2.0

Several improvements are being done, they rewrote a huge part of ActionPack, performance patches and part of this is related with Merb for sure!

My next project will be a Merb one for sure, but it’s good to be able to choose between two frameworks with different point of views but yet similar! =)

Keep on the good job!

we should not forget – Merb growing up based on own merits, not on Rails lacks

Leave a Reply

Archives

Categories

Meta