April 06, 2006

Why Ruby on Rails won't become mainstream

Update: here is a follow-up to this article, written two years later

You won't be reading any Ruby on Rails bashing in this blog post for a simple reason:  I love Ruby and I love Ruby on Rails.

Rails is a fantastic framework built on a wonderful language that appealed to me the very first day I started to study it.  I think David did a fantastic job in two areas:

  • Coming up with innovative ideas that take Web programming to a new level.
  • Leveraging the strength of Ruby to achieve his goal.

To tell the truth, the Pick Axe and Agile Web Development with Rails books are the best two technical books I have read these past years.  I read quite a few technical books, but none has caught my interest and made me look forward to resuming my reading more than these two books.  And to top it all, features such as Headless Applications, as illustrated in this blog post by Mike Clark, clearly show how powerful Rails is.

There is no denying that Ruby on Rails is turning the Web programming world on its head.

Now that this introduction is out of the way, I'd like to take some time to explain why, in spite of all its qualities, Ruby on Rails will never become mainstream.

As you probably guessed, my conviction doesn't come from technical grounds. 

The truth is that there are a lot of forces involved in making a Web framework successful, but before I dive into those, allow me to tell a little side story.

Have you ever come across Smalltalk or Lisp programmers?  You know, these people who, no matter what you tell them, will always respond that "Smalltalk did that twenty years ago" or that "Nothing has been invented since Lisp".  They listen to you patiently with an amused light in their eyes and when you're done talking, they will just shrug away your points and kindly recommend that you read up on a thirty-year old technology that was the last thing they ever learned and that has been dictating every single technical judgment they have offered since then.

I believe that in ten years from now, people will look back at Ruby on Rails and will have the same reaction.  I'm not sure what Web frameworks we will have by then, but I'm quite convinced that a lot of the current Ruby on Rails fanatics will have the same kind of attitude:  "That's nice, but Ruby on Rails already did this ten years ago, and better".

Interestingly, they might even be right.  But by then, it won't matter because despite its technical excellence, Ruby on Rails will still be a niche technology that only experts know about.

So why do I think that Ruby on Rails will never cross the chasm?

  • First of all, Ruby.

    Again, and at the risk of repeating myself:  I love Ruby.  I truly do.  It's one of the few languages that I have studied these past years that made me go "Yeah!" whenever I read about a feature I didn't know of yet.  I find its syntax and concepts extremely elegant and powerful at the same time.  I don't like everything about it, of course, but Ruby is by far the number two language in my toolbox behind Java, with number three far, far behind.  But it's a complex language that contains a lot of advanced idioms which will be very hard for PHP and Visual Basic programmers to absorb.

    Admittedly, PHP and Visual Basic are cheap targets (we're talking about languages that don't even have name spaces!), but like it or not, they are the Web standard.  Anyone who wants to succeed in the Web arena must have a compelling story to tell to these programmers, something that will convince them to switch to Rails on technical grounds but that will also be an easy sell to their management.  Rails can't succeed without these two conditions, and I am predicting that Ruby -- and Ruby on Rails -- will always remain a tough sell to any organization that contains more than ten people.
     
  • Ruby on Rails itself.

    Ruby on Rails is just too advanced.  I'm serious.  It has an incredible amount of slick features involving a lot of magic (both Ruby-related and invented by David himself).  For talented developers, these features are a dream come true...  autowiring of the MVC, scaffolding, defaults over configuration, unit tests (even integration tests now, nice!), you name it.  David hit every single pain point that Web developers (regular developers even) have been facing these past years.  Ruby on Rails in itself is a great example of how to nicely package what we have learned about software development these past five years.

    But it's still a very wide gap for corporate developers to cross.  Sometimes, too much magic is too much magic, and it can definitely be the case that the flow of code is too direct or too clever to be understandable by regular developers.  Developers were able to do the jump from imperative to object-oriented programming, but it was a hard fight.  I don't believe the Web world will ever be ready to embrace the Rails cleverness.
     
  • Still no credible IDE.

    All fanatics of dynamic languages are quick to point that they don't need an IDE to use Ruby, Python, Groovy or other.  And they will quickly add that if you need one, you're probably not being rubyic or pythonic enough and that you should probably switch back to your old language and leave the grown ups alone.

    This is nonsense.  Ignore these people, they don't understand how the real world works and how developers think, and they are one of the reasons why so many great technologies never make it to the mainstream.  Don't ever be ashamed to need an IDE or to ask for one.  Of course, there are bad ways to use an IDE (e.g. you want code generated for you) but if you are interested in Ruby on Rails, chances are that you are a decent developer and you know how to leverage an IDE to make you more productive than when using emacs.  Code completion or navigation, debugging, refactoring, project management, source control integration, etc...  there are too many features to list that make you more productive if you use a tool that enables them.
    This is 2006, not 1996.  The programs we are writing and the problems we are solving every day are orders of magnitude harder than back then, and our tools need to keep up with that need.  Emacs is a fine text editor, but it's no longer adequate for modern development.
     
  • Fanaticism.

    Regular readers of my blog know how strongly I feel on this topic.  There are exceptions, of course, but the attitude of Ruby on Rails users toward Ruby skeptics or critics has been less than kind.  This is a crowd convinced that it has found the ultimate answer to everything, and they are not afraid to let you know.  I only have a simple advice for these people:  you might be right, but just be humble.  It never hurts.
     
  • Crowd of a single mind.

    If you want to write a Web application in Ruby, there is only one solution.  Only one.  Ruby on Rails.

    Ruby on Rails has pretty much nuked the field of Web development in Ruby, and I wonder if it's such a good thing.  For all the flak that Java receives because you can count at least a dozen different Web frameworks, there is something to be said about plurality and the constant chase for something better and different.  Each framework that comes out builds on the strengths of its ancestors while discarding the errors (and committing a few mistakes of its own, of course). The field advances a little bit every time while bowing down to the timeless laws of natural selection.

    I am worried that Ruby on Rails will do to the Ruby world what JUnit did to Java:  a great tool when it came out but which condemned its community to an ice age where no innovation or competition appeared for years.  Whatever the fate of Ruby, I hope its fans will keep an open mind and will constantly challenge the Rails way, for the simple reason that it's always healthy to question what's in place, no matter how good it looks.
     
  • Enterprise capabilities and scalability unclear.

    This is an argument that the Rails crowd doesn't take well, and they are quick to point out BaseCamp and other products.  The problem is that by now, there should be other obvious success Rails stories, and not just ones developed by the Rails Society.  Of course, it's a chicken and egg problem:  a lot of companies evaluate Ruby on Rails but will only take the jump if they can find evidence that other companies have done that before them.  And for now, the evidence is scarce at best.

    Granted, Java took a while to rise to the enterprise challenge as well, and it did so despite tremendous initial handicaps such as poor performances and questionable specifications.  I contend that until Rails goes through its own EJB2 debacle, it won't be seen as enterprise ready.
     
  • Lack of support from Internet Providers.

    What's the big deal with this, you ask?  After all, Java is hardly supported by Internet Providers as well.  The big difference is that Java on the server is targeted at the enterprise.  Anyone who wants to run a Java EE application will most likely host their own servers.

    Ruby on Rails is targeting a different population:  the "Web sites in-between", these sites that are not massively scalable but still have more than a few visits per day.  A lot of these people use external hosting, and they won't go very far if Rails is not offered natively and pre-installed for them.  PHP is a no-brainer for them, because it's installed virtually on 99% of Internet Providers.

    Of course, a little bit of .htaccess magic will allow you to run your own Rails application, whether your provider supports it or not, and assuming that they give you that amount of privileges and that you don't need to scale too high, but until Ruby on Rails achieves at least half of the PHP penetration, it will remain inaccessible to most of the population it needs to become mainstream.

Note that I didn't say anything about poor error reporting, weak internationalization support or Active Record, which are usually the areas where Ruby on Rails is the most criticized.  I'm not worried about these because they are simply a symptom of Ruby on Rails' youth.  They will be fixed in time, and I don't think they will play a big role in Ruby in Rails' acceptance (or lack thereof).

So there you have it.  My prediction on Ruby on Rails in one, lengthy post.  I apologize for the size of this article, I usually try to keep my blog entries short and to the point.  I hope at least that I achieved the latter.

I'll conclude on a positive note:  I hope I'm wrong.  I really, sincerely do.  For my next work, I want to have a choice between Java and Ruby, but right now, when in doubt, even I usually end up returning to Java for my personal projects for the reasons listed above.

And as you know, I love it when frameworks and languages compete for my business.  But right now, I see no competition.

 

Posted by cedric at April 6, 2006 07:42 AM
Comments

First, Thanks for this post and I'd like to say: I do agree with almost all of your arguments.

But ;) not on the conclusions...

Well I'm not a fortune teller ;)

> First of all, Ruby.
Ruby (advanced features) are complex but ruby leverage the learning curve. You can start by learning few tricks and then get better by the time... Back then when I learned Java it was more painfull :( (I started with Jtable in a swing applet, arg! bad memories!)

> Anyone who wants to succeed in the Web arena must (...) convince programmers
I think the blog video did just that ;)
> (...) also be an easy sell to their management.
Something that must be done and will be hard but the fact that many rails developpers are coming from j2ee and are well known architects will surely help...
take a look at gary's post http://www.jroller.com/page/dgeary?entry=tipping_rails

> Ruby on Rails itself.
Magic is good because it makes developpers more productive which is something your pointy haired boss will surely like ;)

> Still no credible IDE.
I'm not a vi/emacs addict at all!
But you must have missed something call "radrails".
It's an amazing plugin who just won an eclipse award (http://www.radrails.org/blog/show/56)
Take a look at it ;)

> Fanaticism
I hope I'm not like one of those lisp guys ;)
I agree that staying humble is the way to go since rails is not perfect either

