Rails vs Merb ¿drama?


That’s official, according to Twitter the fight has started.

In this corner, weighing in at XXX LOC, from 37signals in the white trunks: Rails and in this other corner,  weighing in at YYY LOC from Engine Yard: Merb!

Yehuda Katz

Yehuda Katz

David Heinemeier Hansson

David Heinemeier Hansson


I wish I had a more aggressive photo of Yehuda, but oh well…

So people love drama, from American Idol to the Elections without forgetting Survivor, Heroes and other TV shows. Few weeks ago there was a tentative from Giles to create some controversy but he did not really work so well. The last big drama we had in the Ruby community was Zed and his infamous blog post…

The plot

Once upon a time, in a world where .NET, JAVA and PHP were ruling the internet development world, a not so well known programming language was getting more and more traction in the far east. Ruby, as it was known in Japan, only had very little documentation in English and real ninjas had to translate docs from obscure Japanese writings in order to become enlightened. Nevertheless, a courageous Danish student named David decided to build an application called basecamp using this “exotic” language. David decided to extract a framework from his work for 37signals. He called his framework “Ruby on Rails” and offered it to the world under the MIT license. Pretty quickly, as Ruby was getting more popular in the West, people looked at “Rails” and loved the MVC architecture, the conventions over configuration, testing framework and especially the language: Ruby.

As Rails was getting popular, a man from Polish descent known as Ezra Zygmuntowicz and who was working for Engine Yard got frustrated with some of Rails limitations. He needed something simpler, easier and faster. In fact he just needed a Mongrel handler, a way to process a request really quickly without going through then entire stack and without slowing down the main app. That’s how Ezra started Merb.

Let’s fast forward 2 years. The year is 2008, the place is Orlando, Florida. Yehuda Katz, Merb’s lead developer announces the 1.0 release of a Ruby web framework started 2 years earlier by Ezra. The framework’s selling points are: performance, modularilty, flexibilty.  In the mean time other Ruby frameworks were developed such as camping, Sinatra, mack, waves

The plot twist

Now that Merb 1.0 is out, some people want to know what they should use for their next project. Merb or Rails? What’s the difference, after all they seem to be doing the same thing. Someone starts a Reddit thread asking this very same question to the community…. and the drama begins!

  • part 1:

Someone mentions that Merb has less code so it’s easier to understand the “underpinnings of your framework”. Jeremy Kemper aka Bitsweat from Rails core team reply by saying that Rails code base is only 1/4 bigger than Merb’s.

  • part 2:

Yehuda Katz, jumps to his shell, runs some commands and replies that Jeremy did not count right and really, Merb is half the code size has Rails. He even writes a blog post to explain what he did his main point being that Merb can run on subset of his code (merb-core) while Rails can’t.

  • part 3:

At this point, DHH already started addressing some of the reproaches the Merb community has brought on Rails. Interesting enough, DHH carefully never mentions Merb though. However just after wycats/Yehuda’s post, DHH releases a post entitled: Rails is a monolith. In his post, DHH calls LOC comparison an “inverse dick measurement match”. He goes even further and gives the size of some of Rails’ components, mentions that there is a way in Rails to remove parts you don’t want but that anyway “Why would you bother? And that’s an answer I [DHH] don’t quite have for you.”

  • part 4 (I told you it was a real drama)

Yehuda considers that even though, DHH didn’t mention him or Merb, “they” means the Merb community. Unfortunately, DHH doesn’t allow comments on his site so Yehuda decides to write yet another blog post. In his post, Yehuda deconstructs DHH arguments and tries to explain the philosphical difference between the two frameworks.

Drama or no drama?

There were a lot of comments on reddit and yehuda’s blog, a lot of tweets were sent,  but is there a real drama?

My answer is no.

The truth is that Merb was developed because some people like Ezra, Yehuda, myself and others were frustrated by some aspects of the Rails framework. We believed in the framework main concept but we were not sharing some of the core values or some of the details of the implementation.

