Johan Sørensen

Why bake your own cake and reinvent the icing?

Since the first day Rails was released it’s pretty obvious that many people think it’s great. It’s constantly evolving and making me, as well as every other Rails developer, happy and productive every time we use it.

And then there’s the people who wish that something like Rails was available in language XYZ. Language XYZ may be their favorite language, it may be the only language they know, it may be the only language that is used at their workplace, it may be what all their current projects are developed in.
So they start working on a “Rails clone” or a “Rails inspired” framework in language XYZ. While it’s nice to see that people find Rails and the design concepts behind it interesting, I still can’t quite wrap my head around their reasons for doing so.

Rails/Ruby isn’t supported by my (or my clients) hosting company
If your hosting company doesn’t meet your requirements maybe it’s time to look around for another one? Sure, you’ve used them for ten years and they’ve given you great service so far, but if they won’t support you with the tools you need, then what good are they really?

I don’t know Ruby and I don’t have time to learn it
Yet you’ve found enough info to actually try it out as well as give it some closer examination, only to decide that you’ll build something like it in language XYZ?

Rails/Ruby is new and/or immature and/or still not at 1.0
If Rails can gain enough momentum to be used by a fair amount of developers and being used on big projects either in development or currently in production mode, then I’d say it’s mature enough for you to use.
People who say this will never call Rails “mature”, but those people aren’t likely to even try to clone Rails, because they’d know too well that it will never be mature enough. In fact, these people never do much, you’ll usually find them hanging around waiting for “things to mature a bit more”.

There aren’t many Rails developers around
While the current size of the Rails community can’t be compared to size of the Perl, Java or PHP communities I wouldn’t call it “small” any more and it really is a great community with talented people. Besides, any developer with a reasonable sized brain will be able to pick up Ruby and Rails in no time.

I just don’t like Ruby
Maybe you’ll need to take another look at it, crying about the syntax of a language is just silly. Yes, this one is usually related to syntax, for some reason people don’t like the simple clear syntax of Ruby. Computer languages can be a sensitive thing, most developers usually have 1-3 languages they enjoy using everyday. But building a Rails clone just because Ruby isn’t among your current favorite languages isn’t a reason to dismiss it and try to replicate every aspect of Rails in another language. That to me, seems like an awful waste of time to choose a framework based on language rather than benefits.

Ruby or the current direction Rails is taking doesn’t meet my specific (technical) requirements
Now this one I can accept. If there’s any technical requirements in your application that neither Ruby or Rails can satisfy then it obviously isn’t for you this time around. But then you wouldn’t be building a “Rails clone” either.


  1. Bill Dueber Says:

    I understand the point you’re trying to make, but much of what you’ve written here is disingenuous. There are good reasons to not be comfortable with Ruby as a language or Rails in particular—lack of decent threading support comes to mind.

    But I think the big picture you’re missing is that not everyone has to re-write Rails in their favorite language. One team has to. I like Ruby, but I’m not re-implementing rails in it; I’m using the version that exists. And once someone else writes a rails clone for, say, Perl, then I’ll be able to take my room full of people who know Perl, our product that interfaces well already with Perl, the 12 or 20 or whatever CPAN modules that make my life easier, and I’ll be set. The purpose of the rails clones isn’t about some immature, imaginary feud with ruby; it’s about the desire to leverage substantial existing assets.

    I like ruby, and want it to succeed, and I think rails is going to be a big part of drawing people into the community, but deriding people for wanting to copy rails isn’t productive, either. They likely have good reasons.

  2. Michael Schubert Says:

    Bill, the last point mentions “ruby/rails does not meet my technical requirements” to which your point about threading falls under so stating it as an example to enforce your premise that he’s being disingenuous is false. He clearly states technical barriers as legimate excuses so why do you give a technical barrier as a case against the rest of his argument?

  3. gabriele renzi Says:

    Bill, what problems did you had with threading in ruby?
    I mean, I can understand the need for OS threading in general, but in the rails’ case you’d be using multiple processes anyway with fastcgi, and for some cases (i.e. send mail in a thread and show the page in another) they seem to work fine.

  4. johan Says:

    But I think the big picture you’re missing is that not everyone has to re-write Rails in their favorite language. One team has to.

    While I can appreciate, even admire (despite it not being too clear from the above text), the entrepreneurship that goes into creating “something” of your own, if you feel that a framework such as Rails will suit your projects good enough to make you want to use it or “replicate” it in your favorite language, then why take the time it would take to clone Rails and learn it together with Ruby?

    Mind you, I’ve still not fully convinced myself if that is a good thing or not, like you say, you already have existing knowledge and tools, but it is still going to take a lot longer to create something “Rails like” that it would take you to learn Ruby/Rails properly and get your project done.

    Different tools in different languages will thrive well together if they each do their thing well. No reason to paint your entire house in the same colour.

  5. Wes Says:

    There is one reason that you missed: because your client demands that you use a certain language/platform. This is often the case with very large multi-nationals. I know of a .NET rails framework that was developed in order to get the productivity benefits of the rails model without having to switch to a platform that the client would not accept.