> Crowd of a single mind.
There are other inovative web frameworks (http://code.whytheluckystiff.net/camping/)
But The fact that one of them is the reference is a breath of fresh air coming from J2ee (I think there are to many of them out there).
Also this didn't bothered the ASP developpers to have only one option during all the last past years...

> Enterprise capabilities and scalability unclear.
I found some amazing numbers about the shift to rails (http://weblog.rubyonrails.org/articles/2006/02/01/secrets-behind-ruby-on-rails-the-numbers)
400 000 Downloads
550 develppers / 50 countries
25000 Agile web dev with rails books sold
(http://radar.oreilly.com/archives/2005/12/ruby_book_sales_surpass_python.html)
o'reilly ruby books sales up to +1552% since last year
more than python book sales

About performances see the great post of Justin Gehtlan (http://blogs.relevancellc.com/articles/2005/04/04/some-numbers-at-last)
who wrote http://www.oreilly.com/catalog/bfljava/
The numbers are amazing too!
He just changed is blog look, the post is just one big block :(

> Lack of support from Internet Providers
Rails is young but I sure it will come at time goes by... you already have http://www.typhon.net/en/ if you're looking for one ;)

When I can choose between java and rails, I personnaly take rails because I don't want to use my spare time on configuring hibernate mapping files and making yet an other ant file ;)

Posted by: Benjamin Francisoud at April 6, 2006 01:27 AM

I think you make some good points Cedric but Rails is still young and, as you acknowledge, has a lot going for it. Call me optimistic but fast forward to 2008 and I reckon many of the obstacles you mention, whether perceived or real, will no longer exist.

Posted by: Keith Pitty at April 6, 2006 01:28 AM

Concerning Lack of support from Internet Providers, free Java hosting is impossible to find...
But that's what participate in the "Entreprisish" way of Java ;-)


Posted by: Julien Carnelos at April 6, 2006 01:40 AM

While I don't agree with every single point it is still an excellent post, thank you.

But at least with your "Crowd of a single mind" you are wrong. There is Nitro (http://www.nitrohq.com/) which is under active development and has been around about as long as RoR. It is not well known to the public right now but everyone who gets really serious about RoR will come across it sooner or later.

I don't know if it ever will gain such popularity and momentum as RoR but it is an alternative with its own pros and cons.

So I agree with you: There is only one well known and documented solution (RoR) but there certainly is another serious/well written one out there (there may be more I don't know of)

Posted by: at April 6, 2006 01:50 AM

Great blog, with many good points, and a great piece of rhetoric. I'm currently trying to find the right term to describe your post: antiphrasis? Asteism? Apagogy? Pradox? Or maybe... Hyperchleuasme

Posted by: Gabriel at April 6, 2006 02:05 AM

"you might be right, but just be humble"

this is where Matz succeed, and DHH fails horribly.

counting down to a response post on www.loudthinking.com

Posted by: Ben at April 6, 2006 02:58 AM

> contains a lot of advanced idioms which will be very hard for PHP ... programmers to absorb

I can't speak for VB programmers but talking with people at phpLondon, quite a few of them are interested and/or working in ruby / rails. I think the interest is there and that there are just as many people coming to ruby from a php background as from a java background. The pain point may be different - i.e. people from a php background may be looking for a MORE structured approach. Countless php job adverts specify Java as a skill requirement - frequently this has nothing to do with actually using Java on the job but more to do with working with an OO/structured approach. Ruby may hit that sweet spot.

> Developers were able to do the jump from imperative to object-oriented programming, but it was a hard fight

Similarly it may be a hard fight to convince people of the benefits of using rails; that doesn't mean that it is a fight that can't be won.

> Crowd of a single mind

There was an interesting issue raised on the RoR podcast about this and risk - i.e. Your choice is between Java (low risk) and Ruby (high risk) as a language. However, once this has been selected, you then have to make choices on the framework / ORM / templating language etc. etc. In the Java world (and also in the php world) there are a plethora of options - leaving you exposed to some high risk choices. Ruby only really has rails, leaving only a low/no risk choice once you have selected the language.

> Enterprise capabilities ... unclear

This is a fair point (although not necessarily in terms of scalability). It is easy to shift unintentionally from the mindset that "RoR is better 90% of the time" to "RoR is better 100% of te time". It may turn out that the 10% of cases where RoR isn't better is what the enterprise really cares about.

Posted by: Roland at April 6, 2006 03:22 AM

I do wonder a little at how good Ruby would be when used by large teams as there can be so much magic going on and people extending classes all over the place that its sometimes a bit hard to know what really is going on - especially if you join a project 1 year after the development finished. Don't get me wrong - I love Ruby too - and love the power, its just maybe its too powerful :).

When large teams are involved - or projects which last many years- one of the most important things is how easy is it to understand what a piece of code does. When it comes to readability, sometimes more verbose code thats trivial to understand is way more useful than one or two lines of extreme-ninja cleverness with jedi mind tricks :)

We spend way more time in the real world reading code, written by someone else some time ago than churning out brand new stuff quickly; while Rails rocks for the latter I'm not yet sure how good it is at the former.

But competition is great; I'm hoping both Java and Ruby continue to improve and get better.

Posted by: James Strachan at April 6, 2006 03:32 AM

Nice article, only one thing: I'm not sure why you think that in 10 years, there could be Smug-RoR-Weenies who will say "Ruby On Rails did that first". I'd say, Java and other systems had many of the features before RoR, but RoR got them right by learning from their mistakes. So, unlike the Smug-{Smalltalk|Lisp}-Weenies, old Rubyists can talk about how they got things right...

Posted by: murphee at April 6, 2006 04:08 AM

It needs few million marketing dollars too. Marketing can do wonders to popularity as Microsoft will attest.

Posted by: Angsuman Chakraborty at April 6, 2006 04:13 AM

It needs few million marketing dollars too. Marketing can do wonders to popularity as Microsoft will attest.

Posted by: Angsuman Chakraborty at April 6, 2006 04:13 AM

You'll find an amazing count of Projects that are using RubyOnRails in the real world at http://wiki.rubyonrails.com/rails/pages/RealWorldUsage Projects you might heard of are pennyarcade.com and alistapart.com . These aren't success stories? Come on!

Such a young project and so many people converting high volume sites to or are programming there start-ups with it, it's amazing. Sorry, but your research isn't as great as the blog and it's rethoric make you think it is at the first look!

Posted by: Jan Prill at April 6, 2006 05:06 AM

There is only one true way.

ASP.NET

Everyone else, confess your sins. The Kingdom of Heaven is at hand.

Posted by: Lady Godiva at April 6, 2006 06:21 AM

While this is a good post, the real genius of it lies in the comments, which when taken as a whole, prove that rails fanboys are everything they're accused of being. A defensive, territorial, arrogant, and surprisingly narrow minded lot. A reciple for success if I've ever seen one.

Posted by: Hani Suleiman at April 6, 2006 06:32 AM

While this is a good post, the real genius of it lies in the comments, which when taken as a whole, prove that rails fanboys are everything they're accused of being. A defensive, territorial, arrogant, and surprisingly narrow minded lot. A reciple for success if I've ever seen one.

Posted by: Hani Suleiman at April 6, 2006 06:33 AM

The big turn-off for me is 1) DHH is too arrogant, and 2) Rubyists are not forthcoming enough about the weaknesses of Rails (yes, it actually has weaknesses omfg!). To get them to admit these things is like pulling teeth.
Basically the whole thing stinks to me of a guy with a God complex and his band of worshippers (sheep) who spend more time talking about greatness and less time time producing it.

Posted by: Sam at April 6, 2006 07:34 AM

Nice post, but I don't agree completely.

Anyone who thinks that String+Hibernate+WebWorks/Struts+J2EE is much easier to comprehend for an ordinary (corporate as you said) developer must be out of his mind.

What kind of features do you expect from an IDE when you work with dynamic languages like Ruby/Python/Perl?

Posted by: Kent at April 6, 2006 07:36 AM

Add WebObjects programmers to your Lisp and Smalltalk set. WebObjects and EOF have been doing what Rails does for 10 years also.

Posted by: at April 6, 2006 07:56 AM

I think you hit a lot right on the head, especially in "Ruby on Rails Itself."

Prior to my current job, I worked at large corporate finance companies. About 10% of the developers where "architects" that determined the tools and direction of the rest of the developers. Out of the remaining 90%, the vast majority did not have any business being developers. They Of course it's not. almost all only knew one language (Java), and some were trained in the field by places like Heald and ITT, which promised unfathomable wealth and rock star status.

In other words, those that truly loved the technology, loved to explore, loved to try new things, loved to code after work, were a distinct minority. Anyone like that ran into beurecracy or opposition from the majority.

You really need work in a large company like that to truly understand. The pay was good, the benefits (especially retirement) were excellent, and the hours even better. For a lot of people, this makes a great formula for complacency and a horrible formula for innovation and experimentation.

Sam says, "Anyone who thinks that String+Hibernate+WebWorks/Struts+J2EE is much easier to comprehend for an ordinary (corporate as you said) developer must be out of his mind." It's not that they're out of their mind. But when you've been at a large, stable company for 5+ years working in Java, going home at 5:00 pm every night to be with the kids, most people like that and don't want it to change. J2EE has been very, very good to a lot of people. There's no incentive to keep up with the rest of the IT world because Architecture is still telling them to use Java/J2EE. And why is Architecture telling us to keep this environment? Because their recommendations have made the company invest literally millions in J2EE.

That, ultimately, is the hardest task. You have to convince a company with J2EE servers lined up and Websphere Application Developer at every workstation, and managers (often with no technical background and only interested in the output to make themselves look good) to abandon the known and use the unknown.

The IDE and scalability issues are important, but will be solved over time. Changing the mentality of entrenched people is a whole different issue.

Posted by: Shu Chow at April 6, 2006 08:06 AM

I think you hit a lot right on the head, especially in "Ruby on Rails Itself."

Prior to my current job, I worked at large corporate finance companies. About 10% of the developers where "architects" that determined the tools and direction of the rest of the developers. Out of the remaining 90%, the vast majority did not have any business being developers. They Of course it's not. almost all only knew one language (Java), and some were trained in the field by places like Heald and ITT, which promised unfathomable wealth and rock star status.

In other words, those that truly loved the technology, loved to explore, loved to try new things, loved to code after work, were a distinct minority. Anyone like that ran into beurecracy or opposition from the majority.

You really need work in a large company like that to truly understand. The pay was good, the benefits (especially retirement) were excellent, and the hours even better. For a lot of people, this makes a great formula for complacency and a horrible formula for innovation and experimentation.

Sam says, "Anyone who thinks that String+Hibernate+WebWorks/Struts+J2EE is much easier to comprehend for an ordinary (corporate as you said) developer must be out of his mind." It's not that they're out of their mind. But when you've been at a large, stable company for 5+ years working in Java, going home at 5:00 pm every night to be with the kids, most people like that and don't want it to change. J2EE has been very, very good to a lot of people. There's no incentive to keep up with the rest of the IT world because Architecture is still telling them to use Java/J2EE. And why is Architecture telling us to keep this environment? Because their recommendations have made the company invest literally millions in J2EE.

That, ultimately, is the hardest task. You have to convince a company with J2EE servers lined up and Websphere Application Developer at every workstation, and managers (often with no technical background and only interested in the output to make themselves look good) to abandon the known and use the unknown.

The IDE and scalability issues are important, but will be solved over time. Changing the mentality of entrenched people is a whole different issue.

Posted by: Shu Chow at April 6, 2006 08:06 AM

I will bite, I will even risk sounding like one of the mentioned Lisp and Smalltalk developers.

I have had a quick look at Ruby, and I do like it (mainly because it reminds me of Smalltalk), but I have never tried using it in anger. So the following is a real question that I have not seen answered before.

What is it that Ruby has that Smalltalk doesn't? What makes Ruby an improvement on Smalltalk? Why should I program in Ruby and not Smalltalk (or Squeak)?

(I do believe that Lisp programmers have the right to claim that Lisp is the best thing since sliced bread; it is truly different - infinite cosmic power in tiny little space.)

Posted by: Petar Bodor at April 6, 2006 08:29 AM

I completely agree with Shu Chow. So let's stop talking about technical merits. These are precise points why Ruby/Rails will never become 'enterprisish'.

Posted by: Kent at April 6, 2006 08:31 AM

Thank you for the kind writeup, Cedric. I definitely agree that Ruby on Rails has a tough road ahead becoming truly mainstream. That road is always tough, for any technology. Less for technical reasons and more for cultural and marketing reasons.

But nothing gets me fired up like knowing we have something valuable that lots of people haven't discovered or experienced yet.

Although evangelism and rhetorics sometimes do bore. Perhaps I should just, as the guy with the God complex, widely considered to be arrogant, and once called "king of the internet", pass down some stone tablets and command people to obey. Free will is overrated. (hm)

Posted by: David Heinemeier Hansson at April 6, 2006 08:53 AM

Like you, I feel rails is fantastic. Also, like you, I don't think it will ever be mainstream. My reasons for thinking this are, however, a little different. Namely, I can't have a UI in rails, and use nutch as the backend as far as I know.

Posted by: Hasan at April 6, 2006 10:07 AM

Cedric,

I agree with what you are saying for the most part, but the integration argument may not be as bad as everyone thinks. With Web Services making another push with SOA architectures, ROR is positioned OK. The web services support is pretty intuitive and I have to admit it beats Java Web Services support IMO.

The things that are a sore spot for me, at least from an integration viewpoint, is the lack of asynchronous processing(ie JMS), thin at best operational support (ie JMX), and deployment issues in general. And I still haven't seen a great solution for multiple application deployments without Session management problems.

But like you said, the ROR community is tenacious in their defense of the framework, so I'm sure they will solve these problems over time.

Posted by: Frank Bolander at April 6, 2006 10:29 AM

Shu Chow has hit the nail right on the head. Go into any Fortune 100 or 500 IT department and talk to the "architecture team" that set's corporate direction and see how many even know what Ruby or RoR is.

It will take years of progression both at the grass roots level (there usually are small teams that are talented and tend to experiment) and at the CIO level usually because some high paid consultants or analysts (Gartner) are waving the banner.

I think the grass roots is moving forward nicely, now show me how the Rails community to working the other half of the equation.

-db

Posted by: dsb at April 6, 2006 11:11 AM

To Jan Prill, please don't prop Penny Arcade as some exaple of Rails' scalablity. As I understand it, the app doesn't even run dynamically, they use tools written in ROR to generate static HTML, so the number of ROR users is in single digits while Apache does the heavy lifting of serving millions of HTML files. More importantly the PA crew has had trouble since switching to ROR with not being able to make updates with the tools and/or updates not being available to the viewers....to the point where Tyco made a public apology for the constants delays a week or two ago. This is not a bright shining light of Ruby scalability...and it's not really an 'enterprise' app to start with, it's a glorified blog.

Posted by: adw at April 6, 2006 12:51 PM

I came to much the same conclusion, but instead of posting a well reasoned argument decided to stick with charts and graphis:

http://zacker.org/ruby-on-rails

Posted by: Zack Rosen at April 6, 2006 05:50 PM

Hi,

when reading your article, it occurred to me that all the arguments you used (maybe beside the one about complexity of RoR itself) were actually used to tell us why PHP will never be mainstream.

This was back in 1998 or so, but hey!

What I want to say is that only time will tell. There's no point in speculating now what's going to be mainstream then. Personally, I think ruby has some nice advantages over PHP for example and I think with the time progressing it really might break through.

If it doesn't, it won't stop me using RoR though as it fits my needs in many projects.

Philip

Posted by: Philip Hofstetter at April 7, 2006 01:47 AM

> Still no credible IDE

Komodo works very well for me as Ruby IDE

Posted by: mvp at April 7, 2006 01:48 AM

@adw: Ok, admitted. But does that mean that rails doesn't scale? All I've said is that cedric didn't made his research homework. There are rails apps that scale. Look at the wiki page and ask people before writing that there is no proof that rails scales other than the 37signals products. It scales as well as any other technology that shares nothing. PHP scales great for yahoo. Scaling is a matter of the setup and isn't 'easy' on java either. Once again: It's amazing what DHH and the community of rails did with ror and their tools (capistrano) that address your scaling needs.

Posted by: Jan Prill at April 7, 2006 02:05 AM

I agree with a lot of this post. I too am learning ruby, and love the language, but it is not an easy language compared to say php. Furthermore I am worried about scalability. Finally I believe there are now other ruby frameworks being developped, no idea if they are any good.

Posted by: Christian at April 7, 2006 02:10 AM

Further views on scalability: http://poocs.net/articles/2006/03/13/the-adventures-of-scaling-stage-1

Posted by: Kartik Agaram at April 7, 2006 02:10 AM

Further views on scalability: http://poocs.net/articles/2006/03/13/the-adventures-of-scaling-stage-1

Posted by: Kartik Agaram at April 7, 2006 02:10 AM

I'm not sure it matters if Rails hits the mainstream. Its hit "mainstream enough" that most web developers have at least heard of it by now. If fortune 500s aren't using or exploring new things, its because they're completely entrenched.

Rails is perfect for quickly setting up satellite applications around monolithic enterprise apps through web services. If the architects aren't looking at ways to speed things up, they will start losing ground in their respective marketplaces to quicker, dryer methods like Rails.

Posted by: Pete at April 7, 2006 02:23 AM

Reading the comments section I can see the real reason why Ruby will never catch on you people are worse then Mormons going door to door!

language != application

Posted by: Joe at April 7, 2006 03:00 AM

I haven't read all your post yet, but my first thought when reading the title was : "do you remember what your first prediction about the ipod was ?" :-)

Posted by: Guillaume Laurent at April 7, 2006 03:15 AM

If you check out Tiobe Software's monthly programming language popularity index you'll see that it has shot up 14 places in the past year and is now in the top 20.

http://www.tiobe.com/index.htm?tiobe_index

Posted by: James McKay at April 7, 2006 03:17 AM

There is no "One True Way" as far as programming (web or not) is concerned. One True Way only exists in Star Wars, and even there there are 2 avenues to that way (dark/light). Those who claim "one true way" are extreme fanatics and we all see where extreme fanaticism is taking the world right now.

Every project has potentialy a platform and language that would fit it more than others, and every project should weight its requirements and try to fit the platform around them. It might be Lisp, C, Java, PHP, Python, Rubi and what have you.

I'm currently reading The Art of Unix Programming, by Eric Raymond and its a damn good read and somewhat related to this argument.
It's available here: http://www.faqs.org/docs/artu/

Posted by: Harel at April 7, 2006 03:36 AM

What do you use an IDE for? Do you write code in it, test the code out, and move it to a Bank of Good Code? That's what irb can do; the read-eval-print loop in Ruby/Python/PLT Scheme/etc are remarkably helpful for development.

Posted by: lee at April 7, 2006 03:39 AM

What do you use an IDE for? Do you write code in it, test the code out, and move it to a Bank of Good Code? That's what irb can do; the read-eval-print loop in Ruby/Python/PLT Scheme/etc are remarkably helpful for development.

Posted by: lee at April 7, 2006 03:39 AM

Cedric,

Great post. I'm an EXTREMELY recent convert to Ruby and Rails so perhaps I can provide a fresh perspective on this. I have posted a rebuttal of sorts on my blog

http://livingincode.blogspot.com/2006/04/rails-wont-become-mainstream.html

--
Adam Schepis
http://livingincode.blogspot.com

Posted by: Adam Schepis at April 7, 2006 03:47 AM

Apple isn't really mainstream either. I think it's more a positive thing not being mainstream but solving problem for a niche. That keeps up quality! F1 cars are not on the road, they still win races ;) Apples are not in every bedroom, still they're used to cut movies or produce million dollar records. Rails is not used for the guestbook on your SharedHosting, but.... I HOPE it will never become mainstream.

Posted by: Andreas at April 7, 2006 04:50 AM

Interesting post!

Posted by: Robert Lidberg at April 7, 2006 04:50 AM

I can't see what an "IDE" could do that TextMate's[1] ruby bundle can't, and I'm sure there are alternatives on other platforms.

Being a mac user, I fail to understand the need to be mainstream to be successful. Ruby and Rails are successful.

[1]http://macromates.com

Posted by: FredB at April 7, 2006 04:54 AM

This is a great article and you make mostly good points but personally I hope you are wrong. I hope the up-take is just because it's relatively new compared to other platforms.

I am a recent Ruby on Rails switcher, came from the PHP/Ajax/VB/etc... realm. Still do most of my work in there but have been greatly testing out Rails and working on my skills. The Agile book you mentioned is what I am using and it's amazing stuff. What IDE do you use Cedric (if any)? I use Notepad++ right now, nothing special but if you know of something better that would be awesome.

Posted by: REETS at April 7, 2006 05:05 AM

Crowd of a single mind

Many things drew me to Rails and this was one of the major reasons. I try to use open source software when I can to solve problems and the number one issue that I find is that most of the projects never come close to being feature complete. I'm always waiting for a feature in the next release or two releases from now. I think that a lot of this is due to the lack of focus. Linux on the desktop is a great example of this. Gnome and KDE each have features that the others need, but we can't get together and have one great application. The Java web frameworks suffer from this as well and can make it very important to choose the right solution for your project.

If the Rails community can continue to innovate and remain focused on it goals, it will continue to grow. Dividing the limited resources of the open source community only hurts its adoption.

--

Rick Russell
http://www.macoss.com

Posted by: Rick Russell at April 7, 2006 05:07 AM

I always had the same view of Emacs until I started looking into it more recently. I'm just beginning to learn it but it certainly has code completion and source control integration, and I think it has some of the other features you mentioned for some languages. And new versions are still being released.

As for rails, well, I'm learning things even more obscure and powerful (eg. Seaside), and I don't care if big corporations never use them - that gives us little guys a chance to compete ;)

Posted by: dennis at April 7, 2006 05:18 AM

I've only been playing with RoR for a few months now so I am a fairly new convert. However, I must admit I will never go back to PHP unless I can't help it.

It will simply take some time.

I think most people will agree that RoR is still in development. The community is still growing, and there is many RoR apps out there but nothing quite mainstream (I know basecamp etc, but after all that is made by David, and he is somewhat biased). I imagine if Google were to use it on one of their betas people would notice. And I can almost gaurantee you that somebody over in Mountain View is looking at it if not already developing it.

It is true Radrails is out there but I don't think it's ready for primetime yet but in a few months with a few more releases it might be.

A few good detailed case studies and development of some high traffic sites will slowly turn heads and convince skeptics that RoR can handle enterprise level traffic. And even if it is proven it can't there is certainly enough of a community to work that out.

I think you might be confusing enthusiasm for fanaticism. And I have to admit it is kind of hard not to be ethusiastic over RoR. It does a lot of cool stuff really fast. And "magic" as you state is fun to show off to your buddies. I know for myself that I don't think RoR will ever be the cure all solution for everyone. There are entirely too many people sucking on the Microsoft breast to ever consider open source stuff like this. PHP and J2EE have too much of a following and that will continue to go on if nothing else but legacy support or the pain of converting everything to a new language. I certainly think RoR is hot stuff but I don't think it will ever grab more than 20-30% of web development.

I think it will be a modest goal if even 5% of web traffic is hitting RoR sites. And I think it could happen by the end of the year.

Posted by: ai42 at April 7, 2006 05:32 AM

I've only been playing with RoR for a few months now so I am a fairly new convert. However, I must admit I will never go back to PHP unless I can't help it.

It will simply take some time.

I think most people will agree that RoR is still in development. The community is still growing, and there is many RoR apps out there but nothing quite mainstream (I know basecamp etc, but after all that is made by David, and he is somewhat biased). I imagine if Google were to use it on one of their betas people would notice. And I can almost gaurantee you that somebody over in Mountain View is looking at it if not already developing it.

It is true Radrails is out there but I don't think it's ready for primetime yet but in a few months with a few more releases it might be.

A few good detailed case studies and development of some high traffic sites will slowly turn heads and convince skeptics that RoR can handle enterprise level traffic. And even if it is proven it can't there is certainly enough of a community to work that out.

I think you might be confusing enthusiasm for fanaticism. And I have to admit it is kind of hard not to be ethusiastic over RoR. It does a lot of cool stuff really fast. And "magic" as you state is fun to show off to your buddies. I know for myself that I don't think RoR will ever be the cure all solution for everyone. There are entirely too many people sucking on the Microsoft breast to ever consider open source stuff like this. PHP and J2EE have too much of a following and that will continue to go on if nothing else but legacy support or the pain of converting everything to a new language. I certainly think RoR is hot stuff but I don't think it will ever grab more than 20-30% of web development.

I think it will be a modest goal if even 5% of web traffic is hitting RoR sites. And I think it could happen by the end of the year.

Posted by: ai42 at April 7, 2006 05:33 AM

The IDE argument is not convincing. For example most people are using eclipse, because it helps you write all the java boilerplate code. This is just not the case with ruby.

Graphical IDEs are easy to learn, but nothing beats the productivity of Emacs, which is in fact an IDE. Writing some elisp code is so much easier to start with as to write an IDE plugin.

Emacs supports a wide range of development tools, an IDE just cannot compete with it. Maybe a ruby class browser is missing, but using outline mode is much faster than switching to mouse all the time.

> Code completion or navigation, debugging, refactoring, project management, source control integration, etc...

I do all these things all the time in Emacs ;)

Posted by: Matthias Georgi at April 7, 2006 05:40 AM

The IDE argument is not convincing. For example most people are using eclipse, because it helps you write all the java boilerplate code. This is just not the case with ruby.

Graphical IDEs are easy to learn, but nothing beats the productivity of Emacs, which is in fact an IDE. Writing some elisp code is so much easier to start with as to write an IDE plugin.

Emacs supports a wide range of development tools, an IDE just cannot compete with it. Maybe a ruby class browser is missing, but using outline mode is much faster than switching to mouse all the time.

> Code completion or navigation, debugging, refactoring, project management, source control integration, etc...

I do all these things all the time in Emacs ;)