We have nothing but respect for DHH and the Rails core team. To be honest, without Matz and without DHH, I wouldn’t do the job I do today and my job would probably not be as much as what it is. Most, if not all of the Merb core team members contributed to Rails and are very familiar with its architecture. We just have a different philosophy/approach of problems.

There is also a lot of collaboration between the two teams. Ezra brought rack to Rails, Merb pushed rails to become thread-safe, during RubyConf, Josh Peek mentioned porting run_later (a Merb only feature) to Rails now that it’s thread safe. On the other end, we based a lot of our framework on concepts proven by Rails.

So what is it all about?

It’s just people arguing ideas. It’s actually a very healthy thing for a community to do.

I’m not oviously talking about the Rails overall community. I do realize it might shake the Rails community a little bit, but I think it’s for the best.

I also hope Sinatra, Waves, camping will join the debate. Sinatra for example is an awesome tiny framework. Merb has flat/very-flat structures which do something similar to Sinatra but with some differences. I think it’s great we can talk freely about the philosophies behind each framework.

By putting arguments out there and arguing ideas without fighting, I strongly believe that each framework will just become better and it would be easier for developers to choose what framework fits their needs best.

No drama then?

Well, maybe a little bit, let me quote a quote from 37signals book, getting real:

Don’t follow the leader
Marketers (and all human beings) are well trained to follow the leader. The natural instinct is to figure out what’s working for the competition and then try to outdo it — to be cheaper than your competitor who competes on price, or faster than the competitor who competes on speed. The problem is that once a consumer has bought someone else’s story and believes that lie, persuading the consumer to switch is the same as persuading him to admit he was wrong. And people hate admitting that they’re wrong.

—Seth Godin, author/entrepreneur (from Be a Better Liar)

Godin makes a good point, some people feel threatened by a new solution competing with the one they currently use. Godin and 37 signals suggest that instead of competing on the same ground as the leader (in this case Rails), you should position yourself differently and that’s what Merb has been doing since the beginning.

That’s probably why Yehuda reacted when Jeremy and David said that basically, Merb was no different than Rails.

Merb’s point is not to be a faster Rails, instead Merb brings a different approach to the Ruby web development world. And that’s the true identity of Merb.

Conclusion

No need for trolling or making a big deal about what happened. Rails and Merb are both lead by opinionated/passionate people who have a different view on what their framework should do and how it should do it.  Let’s keep the dialogue open but let’s not forget that all of us spend hours and hours offering software and the goal is to server the community no to fight.

Both Rails and Merb have pros and cons, learn more about the difference between the two frameworks, look at other solutions and more importantly evaluate your needs.


Similar Posts

