Rails sucks? 61

Posted by daniel Thu, 10 Jan 2008 10:33:00 GMT

With astonishing regularity, articles or posts come out claiming that Rails sucks in some way or another. People complain that Rails isn’t as easy to deploy as PHP, that Rails just didn’t do it for project XYZ. They range from the articulate and well thought out to the frankly inane and stupid (and wrong). Recently, there’s also of course been the spectacular nuclear rant by Zed Shaw, which was more a rant against random elements of the community than against Rails, but was still presented as a rant against Rails.

These anti-rails rants come in so regularly, and have been doing so for so long, that some people even bothered to write pre-emptive rant responses, like the Six ground rules for rails sucks articles, written all the way back in 2006. RubyInside even has a Troll of the month category that will provide some fun reading.

Perhaps this means that this article is redundant. Oh well. It does get tedious after a while, to read all these rants, and I felt like writing my response to them too.

Why people say Rails sucks

There’s a large number of reasons why people come to the conclusion that Rails sucks. Here’s a by-no-means-exhaustive list:

  • It’s too slow
  • It’s not easy to deploy
  • It uses up a lot of RAM
  • It’s not as easy as PHP
  • It’s got weird syntax
  • The manual is too long
  • The manual is too short
  • The creator of Rails is arrogant and eccentric
  • It doesn’t work with my specific project
  • It doesn’t scale
  • It’s got this obscure problem that no one can be bothered to fix
  • It’s not thread-safe
  • etc…

What they all boil down to, in effect, is that some people get immensely irritated because Rails does not conform to their idea of perfection. They have some specific requirement that Rails doesn’t support, and they post rants about how “they” (the rails core team) owes them to adapt Rails to their requirements, or how “rails sucks” because it doesn’t do exactly what they need out of the box.

I’m sure you can see the obvious shortcoming of this approach, but let’s break it down, because there’s several aspects to this complaint which make it very, very wrong.

1. Rails owes you nothing

Rails is entirely free. You can run it on any OS you like. You can run it with a free DB or a paying one. You can rip out the bits you like and discard the rest. You can even make changes to it if you want (and with a plugin like Piston, you can keep your changes tracked even as Rails evolves and you update it to the latest edge revision).

No one in the Rails world owes you a thing. In fact, if you’re using Rails, you have a big debt to the Rails world. Most importantly, all of us using (or trying to use) Rails owe DHH a big one for being so kind as to share his framework with the rest of the world. Even if you decide that Rails is not for you, you still have to recognise the influence that Rails has had on web frameworks everywhere - and it’s a very positive influence.

The Rails core team also doesn’t owe you anything. They are all volunteers who work on it for free. You owe them.

So stop thinking that Rails owes you something. Rails owes you nothing. You owe Rails.

2. Rails isn’t perfect

There’s no such thing as a perfect web development framework. All of them (including Rails) suck in one way or another, once you use them for real stuff. There’s no such thing as a perfect language, either. All of them (including Ruby, Lisp, Python, haXe, Erlang, Lua, etc.) suck in some way. In fact, there’s no such thing as a perfect anything - whether in the world of computers or outside of it. Everything is imperfect. If you want perfect, then die. If the Christians are right, you might go to heaven and witness perfection. I wouldn’t bet my life on it though.

There’s a certain maturity in realising this, and it seems that most of the anti-Rails ranters lack that maturity. There’s a point in life where it suddenly dawns on you that no choice is ever perfect, no matter how much you may try or how perfect it may look before you put it in practice, and that you have to satisfy yourself with the best choice, rather than with illusory perfection. For those on whom this never dawns, everything is perpetually dissatisfying.

I’m not saying you should settle for crap. No, strive for the best that you can. Create something even better if you can and have the inclination. But accept that everything has limitations and shortcomings, and that a good choice is one which balances the trade-offs between the available choices to maximise whatever it is you wish to maximise. In some cases, that might mean accepting slower out-of-the-box performance in exchange for quicker development and better maintainability.

Back to the Rails argument, this becomes especially clear once you’re put in the position to decide which language and framework to use for your project - for instance when you are starting a business around that application and it really matters. With that experience, there is a very clear learning point: each framework is imperfect, but your responsibility is to choose the one that makes most sense for your specific project. Once you’ve made your choice, you can even change it, sometimes - but do so with the knowledge that every framework you try will have its own shortcomings.

But, at the end of the day, there’s no point in complaining that Rails isn’t perfect. Yes, it’s not. If that’s news to you, you’ve got a bit of growing up to do.

3. Rails isn’t suited for all applications

There are many situations where Rails isn’t the right choice. If you’re writing a high volume transaction processing system for a bank, don’t write it in Rails. If you’re writing a 3-page web presence for a hairdresser, don’t write it in Rails. Rails is extremely good for a certain class of applications (medium to large web applications), in a certain set of circumstances (particularly well suited when getting something out soon is of paramount importance).

