Google engineer Cedric Beust argues that Ruby on Rails is not destined for mainstream acceptance. Here are his basic arguments, which he explains further in his own post:
- Ruby is too hard for most people.
- Rails is too clever.
- No credible IDE.
- Fanaticism of the user base is off-putting.
- Ecosystem for Ruby Web development frameworks is monopolized by Rails.
- Rails is not proven to be scalable.
- Not enough ISPs support it.
I’d say that items 3, 6, and 7 will be fixed in time, assuming that Rails continues to grow as it has. Java was growing in popularity for years before really top notch tools like Eclipse and IDEA were released, and I think that the Ruby tools space is maturing more quickly than that. It will be very interesting to look at the feature set of TextMate in 18 months to two years, for example. If Ruby on Rails continues to grow in popularity, someone will solve the scalability and deployment issues, and ISPs will pick it up. The question is whether other things will keep Ruby on Rails in a niche.
I don’t think Ruby is too hard. Even if it is, the fact is that you can write a solid Ruby on Rails application without taking advantage of any of Ruby’s cleverness. I wrote my first Rails application (a small, simple one) without knowing Ruby at all. Granted I know Java and Perl, so Ruby was very approachable to me, but I didn’t take advantage of any of the most interesting aspects of Ruby. Lots of regular folks have learned enough Perl to get their work done, and Ruby is easier to learn than Perl, in my opinion.
Here’s a real Ruby on Rails story. When I started working on my Ruby on Rails project, I had the services of another developer at my disposal. I could have chosen Java, or PHP, or anything else. The other develoepr knew Java, but wasn’t familiar with any of the MVC frameworks or ORM tools like Struts, Spring, or Hibernate. I realized it would be easier to drop Java and go forward with Ruby on Rails than to get him to stop writing Java apps his way and learn the various frameworks necessary to write Java applications the way I have for the past few years. Yes, there is a lot of cleverness in Rails, but there’s a lot of cleverness in most good frameworks. I’d estimate that 75% of the people who use Hibernate as a persistence layer for their Java applications have no real understanding of how it works, they just know how to map objects to tables and use the Hibernate facilities for managing persistent objects. Rails may be hard to understand, but it’s easy to get started with.
I’m not certain Ruby on Rails will ever find itself on the same plane with J2EE, PHP, ASP.NET, and the other big Web application platforms. There are a lot of intangibles out there that could stymie its progress. But I look at it and see something that really could be a great success. The growth curve is excellent and the Ruby and Ruby on Rails books from the Pragmatic Programmers are top notch. Soon there will be whole shelves of Ruby on Rails books, as well. (An editor pinged me about writing one and I’m a total Ruby on Rails neophyte.) The tools and deployment pictures are both looking better all the time, and the fanatical user base is doing a good job of evangelizing the product.
The jury is still out on Ruby on Rails, obviously, but I’d bet on it being a big success when all is said and done. In the meantime, it’s been a great for my projects, and you can’t ask for more than that.
Update: I misspelled Cedric Beust’s surname, as a commenter points out. My apologies.