Update: Jeff Moore has written a compelling argument suggesting that Rails is for flexies.
I'm glad to see all of the hype surrounding Ruby on Rails lately. I've always been an advocate of open source software, and Ruby (particularly Ruby on Rails) is yet another feather in the cap. I'm not afraid to say it - I'm glad Rails exists.
I do think it's good to maintain some perspective, and some Ruby fans are more than a bit overzealous. Ruby on Rails is a niche technology, and although all signs indicate that its popularity is growing rapidly, it's a bit premature to be thinking that it will dethrone existing technologies. In fact, history has shown that technologies can happily coexist, even if they target the same problem space. The success of Rails doesn't depend on another technology's failure.
Like Andi, I don't see Rails as a direct competitor to PHP, but my reasoning is a bit different. Both target the web problem, sure, but the ideologies behind them aren't very similar. (Rails seems more like a better J2EE than a better PHP.) Those who prefer one over the other are already of a different mind.
I should elaborate, but I'm hesitant to try to explain such an ethereal topic. Recognizing tendencies can tempt one to make generalizations, and generalizations are rarely useful or accurate. However, I think recognizing tendencies can help us to understand a group of people. Web developers are a diverse group, but I think it's possible for us to be divided based upon the qualities that we tend to admire most in a technology:
- Flexible and Powerful
- Structured and Organized
Of course, these qualities aren't necessarily mutually exclusive, but there is a balance to be made in most cases. Those who prefer "Flexible and Powerful" (let's call them flexies, since they desire flexibility) like to develop in C, C++, Perl, and PHP. Those who prefer "Structured and Organized" (let's call them stiffies, since they desire structure) like to develop in Java, ASP.NET, and Rails. Flexies see stiffies as those who spend more time thinking about problems than doing anything to actually solve them. Stiffies see flexies as those who don't do enterprise development. (Some flexies appreciate structure and organization, but they prefer freedom.)
I think Java has been a burden on the web industry for years. Java apologists have tried to explain to me why it's the best choice for web development, but the truth is that history just doesn't support this stance. A web application built primarily with Java technologies tends to require more developers, more money, and more time. The finished product (if there is a finished product) tends to be substandard. Sure, some developers can make great web applications with Java, and MacGyver can make a bomb out of a stick of gum. I'll take my chances with the gum.
Rails is shaking things up by providing stiffies with a better choice for web development. (It's also lowering the barrier of entry in much the same way that PHP did for the flexies.) Those who prefer (or will prefer) Rails over PHP are probably either not using PHP today or aren't happy to be using it. (Maybe they just think it sucks less than Java and ASP.NET.) I'm glad there's an emerging technology that will let these people be happier and more productive developers. I think we'll see better web applications emerge as a result.
But, it's a bit early to think Rails will replace Java. Maturity matters. (This is especially true for stiffies.) PHP is getting a lot of attention these days in the business community (in fact, one could describe its recent growth as explosive), but many businesses still see PHP as cutting edge. This is a technology that's been around for more than a decade, yet it's considered cutting edge.
It's also important to realize that excitement is subtly different than popularity. Excitement is trendy. Ruby hasn't yet made the TIOBE Top 20 - its popularity still falls far short of Java, C, C++. PHP, and Perl. In fact, Ada and Fortran are more popular than Ruby.
If you're like me, you expect to find that Rails is used to build many of the Web 2.0 applications - you know, the kind of applications you sell to Yahoo for millions:
I sense the presence of flexies. Let's see what else they've been up to:
These are the only Web 2.0 applications I use with any consistency. I honestly expected to find many more Rails applications, so I decided to specifically look for some, and I discovered a list of Rails applications. Apparently most of the good Rails applications are developed by 37signals (they created Rails), and they're all pretty cool:
I think a larger point is that good applications are built by good developers, not technologies. Did you know what all of these applications were written in? Did you care? Be honest.
I'd like to end where I began - speaking about Rails fans. I spoke with a Rails fan the other day who had this to say:
You need to be quite a bit more of an advanced programmer to get into Rails.
This type of argument always makes me raise an eyebrow. It can be restated as "Our technology is better, and if you were smart enough, you'd agree." If I have to be smarter to use your technology, then your technology sucks.
On the Ruby on Rails site, Tim O'Reilly has this to say about it:
Ruby on Rails is a breakthrough in lowering the barriers of entry to programming.
Tim's statement does more to improve the perception of Rails. Easy is good. Let's roll with that.