If Rails isn’t right for your project, that doesn’t mean that Rails sucks. It just means that your project isn’t right for Rails.

4. Rails isn’t suited for all people

Rails is a smart and opinionated framework. It’s built to allow smart people to leverage their skills to be many times more productive than many other web development frameworks. And it does so - for me, and for many people I know. It allows these smart people to be very productive, create clear, maintainable code, and have fun while doing it.

This doesn’t mean that you can do it too. And you know what, those people don’t care whether you can do it too. They’ll help you if you ask for help (I know several Rails core developers and they are without exception friendly, polite, helpful people - and that’s not even counting the rest of the Rails community, who are also very helpful). But if you decide Rails is not for you, no one will shed a tear.

This, to me, is actually a positive feature of Rails. Because you have to be smart to write good Rails code, it’s easy to tell smart developers from not-so-smart ones, because the latter just won’t be able to cope with Rails, whereas the former will often take to it like a fish to water. (see comments) - It’s much harder to fake being a good Rails developer than it is to fake being a good PHP developer.

Not “getting” Rails doesn’t mean you’re stupid, mind you. Some people don’t get Rails simply because they think differently. Others say that Rails is cool, but they prefer something else (e.g. Django or some Lisp or other). That’s fine. If you don’t like to think in the Rails way, no one’s forcing you to use Rails.

Rails may not be for you, for any number of reasons. That doesn’t mean Rails sucks.

5. Rails is extremely flexible

The thing that really gets me about people who rant about how Rails doesn’t do what they need is that Rails is by far the most versatile framework I’ve worked with. When Jakarta Struts didn’t do what I wanted in the Java world, I had to make wild and ugly contortions to get it to work - or even turn around and tell my boss “Sorry, we can’t do this because xyz”.

Every time I have a “different” requirement, I am astonished to find that either there’s already a way designed into Rails that allows me to do it easily, or it’s a neat, well contained three-line hack to get it working. I’ve never seen this in any other framework (including the ones I wrote myself). Everywhere else, there always comes a point where you have to turn around to the client and say “it can’t be done”. That just never seems to happen when developing web applications with Rails.

This applies to all enhancements, from performance improvements to functional extensions. If your ActiveRecord query is too slow and causing a bottleneck, you can bypass it with some inline SQL or even memcache it. If you need to get Rails to produce a custom binary output, you can. If you need custom table names that don’t fit the convention, you can. If you need to override the dynamic finders to do things slightly differently, you can. In most other frameworks, you can’t do anything unless it’s been thought of. Rails is the most open and versatile web development framework I’ve ever worked with.

That’s what really gets me when people say things like “Rails doesn’t scale”. First of all, that statement is based on outdated information, and secondly, Rails code, when written properly, is so clean and easy to work with that locating and optimising bottlenecks is a breeze - much more so than in many other frameworks.

So if Rails doesn’t yet do what you need, don’t complain that it sucks. Do write a bit of code to make it do what you need.

In conclusion

There are many valid reasons to use something other than Rails, but do yourself a favour. If you decide Rails isn’t for you, don’t post a rant about how “it sucks”. You’re only making yourself look dumb by doing so, and while it may be amusing for the rest of us, it’s really not doing yourself any favours.

Feel free to post comments below to tell me that actually, Rails sucks for such and such reason.

Please vote this article up on social news sites! Why?

Stumble It!
Trackbacks

Use the following link to trackback from your own site:
http://inter-sections.net/trackbacks?article_id=rails-sucks&day=10&month=01&year=2008

  1. [...] http://mobxtreme.com/mobxtreme wrote an interesting post today onHere’s a quick excerpt [...]
  2. [...] online community. The best part is ... it's all 100% free! Check them out here: Join Hey Nielsen! Inter-Sections » Blog Archive » Rails sucks? saved by 1 others     mew1157 bookmarked on 01/11/08 | [...]
  3. [...] Rails sucks? [...]
Comments

