Skip to content
Print

The End of the Ruby Fad?

23
Jan
2008

Well, it’s a new year; and apparently no sooner are the resolutions forgotten and the hangovers behind us then the internet en mass decides that we need a new language.  Ruby was indisputably the hip language of 2006 and 2007.  However, in an opinion shift so sudden as to make one’s head spin, the blogosphere seems to have rebelled against the hype and gone in search of a new mistress.

It seems more and more these days like people just don’t want to hear about Ruby.  Ruby posts to link sites like DZone or Reddit get voted down before they have a chance to see the light of day.  Pointless flames litter the blogs, declaiming Ruby and alternatively crowning Groovy, Scala, Java or even XML in its place.  The sad thing is that no one seems to have found the middle ground yet.

Personally, I’m with Reganwald on this one.  I started coding with Ruby back in 2002 (or was it 2001?  I can’t remember now).  It was actually at the recommendation of some random guy on a forum who said that Ruby was a nice and clean language with a lot of potential.  I was getting pretty tired of Java at that point, so I figured I’d give it a try.  Since then, Ruby has become part of my essential scripting toolset, finding applications everywhere from complex utility scripts, build systems and even hacky dynamic web pages for my server monitoring tools.  Based on the strength of the language, I’ve tried Rails a few times without success.  I mean, honestly which is easier to remember?

link_to :page => ""

…or,

<a href=""></a>

The middle ground is really where Ruby belongs, where it flourishes.  It’s hardly a general-purpose language, so it could never replace Java and company.  With that said, it’s far easier to write an incremental backup script in Ruby than in Java.  And while Ruby may not be suitable for an enterprise level, high-traffic web application, it’s certainly up for some tasks within that application.  It’s also perfect for managing scripting and rapid prototyping against that application infrastructure.  Unfortunately the community as a whole seems either blind to its benefits or blinded by its hype.

It seems like it’s constantly an “all or nothing” attitude with these new languages.  Developers these days fall into two camps: those who have heard the hype and rejected what it stands for, and developers who are totally carried away by the emotion of the fad.  To the former camp, developers who straddle the middle ground are traitors to the cause and just as bad as the hyper fanatics.  But to the fanatics, the moderates are fence riders who refuse to fully embrace their destiny.  In short, it’s the moderates who catch flack from both camps.  Yet ironically, it’s the moderates who seem to be doing useful things with the technology, rather than wasting energy on five minute blog demos and eloquent rebuttals.

So on one hand, I’m glad to see the hype die.  It was frustrating having to deal with yet-another bigoted “Rails Rocks, Java Suxz” rant every time I opened my RSS.  On the flip side, the backlash is equally annoying.  It certainly would be nice to have some balance around here, instead of breaking out the petroleum sulfite every time someone accidentally expresses an opinion.  Perhaps now that the bubble has burst, we’ll finally get to see the popularity of Ruby in its proper place.