Posted by: Matthias Georgi at April 7, 2006 05:40 AM

uhh the #1 reason:

It's impossibly difficult to setup under Apache. I've read lots of howtos and I still can't get it to work with fastcgi or mod_fcgid or just normally. So you're telling me I have to install lighty ?

Install this .. install that, I've had enough of jumping through hoops. Give me something that just works damnit!!!

Posted by: t35t0r at April 7, 2006 05:43 AM

Wonderful article. I'm not an engineer by trade but more a front end guy that enjoys delving into the back end when I have time (and it makes me a better front end guy too). And I really don't like Java, so I was really excited when Ruby and RoR arrived.

I bought the books and have attempted to learn this stuff on my own like everything else. I got about so far and then ran into some pretty hefty concepts or idioms as you say. It seems like you get to a certain point, and then you are looking up a *really* steep hill.

And for all of that - I see how great it is and I want to continue learning it. I have a personal project I want to use it on, and I wanted to add a site to my existing web account, but they don't have Ruby and RoR supported. I don't really want to branch out into a new host.

Here at our enterprise, Java is SO entrenched in things, they are not open to really even discussing anything else. How can that cycle be broken? I don't know.

I think these are real problems to face up to. I hope Ruby succeeds too - but I also see these issues as hills that may not be able to be scaled. Let's hope otherwise!