Leave a comment

  1. Avatar
    Nate Sutton about 7 hours later:

    Rails sucks at sucking.

  2. Avatar
    Stupid Says about 7 hours later:

    Rails Sucks!

  3. Avatar
    blj about 8 hours later:
    1. Don’t think of Rails for everything

    RoR is convenient to build a blog… but to have a blog you can use Wordpress.

  4. Avatar
    Hmm about 11 hours later:

    So your entire counter-argument boils down to “it’s good enough for some things… and if it isn’t good enough for you, too bad! You still owe it!”?

  5. Avatar
    benr about 12 hours later:

    Good post, good points, should be obvious but a great reminder. Getting slammed like Rails does only hurts those who want to share code or participate in F/OSS projects. When in doubt refer to the golden rule, imho: “You get what you pay for,” which in the case of F/OSS is only what your given, nothing more.

  6. Avatar
    rando about 12 hours later:

    I think one of the issues with all of the new ‘hot’ items is that they get over promoted. Look at all the cool things you can do with ‘X’ quickly. So then folks try and get frustrated.

    Also, if the guidelines are like above, medium to large? What is that? Please define the term. Medium to large in terms of what, transactions, content? interactivity? With guidelines like the above it’s no wonder folks get into trouble.

    I personally have not looked at or used ruby/rails. Way to many other things to learn out there! I find the issues being talked about with respect to Rails are very similar in a lot of FOSS projects. See over promotion above.

    Happy hacking.

  7. Avatar
    daniel about 13 hours later:

    rando: Thanks for your comment! ‘Medium to large’ depends on a number of things, including the programmer’s skill. But as a thumb rule, I’d say something like a forum (or even a blog, with all the associated features) is medium. Something like Basecamp, GMail or Wikipedia is large. Very large (ie not suitable for Rails) would be something like the microsoft.com portal or Salesforce.com. These are very arbitrary divisions of course, and unfortunately another one of those things that you only really get with experience.

  8. Avatar
    Matt about 13 hours later:

    It’s free so don’t expect much???

    What a weak argument! Unfortunately Open Source has raised our expectations much higher than that.

    But be that as it may, the reason I didn’t consider RoR is because I knew PHP, and using a framework such as CakePHP seemed to be just as powerful, but without a Ruby learning curve. So far I’m loving CakePHP.

    Cheers matt

  9. Avatar
    Tom S about 15 hours later:

    “Rails is entirely free.” “You owe Rails.” To contradictory statements. I personally like Rails, but if I “owe” someone something for using software, then it isn’t free. If you want to call it free software, fine, but don’t then say everyone using it owes something to the Rails community. They don’t.

  10. Avatar
    pat about 18 hours later:

    What does the fact that “Rails owes you nothing” have to do with the relative merits of the platform, or why Rails ‘sucks’ or not?

  11. Avatar
    Cliff about 18 hours later:

    Why do people feel it appropriate (or indeed productive) to take one sentence, word or phrase from an article and focus entirely on that? :-)

  12. Avatar
    Tom S about 19 hours later:

    Woke up on the passive agressive side of the bed today Cliff? Who are you directing your comment at? What would be “productive” enough to warrant a post in the comment section of a blog? What seems more unproductive is criticising some comment (or comments), but not indicating which comment you are referring to. Nothing can be gained.

  13. Avatar
    Tom S about 19 hours later:

    Btw (sorry for posting again :(), I liked the article, great points. Boils down to personal responsibility. Basically, RoR is a solution to a problem offered by a great community, but its up to you to decide if that is the right solution for you. Can’t blame rails if you didn’t do you hw.

  14. Avatar
    141.228.250.135 about 20 hours later:

    Rails Sucks….how that for constructive ;)

  15. Avatar
    141.228.250.135 about 20 hours later:

    Rails sucks real bad

  16. Avatar
    141.228.250.135 about 21 hours later:

    Why does Rails SUCK so bad?

    Becos people like the author like to stand up and write some self righteous article that don’t tell you a thing.

    Flame war newbie …..

    Welcome to the REAL WORLD….

    BTW You now OWE me for telling you that Rails suck …. just like how I owe Rails for a reason to amuse myself over this blog….which i indirectly owe you for writing this blog…. wait a minute…actually you owe me more as I increase your blog reads. Now according to your naive logic, everyone one now owes unquantifiable big debts to everyone then according to your logic =D

    Flame wars ROCK! Absolutely ;)

  17. Avatar
    141.228.250.135 about 21 hours later:

    Now I just need somebody to post an entry commenting on my typos, vocab, grammer or incoherent sentenses to make the action complete.

    Or a over zealous Moderator(or self moderated?) to delete my comments =D …

  18. Avatar
    Cliff about 21 hours later:

    @Tom, I would have thought it was pretty obvious which post I was referring to, since the post just prior to mine mentioned one phrase from the post (“Rails owes you nothing”) and not a lot more. Also based on the attention this post received from Slashdot. Actually not referring to your post at all. Did we wake up on the defensive side of bed this morning?

    @The poster masquerading as me. Thanks for the backlinks, should help push up my Google score a little ;-)

  19. Avatar
    141.228.250.135 about 21 hours later:

    Welcome to a world full of people with too much time like myself =D

  20. Avatar
    141.228.250.135 about 21 hours later:

    Did I mention I’m 10 years old? really!

  21. Avatar
    141.228.250.135 about 21 hours later:

    Cliff is a Noob!

  22. Avatar
    Cliff about 21 hours later:

    The point of comments on a blog like this is to encourage discussion. I’m sure that’s what Daniel wants at the end of the day (as do most people who post on their sites). So, how about that discussion?

  23. Avatar
    daniel about 21 hours later:

    FYI, Mr “141.228.250.135” based in Amsterdam, masquerading as Cliff and Tom S:

    I have a general policy of not deleting people’s comments on my blog. However, if you insist, I can make an exception for yours. Stop spamming, please.

  24. Avatar
    Eddie 1 day later:

    Everything you say in defence of Rails can also be said in defence of Internet Explorer.

    But IE still sucks.

  25. Avatar
    Alex 1 day later:

    I spent some time exploring RoR a few months ago.

    My conclusion was basically that it was a brilliant idea, hobbled by poor implementation. I liked the way the language worked, and I loved having that simple a framework, but the problems outweighed that in my case.

    Problem 1) Speed. At least on my server (which is fairly slow) it was almost unbearably slow. On a very simple page (three columns pulled from a database, each one being a link to an edit page) it was taking nearly a minute to load. In PHP, which I’m more familiar with anyway, it takes a second or so.

    Problem 2) Setup. It’s just a pain to get it running. This isn’t directly the fault of the Rails project, but it still affects my view of the framework. It took me something like a week to work out what I’d missed in getting it running – it turned out there was one step that was just poorly documented. I’m accustomed to using PHP, which just works with a fairly standard Apache setup. Having to do a lot of work to get it running seriously reduced RoR’s value to me, because I couldn’t write a script or set of scripts on one server, and then send them to someone else and assume they’d work.

    3) Everything else. The rest of my complaints basically boiled down to “I’m not a very good programmer and I’m used to PHP, and this is very different, so it confuses me.” Really not the fault of Ruby or Rails.

    Basically, I decided that, if I wanted to put in the effort to learn Ruby and Rails, it would be a really good prototyping system, but I’d probably end up sticking with PHP for the final product. Who knows… maybe my view would be very different if I’d spent more time with it.

  26. Avatar
    Brian Knoblauch 1 day later:

    I’m surprised people get so worked up about it. It’s just another tool. Fits for some tasks and not for others. I didn’t even realize there were people getting all upset about it back when I wrote my quick review (at http://briank.glmotorsports.net/archive/2007/11/03/thoughts-on-ruby-on-rails.aspx)

  27. Avatar
    daniel 1 day later:

    Alex:

    Obviously the choice is yours, and it may well be that you just work better with a different framework. Rails requires a certain affinity for neat and expressive code, and also a certain type of instinct for server-side patterns. Part of the reason Rails is great for me is it feels very right - obviously that may not be the case for you.

    With respect to your comments about the speed, though, I suspect you must have been doing something very wrong with that code for it to take that long. Rails code can be 2-3 times slower to run than equivalent PHP code, but even that’s an extreme. I certainly have not noticed such problems. If you look at the logs, that should give you an indication of where the time is being spent. My guess is you’re probably omitting to :include some dependent objects and that’s resulting in a lot more queries than necessary. The fix is probably as simple as adding 3-4 words in your find call, to make it grab all the required objects at once.

    I find Rails is especially good for the finished product, because it makes things a lot more maintainable by keeping the codebase tight and neat. There are very few ugly hacks in my Rails code, and even those are very well contained and don’t spread to the rest of the code.

  28. Avatar
    Michael Wales 1 day later:

    Why is Rails the only open source software community that latches on to that “Rails owes you nothing” statement. DHH repeats it at least once a week, like he expects the community to get on both knees and pass out golden handjobs or something.

    Sure, thanks for the framework - it’s fun to use. But, you aren’t special and yes, you do owe us something. A solid and reliable framework that can progress and become a real player in the web development market. Right now, Rails isn’t shit - a relatively minuscule number of people use Rails compared to other web-dev languages. The same goes for Python, but at least they want people to use their frameworks - their working on making things better.

    So, maybe DHH (and the rest of the “Rails Elite” - laugh) don’t owe the community anything. Think of it this way - you owe yourself something. Rails is done riding the hype-train, it’s time to live up to the hype now. If you don’t help the community, you fail to help yourself; your framework dies.

  29. Avatar
    Brent 1 day later:

    Daniel: I felt like I was agreeing with you, up until I read this:

    “This, to me, is actually a positive feature of Rails. Because you have to be smart to write good Rails code, it’s easy to tell smart developers from not-so-smart ones, because the latter just won’t be able to cope with Rails, whereas the former will often take to it like a fish to water. It’s much harder to fake being a good Rails developer than it is to fake being a good PHP developer.”

    Even with the paragraph you followed this up with, I think we, the Rails community, need to avoid this kind of rhetoric. This is the kind of line that gets us called “bigots”. Who is smart and who isn’t, based on who understands your favored framework, is obviously a very subjective argument. In my opinion, such should be left out of this kind of dialogue. This also doesn’t even seem to jive with the message in the rest of your article.

  30. Avatar
    daniel 1 day later:

    Brent - You know what, I think you’re right. That was a bit of a personal comment, from the perspective of trying to hire programmers. I found that it was easy to tell whether a Rails programmer was good by looking at code samples, and much harder to do so when looking at PHP samples.

    But you’re right, this doesn’t really belong in this article and it can easily be misinterpreted. So I’ve struck it out of the article.

  31. Avatar
    Brent 1 day later:

    @Michael Wales:

    I think I interpret the “Rails owes you nothing” argument in a different way.

    Who is part of the Rails “community”? People who use it, no doubt. Obviously, people who use it, like it. Now, those people didn’t pay to use it. It’s free, and it’s supported by “viewers like you,” like PBS. So, if there’s something in Rails that isn’t fitting your particular need, who is the onus on to implement it? If PBS doesn’t have some programming that you like, is it OK for you to call them up and bitch at them about it if you haven’t made a donation?

    Bending over for your every whim is something that paid software vendors are there to do. You pay them, they work for your particular needs.

    Rails will change in the way that the community wants it to change. That means putting in the work to change it. If you just want to be an outside observer of the Rails community, and you’re not willing to put in any work to change it to fit with your particular needs, then I’m sorry, but Rails doesn’t owe you shit.

  32. Avatar
    midas 1 day later:

    Every action has an equal and opposite reaction. Rails has many evangelizers, so it must have many dissidents.

    I love Rails. I have never had an issue with it. I can create any application I like and have it up and running creating value for me in minutes to hours.

    I find that many people protect what they know savagely. Others check out all the new ideas they can and absorb what is good from them.

  33. Avatar
    Mark Murphy 1 day later:

    @Michael Wales

    “Why is Rails the only open source software community that latches on to that “Rails owes you nothing” statement.”

    I have seen that sentiment expressed by communities behind Linux, OpenBSD, FreeBSD, GNOME, KDE, Samba, et. al. That sentiment is even expressed by some of the towering figures in open source, such as Linus Torvalds. Usually, I’ve seen it in response to “Such-and-so Sucks!” complaints, such as the “Rails Sucks!” round that are the focus of Daniel’s blog posting.

    “…and yes, you do owe us something. A solid and reliable framework that can progress and become a real player in the web development market.”

    Um, why does the Rails Core team owe you that? I can see why the Rails Core team may want to do that, as part of scratching their own itches. I can see why developers using Rails will want that. But the verb “owe” implies an obligation, and I don’t think the community’s contributions to Rails so dwarfs Rails itself that such an obligation exists.

    “Rails is done riding the hype-train, it’s time to live up to the hype now. If you don’t help the community, you fail to help yourself; your framework dies.”

    The problem is, who gets to decide the boundary lines for “the community”? Daniel, in this post, attempts to describe the boundaries as they exist today. Most of the “Rails Sucks!” posts I’ve read are attempts to redraw those boundaries to what the poster thinks they should be (e.g., Dreamhost attempting to expand the community to customers of shared hosting services). One would think that Rails Core gets to define what community they’re serving, and it’s eminently possible they think they’re serving their community just fine. So long as enough folk in that community feel the same, life is good…except for those not in the community.

    I do agree that it feels like some Rails folk have been stoking the “hype-train”, and that may not have been the best move on their part.

  34. Avatar
    AkitaOnRails 1 day later:

    Good points, that’s what I repeat all the time, ad nauseam.

    Take one good example. Dreamhost just ranted how Rails doesn’t suit them. And how they are crossing their arms until the Rails Core Team “fixes” it for them to profit.

    Engine Yard is another hosting service. They also think Rails could be better. What do they do? They start by creating a Ruby alternative (Merb). Some of its ideas already found its way into the Rails Core.

    Now, they think Ruby is too slow and difficult to extend. Evan starts Rubinius. Engine Yard hired Evan and 4 other full time programmers for Rubinius.

    Now they think this has a bright future so they go look for investment, and they just secured $3.5 million to pursue that goal.

    That what real business do: they go after it, not start complaining like little babies.

  35. Avatar
    Mr eel 1 day later:

    Rails doesn’t suck and I think poorly of people who try to personalise the issue. We need to focus on the tools and how they can be improved.

    That said, Rails does have some very significant problems that should be fixed. If the core team decide that they aren’t a priority that’s fine, but that doesn’t free them from critisism. I think the idea that “Rails doesn’t owe you anything” is a bit toxic, and moreover a cop-out.

    We are past the point where Rails is a tiny framework used by a few companies. The original developers where at pains to point out how great it was and why companies should start using it etc. Well, that’s happened. Now what? When people complain about RAM and CPU usage, they get the “We owe you nothing line”. That may be strictly true, but it’s pretty weak in this context. The framework has benefitted from all the attention it has received, surely then it’s reasonable for the community surrounding it to expect some input into how it can be improved.

    Just one final point. RAM and CPU use is a huge issue and I don’t understand why so many folk are dismissive about it. Rails is now a widely used framework. It’s past the point of “premature optimisation”. It can be fixed and there are plenty of people with clear ideas on how that can be done, so what then is the hold up?

  36. Avatar
    Teej 1 day later:

    You, of all people, know that Rails can scale. Just look at your fellow Facebook app developers!

  37. Avatar
    unknown 1 day later:

    looks like this blog is built on rails, it crashed several and too slow!

    Rails Really Sucks!

  38. Avatar
    unknown 1 day later:

    looks like this blog is built on rails, it crashed several and too slow!

    Rails Really Sucks!

    Rails Really Sucks!

    Rails Really Sucks!

  39. Avatar
    Cliff 1 day later:

    Smart, Mr Anonymous. Check the source, it’s built on WordPress, not Rails. The META tag is a bit of a giveaway ;-)

  40. Avatar
    Carlitos enLa madre 3 days later:

    Rail sucks a little . the only thing that i like about rails is active record. but the rest is jus like any other php framework.

    Its fine but it’s not all there. Maybe to make intranet aplications where the speed its not so important

    I install and learnet it’s easy but….. it the same diferent language. I better spend my time becoming a better php programer instead.

  41. Avatar
    CodeBlunder 3 days later:

    Rails Sucks! Sucks!Sucks!

  42. Avatar
    Shanti Braford 3 days later:

    Your article was well-written and articulate.

    My baser instincts tell me respond to some of the commenters, but to argue with trolls is to be reduced to their level.

    Me? I’m fine with paying $400 for servers that can generate $50k in revenue per month (1%).

    Don’t know about the rest of you…

  43. Avatar
    Vitor 4 days later:

    I agree with you in several points, although i think it does not require someone to be really “smart” for using rails. I’ve faced with a lot of developers that were doing things really in a not so “great” way of doing with rails and i think it is getting even more common.

  44. Avatar
    Walter Kempf 9 days later:

    Interesting discussion from both sides of the fence. All the rants, however, is too much. Does it even matter why someone says that RoR suck and whether or not (s)he can motivate? Does it matter that the RoR community gives the “we don’t owe you” line (if that is even so) while still working their asses off on a free framework?

    No, it doesn’t. With enough experience we all come to find that we don’t like all frameworks and that all of them have flaws (like Daniel said). And those of us who like and use RoR are deeply thankful to the core team for their time, effort and expertise.

    If you are unsatisfied with a free product, fix it (and preferably share the fix), pay someone to fix it, ask and wait for it to be fixed or move on. That’s the way it works in the FOSS community. Going around ranting and discrediting volunteers are unnecessary and in poor taste.

    I have, myself, dabbled a bit with RoR as an extension to learning Ruby. I could not find any really good reason to dismiss either Ruby or RoR as “sucky” and so, IMHO they’re not.

    A couple of months later and I’ve discovered Python. I like it a bit more than Ruby (the reasons being too OT) and so also looked into TurboGears (Python’s web framework). TurboGears doesn’t come close to RoR, but that’s just my opinion. So now I like Python over Ruby (although I really miss working in Ruby and some of its features) and RoR over TurboGears. Note that I’m not claiming that Ruby or TurboGears suck, I’ve just chosen not to use them. I used to love PHP, but can’t for the life of me understand why someone would prefer it today. But hey, that’s again an opinion. I’m pretty sure most PHP people out there would do a better job of a site than I will in any language/framework. I simply don’t like PHP. My point: use what you like (or suits you) best and commend the rest for getting so far as to be a serious option in a competitive world like ours.

    So basically I’ve repeated what’s already been said, even though I think that these rants are all a waste of time (even this one). Daniel, I enjoyed the informational articles (like “TDD vs BDD” and “How to spot a good programmer”) a lot more. But you probably just needed to get it out, didn’t you? Just like Zed Shaw. :P

  45. Avatar
    daniel 9 days later:

    Walter - I did feel the need to get it out, and you’re right, the informational articles are definitely more interesting (both to write and to read), and they’re what I try to write most often.

    Btw, if you’re a Python guy, I’ve heard a lot of good about Django as a Rails-equivalent in the Python world. Might want to give that a try.

  46. Avatar
    Stephen about 1 month later:

    I have to say I really do not like Rails, mostly because it doesn’t work for my needs (I work at a company that has to serve tens of millions of pages a day).

    The only reason I care, is because I frequently encounter developers who come from planet rails and don’t seem to have received the memo about rails not being good for everything. For example, Rails people have very strange views of databases that come from core “opinions” of Rails.

    Unfortunately, in the world of very large applications, or applications that have extreme performance requirements, ActiveRecord falls on its face, because these databases must be tuned. We shard our MySQL dbs, because our tables get so large queries are too slow. We must combine multiple datasources, some Oracle, some MySQL, some exotic non-relational databases (for very large non-relational sets).

    In our world, Rails is pretty much a crap solution. But at my company, some rails people convinced a view execs that a large, high traffic web service would be best written in rails. Had they asked the rest of the engineers the suggestion would have been to write the thing in c, or possibly Java, with a minimal purpose built web server. Instead, they went forward with rails and watched the whole thing explode.

    Rails is good for what I would consider medium sized, RDBMS-backed web applications that do not anticipate massive increases in scale. Luckily, this is about 90% of the work that small dev shops do, and these are the shops that have really embraced rails.

    But please, for the love of god, rails people are not smarter than the rest of us. Please accept my criticism in the way it was intended. A lot of developers really do work on another planet, and we don’t like rails because it is wrong for what we do, and we keep having to explain that to people.

  47. Avatar
    rikas 3 months later:

    For those of you that say that CakePHP does it all and you don’t even have to learn Ruby, please, take some time (you don’t need much) and at least try it!

    I also have a PHP background and I’m in love with Ruby! (and ROR) It’s much more fun! So readable and so awesome! You just need to try it, for real. You won’t regret the choice, at all!

    Just my 2 cents.

  48. Avatar
    Neeraj 3 months later:

    Each framework has some good things and bad things. RoR is pretty new and it is maturing. We should focus and learn the good things and discover and improve on bad things/shortcomings. Thats how it should work rather than wasting time in baseless discussion/heated arguments/. Discuss the shortcoming and work together to improve it, if framework is important to you.

    That’s hacking.

    Happy hacking.

  49. Avatar
    SW 4 months later:

    Rails sucks because it tries to use a MVC pattern in a problem domain that doesn’t suit the pattern.

    That’s why it’s slow, that’s why it takes too much RAM, that’s why it won’t scale.

    The things that make it easy to use and powerful out of the box are the same things that make it suck.

    Pretty cut and dried. It’s a quick way to release an Intranet application that won’t see a lot of users, ever.

  50. Avatar
    x 4 months later:

    Someone should just shoot PHP in the head and get it over with. I can see the validity of lots of different languages and approaches to web development, but PHP is in a class of its own when it comes to shoddy language/framework design, no guiding “rails” to keep poor coders from making big design mistakes, and an extremely low barrier to entry.

    The world would be a better place if PHP people who call themselves “PHP developers” but have never learned any serious programming languages (IOW, “I used to be an HTML designer and called myself ‘webmaster’, but then I got PHP For Dummies and now I’m a coder”) just vanished, along with all of the PHP code they’ve ever written. Every serious language used for web development has a templating module (or 2 or 10) that kills PHP anyways.

    Relevancy to this article: this sort of debate about web platforms would be so much simpler and smoother and less noisy (not just for RoR, but for Catalyst, Java-based stuff, and every other reasonable platform as well) without the input of these PHP-people.

  51. Avatar
    That Guy 4 months later:

    Rails, like anything is perfectly fine for some things and not so good (to downright hyper-sucking) for others.

    However it seems like the counter-criticisms rather miss the point.

    Sure “The Rails community doesn’t owe me a line of code” but that’s beside the point from Rails being a good or bad framework. The Rails community could owe me nothing or their first-born children and their framework can still suck (or be great) based on some useful criteria (except for the trivial case where ‘owing me something’ is the sole criteria)

    Perfection, again seems beside the point. Sure Rails isn’t perfect but neither are the frameworks that the people who write these articles usually program in but clearly something bugs them. Lack of perfection probably isn’t it. Their criteria for judging Rails good or bad may not be universal or even useful or correct but it hardly seems credible that these people are waiting around for the ‘perfect’ framework.

    Not suitable for all applications. Right but wouldn’t it be better to actually delineate, in detail what Rails does well? i.e. Some of the things that scaffold brings to the table are unparalleled in other frameworks. But your implied statement: “any and every Medium to Large application is well suited to Rails” lacks credibility. So more objectivity here would be nice.

    As an aside your inability to accept the possibility of Rails generally sucking kind of makes me thing you are only preaching to the choir. I mean when someone says “X” sucks. They are probably not talking in the “universal” sense. i.e. “There is no good thing about X” they are probably talking about the general sense. i.e. “More things suck than are good about X”. Again their criteria/information could be wrong or right (and is pretty likely to be ill-informed) but unless you can speak for the majority of possible applications then neither are you in a position to refute the statement.

    Rails isn’t for all people but likewise that doesn’t mean it doesn’t suck. The “smart” people bit is so terribly reasoned that it’s hard to believe that a smart person wrote it (but maybe critical thinking and introspective aren’t part of your definition of ‘smart’.).

    Rails is flexible…so is everything that is Turing complete. That doesn’t stop some of them from sucking (or creating a hypothetical language that would be generally considered to suck). So the argument to flexibility is again beside the point.

    Meh…RoR is a fine thing I use it for a number of tasks but as much as you want people to stop saying it sucks. The entire Ruby/Rails community needs to get off their high-horse even more.

  52. Avatar
    Eduardo 4 months later:

    First of all, I’m mainly a C++ programmer (I know C# too, but my knowledge of the .NET Framework isn’t as deep as that of the MFC and ATL libraries). As you may have already guessed, I’m not too much into Web programming (in fact, I avoided it as much as I could).

    However, I would now like to start learning a platform for developing Web applications. (I already know ASP.NET and a bit of Java, but I don’t like either). I’ve read many sources saying Rails is a nice platform, but to use it, I would have to learn Ruby first. Since I come from a static-language background, I wonder how much my way of thinking would have to change to “fit” in the Ruby programming paradigm.

    Thanks in advance, Eduardo León

  53. Avatar
    daniel 4 months later:

    Eduardo - the answer is: a lot.

    But it’s easier than you think. Ruby is a pretty easy language to learn, and there is a thriving community to help you.

    Daniel

  54. Avatar
    Bill 4 months later:

    I purchased a book on RoR on a Wednesday. I knew neither Ruby or anything about Rails. Five days, several cans of sugar-free red bull and some chinese food later, I had a fully functional replacement for a slightly aging web-based application being used by a customer of mine. Their original app took someone 6 months to develop. I re-built it in 5 days. Now how does that suck?? Does RoR do everything? No. But c’mon - if you get into a development effort only to find out too late that any given technology doesn’t work for your project, then you screwed up long before you started coding.

    I am a convert. I drank the RoR kool-aid. It tasted good.

  55. Avatar
    rooster 11 months later:

    does AOL still suck? :-)

  56. Avatar
    web man 12 months later:

    Rails really does suck.

    It’s slow, poorly documented, and the community is made up of fan boys who think they’re the smartest ever. Then, they look down on PHP and make these embarrassing, cringe-worthy videos emulating their idols, Apple. rails sites tend to be slower than hell.

    Not all PHP developers are newbies… that’s just ludicrous. Ever heard of Facebook? Yahoo? Wordpress?

    PHP is straight to the point, fast and flexible. Django/Python kicks some ass too…

  57. Avatar
    Benjamin about 1 year later:

    I got really excited about Rails after learning about some of its features, but it is a damn pain to get running. I am trying to get it to work in Ubuntu with Apache2 and I have followed the instructions I find all over the internet and nothing seems to work! I want to jump on the Rails bandwagon, but it is making it really hard for me to do that.

  58. Avatar
    railssucks.org about 1 year later:

    Rilas sucks…yes, I ddin’t even bother to correct the spelling…that’s how much I hate rawails.

    it looks great from the outside, but it’s got that – ‘why doesn’t it just work??’ feel to it when you open it up and try to write an app with it.

    Not to mention every upgrade I pretty have to toss all conventions and wisdom learned and fix all the broken crap.

  59. Avatar
    welemski about 1 year later:

    Hi, first of all I was just wondering if the word suck is highly associated with rails over the internet then I found your blog…

    IMHO… btw I’m a noob however I’ve been programming in Java for the past 5 years and I’m using WebObjects as the framework of choice. I’ve read about RoR and it always mentions about MVC and database related API which acts pretty much like the ones in WO EOF. Then I started coding RoR in one of my project which is a sort of a shopping cart. Along the way I realized I’ve coded a lot of stuff inside the “.find()” method compared to the real SQL or the WO EOs. Also RoR mentions MVC but I think WO is still has the best component based support. Even the Rail’s HTML shortcut like the “select_tag”, I find myself coding a lot of stuff as an arguments compared to a pure HTML tag or WO custom components.

    Again I don’t think RoR suck but I think it has a poor support when I trying to use the component based methodology. And the coding is quite a bit messy but not as messy as PHP.

    One good points though, what ever I’ve learned in WebObjects I was able to carry that over in RoR so I learned RoR in less than a week.

    Cheers!

  60. Avatar
    Diego about 1 year later:

    There are better alternatives, Ramaze is one of them.

  61. Avatar
    sad... about 1 year later:

    I think your attitude on this post demonstrates the average maturity level of RAILS fanboys.

    From the stupid, misleading, mac-like rails envy videos through to blog posts like yours litering the internet.

    Two years on, no one cares about rails. Personally, I don’t give 2 shts about whether it sucks or not, but I did want to pick it up 2 years ago and you know what put me off? your anal retentive community jibbering bullsht like “Rails owes you nothing, you should be greatful for rails and your Ruby prophet DHL (DHH DHI whatever)”…

    F*ck that, in an attempt to warn people about not posting any more “Rails Sucks” blog posts (because it would make people look dumb), you’ve made yourself look stupid because:

    1. Don’t tell me what to do
    2. I owe Rails nothing.
    3. The community is full of sh*t and is focussed on talking other languages down rather than admitting it’s own flaws and be professional enough to be pragmatic, instead coming back with “Rails owes you nothing”

    sad…

Comments