Report from OSCON2006: The Ruby Conspiracy

(Update: Wow I got a record number of comments to this blog. Answers to some common themes at the end of the post)
Who are those who are benefiting from Ruby on Rails? Answer: O’Reilly Publishing, the authors Bruce Tate and Dave Thomas and a handful of consultants.
At last year’s conference, Tim O’Reilly had carefully analysed his book sales and was desperate to identify the next big thing. Same for the pragmatic programmers and for consulting companies wishing to push the next big thing. C# had been and is a disappointment. Despite a huge push it refuses to move up the Tiobe programming index.
I get the feeling that everyone needs a next big thing, and if there is not one, they create it. So what has happened to Java, after the spate of Beyond Java books? Answer: according to tiobe it has risen higher. So what is declining? VB.net and Perl. Not Java.
So am I ignorant of Ruby on Rails? We have two production applications running on Ruby. And how is it. Well, despite being perhaps no more than 5% of the functionality of our applications, Ruby on Rails is the number one consumer of Oracle CPU and logical gets. Why? Rails does not support prepared statements, so Oracle has to reparse every time. This is something that Java has had for years and years. And ActiveRecord seems not to have learnt Hibernate’s lession; that OR tools suck for performance and need caching tricks to make them work well. Also, our Rails apps running in (now unmaintained) fast-cgi regularly go awry and fork more processes. Each one creates a new connection to Oracle. So, the opposite of connection pooling; connection denial of service. And does Ruby support Unicode. Not really. And is Rails threadsafe? No. So, is it Enterprise Ready. Absolutely, according to those with a clear vested interest in supporting the next big thing.
Are these problems solvable? Yes, in a fashion. For example, I have been told that lighthttpd and Mongrel should be used rather than fast-cgi. And MySQL should be used rather than Oracle.
And does it matter that Ruby is 15 times slower than Java. Of course not. How could it! Just buy more hardware. And more hosting costs. And more System Administrator salaries.
After all, the productivity benefits of Ruby are so much greater than Java you will save all of the money in development. Or do you. Our experience was that Ruby on Rails took longer than Java would have. And what about maintenance. Well we just refactor as things change. Or do we? There are no Ruby tools that support refactoring. And nor are they are expected due to the difficulties of implementing refactoring tools for Dynamic Languages, or so I am advised.
And what about support. Well there is the Ruby mailing list. Which is quite active. That should be good enough for anyone.
And what about Python? Python is arguably a more mature dynamic language with a much larger developer community and number of libraries. Why does it suck? Underscores and “self”, according to one of the leading Ruby advocated. Wow, that sounds really bad. Doesn’t Martin Fowler’s Refactoring book recommend _ for fields? Must be deprecated. Oh and what about Django? Now this really sets the Rails people off. Why? Because it is Rails like. A rifpoff they say. Yes, but where do the Rails ideas come from. From my point of view it exactly what I have been doing in Java for years and years. So if Ruby can rip off from Java (most welcome BTW) why cannot Django ripoff Ruby on Rails? Answer, because the vested interests have decided there is money to be made from promoting Ruby, not Python.
In short, anyone who questions the benefits of Ruby on Rails is not with the program. You know, once upon a time, being open source meant being better because of improvements spurred by constructive criticism. Its about time the Ruby on Rails community accepted some.
Anyone for Haskell? Or J2EE 5?
(Answers to common comments:
1. Where are the line breaks?
Ah, sorry for that. This was a late night post, after a drinking session. Forgot to check “Convert Line Breaks” in the Text Formatting option. Also, I have been using Writely lately to blog, until it broke 🙂
2. Thanks for saying what everyone is afraid to?
No problem.
3. Why are you so ignorant?
I am capable of learning. Really. Enlighten me.
4. Why are there no references to back up your claims?
Some of the claims are explored more fully in other blog posts. The one about Ruby performance is based on freely available benchmarks. How important is it? The database is normally the slowest part, but it depends on your app.
5. Who was the nasty Railroader who claims django is a rip off?
I personally did not realise that django predated Rails. The Railroader was very tetchy about any success django might be having. He described django as “Rails-like”. The rip off part I think was was a false connection I made. I do however think that the django crowd have realised the importance of hype. So perhaps to that extent they have learnt something from the Rails crowd.
6. What about Haskell?
Sadly no one that posted was that interested in Haskell. Our speaker yesterday said it takes a year to get into it, so maybe that is why.

By Greg Luck

As Terracotta’s CTO, Greg (@gregrluck) is entrusted with understanding market and technology forces and the business drivers that impact Terracotta’s product innovation and customer success. He helps shape company and technology strategy and designs many of the features in Terracotta’s products. Greg came to Terracotta on the acquisition of the popular caching project Ehcache which he founded in 2003. Prior to joining Terracotta, Greg served as Chief Architect at Australian online travel giant Wotif.com. He also served as a lead consultant for ThoughtWorks on accounts in the United States and Australia, was CIO at Virgin Blue, Tempo Services, Stamford Hotels and Resorts and Australian Resorts and spent seven years as a Chartered Accountant in KPMG’s small business and insolvency divisions. He is a regular speaker at conferences and contributor of articles to the technical press.

66 comments

  1. So let me get this straight….
    You are running oracle and complaining about hiring more sysadmins.
    You have no idea that activerecord can cache.
    You have no idea that page fragments can be cached.
    You have no idea that entire pages can be cached.
    You claim that it is faster to build web sited in java then ROR.
    I think I will ignore you.

  2. And the funny thing is:
    Use it if you like it — it’s the message of the creators of Ruby and Ruby on Rails.
    Even though I love Ruby, I know that it’s not perfect in all senses, but nothing is. So good luck with your Holy Grail pursuit.

  3. I hate to say it but I think you are right. There is a huge support economy building around RoR and with it lots of vested interests in keeping the hype machine well fed.
    I have to say though that the reason why the hype can work is because web-app frameworks are just not that hard to build/swap/etc. so hype is really the only lasting competitive advantage.

  4. I’d be very interested to know who within the Rails community has been calling Django a “rip off”, seeing as Django started life in 2003 and was developed entirely independantly from knowledge of Rails for most of its lifespan.

  5. Yay!
    I use RoR, and I really like Ruby (I am a Lisper at heart and dig Smalltalk, but nobody seems to care about those two languages 🙁 but the issues with RoR _really_ piss me off, and I’ve seen precious few discussions about it.
    While I’d to believe that Ruby can stand on its own merits (except for being slow, the thread issue, the IDE issue(s), etc.–all solvable) its meteoric rise in memespace is a little disturbing and very distracting.

  6. Yes, but have you programmed in Java? Ruby is a wonderful breath of fresh air. Rails is remarkable organized. I don’t think the rails community made a marked point of trying to increase Tim’s book sales. That just naturally happens for new technology. I mean he is after Web 2.0 for god sake, what does that mean?

  7. Are you actually serious? Pick the right tool for the job and move on. Rails has plenty of uses for your run of the mill web app. Once you start going against the opinionated grain in rails, you’re asking for trouble.
    Check out “Practices of an Agile Developer” by the Pgagmatic Programmers. One of the first rules is to *not* jump into the next big language until you can prove its worth by prototyping. That would have saved you a lot of pain. Oh wait.. the pragprog guys are all part of the conspiracy too!

  8. I use Python more than Ruby, and Django more than Rails, but dude, count to 10 and realize that not everyone marketing RoR is out to screw you.

  9. I often wondered this myself. I learned Ruby back in 2003/2004, and since then opted not to use it, opting to learn python as my perl replacement. I know that I never see developers getting hired based upon their Ruby coding abilities, what few options out there calling for ruby are specifically for Ruby on Rails. I don’t know about anyone else, but getting hired to work on a specific (fairly new) framework environmet only seems rather crazy to me.
    Either way, the advertising blitz to make Ruby the next Java does apparently have a lot going for it in terms of sucess, but as a professional developer for over a decade, I honestly hope it fails as ruby is just a slighly less ugly version of perl with additional OO ease thrown in, plus what’s with the Begin and End blocks.. I feel like I’m looking at Turbo Pascal from the 80’s.
    Just my $.02
    Eric

  10. Excellent article. I appreciate it when people with actual experience share. Thanks.

  11. Actually, the big discussion at the Ruby on Rails conference last month was whether the Rails commmunity wants to be the Next Big Thing, which means being Enterprise Ready. DHH looked me right in the eye and said “No!” in response to those questions. Dave Thomas does not agree.
    IBM has released Rails drivers for DB2, maybe Oracle should follow suite. Or write better Oracle support yourself, or use RBatis. There are many options. But don’t just take pot shots at Rails and generalize all over the place. Your thinking is too black and white. Ruby and Java and .NET will all be around for a long time. With web services, you can freely mix and match.
    The point not to miss is that programming Ruby is fun and exciting. Hopefully, it pushes these other languages and platforms to be more of the same. I know that Don Box, the creator of COM, and Tim Bray, the creator of XML, both can’t say enough good stuff about Ruby these days. I challenge you to get to know enough about Ruby to challenge your own arguments in this post.

  12. I tried.. really tried to get through this. But man, I just couldn’t.
    Please check your keyboard because I think your Enter key is broken.

  13. Dude, how about a little white space, a little consideration for the reader, things we readers call “paragraphs?”

  14. Good post. Very good post. I’m not sure if I agree with you entirely, but I have been trying
    to “get into” Rails for a while now, and
    all I keep hearing is “once you watch this screencast, or buy these 3 books, you’ll be set”.
    I am 100% confident that Rails is excellent for developing the exact type of tools you write while learning how to use Rails 🙂
    After that, you have to hit the mailings lists pretty hard though.

  15. “Our experience was that Ruby on Rails took longer than Java would have.” – this is where i stopped reading. the only way this is possible is if you are a complete newbie to rails or your application is pretty much done after applying some java cookie cutter (in this case you should have definitely used java in the first place).
    either that or every java desktop developer that uses rails or php for web development because j2ee development is too slow is wrong.

  16. You first say that those benefiting from this Rails ‘fad’ are the O’Reilly Publishing, Dave Thomas and Bruce Tate. And how they decided to Identify things and make money off it. My question, whats wrong with it? No one else decided to public books on Rails, and make the money. Its what a publishing company and authors do, they write about topics which they feel more people with get interested in, and make money.

    Also, you say “And does it matter that Ruby is 15 times slower than Java“. Info on how you reached this conclusion? I’m not saying ruby is faster, but atleast give references.

    Another quote: And what about Python? Python is arguably a more mature dynamic language with a much larger developer community and number of libraries.
    Firstly thats a highly subjective question. You might be more productive in python, someone else might be more productive in java (although I have a hard time imagining that without him/her using Eclipse). Again, you’re missing references and examples supporting your argument.

    Another quote: Oh and what about Django? Now this really sets the Rails people off. Why? Because it is Rails like. A rifpoff they say. Yes, but where do the Rails ideas come from. From my point of view it exactly what I have been doing in Java for years and years.
    Again, I need some references. What Java MVC Web stack are you using?

  17. Great blog. Maybe we’re just old, out-of-date, Java programmers that are desparately holding onto our beloved language and reluctant to do/learn new things…Nah!
    Now, if only somebody would write a blog about how Spring isn’t the end-all-be-all of your existence.

  18. Oops… It looks like you hit one of those things that people can’t say. I think there is one thing malcontent may not be considering while denouncing your position. The things he says you’re wrong about may not be default, easy to apply and configure late in the development process, well documented, or listed as best practices for new developers. You do have some valid points. Though, I would rather take you up on Lisp than haskell. That’s just because I know lisp.

  19. Simon: I think he got it from Mr. Malsky, who is a character in one of my cartoons. That guy’s the only person in the Ruby world who would say something like that. We have the utmost reverence for you guys. And we always will. Deal with it!

  20. Nice entry David, I linked to it from my blog. Django is not a “ripoff” of RoR. It’s been around just as long if not longer as an internal framework that the core developers of Django were already using in production, they just decided to package it and release it as a real framework around the time that RoR was starting to get a lot of buzz.

  21. Interesting article. Not quite convinced it’s a conspiracy, but I do believe the entire situation with RoR has been blown out of proportion and made the Holy Grail of web development solutions. Same applies to the likes of Django, really.

    I simply don’t think that Python and Ruby are as well suited for web development as some people think. I don’t think they’re bad, but they have better uses in different fields. That’s not to say I don’t like Ruby and Python however. I think they’re handy for writing quick scripts to deal with stuff. (I’ve written a couple documentation generators in Ruby to make my job easier.) I just don’t think I’ll be using them for anything web related.

    Thanks for the article. Was fun to read.

  22. I do not think that this is a conspiracy. In my humble opinion this is just the wave of the hype.
    Ruby is a really nice language and I would prefer it over Java every time.
    Haskell is, currently, giving me headaches. I am trying to learn it at the moment and write some applications with it. Lisp is also quite nice but these many brackets…The main problem with these languages is the lack of good tutorials (the Getting Started tutorial on the Haskell page is quite nice but Haskell is a little bit hard to learn, coming from imperative languages). I know there are books about Lisp but I just want to dip into the language and not buy a book just out of curiosity.

  23. I’ve seen the light! I am now going to return to my roots and do all my programming in assembly language. After all… nothing can beat the speed of hand-tuned assembly code! 😉

  24. Oracle Issues:

    Use Mongrel, not FCGI

    Refactoring:

    You write about 1/10th the code in Ruby that you do in Java. You rarely have to copy/paste code in Ruby if you are skilled with metaprogramming. The few rare times I had to do a large refactor, find and replace worked pretty well.

    Caching / Performance:

    http://www.loudthinking.com/arc/000479.html
    http://scalewithrails.com/downloads/ScaleWithRails-April2006.pdf

    It is easy to scale the app / DB. It is not easy to scale development time. You can’t throw more money at development time – it just won’t work. Most else equal (ability … etc) the fastest developers will win. User feedback is like compound interest.

    Java vs. Ruby

    The Ruby language is way more expressive than Java. Anonymous functions and metaprogramming make all the difference. Language features trump coding tools any day.
    If you really think you can code a Java app faster than I can code a Ruby app – perhaps an ‘experiment’ is in order. I would love to challenge a java programmer to a coding contest for a web app 🙂 I have only been coding for 6 years. I have no doubt that there are a ton of programmers that would smoke me using Ruby / Python … etc. I am pretty confident when it comes to those same talented programmers trying to use a Java web framework for a web app of any significance.

  25. “A cynic is not merely one who reads bitter lessons from the past, he is one who is prematurely disappointed in the future.”
    — Sidney J. Harris

  26. I should clarify: Django certainly has learnt a great deal from Rails – about marketing, unit testing and more. But we’re also quite sensitive to being called a rip-off, mainly because there are dozens of Rails rip-offs around and we’re quite proud not to be one of them!

  27. I replied to your posting here.
    Though in reality I’m just reposting some of your questions, while agreeing that the hype seems a bit driven by the pocket books of the leaders. (but what hype isn’t?)

  28. Good to know that if I discover a language and framework that works for me and makes me happy and productive, I should definately avoid writing about it to share my experience with others or advocating its use to other people working on similar problems.
    That would make me a Tool and Conspirator.

  29. Bill.

    Page and fragment caching in ROR is advertised on the list it’s features on the ROR pages. It’s also highlighted heavily in the “agile development with rails” book. If you don’t know about then then it’s due to wilfull ignorance, not because the documentation or the feature is buried or “off by default”.

    As for the caching activerecord that’s not built in, it’s a separate gem you have load and install. But if you ever find yourself thinking “I wonder if I can cache models” just type “ruby on rails cache model” into google and you will see at number one. How hard is that?

  30. Well, just to do a bit of perl spruiking here, Catalyst is a top quality web application framework which, as it’s much more flexible than the others mentioned here is much more useful as a systems integration tool, and more suited to a much wider variety of tasks.

    Although perl has a reputation for encouraging code with maintainability problems, Catalyst is so well designed in terms of proper separation of concerned, good perl OO style etc. that these problems are much less relevant than you would initially think.

  31. RoR hit the right spot by combining Ajax and productivity. Any newbie would love to see results right away. This is precisely what RoR does. It can show you results if you are following what the tutorials are saying. Well that’s what has attracted me to take up RoR for my latest web app. But I still want to play safe. I am trying not to tie my Ajax and database coding to RoR. Just in case if I discover what you are claiming is true I can switch to a proven framework/language.

  32. Great post, but you really need to reference things you’re critisising. If you can’t, don’t criticise them.
    I also feel uneasy when reading or hearing that Ruby on Rails is for doing this and that for problems that the tools I use solved years ago, and where – as far as I can tell – those tools solved such problems in a far more intelligent and complete ways than rails offers. I read in a slashdot forum the other day someone saying that active record was far and away the best ORM he’d used over the years. I tried to think of another mainstream ORM he could have used that would have been worse and couldn’t.
    While it’s tempting to be angry at the people doing the talking though, it really shows a lack of evolution on the tools we like. Sure they may be more powerful and this and that but why haven’t they gained mindshare? Further, if these people think that ruby on rails is sex on a stick just because they’ve wasted their last ten years attempting to wrestle value our of ASP, JSP or Struts – well – at least they’re a bit further up the tree than they were. That’s a good thing. The shame is that they could have done so much better.
    I think the killer tool in rails is the easy way you can get started in development. rails new project (or whatever it is).

  33. mySQL recommended over Oracle? They’d probably recommend it over PostgreSQL. There seems to be a love of under featured products among RoR devs. The fact that mySQL until recently lacked many of the features of a proper RDBMS is seen as an advantage.

  34. It’s really scary.

    Post something about Rails substituting the J2EE space, and nobody will comment. Say that SOA is dead, nobody complains. Talk about AJAX, say it’s not usable (I’m citing Jakob Nielsen from memory), and nobody cares.

    Say that Rails is an overhyped technology, mostly exalted in forums and blogs but not escalable for real app development, and you get tons of comments.

    Looks like grassroots to me.

  35. How are these publications about RoR a conspiracy, and not just meeting the needs of a growing community? It’s a fun language that makes life easier for a lot of people, but only when it’s the best tool for the project. I see RoR as a great stepping-stone — it will teach a lot of people MVC programming and unit testing, which should enable them to move into more Enterprise apps with a stronger base.

  36. “Well we just refactor as things change. Or do we? There are no Ruby tools that support refactoring.”

    Refactoring doesn’t require tools. They certainly help, but saying you can’t refactor without a refactoring tool is like saying you can’t code Java without Eclipse.

    It’s good to hear a different perspective, something to balance the pro-RoR talk. It’s a shame it has to come across so rudely. Software needs philosophers.

  37. Some interesting points. One argument I don’t follow here is about the vested interests pushing Ruby/Rails rather than Python/Django. That’s obviously a possibility for the core Rails people, but why would Tim O’Reilly and the webhosts/sysadmins care which one takes off (assuming they have the motivations you attribute to them).
    Also, the argument about self and underscores is something of a straw-man. Anyone on either side of the argument would have a lot more to say than that.

  38. It’s not hype if almost everyone who uses it notices significant increases in productivity.
    Q.E.D
    all other arguments are pointless

  39. Every few years something comes along which makes a lot of people’s lives easier, and they get very excited about it and try to tell other people about it, and book companies publish books about it because it’s popular. Calling this phenomenon a “conspiracy” is like calling cell phones a conspiracy.

  40. Dang, looks like Rails just isn’t going to work out for you. Let me express to you, from the rest of the Rubyists out there, we’re very sorry that our tools aren’t working for what you need. Maybe there will be something right for your problem in the future, but please don’t let your bad experiences taint you forever from the language.
    One suggestion I have if you are having problems with your refactoring is that you might want to beef up your unit tests a bit. When they are appropriately beefy, you can be reasonably sure that making a change that breaks something will set off an alarm. This is the approach to refactoring advocated by Rubyists the most heavily, especially since it has other benefits besides refactoring.
    Also, if you’ve been seeing too much hype about Ruby being the greatest thing since chunky bacon, well, I’m also sorry about that. Rubyists tend to get excited because we like our tools so much. Usually we try to temper that with a healthy dose of, “Fair warning, it may not be the right magic lamp for you,” but that gets forgotten some times.

  41. The Ruby Blog Conspiracy
    It seems as though some bloggers in desperation to get hits are resorting to writing articles about Ruby On Rails. It’s quite a popular tactic among bloggers.
    Even though thousands of programmers are seeing the benefits of ROR and raving about the massive increased productivity benefits, these bloggers like to dismis it all as “Hype”.

  42. I personally love Haskell, but I love Ruby just a little bit more. Remember, momentum is extremely important, because momentum results in more broad library support of a higher quality. And no one can deny that Ruby has a lot of momentum going for it right now. I’ve done a lot of Java programming and a lot of programming in various other languages and I know that I greatly prefer dynamic languages for actual project code. If I need performance, I use C. And Ruby has a really delightful interface to C. I almost wish more of Ruby’s libraries were just wrappers for C libraries. I know that I personally intend to write a lot more in the way of C, simply because if I ever change my opinion about my favorite glue language, I won’t have to start porting, I’ll just write a new wrapper instead.
    Ruby has a lot to like. To some extent you’re right that people are looking for the next big thing. We’re tired of Java, it encourages bloated design (that’s just my humble opinion, mind you) and bloated designs, especially other people’s bloated designs, are really no fun to work with. We wanted something that was clean and elegant enough to make us happy, while practical enough to get real work done. Ruby strikes that balance better than any other language I’ve used before.

Comments are closed.