, , ,

  1. #1 by jack dempsey - November 15th, 2008 at 20:14

    Hear hear.

    “learn more about the difference between the two frameworks, look at other solutions and more importantly evaluate your needs.”

    I think that summarizes it nicely.

  2. #2 by Zack - November 15th, 2008 at 20:55

    Very well said.

    I totally agree that Rails, Merb, Sinatra, and other frameworks have their place and these discussions are healthy.

  3. #3 by Eleo - November 15th, 2008 at 21:12

    In a sexiness contest, wycats wins. Prove me wrong.

  4. #4 by Matt Aimonetti - November 15th, 2008 at 21:19

    @eleo ha, I’m not sure that was the point of my article, but I’m sure wycats will appreciate.

    p.s: if you have a picture of wycats looking mean or upset, please email it to me ;)

  5. #5 by Liam Morley - November 15th, 2008 at 23:09

    Thanks for this, I think it’s what we needed to cool things down and put things in perspective.

  6. #6 by sensei - November 16th, 2008 at 02:07

    I just love slices!

  7. #7 by Steven Bristol - November 16th, 2008 at 07:58

    Great post Matt. I can hardly wait until Las Vegas. I’m hoping Coby will get a video of Yehuda and David slow dancing together while Matz plays the violin. Either that or a boxing match.

  8. #8 by Peter Szinek - November 16th, 2008 at 10:10

    What I don’t get is that even the merb guys seem to be divided: Tom Mornini/Ezra himself etc. are in the ‘merb is not a rails competitor’ boat but Yehuda (and I doubt he is alone), doesn’t seem to have the same opinion.
    So what’s going on? Aren’t they the leaders of both Engine Yard and merb? In which case maybe it’s not the most fortunate to disagree this early?

  9. #9 by Matt Aimonetti - November 16th, 2008 at 10:47

    @peter I’m not sure where/when you get this information but let me try to answer your question the best I can.

    First off, I’d like to make something very clear. Engine Yard doesn’t make any decision on what Merb should do and how to do it. However, we do value Tom and Ezra’s advise because they are experts in their domain and it would be foolish not to. Therefore, it’s true to say that they both do influence Merb.

    Merb’s lead developer is Yehuda Katz, who’s also an Engine Yard employee. Maybe that’s the confusing part. We might be used to companies like Microsoft which have a reputation of dictating. In this case, EY never forced anything on the Merb team.

    Your statement about Tom/Eza does not sound fully accurate to me. Few months ago, during one of his talks, Ezra was saying that Rails was faster to get up and running but if you were spending a bit longer setting up you will get more flexibility in the long term using Merb (sounds like they are competitors to me).
    Note that his comment was made before Merb Stack was finished. In reality, both Merb and Rails are web framework and with Merb Stack, you can do exactly what you would do with Rails. So it’s a bit hard to still say that merb is not a rails competitor.

    However, Merb offers a different approach to web development, you can have a 1 file app “a la Sinatra”, a tiny framework with the bare minimum or a full fledged web framework “a la Rails”. Having the luxury of easily and reliably pick and choose what components you need makes Merb totally different from Rails. That’s maybe what you took as a disagreement since people might have commented on different aspect of the framework.

    I hope this helps.

  10. #10 by Peter Szinek - November 16th, 2008 at 12:06

    Thanks for the clarification, Matt.

    First of all, I guess I left out a few IMHOs. This is how I interpreted the messages flying around in the past days (and earlier) – and those messages, among others are:

    http://antoniocangiano.com/2008/11/14/merb-rails-myths-language-popularity-and-other-zenbits/
    Tom’s comment:

    ‘While many people in the community represent Merb as a competitor to Rails, Ezra and Engine Yard, Inc. have never seen it that way. From the very first day, Merb was designed to complement Rails.’

    http://brainspl.at/articles/2008/05/21/does-it-have-to-be-a-competition-between-rails-and-merb
    “It seems like a lot of folks out there want there to be a battle royal between Merb and Rails. I just wanted to dispel this myth. (…) Merb stands on its own merits just as Rails does.”

  11. #11 by Tom Mornini - November 17th, 2008 at 12:08

    Hey Peter. I can completely see how my and Ezra’s comments appear to be contradictory with Yehuda’s position. I don’t think they are, however.

    Ezra and I, and Yehuda as well (if I may speak for all of us) believe that Merb and Rails are so entirely antithetic that they are complementary, once you get beyond the fact that they’re both Ruby web frameworks.

    We’ve all seen the negativity regarding Rails in the outside world, deserved or not. Can Rails scale? We’ve said yes from the beginning!

    Some people don’t agree with the Rails way. We’ve also seen that those who do agree with the Rails philosophy have gained *enormous* advantages -vs- other languages and frameworks.

    I hope for a future where *both* Rails and Merb succeed beyond everyone’s wildest dreams. This can happen if we grow the Ruby pie!

  12. #12 by Carlo - November 28th, 2008 at 03:30

    Nice post!
    I also believe that it’s an ecosystem (on ruby-based technologies) and that “competition” here is – as always – a good thing to have.

  13. #13 by Kazim - December 24th, 2008 at 12:17

    Now there’s a real drama!!

    Rails 3 == Merb 2.

Comments are closed.