Comments

  1. Thanks! I look forward to reading more of your weblog.

    Reg Braithwaite Wednesday, January 23, 2008 at 7:58 am
  2. hey, i love your blog but the rss is not working, which is preventing me to put it netvibes.

    keep up the good work!

    peterko Wednesday, January 23, 2008 at 1:19 pm
  3. Language wars are inherently silly. As you said, we should take note of the good things that Ruby can do, use it when appropriate, and move on with our lives.

    Kurt Schrader Wednesday, January 23, 2008 at 1:19 pm
  4. (not sure if you changed anything but the feed started working again. thanks!!!)

    peterko Wednesday, January 23, 2008 at 1:25 pm
  5. @Peterko

    Darn supercache. It’s been an ongoing problem that I’ve been working to fix. It’s simple enough to fix once it surfaces, but the problem takes a while to manifest itself. Thanks for pointing it out!

    Daniel Spiewak Wednesday, January 23, 2008 at 1:25 pm
  6. Oh, just to mention, I’ve fixed the feed for the moment. Should be good for the next several hours (unless I find a permanent fix before it breaks again).

    Daniel Spiewak Wednesday, January 23, 2008 at 1:25 pm
  7. I’d like to formally announce Boller! The COBOL Web Framework.

    totally jk.

    Andrew Herron Wednesday, January 23, 2008 at 2:08 pm
  8. @Andrew

    :-) In case you haven’t already seen it: http://www2.sqlonrails.org/

    Daniel Spiewak Wednesday, January 23, 2008 at 2:09 pm
  9. Interesting article! I might have to reply to this soon :-)

    Ardekantur Wednesday, January 23, 2008 at 2:34 pm
  10. I hope the “fad” is over. I really don’t think Ruby brings anything new to the table for me to recommend it over Python or Perl.

    Robert Wednesday, January 23, 2008 at 3:51 pm
  11. “C Rocks, Pascal Suxz”
    “C++ Rocks, C Suxz”
    “Java Rocks, C++ Suxz”
    “Rails Rocks, Java Suxz”

    evolution…

    elhumano Wednesday, January 23, 2008 at 4:38 pm
  12. Your link_to example makes you look a little foolish (or you are being deliberately misleading).

    What’s easier to remember? /attendees//edit”>Edit?

    Or

    ?

    Brian Thursday, January 24, 2008 at 12:18 am
  13. It is a common technology cycle – invent something, hype follows saying it is the best thing since sliced bread, the solution to all programming problems…only later when the hype dies does an understanding of where the new tool fits into the overall scheme of things emerge. I think Ruby is now entering the latter stage now.

    Jack @ Tech Teapot Thursday, January 24, 2008 at 4:11 am
  14. The syntax of your ruby example is incorrect and I think you have missed the point of link_to

    it comes into it’s own when used as follows

    link_to ‘Edit’, edit_person_path(@person)
    vs.
    “>Edit

    (edit_person_path is auto-generated based on your routes)

    You can then change the routing for you app and your links will still all work

    P

    Paulie Thursday, January 24, 2008 at 5:49 am
  15. By:
    link_to :page = “”

    I think you mean:

    link_to “” “”

    That’s the equivalent of:

    By the way, would you mind specyfing a lil more what you consider to be ” a general-purpose language”? I totally agree that Ruby’s not so “enterprisee” as Java or C++ might be, but then again, I don’t find that in C or VB either.

    Federico Builes Thursday, January 24, 2008 at 6:22 am
  16. You have an error in your one line example of Ruby. But I’m sure you understand it well enough to critique it.

    Tomas Jogin Thursday, January 24, 2008 at 7:26 am
  17. And while Ruby may not be suitable for an enterprise level, high-traffic web application,

    You say you don’t like the hype or the backlash, but then you come out with this sort of vague non-statement to keep the fire burning. Any language “may” or may not be suitable for any task, but you seem to be implying in the context here that Ruby is “not” suitable for developing enterprise level, high-traffic Web applications without actually going the whole hog and just saying it. In any case, this, of course, is not true. At least, it’s no more true for Ruby than it is for Python, Perl, PHP, or Scala, say.

    Peter Cooper Thursday, January 24, 2008 at 7:32 am
  18. It has been pointed out that my “Rails” example is quite foolish and naive. This is absolutely true. Aside from the fact that I got the syntax wrong (deliberately) on link_to, it’s impossible to demonstrate anything substantive in just a single line of code. The point of the sample was just to illustrate that the “killer Ruby syntax” can often be misapplied, even by over-enthusiastic bloggers. :-)

    @Peter

    Respectfully, I will maintain that the implication that Ruby is unsuitable for most enterprise-scale deployments is quite correct. Ruby is a wonderful language, but I believe that large scale, high volume (and high maintenance) sites is a complete misapplication of the technology. Just look at the problems that Twitter has had to deal with.

    Is that adding fuel to the fire? Probably, but that has been my experience.

    Anyway, that wasn’t the point behind the comment (or the post in fact). My intention was just to illustrate that every language has a time and place wherein it finds its usefulness. And now that the hype is dying down, popular opinion seems to be swinging against Ruby on the enterprise, rather than in favor of it.

    Daniel Spiewak Thursday, January 24, 2008 at 8:31 am
  19. Not knowing what your point really was…
    but the link_to variant is definitily easier to remember. Wtf is href? Not even a word. And <a>?
    Yes, I happen to already the HTML and so have _already_ remembered the <a> tag syntax – but the ruby example is easier on its own.

    mth Thursday, January 24, 2008 at 8:51 am
  20. A few people have already pointed out the silliness of the link_to example, but there’s yet another key point.

    You can use whichever you like! If you prefer writing the HTML version because you find it ‘easier to remember’ somehow (like maybe for basic ‘home’ links and stuff, i suppose), then you just write the html instead of the link_to. The beauty of rails is that if lets you do pretty much whatever you want when it comes to your views.

    ryan Thursday, January 24, 2008 at 8:56 am
  21. True, but again not the point of the example. :-)

    In retrospect, maybe I shouldn’t have included link_to as a “code sample” in the first place, since it seems to have obscured more than it has clarified.

    Daniel Spiewak Thursday, January 24, 2008 at 8:57 am
  22. Daniel,

    You’ve got some good points regarding the hype, but I feel the “moderation hype” is also getting out of hand. Ruby was a great breath of fresh air after dealing with all kinds of enterprise Java garbage. What’s wrong with being passionate about the tools we like to work with?

    Also, I think it is a mistake to say that Ruby isn’t suitable for the enterprise. Every project I’ve been on thinks they have a large scale, high volume (and high maintenance) site. The reality is that Ruby scales just fine for most projects.

    Nate Thursday, January 24, 2008 at 9:34 am
  23. “Aside from the fact that I got the syntax wrong (deliberately) on link_to”

    Deliberately? As in, “I meant to do that”? I don’t buy it. Why would you deliberately miss such a fundamental point?

    Also, rolling out Twitter is so 2007. Where have you been? If you haven’t found any other scaling examples in the past nine months, well, maybe Ruby is more ready for prime time than you thought…?

    Sb Thursday, January 24, 2008 at 11:51 am
  24. > Deliberately? As in, “I meant to do that”? I don’t buy it. Why would you deliberately miss such a fundamental point?

    The point is fundamental to Rails, not to the article. The given link_to syntax is incorrect partially as a subtle illustration of the fact that such DSLs are not *always* easier to remember and use. The main reason however was the way it renders visually. link_to :page => “” is visually comparable to the <a href=”"></a> syntax.

    Though, it seems I did accidentally use a = operator rather than => Fixing that…

    Daniel Spiewak Thursday, January 24, 2008 at 11:55 am
  25. I disagree with your statement about Ruby being non-quite general purpose language.

    Dijkstra was famous for saying once: “as potential programmers they are mentally mutilated beyond hope of regeneration”. Your definition of “general purpose language” along with the graphics of a code sample you’ve chosen for your site (top header) make me believe good old Edsger was right not only regarding BASIC programmers.

    Eugueny Kontsevoy Thursday, January 24, 2008 at 12:57 pm
  26. Daniel: I have several examples of apps that could never work using Java/Tomcat/blabla, so I don’t think Twitter’s a good example of scalability (besides, most apps will _never_ reach this critical point). I prefer to refer people to 37Signals apps, I don’t think I’ve ever seen a Ruby error while trying to access my Basecamp.

    Some similiar example might be Python, another “non-enterprisee” language that happens to power stuff like YouTube.

    I’d still like to know what’s your definition of a “general purpose language”.

    Federico Builes Thursday, January 24, 2008 at 1:25 pm
  27. Ruby? What’s that?!

    I’m still using COBOL myself. Or maybe not ;)

    James Urquhart Thursday, January 24, 2008 at 1:25 pm
  28. Daniel, please share with us your experiences of Ruby/Rails not scaling.

    I worked for a Fortune 20 company in J2EE for 5 years and have seen my share of scaling issues. We used “mature” and “enterprise” tools that costs $16K per license (our company produces a ton of these tools, so we got them for free as well as direct access to the dev teams working on them). But we still have many many horrific problems. Some we overcame and some we didn’t; we just had to hire a ton of sys admin staff for some projects.

    I’ve been developing and deploying Rails apps now for about a year and I don’t see how Ruby/Rails is worse than my J2EE experience.

    Chris Thursday, January 24, 2008 at 1:42 pm
  29. You _HAVE_ to be joking. You say “Ruby has become part of my essential scripting toolset, finding applications everywhere from complex utility scripts, build systems and even hacky dynamic web pages for my server monitoring tools” and then you go on to say “It’s hardly a general-purpose language, so it could never replace Java and company”. How is it not a general-purpose language?

    Your only other objection is based on “scaling” in rails but you don’t even understand basic rails code, as evidenced by your example.

    Nick Thursday, January 24, 2008 at 8:49 pm
  30. I agree with your basic tenet of languages finding a niche. However, the “X is unsuitable for serious software” type argument has been leveled at quite a few languages which have then progressed or evolved into working perfectly fine within high-demand, enterprise systems. Visual Basic is a classic example. Delphi was claimed to be more suitable than Visual Basic for large scale application development by many developers for quite a while in the 90s, but we know who won that war!

    All that aside, I think that Ruby’s shortcomings in the enterprise sector come mostly from the way it requires a somewhat different approach to, say, Java or .Net deployments. Deploying Ruby applications requires an extensive knowledge, and use of, numerous open source technologies, but more importantly, the setting up of numerous subsystems and daemons, which is not the case with PHP, for example.

    Ruby’s ecosystem is not particularly well honed to enterprise development either, but I think this is something that is changing rapidly, and as the commercial deployment products continue to roll out (FiveRuns are making a great start on this front), people will begin to get more faith and Ruby may still, one day, have a chance at fighting on a level playing field with the incumbents. So, yes, I’ll agree Ruby isn’t there, but I’d say it isn’t there yet.

    Peter Cooper Friday, January 25, 2008 at 5:19 am
  31. What a laugh! A balanced article on the relative merits of Ruby, and the Rubyists jump on him for daring to mention one or two flaws. Get real!

    Kit Friday, January 25, 2008 at 6:57 am
  32. I, for one, would be glad to an end of this whole language/platform flame war. Being passionate about a tool is one thing, but most of the time it decends to ‘My Language/Platform is better than your platform and will beat it up quite easily’ – this is much akin to me arguing over a hammer vs. a screwdriver – each has it’s own role and is good at what it does, full stop. Very few carpenters or other tradesmen will argue (for hours/weeks/months) over how to put a screw into a piece of wood.

    Ruby is great, Java is great too, as is C, or C++, or Fortran, or Scala, ad infinitum. For the love of God – they’re just tools! If they don’t work for you then don’t use them…

    My $0.03 (I put in the extra peeny becuase I thought it was a worthwhile cause).

    Alex Moore Friday, January 25, 2008 at 8:21 am
  33. And would like to add that I was not attacking the author of this blog in any way – esp. as I feel he is most level headed over this issue :)

    Alex Moore Friday, January 25, 2008 at 8:23 am
  34. @Peter Cooper

    Point conceded. :-) I do truly hope that Ruby becomes a useful tool for the large-scale application. And it’s only fair to agree that it’s not there *yet*.

    @The Universe and Everything

    To clarify what I mean by “scaling” in the comments and article, I mean in terms of code base maintainability and modification. I’ll admit that I don’t have any experience at all deploying Rails in a high-volume environment. (and didn’t I mention that I never could get into Rails?) Working with Ruby on anything non-trivial (i.e. larger than your average script) has been nightmarish.

    Ruby is quite clean and concise for a lot of things, but then you come across that one random operation you need that’s just incredibly ugly when represented in code (file and directory meta queries come to mind). More than that, the code is often hard to walk visually and the flow is difficult to see. Even on simple scripts to control video encoding (~300 LOC), this can become a problem. Finally there’s the problem with lack of reasonable tools. I won’t deny that NetBeans Ruby has made huge strides. In fact, NB Ruby is just about the best Ruby IDE I think is even possible, but it’s still a Ruby IDE. It’s limited by the raw power of the language, specifically the flexibility of its type system. Ruby tools can unfortunately never be on par with Java, C++ or Scala tools. This is a productivity factor which *must* be taken into account when considering Ruby for a large application.

    This is why I think Ruby is a great scripting language, but collapses under its own weight when you “scale” up further.

    Daniel Spiewak Friday, January 25, 2008 at 9:00 am
  35. Yeah I think the hype you’re referring to is mostly the ‘rails’ hype, which I’m happy to see die, as I don’t see it as as pretty as ruby itself. I think Ruby’s use itself will continue to grow slowly or what not, as it has been.

    roger pack Monday, March 31, 2008 at 7:23 am
  36. I never did get into Ruby, there was no incentive. Anything positive I heard about Ruby was obscured by pointless emotional passion for a new toy, and so I had trouble understanding how programming in Ruby could make my life better.

    At the end of the day, since I am a balanced individual with more love for people than computer languages, the prevalent emotional attachments I witnessed over Ruby was an obvious red flag for me. I did not get the impression that Ruby could be people-centric. I think the Ruby elitists could do well to pick-up some sales skills.

    Jonathan Wednesday, January 7, 2009 at 12:31 pm
  37. Ruby will be beta quality for me until required features like Unicode support get implemented. Multilanguage applications cannot be written using ruby until it has Unicode support.

    Juan Garcia Sunday, August 29, 2010 at 1:01 pm

Post a Comment

Comments are automatically formatted. Markup are either stripped or will cause large blocks of text to be eaten, depending on the phase of the moon. Code snippets should be wrapped in <pre>...</pre> tags. Indentation within pre tags will be preserved, and most instances of "<" and ">" will work without a problem.

Please note that first-time commenters are moderated, so don't panic if your comment doesn't appear immediately.

*
*