Posted by: Tom at April 7, 2006 05:58 AM

Wonderful article. I'm not an engineer by trade but more a front end guy that enjoys delving into the back end when I have time (and it makes me a better front end guy too). And I really don't like Java, so I was really excited when Ruby and RoR arrived.

I bought the books and have attempted to learn this stuff on my own like everything else. I got about so far and then ran into some pretty hefty concepts or idioms as you say. It seems like you get to a certain point, and then you are looking up a *really* steep hill.

And for all of that - I see how great it is and I want to continue learning it. I have a personal project I want to use it on, and I wanted to add a site to my existing web account, but they don't have Ruby and RoR supported. I don't really want to branch out into a new host.

Here at our enterprise, Java is SO entrenched in things, they are not open to really even discussing anything else. How can that cycle be broken? I don't know.

I think these are real problems to face up to. I hope Ruby succeeds too - but I also see these issues as hills that may not be able to be scaled. Let's hope otherwise!

Posted by: Tom at April 7, 2006 05:59 AM

I agree with all of your points; as much as I'd love to see RoR succeed and take over the world, it's not likely to happen in its current state.

One thing that IMHO stops widespread adoption more than any other factor is the lack of a full-blown reference architecture/application, PetStore style. Look at the latest distribution of Spring - you can learn a ton from code in the samples/* directory, clean real world implementations of all the best practices in Java EE. Where is the Ruby equivalent?

Fact is, RoR might be great for writing blog engines (as if we don't have enough already), but why oh why isn't there a standard security model? Why must I spend hours downloading weird plugins & code generators to do something that a Java web container does out of the box?

Posted by: kay at April 7, 2006 05:59 AM

Jan Prill : I didn't say Ruby or Rails didn't scale, I called you on using PA as an example of Ruby in a high traffic environment. PA is a high traffic website, but the ROR is not invoked by 99% of the page hits. As such it's pretty meaningless to the discussion at hand. If there are better example, then bring them forward in the discussion - PA isn't one.

Posted by: adw at April 7, 2006 06:22 AM

wow, hani and david in the same comment box. i feel obligated to make a showing.

Posted by: Ivan at April 7, 2006 06:25 AM

This is a very interesting development that I hadn't noticed a couple of months ago: Go Daddy! is now supporting Ruby and Rails with all but their lowest tier LInux hosting plans.

http://www.theregister.co.uk/2006/04/07/devil_rabbit/

Posted by: marshall at April 7, 2006 06:25 AM

"Admittedly, PHP and Visual Basic are ch*ap targets (we're talking about languages that don't even have name spaces!), but like it or not, they are the Web standard."

1 - VB.Net, as with all .Net languages, has namespaces

2 - "Visual Basic" is not used for web development, you would either use VBScript (for ASP), which is a scripting language, or VB.Net which is a much more powerful beast

Posted by: Patrick at April 7, 2006 06:27 AM

Does it actually matter?

Posted by: Danilo Medeiros at April 7, 2006 06:27 AM

hi, nice post, but ...

> First of all, Ruby.
> ... But it's a complex language that contains a
> lot of advanced idioms which will be very hard
> for PHP and Visual Basic programmers to absorb.

I don't know if this is true. In fact the most php-developers (I know) don't like PHP at all. If there a chance to switch to a advanced oo language they would do it at once! (And JAVA has this kind of "enterprise-thinking" most of em don't like)

greetz

Posted by: orbi at April 7, 2006 06:36 AM

> Sometimes, too much magic is too much magic, and it can definitely be the case that the flow of code is too direct or too clever to be understandable by regular developers.

Soo you think RoR is too clever to understandable. Now tell your "regular developers" to start a project from stratch using Struts and Hibernate or Spring !

Posted by: Dunand at April 7, 2006 06:43 AM

Good things are almost never mainstream.

Posted by: Mark at April 7, 2006 06:56 AM

I'm going to second that comment on RadRails. I just recently started using it and I LOVE it! A great feature is the ability to press CTRL-SHIFT-V and switch back and forth between the controller and the view. This feature makes it worthwhile alone! I also integrated it last night with my svn repository and so far it's working great. However, the one feature that I HATE in IDE's, but is one reason that I think Ruby won't make it in the enterprise is that it lacks the drag-n-drop capabilities of Visual Studio .NET. Personally, I would much rather code my own html which is why I am loving Rails. But I know many so-called 'web developers' at my work that wouldn't have a clue how to write all their own html.

Posted by: Davy at April 7, 2006 06:56 AM

I'm going to second that comment on RadRails. I just recently started using it and I LOVE it! A great feature is the ability to press CTRL-SHIFT-V and switch back and forth between the controller and the view. This feature makes it worthwhile alone! I also integrated it last night with my svn repository and so far it's working great. However, the one feature that I HATE in IDE's, but is one reason that I think Ruby won't make it in the enterprise is that it lacks the drag-n-drop capabilities of Visual Studio .NET. Personally, I would much rather code my own html which is why I am loving Rails. But I know many so-called 'web developers' at my work that wouldn't have a clue how to write all their own html.

Posted by: Davy at April 7, 2006 06:57 AM

> But it's a complex language that contains a
> lot of advanced idioms which will be very hard
> for PHP and Visual Basic programmers to absorb.

Yes, an interesting read but I did take offense to this statement. I am a php developer and don't use php because I am dumb and can't 'absorb' Ruby. We use it because it works in our app.

Posted by: Eddie Peloke at April 7, 2006 07:06 AM

I am curious what framework you are using for your Java development. I've been using the Fusebox framework since 2001 and it has served me well. I started out using it when I was programming cold fusion and now while programming PHP. I'm finding that while it was a good solution in the past the framework is lacking from a progress and overall community strength point of view these days.

I've been looking for a new pasture to program for the past several months and so far it has been an uphill battle. I'm trying to balance the advantage of learning a new framework, a new language, and finding features that simply make me more productive than I have been in the past. Of course on top of that I plan on scaling my company to several programmers in the future so I want to pick one that will be popular amongst the masses.

In my search I've found the following to be the most interesting.

Turbo Gears (Python) - http://www.turbogears.org/
Tapestry (Java) - http://jakarta.apache.org/tapestry/
Zend Framework (PHP) - http://framework.zend.com/
Atlas (.NET) - http://atlas.asp.net/Default.aspx?tabid=47

And of course Ruby On Rails.

In general my requirements are the following.

1. Rapid Development
2. Simplified Maintenance
3. Evolving and Community Accepted
4. Long Term Viability
5. Object Oriented

Of course if anyone else has any opinion of what the best framework would be based on these requirements then please let me know. :

Posted by: Jeff at April 7, 2006 07:09 AM

I think he you are way off the mark. RubyOnRails is *already* becoming more and more mainstream and I think you'll be seing LOADS of Rails jobs in a few years. Its attracting people from both sides of the spectrum, the smaller traditional PHP developers and enterprisey Java/.NET people.

On Ruby:

"But it's a complex language that contains a lot of advanced idioms which will be very hard for PHP and Visual Basic programmers to absorb."

Ruby is certainly not a complex language. You can do some complicated things with it but other than the mindset shift when it comes to certain Ruby syntax elements and idioms its a clean, easy to write language that isn't particularly hard, if you are even a half-decent developer. I can see it being strange for people coming from languages with more a C-style syntax like Java or PHP but its just a case of becoming used to it. And then there is the OO nature of Ruby - this should be no problem to Java developers and should only pose a problem to amateur PHP developers who have never touched OOP.

To be honest, if a programmer looks at Ruby and thinks "sheesh, thats too hard for me" they probably aren't a very good programmer anyway. Who cares?

On Rails: Yes, Rails can do some advanced things. So can PHP. Advanced/talented users will take advantage of these advanced things, amateurs wont. You seem to be having a hard time separating the amateur PHP hackers with little talent (who aren't going to go very far anyway) and the serious developers who already use things like OO, design patterns and unit testing etc.

No credible IDE: pah. You don't need an IDE to be productive, especially when working with a dynamic language like Ruby. Textmate rules, I'd use that any day over any bloated Eclipse-style solution (but if that is your thing, RadRails is developing at quite a fast pace).

"This is 2006, not 1996. The programs we are writing and the problems we are solving every day are orders of magnitude harder than back then, and our tools need to keep up with that need. Emacs is a fine text editor, but it's no longer adequate for modern development.["

Such utter nonsense. Text editors like Emacs, Vim, Textmate or whatever your preference can be very powerful and combined with a bit of command line proficiency can be a powerful and productive development environment. I certainly wouldn't hire anybody who relied on an IDE to be productive - its a crutch, nothing more.

Enterprise and scalability - the old chestnut that has been shot down time and time again. Rails scales - its already scaling for quite a few large, high traffic websites. People who spend all their time wondering about "can it scale" can kiss my arse. As for enterprise - well clearly there are going to be things Rails or Ruby aren't suited to. Thats a given. Use the appropriate tool for the job - but for probably 80-90% of web-based apps Rails does the job and does it well.

What a load of dross.

Posted by: Luke Redpath at April 7, 2006 07:11 AM

"This is 2006, not 1996. The programs we are writing and the problems we are solving every day are orders of magnitude harder than back then, and our tools need to keep up with that need. Emacs is a fine text editor, but it's no longer adequate for modern development."

I call bullshit. The problems really aren't any harder. We only think they are because they're different. Do you really think the work that the Sabre folks have done is easier than Basecamp?

sanj

Posted by: Sanjay at April 7, 2006 07:22 AM

Was Java dead in 96? Its still a new language, sorry if the devs arent making it perfect for you on day 1 or year 1.

Posted by: John at April 7, 2006 07:30 AM

Not interested. DHH is an arrogant prick (god of the Internet my ass).

Posted by: blah at April 7, 2006 07:34 AM

radrails is not an eclipse plugin it is a branch of the code.

Posted by: at April 7, 2006 07:46 AM

"Ruby on Rails will never become mainstream"

Heh! So, what? I didn't become a professional programmer to be part of "the mainstream".

(OK, I answer this myself below (^_^), but I just don't weight this factor that heavily.)

"they will just shrug away your points and kindly recommend that you read up on a thirty-year old technology that was the last thing they ever learned and that has been dictating every single technical judgment they have offered since then."

I grew up on IDEs & C (& eventually, C++). I've kept up with the times: Perl, Java, Ruby, EcmaScript, &c. It's only been recently that I've really gotten into Lisp/Scheme/Smalltalk/&c.

Yet, I still see little reason to use the newer languages instead of modern versions of the old ones. Scheme is malleable enough to do anything the newcomers can do just as well.

Sure, there's the benefits of a larger community that can be very important, but it doesn't change the fact that most of these new languages aren't really providing much new while leaving out much of what came before.

"Code completion or navigation, debugging, refactoring, project management, source control integration, etc..."

I've used IDEs, & I've used sets of individual tools that work well together. Both can provide the same features. 6 one, 1/2 a dozen the other. (Although I *could* go into the reasons why I've come to prefer the latter.)

Posted by: Robert Fisher at April 7, 2006 07:47 AM

Ruby on Rails lacks an enterprise-quality & scalable application server, and an enterprise-quality CMS.

Compare and contrast with Python/Zope/Plone.

Posted by: Tom at April 7, 2006 07:48 AM

Screwdrivers suck! Hammers rule! Screwdrivers will never be the right tool for any job. Hammers are the best and always will be the best, no matter what the situation.

Posted by: at April 7, 2006 07:51 AM

Screwdrivers are *clearly* better than hammers you old "enterprise" fool. HAH! who the hell uses hammers anymore! LOL. They're archaic and complicated! Very old school, very primitive. They can't even SCREW!

Posted by: Ivan at April 7, 2006 08:02 AM

I don't really see how an "enterprise-level CMS" is a Rails problem. Let somebody develop one, it has nothing to do with Rails, and theres more to web apps than CMS systems (thank god!).

Posted by: Luke Redpath at April 7, 2006 08:02 AM

Nice article, but I was surprised that you didn't mention Ruby's poor Unicode support as an issue. For me this is a showstopper, which is unfortunate because I do like Ruby as a language and Rails as a framework. For now I'm sticking with Python, which has good Unicode capabilities and some promising frameworks such as
Turbogears, Django, Pylons, etc.

Posted by: Cary at April 7, 2006 08:06 AM

Rails FAILS because the framework is too controlling and too low level for the web.

What we need now are AJAX widgets which can be designed the same way we design widgets in Java and G T K. Java people are already doing this, making apps which have both swing and AJAX web GUIs using exactly the same code. All they need to do is deploy, it is write once and produce multiple GUIs.

Rails developers don't believe in this at all. I know, I converse with them. Thus they have doomed Rails to a toy rather then a powerful tool like tapestry for java.

BTW your utterly retarded blog wouldn't let me use the string G T K

Posted by: steamengine at April 7, 2006 08:07 AM

"I believe that in ten years from now, people will look back at Ruby on Rails and will have the same reaction. I'm not sure what Web frameworks we will have by then, but I'm quite convinced that a lot of the current Ruby on Rails fanatics will have the same kind of attitude: 'That's nice, but Ruby on Rails already did this ten years ago, and better'."

What makes you think that people aren't already saying that about Rails? RoR is inordinately appealing to people who have never used a dynamic language before. But most people who've been doing web development for a long time have used and/or created similar (often proprietary, sadly) frameworks using <insert dynamic language here> long before Rails was a twinkle in anyone's eyes. RoR is significant because of its notoriety, not its technology or design.

Posted by: John at April 7, 2006 08:08 AM

Can Ruby/Ruby on rails do windows authentication? For intranet type applications where you want to automatically know who is requesting the page?

Posted by: Hydrozen at April 7, 2006 08:19 AM

Hydrozen, yes. See http://wiki.rubyonrails.com/rails/pages/WindowsDomainAuthentication

Posted by: David Heinemeier Hansson at April 7, 2006 08:38 AM

Opinions aside, this is just the sort of dialog needed by the Rails community to keep it from falling into technically advanced obscurity.

On a side note, while web application frameworks have become far better, and inexpensive, than before, the methods for documenting the design of a web application (i.e. boxes and arrows) is still dismally immature. Solving the web application design issue is the real "killer application" of the next generation of web frameworks regardless of what the technical platform is.

Posted by: Rusty at April 7, 2006 08:45 AM

There is another strong Ruby Web Framework: Nitro (www.nitrohq.com). You can find a lot of innovative features in this project, so install it, go through the examples and have fun.

Oooh there are some videos too:
http://www.nitrohq.com/view/Videos

Posted by: George Moschovitis at April 7, 2006 09:07 AM

I think, and hope, this is a self-denying prophecy.

Posted by: Ansel at April 7, 2006 10:01 AM

Wow, thanks David. I didn't expect an answer from the creator himself!

Posted by: hydrozen at April 7, 2006 10:05 AM

Hmm...

Several of your points revolved around how Ruby and Rails are too advanced for most people. I'm not sure what you're trying to do by pointing that out other than instill defeatist feelings. Why not encourage people to push their boundaries? Scary, yes, but guess what: mainstream is *never* the best, and there's no reason not to keep pushing things forward. Afterall, why do you get up every day? Just to get by, sure, but is that enough? I sure hope not.

Speaking of mediocrity, the "no IDE" argument, even with the word "credible" jammed in their, is FUDing of the shoddiest variety. If the people using an editor like Textmate, irb, all the awesome Rails scripts like breakpointer and console, etc. wanted to, they could call that collection of tools and IDE. But what's the point? It's just another bullshit term used to market something that already existed without a name.

As for fanatacism... this is a general human problem and it is unecessary to tie it to something this specific. Zealots are assholes no matter what the topic. Ignore them and do your thing. End of story.

On that note, I appreciate DHH's passion and what some call a lack of humility... it's refreshing in today's world, particularly software development where so many are stodgy and surprisingly conservative for a group using such creatively free and expressive technologies that come in a million different colors, shapes and sizes. I agree he can be abrasive and confrontational, but again... people... who isn't at times? Are you gonna let that bother you or judge the issue on its merits?

Posted by: Seth Thomas Rasmussen at April 7, 2006 10:15 AM

Cedric's got a point. I think the thing that's helped Perl and Python is that they're used for other scripting tasks, too. You get a double kick if you can use a language for OS scripting, application development, and web development, too. Yeah, I know Ruby can be used for those things, too... but it ain't. By the time it is, the Perl and Python communities will have developed a Rails like paradigm.

Sadly, most businesses view open source products as too risky. That limits the growth of Ruby, further. ASP, .net, the VB's ... they are just going to grow bigger... it's a safe management choice. Ruby will have to grow at a cost to Perl, PHP, and Python.

I don't know who said it, but Ruby's growth depends on a big glamorous, risk-taking, company like Google or Lucas Film adopting it. And, that takes time that Ruby doesn't have.

Posted by: BoPeaslee at April 7, 2006 10:22 AM

----- >8 -----
This is 2006, not 1996. The programs we are writing and the problems we are solving every day are orders of magnitude harder than back then, and our tools need to keep up with that need.
----- >8 -----

(I'm assuming you're talking about Web programs.)

I don't see that being the case at all. Can you explain how a transaction in your average current Web app is fundamentally more complicated than one in a 10 year old shopping cart program? You either pull data from a data store (RMDBS, record manager, flat file, session, whatever) and show it to the user or take data from the user, validate it, and stick it in the data store. Some Web applications do some actual work themselves, but the vast majority don't, and there were Web applications doing complex things back then.

In fact, I'd argue that it's *less* complicated now because we have a lot more and better libraries than we did then and they're much easier to get working. We've got easy access to pre-compiled RDBMSs, don't have to deal with record managers anymore, we've got templating libraries, database connection pooling, parsers, generators, and strippers for all types of formats, etc. that you rolled your own, went without, or paid heaps for 10 years ago. We had cgic and cgi-lib.pl and were on our own for a lot of the rest.

We're doing pretty much the same work now that we were then and have access to better tools. I have no axe to grind with RoR one way or the other, but it's more complex because you choose to use complex frameworks that impose their own overhead instead of just using the APIs that you need. Just because you can use a framework doesn't mean you should. It doesn't mean you shouldn't, either, but it is worth thinking about.


(And yeah, steamengine, what we need is more AJAX. It magically makes things good. More cowbell.)

Posted by: Nicolai at April 7, 2006 10:24 AM

Rails is making its way into the enterprise. I used to work for a very large software company, and I noticed something interesting.

The respected programmers -- the ones everyone goes to for help, and get alot of say in design decisions -- are checking out rails in their free time and starting to experiment with it.

Compared to J2EE, rails is easy and elegant. IDE issues will be resolved over time.

I do agree that some of the stuff that rails does for you transparently makes it harder to understand, but overall, I think it is much simpler than what is out there now.

Posted by: rails fan at April 7, 2006 10:24 AM

When will RoR support Unicode? For a developer of commercial apps, that is the question.

Posted by: roy at April 7, 2006 10:25 AM

Great Article.

Regardless of the ability of Rails to become mainstream/enterprise, it is a great time to be a programmer. It took a long time for the mainstream business apps to move from C to higher level abstractions like Java. I think the popularity of python and ruby (through Rails) are evidence of the desire of developers to move to the abstraction and flexibility even higher. Once this becomes commonplace, there will most likely be an abudance of interesting time-saving frameworks to choose from.

We just have to be patient :)

Posted by: Zachary Pinter at April 7, 2006 10:25 AM

One thing I do agree with is about having an advanced editor. Things like code completion and refactoring would be great to have with Ruby. I've been spoiled by Eclipse and now if I want to rename a Ruby method going back to using grep, or even using the global search and replace in TextMate is less than optimal. What makes it even more important (and difficult?) to have these features is the dynamic nature of Ruby. Screw something up, and you might not know for an hour until you do something that triggers compilation of that segments of code. (I know, I can hear DHH saying "Tests, grasshopper, you must write tests!"). While this is true, tests aren't a substitute for a modern IDE.

Posted by: Elan Feingold at April 7, 2006 10:25 AM

No IDE?

*looks over at other monitor, sees Rails project inside of Eclipse*

I don't know about you, but my IDE is based on the same framework as the Java industry standard: Eclipse. RadRails is a plugin for Eclipse, which means you also get the wonderful source control features available for Eclipse as well. As far as refactoring goes, refactoring is far simpler to do in dynamic languages (and the Rails project structure helps out quite a bit), so I really haven't had a problem with the lack of Java-equivalent refactoring tools. (And yes, it is available in plugin form. Guess what I'm using right now? They also have a standalone version.)

steamengine: Adding that capacity to Rails would be extremely simple. First, come up with a decent DSL for working with GUIs (probably borrowing a page from wxRuby). Second, write the glue code between that and whatever AJAX widget library you find appealing. Three, package it as a plugin for ActionView. Four, have a beer.

tom: Right now the application server for Rails is Lighty, but the Mongrel project is looking *very* cool, and may eventually resolve the whole "Apache hates FastCGI" problem (which is indeed a problem). It's a super-quick Ruby/C web server, designed for hosting single applications.

And Unicode... yeah, Unicode's a problem. Matz is on it, so hopefully we'll see this resolved in Ruby 2.0.

Posted by: Coda Hale at April 7, 2006 10:30 AM

Have you ever come across a programmer who's all excited about this new language X, and you tell him that Lisp did that thrity years ago, and that they should go read about it. But they just listen to you impatiently and then never actually bother to read about Lisp?

I was that impatient programmer myself, and I like Ruby too. I've only used lisp for the last two years, after I eventually decided to go and actually learn about it. Now I agree with those old fart programmers, Lisp has it over most other languages.

Posted by: Peter at April 7, 2006 10:32 AM

"...J2EE has been very, very good to a lot of people. There's no incentive to keep up with the rest of the IT world because Architecture is still telling them to use Java/J2EE"

Funny. About 10 years ago, IT shops didn't want to switch over from their comforable C++ lives to a new open source development platform called Java.

I'm fairly sure that RoR, and other similar MVC frameworks, will succeeed. It's only matter of time.

And after that, it is only a matter of time until some other disruptive technology replaces RoR.

Evolution is inevitable.

Posted by: at April 7, 2006 10:42 AM

RadRails is all well and fine -- and I used it a few months ago -- but last time I used it, at least, its Ruby support was a far cry from the Java support. If I have a model called Beer, I want to be able to do:

beer = Beer.new
beer.

and get a popup with all the field/members and types (yes, it would have to go to the DB). I want content assist on the whole Rails UI with documentation (just like with Java). I want rich refactoring tools like Java Eclipse has.

Last I checked, RadRails was quite nice, but lacked all these things.

Posted by: Elan Feingold at April 7, 2006 10:42 AM

RadRails is all well and fine -- and I used it a few months ago -- but last time I used it, at least, its Ruby support was a far cry from the Java support. If I have a model called Beer, I want to be able to do:

beer = Beer.new
beer.

and get a popup with all the field/members and types (yes, it would have to go to the DB). I want content assist on the whole Rails UI with documentation (just like with Java). I want rich refactoring tools like Java Eclipse has.

Last I checked, RadRails was quite nice, but lacked all these things.

Posted by: Elan Feingold at April 7, 2006 10:42 AM

I was a (quite bad) amateur php programmer. The ease of use and rush of excitement I got when discovering Rails turned me into a professional. Ruby's syntax may be "advanced" from a technical perspective, but Rails' use of domain specific language principles made it so that even when I was just starting out I was able to read and understand what was happening in a Rails app far better than I even could in a php project (even of my own making).

Rails also makes it easier to do comprehensive testing than not to. After a year messing around in php, the term had never even entered my lexicon. Rails makes me a better programmer than I would ever have become in php.

I don't know about a lot of the "enterprise" issues you guys are talking about here, but I do know that there are about a zillion people out there who are either independent php contractors or engaged amateurs who want to do make a dynamic website for some particular real world use. These people make most of the websites in the world and Rails is a quantum leap in both ease-of-use and productivity for them.

And, even further, I think Rails will bring in a lot of new people to dynamic web programming who are currently not doing it at all. When I got interested in it and first started with php, I found it incredibly depressing. It took an incredibly long time for me to accomplish any of the things I set out to do. Compare that to the famous Rails blog video.

Posted by: Greg at April 7, 2006 11:10 AM

I agree with everything except your comments about how hard it would be for PHP programmers to wrap their brains around Ruby.

I don't understand why you take namespaces to be some amazingly complex concept? I'm just a lowly PHP (and java mind you) developer, but I find namespaces (and pretty much all OOP) to be a no-brainer: it all just "makes sense."

And this is from a guy who had to make the jump from (procedural|functional|imperical) programming to OOP.

My only complaint - seemed like a low blow.

Other than that, interesting article. I won't jump on the Ruby bandwagon quite yet. I'd like to see a little more mainstream acceptance. When I can find even one Ruby programming job for every 20 PHP jobs - I'd consider it a language worth learning. Until then its a toy, relegated to the uber geeks who'd rather spend time picking up a new language than really mastering the one they were already using.

Posted by: jon at April 7, 2006 11:17 AM

"rails fan"
> The respected programmers -- the ones everyone goes to for help, and get alot of say in design decisions -- are checking out rails in their free time and starting to experiment with it.

Yes we are, doesn't mean we're anywhere near doing big new projects or converting large code bases of existing code to it.

I'd like to point of that Cedric makes great points, and one that gets my attention is the "fanaticism" one.

You see this with every language, but with RoR it's reaching absurd levels, and I really hope for the sake of this technology that people who want to promote are aware that many are coming off like that.

Posted by: Augusto at April 7, 2006 11:19 AM

If I disagree will I be labeled a fanatic? ;-)

First off: Yes, Ruby has lots of advanced features that your average VB, PHP programmer won't understand (initially) - features like closures, continuations, metaprogramming abilities - however, Ruby is quite approachable for newbies. You can certainly learn a enough Ruby without getting into those advanced areas to get your job done. Later on as the newby progresses they get curious and learn the more advanced features (though one could argue that continuations need only be used by about 1% of Ruby developers - the other 99% can get by fine without ever delving into them).

You say that Rails is the only Ruby-based web programming framework in town, however that is not true, there's also Nitro which takes a different philosophical approach. Yet even if Rails were the only game in town, it is a good game and in fact there is some evidence to suggest that the lack of choices in the Ruby Web programming space (and the fact that Rails is quite a good framework)is actually helping to some extent - it allows people to focus on Rails and the Rails ecosystem and perhaps it's less confusing for newbies. (but again, there is Nitro which isn't known nearly as much as Rails, but it's worth a look.)

Posted by: phil at April 7, 2006 11:38 AM

namespaces are a very basic concept. Way to take a low blow and alienate 50-70% of your potential audience.

Other than that the biggest reason why Ruby on Rais won't gain marketshare is that it is immature compared to other technologies (like PHP), and other technologies have corporate backing (like PHP + Zend)

Posted by: everphilski at April 7, 2006 11:47 AM

Now I wonder, how does this count:
http://www.oracle.com/technology/pub/articles/haefel-oracle-ruby.html

Posted by: Rimantas at April 7, 2006 12:21 PM

What I find amusing is the people posting here stating what jerks all of those #$%^& ruby fanatics are. Seems like a bad case of pot and kettle syndrome here (I am particularly looking at you, Hani).

Posted by: at April 7, 2006 12:28 PM

Rails not mainstream? I guess if you define mainstream as enterprise penetration, maybe not. But consider the following:

* The Agile book is still in the top few hundred of all books at Amazon, almost a year after its release.
* Curt Hibbs' article Rolling with Ruby on Rails has been in the top 5 articles on oreillynet for something like 15 months. That's just ridiculous.
* This very blog post (which BTW has some great points) has generated hundreds of comments within a single day.

That's what I'd call developer mindshare! And IMO that's more relevant than whatever's going on in the mind of Mr. Pointy-Hair at Corporation X.

Posted by: tj at April 7, 2006 12:49 PM

Well, I'm interested in how valid your comments are for Catalyst (http://catalyst.perl.org) - a perl framework that borrows from RoR, and other places. In my limited understanding it's a lot more flexible than RoR and so might have "enterprise features" that RoR lacks.

Posted by: kd at April 7, 2006 02:13 PM

Hey bub, Smalltalkers and Lispers are allowed to smug, because they're right, and more importantly, they almost always know more java/csharp than the java/chsharp guy they're being smug too. If you think you know more than them, you're woefully ignorant, they never stopped learning, they just see how small and inadequate "popular" languages are in comparison. They're smug because you aren't making technical points, you're just blabbing and embarrasing yourself by thinking you are.

Posted by: Anon at April 7, 2006 03:38 PM

Hey bub, Smalltalkers and Lispers are allowed to smug, because they're right, and more importantly, they almost always know more java/csharp than the java/chsharp guy they're being smug too. If you think you know more than them, you're woefully ignorant, they never stopped learning, they just see how small and inadequate "popular" languages are in comparison. They're smug because you aren't making technical points, you're just blabbing and embarrasing yourself by thinking you are.

Posted by: Anon at April 7, 2006 03:39 PM

Certainly an interesting writeup, but I think the problem may be the opposite of what you report.

RoR maybe its own enemy by becoming too popular too quickly and not having the proper marketing and project management muscle behind it like Java did, so its going mainstream and having too many growing pains because the product was not designed for the enterprise.

If you look at the history, it was designed for a single project and was extracted out of that. In RoR, deploying multiple apps (written in RoR) is hair-y. Integrating two or three different apps is hair-y. Scaling and architecture solutions are simple-minded (just throw more hardware at it .. or something).

Take a look at all that pluralization nonsense which really wasn't needed, but was put in there on the whim of a developer whose native tongue isn't even English (ironic?), and who insists that a table containing person entities should be named 'people' because it "sounds right". EFCodd and relational theory/calculus be-damned!

Like Chris Rock said, "You can drive your car with your feet, but that don't make it a great f**kkin idea!"

It is not a bad framework for one off CRUD front-ends to databases though. If by mainstream you meant Enterprise, then yeah, its got ways to go. No enterprise architect worth their salt will let this thing on their company's bread-n-butter servers in the condition its in right now.

Posted by: rorer at April 7, 2006 03:40 PM

The only thing Lisp is good for is writing a cron job to check your favorite anime site for the latest tentacle rape videos (and you know you do).

While you're writing Lisp in your mother's basement, the rest of us are making 6 figures writing J2EE or even PHP apps.

Let me know when you find a website worth a shit written in Lisp. Loser.

Posted by: anon2 at April 7, 2006 03:44 PM

Rails is hard to learn?

I'm teaching my technically inept girlfriend RoR. She's never had a day of programming or CS classes in her life. She's never learned a programming language in her life.

Nothing, so far, has been confusing to her about RoR.

The "magic" that we take for granted, to people new to web frameworks, is just "the way things are."

Take scaffolding. I hardly use that in my professional Rails career. But for her, that's just like, a really nifty way to get a barebones webapp going. I had to explain to her that, back in the day, you'd have to write all these silly little HTML forms by hand.

Re: going mainstream.

The point about PHP being "just there" on any *nix webhost is a valid point.

Will Ruby/RoR ever be like that? Who knows. It took PHP, what, 4-6 years to get where it is today? It's certainly naive to say / believe that RoR will be just a "blip" on some radar in 2-4 years.

15-20 years? Maybe. But I doubt that too... Is C/C++ now a "blip" on the radar?

I've never really felt lacking w/o a so-called "Rails IDE". The coders I've known who were dependent too much on their editors, I never really respected that much. Get them outside of Visual Studio .NET or Eclipse, and they were like children lost in the woods.

Of course, that's because bloated frameworks like ASP.Net and J2EE demand those editors.

And ... if anyone in the RoR scene is fanatical... it's because we don't want to go back to our J2EE/ASP.Net/PHP worlds.

We don't care if *you* like it over there (that's all very fine and dandy), but don't make *us* go back. The scenery is nice over here.

Posted by: Shanti Braford at April 7, 2006 04:36 PM

the whole web world. what about the people who learn to program using ruby? i think it's too soon to tell the future of rails my friend. it is still young. pure object-oriented methods are becoming mainstream with java and .net. pure object-oriented scripting is simply the next step. object iteration is one of the concepts which makes ruby so fun, and i think it will appeal to youth. youth owns the internet.

Posted by: hirbivore at April 7, 2006 05:36 PM

I have been programming since 1968. I've used assembler for many different computers, as well as Fortran, Snobol, Basic, Prolog, Pascal, C, C++, Forth (yuck), Logo, and many domain-specific languages; I've programmed scanners in lex, compilers in yacc and also in recursive descent Pascal and C; I reversed engineered and decompiled a sound-processing language, building a system which translating automatically from hex machine code to signal-flow diagrams; I've done a lot of embedded and/or real-time programming; I designed and implemented a bytecode Pascal system with real-time extensions; I've designed hardware, both analog and digital. I've worked extensively with cellular automata, including studying Von Neumann's papers and those of E.F. Codd, who later went on to create the core relational database concepts. I even built my own DTL (diode-transitor logic) gates "back in the day". I really do know computers from the electrons up.

My assembly-language work included some truly complex projects, programs which would not be trivial in any language, and which, given the slow processors and tiny memory resources available in their time period, could never have been programmed in any other language.

I've written complicated event-driven programs for the Macintosh, for Windows and even for a few one-off embedded architectures.

For the web systems I now create, I find it necessary to mix five languages: HTML, CSS, JavaScript, PHP, and SQL. I could not say that any of those languages has been entirely trivial to learn up to the point of using them fluently. To create working web systems, I also have to understand .htaccess files, Unix permissions, Bash scripting, construction of crontab schedules, and other server concepts.

And (finally) here is my point: I have found PHP to be friendly, convenient and productive. Granted, I have so far used PHP as a solo programmer, so any problems with multi-programmer interactions have not arisen. Maybe that's where namespaces would be necessary. Otherwise I can't seem to think of a reason I would need that feature.

I find PHP to be concise and readable. I add a good number of comments to my code, so I can easily figure out how things work when I have to return to it later. I am annoyed that PHP does not really support Unicode or other multi-byte coding schemes, and that the combined use of single and double quotes can become confusing in some situations. Otherwise I am quite happy with the language.

We always read about end-user software that is supposed to be easy to learn and use. Why shouldn't the same criteria apply to programmers' software -- that is, to languages and development systems?

The fact is that the same criteria DO apply. Popular programming tools MUST be easy and intuitive to work with. They have to be simple enough to use that even people who are less gifted and/or less studious can be productive with them to some extent.

Finally, procedural languages work the way the underlying hardware works. That can be a real advantage when one is trying to get good performance.

I hope I have not shocked or disturbed anyone by speaking up for PHP. Doing so seems to be taboo in discussions like this one. But there must be SOME reason why PHP is so popular...

Posted by: Ralph at April 7, 2006 11:52 PM

In my opinion, it is unclear if RoR will or will not become a widely-popular platform. I think it takes more than just technical merits to take it there (Zope and ColdFusion come to mind) - it requires lobbying in same way or another.

In other words, I think that matter of Rails becoming mainstream is in our own hands - if enough of us decide to use it, it will, if not, it will not.

Personally I believe that RoR will fill a decent niche in the web development game (as no technology can seriously pretend to become everything for everyone) and will co-exist with PHP and J2EE.

Posted by: Baglan at April 8, 2006 12:36 AM

Hum... if you go look at shared hosting companies, many are offering RoR, if you look at the tops almost all have RoR and PHP included in unexpensive packages. So this argument

"-Lack of support from Internet Providers."

is pretty much dead. If it's not already 50% it will be very soon. "Anyone who wants to run a Java EE application will most likely host their own servers." I agree, i don't even see RoR and Java in the same ring, the true competition for RoR is PHP, not Java.

Posted by: Daniel MD at April 8, 2006 05:22 AM

One of the biggest reasons Java has become a success is that Sun and IBM couldn't be pushing it any harder than they have over the past decade. Furthermore, academics have whole-heartedly embraced it as the best all-purpose OO language. Put together, that's a triumverate that's hard to beat. Until Rails sees that kind of corporate and academic support, I think it will stay a phenomenon for small- to mid-scale web development.

And that's okay. I hope it does stay that way. That's what it was designed for, and the complexity required for it to become all that Java is would make it way more complicated than it needs to be.

Posted by: GregM at April 8, 2006 07:13 AM

Damn it. You said you like RoR. I was looking forward to some real good fight. It's no fun fighting you because you take stand on both sides. My hero is James McGovern. All bloggers should learn from him.

:-)

Posted by: Neeraj Kumar at April 8, 2006 08:45 AM

I just posted my thoughts here, related to the high-maintenance IT professional stereotype. Let me know what you think.

Posted by: Obie at April 8, 2006 10:04 PM

For those of you citing XML and complexity in Spring/Hibernate et al, please check out the annotations/DI/persistence facilities in JEE 5. It is simply awesome and cuts down development times to 1/3 as well as centralizing code and meta-data (and doesnt force "convention" like RoR).

Add to this the other facilites offered by a typical EE container eg JMS and JMX and you begin to understand why Ruby penetration in the entrprise is going to be a bit slow. Please note: I am tallking about Enterprise here, where "baby sitting a database over the web" is just ONE of the things that is under consideration. And in such places code needs to live for a long period and will be looked at > 1 (average minded) people over time.

Also see

Posted by: Sawan at April 9, 2006 11:05 PM

For the record, I am one of those old Lisp, Scheme actually, guys who believes that God used it to program the universe. It is not, however, the last thing I learned. To feed my family I learned C, I learned C++, I learned enough about databases to be (very) dangerous. I learned enough about HTML and CSS to talk intelligently to Web Designers. Now, mostly for pleasure, I'm learning Ruby/Rails. In all of that learning I saw very little that wouldn't have been simpler and more elegant in Scheme.

Regarding IDEs. A good IDE does not ensure success. The Smalltalk development environment has yet to be surpassed but Smalltalk remains a niche technology.

Those are minor points. In general I enjoyed your write up and will continue down the Ruby path.

Posted by: Ward Harold at April 10, 2006 10:18 AM

Why Ruby on Rails won't become mainstream?

Because idiots like will be forever writing articles named "Why Ruby on Rails won't become mainstream?"

For gods sake... it makes me so angry. A lot of people reading your article will believe you, then they will only perpetuate what you say, tehn ultimately, it will be thought of as true..

Posted by: Chris at April 11, 2006 08:11 AM

let him dismiss ruby and ruby on rails-- i've got no problem leaving behind the naysayers and the "mainstream"-- there are more than enough very talented folks on board to keep pushing this envelope beyond the amazing state it's already at, and if the mainstream can't handle it, then they will create crappier sites and pay more for theirs and be slower to market and they will ultimately fail.

Posted by: at April 11, 2006 11:26 AM

I work for a government IT department, the biggest issue from our perspective to limit adoption of Ruby and Rails framework is the “Risk Adverse” nature of IT departments. While we might try a small pilot project, very few government organizations are willing to take the risk in developing ruby based applications for mission critical applications. I’m not so concerned with the lack of development tools; I’m more concerned with the lack of support for interfacing with other technologies. I don’t want to get into the Microsoft versus Linux debate, but if an organization has a substantial investment in Microsoft technologies (i.e. SQL server, Exchange, Active Directory) then it has to have a tool that will help leverage that investment. I want a tool that I can connect to a Microsoft SQL server instance as easily as I can connect to a mySQL instance. I know a lot of developers who are just like me, we like ruby, its fun and easy to learn and powerful, but at work I need a tool that will interface to an Oracle database and a MSSQL database and an Exchange Server. I need Ruby on Rails to work on IIS as easily as ASP.NET, or ColdFusion or even PHP. I want a setup package that will configure Microsoft IIS while it installs ruby (just like PHP) Until I see more cross platform (i.e. Microsoft support) we could not recommend Ruby as a serious in house development tool.

Posted by: Marc Truitt at April 11, 2006 02:02 PM

Corporate environments are not the place to test out new technologies, as I was quickly flamed by the guys who signed the procurement orders when I posted on our internal developer forum mentioning the benefits of Ruby on Rails. I can see it from their point of view, as the primary concern of a business is protection of investment, not experimentation. Even if the CTO of a large corporation joins the RoR cult, he will still have to justify to his superiors the savings and the risks of a large scale migration. This kind of barrier is what prevents RoR going mainstream. Having said that, taking a lesson from the Linux books, every large corporation has a backdoor, namely developer adoption, so there is a way. Like you, I like Rails and all my websites are built using Rails, but the biggest premium is still being paid for Java/J2EE/ASP.NET developers, so that is what I do during the day in order to fund my nocturnal Rails projects.

Posted by: David Tran at April 12, 2006 03:54 AM

@Matthias Georgi: He indicates that he can do code completion, navigation, debugging, refactoring, project management, source control integration, etc. all the time with emacs.

For Java, this is bogus. The quality of these features in emacs is so far below the big Java IDEs, it's almost not fair to even compare them. The next time someone says something like this to you, ask them to show you on their emacs screen - Then you will know what I'm talking about. Usually people who make statements like this aren't aware of what a real IDE from this decade is actually capable of.

Posted by: w1000 at April 12, 2006 08:59 AM

I'm in the midst of a small project at a large company to validate whether Ruby on Rails can be a useful enterprise tool.

I disagree with your conclusion that RoR will never find a place in enterprise computing. If you look at the question from the perspective of hard business value, it's clear there is a lot to gain from the sheer productivity of RoR.

As far as scalability goes, I think it's a non-issue. Enterprise computing isn't a one-size-fits-all proposition. Everything in an "enterprise" doesn't have to be gigantic or scalable to gigantic size.

Consider a technical environment that has a library of shared services and back-end resources that are accessible through those services. There are many projects to develop tactical, vertical, customer-facing business apps, and they're typically built on web technologies even if they're only for internal use, since web technologies are fairly standardized and straightforward. In that environment, creating one of those small business apps is a matter of orchestrating pre-built services, presenting a UI, and maybe writing a bit of custom logic here and there. Those little apps don't have to scale, because the heavyweight stuff is all in the back end infrastructure which is already scalable.

What sort of tool do you see fitting into that part of the enterprise? RoR looks like an excellent fit to me.

What I'm playing around with are things like connectivity with Active Directory, writing Web Services client code, and so forth. It's all pretty basic. RoR doesn't have to replace technologies like Java or .NET to have a well-justified place in enterprise computing where it can deliver real business value. Instead, it can complement those technologies in a way that takes advantages of its natural strengths.

Posted by: Dave Nicolette at April 12, 2006 01:48 PM

I'm in the midst of a small project at a large company to validate whether Ruby on Rails can be a useful enterprise tool.

I disagree with your conclusion that RoR will never find a place in enterprise computing. If you look at the question from the perspective of hard business value, it's clear there is a lot to gain from the sheer productivity of RoR.

As far as scalability goes, I think it's a non-issue. Enterprise computing isn't a one-size-fits-all proposition. Everything in an "enterprise" doesn't have to be gigantic or scalable to gigantic size.

Consider a technical environment that has a library of shared services and back-end resources that are accessible through those services. There are many projects to develop tactical, vertical, customer-facing business apps, and they're typically built on web technologies even if they're only for internal use, since web technologies are fairly standardized and straightforward. In that environment, creating one of those small business apps is a matter of orchestrating pre-built services, presenting a UI, and maybe writing a bit of custom logic here and there. Those little apps don't have to scale, because the heavyweight stuff is all in the back end infrastructure which is already scalable.

What sort of tool do you see fitting into that part of the enterprise? RoR looks like an excellent fit to me.

What I'm playing around with are things like connectivity with Active Directory, writing Web Services client code, and so forth. It's all pretty basic. RoR doesn't have to replace technologies like Java or .NET to have a well-justified place in enterprise computing where it can deliver real business value. Instead, it can complement those technologies in a way that takes advantages of its natural strengths.

Posted by: Dave Nicolette at April 12, 2006 01:48 PM

I think we're all missing the point here. Ruby is the language and it's a beautiful language. Rails is the framework - in almost it's first iteration. It's separate and distinct from Ruby and ultimately completely replaceable.

To argue about whether it will or won't see commercial uptake is largely irrelevant. What you should be considering is what Rails actually is. It's not a development environment and it's not the ten commandments; it's a web design paradigm that just happens to have been defined in code and it's real strengths are in it's enforcement of a (kind of) programming discipline that can be shared amongst a team, the abstraction of data integration into a 12-line config file and the ability to prototype a web application very rapidly.

This latter feature wins my approval and admiration. To be able to produce a workflow in a few minutes, that could potentially take hours or days in a PHP environment is a gift. Throwing AJAX in as well is just the icing on the cake.

Regarding the point made above about it being difficult to transfer skills from the PHP and ASP backgrounds that many web programmers have, I say - that's just our lookout. The irony is that it's probably easier to learn if you don't already have an appreciation of scripting languages because it seems to be based around common sense expectations. And if that really is the case, a lot more people will start to use it.

So to sum up: I think RoR has already done it's job because it's making people sit up and think about exactly how they want to build the next generation of web applications.

And it is great to see an idea take hold and create so much of a buzz on the internet *without* the marketing muscle of Microsoft or Sun or Oracle behind it.

Posted by: Robin Layfield at April 14, 2006 02:19 PM

what about Flex?

Posted by: Erin at April 16, 2006 05:54 PM

on emacs "IDE": I really don't quite get the productivity boost when using emacs as compared to eclipse. Perhaps, the perception of what an IDE is makes this difference. Eclipse can definitely do mouseless manipulations. Modern, contemporary and GUI-based IDEs do have a lot of superior functionality as opposed to vi and emacs world. I for one refused to get out of vi and to some extend windows notepad until I got converted to Eclipse.

on RoR: As for RoR, IMHO, Java EE is still superior in terms of maturity and product and service support. RoR can deliver a faster time-to-market, but will not scale up to most of large-scale enterprise requirements. I doesn't really matter whether the language/frameworks I use is from the evil ones (ie, M$, Sun, Oracle, etc.) as long as it gets the job done and does it well. For years, we've seen Java delivers enterprise requirements and did it well.

Posted by: Richard Relos at April 17, 2006 10:47 PM

I also have responded in a more detailed point-by-point basis. Oh, in perspective, I'm a recent RoR fanboy, I know a bit of Smalltalk / Lisp, and I am abrasive and arrogant. You've been warned. I also try to be a good author and be subjective. :)

http://greenmeggsandspam.blogspot.com/

P.S. I'm also a Mormon, but I've never really went and knocked door-to-door. :: shrug :: I would *definitely* not call myself a sheep however; nor do I think DHH is God and has provided the One True Way to Webdom...

Posted by: Curtis at April 22, 2006 01:13 PM

"Fact is, RoR might be great for writing blog engines (as if we don't have enough already), but why oh why isn't there a standard security model? Why must I spend hours downloading weird plugins & code generators to do something that a Java web container does out of the box?"

You don't, you can write your own in about the same amount of time and it's your code (that's the wonder of RoR). But yes, there needs to be a consolidated effort to standardize some of the documentation. There are some great books out there for good sample code and such, of course that does require some expendature of funds which not everyone can do... :: shrug ::

Posted by: Curtis at April 22, 2006 01:23 PM

"For the web systems I now create, I find it necessary to mix five languages: HTML, CSS, JavaScript, PHP, and SQL."

If you substitute RoR with PHP, the entire rest of the content of the posting works as well. It's just a different component of the package.

"But there must be SOME reason why PHP is so popular..."

There is! It came out *before* RoR. Give the world another year. :) Honestly, PHP is a fine language, but Ruby and Rails could be better for most applications.

Posted by: at April 22, 2006 01:47 PM

I looked at ROR for a while and followed the mailing lists relevant to it for 6 months or more. During that time I simply couldn't find a single, compelling reason to switch.

Don't get me wrong, I moved away from PHP... but I went to .Net 2.0 for both application and web development.

It's free (including the database) it's fast, the IDE is amazign and the language and object libraries kick ass. Tack on SVN for source control and life is good :)

Posted by: Soulhuntre at April 25, 2006 11:16 AM

I work for a consulting firm that has some active rails projects. What I am finding is that I bump my head up against the framework just as often as I do in any other language. My personal preference? Object Oriented-PHP 5 with no framework, aside from some basic code generation, but I don't feel like getting flamed here ;)
Nobody seems to respect PHP 5 and its capabilities. However, I see value in rails. I don't think its the end-all-be-all answer to everything, but it certainly is a tool that I am glad I am adding to my portfolio. I'm a firm believer in using the right tool for the job at hand so it never hurts to have alot of tools at your disposal.

Posted by: Ryan at April 26, 2006 08:13 AM

Cedric,

since you are an insider at Google, what is the position of Engineering regarding RoR? Google seems to be 'officially' big on Java, C++ and Python but does it allow you guys to use anything like RoR to build things that may eventually become production [aka 'Beta'] grade (in your 20% for example) ?

Juste par curiosité...

Merci.

Posted by: Romain at April 29, 2006 08:23 AM

Good post Cedric and I enjoyed the follow up. I disagree with your views on Emacs, and you forgot to mention Perl5 alongside Smalltalk and Lisp ;)

"Emacs is a fine text editor, but it's no longer adequate for modern development."

Our team of five use Emacs in conjunction with our RoR-like web framework bOP, and we take advantage of code completion, debugging, refactoring, CVS integration, unit and acceptance testing, etc all from within Emacs. Our small team maintains an open source framework, an industry leading online application, several long term consulting projects and several start up companies.

Somehow we manage to be more productive than any other team of 5 or 25, at least that I know. Emacs doesn't hinder us. I still like Eclipse and IntelliJ, but I haven't used either in nearly a year and don't really miss them beyond their attractive UIs. Granted I rarely ever have the development headaches in bOP that I did in C++ or Java where "modern" IDEs help :)

Posted by: Alex at May 10, 2006 12:21 PM

Reading these comments are like a big deja vu for me.

Anybody remember 1995 when Java was released and people said:

"Java is a silly little language which is fine for running cute little dancing graphics, but we are serious programmers and we code in C or C++"

or

"Java isn't even compiled it won't scale nor compare to the speed of much more mature and compiled languages. "

or

"Wasn't Java created to handle TV Set boxes it won't be used to integrate into SAP or real backend systems."

or

"It's just a fad it will go away. No company will throw away the millions of dollars invested in C,C++,Cobol and embrace Java."

Now reread this thread and simply substitute Java with RoR.... think about it.

While reading Cedric's article I had a hard time not thinking this was all just tongue-in-cheek writing.

How does that argument work, most companies are too stupid to know how to use rails? LOL! While I don't disagree that many companies have too many mediocre coders, and too many self-inflated architects (AKA people who can't code or manage but we need to put them someplace) it just doesn't flow.

Smart coders are always looking for better ways to do things... if it weren't for them we would all still be doing COBOL. :)

And what is the problem with arrogance? That's the drive of an engineer; to show how you can do something faster, chea per, and/or better than the next guy.

I have heard DHH talk and I think those that complain about his "arrogance" are just too thin skinned, and/or envy what he has accomplished.

False modesty is for people who can