Monday, November 28, 2005

Ruby, the Next Big Thing?

Probably not.

A co-worker asked me today if I had heard of Ruby. A a friend of his told him that Ruby was "the next big thing". I conveyed what little I know about Ruby, and how his friend is probably a new Ruby on Rails programmer, caught up by it's success. I explained that it is unlikely that Ruby will be the next big thing.

From my personal experience it seems that new programmers who pick up a dynamic scripting language, such as Ruby, Perl, or Python, are amazed at the flexibility of the language. Often this leads to a proclaimation that it will be "the next big thing". I say this because I was one of them, a devoted Perl developer since the mid-90's. Along the way I found myself straying from my desired Perl path over to the Java track, and eventually I saw things in Java that I never saw in Perl. These things I saw are important things, especially when you start building very large applications that can't be down.

I'm sure there will be a few Ruby fans wanting to scream about now, but that's ok, everyone is entitled to their opinion. For those fans I want to say that I want to see Ruby be the next big thing, and that I am on your side. Java as a language stinks, it is long-winded, and simple things are sometimes hard to do. In Perl I can write a SOAP client with one line of code, I love that part of Perl.

Perhaps I should explain what Ruby doesn't have. For me the main two are the lack of high-end application servers and the lack of tools.

Application Servers

When I search Google for "ruby application server" I get only a few pages of results, with the only WEBrick coming up a couple of times and not much else. This is fine for a small shop, but if I have an enterprise application that needs to run across a dozen systems, then I am thinking WEBrick isn't going to be up for the task. It is also likely that for an application this large I will expect a high level of support for the product. For some reason I don't think that I will find this for Ruby.

Development Tools

For my Java projects I use Eclipse, Maven, Checkstyle, JUnit, JCoverage, and more. I use Axis, Spring, Hibernate, Struts, and more. The Java language has a rich set of mature tools and frameworks that make team programming easier, refactoring faster, and maintenance less of a chore. I am not saying that Ruby is without tools, I am just saying that there aren't as many of them. With Java, the quantity and quality of tools means that I can choose the tools that best fit my shop, and that I don't need to settle with whatever is available.

Summary

I hope that I haven't offended too many people, but a great language can't be great at everything. And Ruby is a great language, but it isn't Java, it isn't C#, and it definately isn't Lisp. It has weaknesses, and I feel that it's major weaknesses are the lack of enterprise level servers and tools. If you disagree, and have a great story on how your Ruby server handles a million page views a day, then please leave a comment, I want to hear about it.

3 comments:

David Heinemeier Hansson said...

Rails uses Apache and lighttpd using FastCGI or SCGI to get high-speed performance. Tools that have proved their high-performance worth for years. Just because environments like Java need application servers doesn't mean that everyone else does.

Oh, and there are tons of setups doing hundreds of thousands of page views per day. The 43things.com/43people.com/43places.com suite does more than a million. All running Ruby on Rails.

Robert Hanson said...

Thanks for the information.

Anonymous said...

There will next many things not only one. Did Java eclipsed C++?They are still here .
I can see PHP the next big thing if you asked me - a J2EE developer