About the Author

Chris Shiflett

Hi, I’m Chris: web craftsman, community leader, husband, father, and partner at Fictive Kin.

Ruby on Rails Fans

Update: Jeff Moore has written a compelling argument suggesting that Rails is for flexies.

I'm glad to see all of the hype surrounding Ruby on Rails lately. I've always been an advocate of open source software, and Ruby (particularly Ruby on Rails) is yet another feather in the cap. I'm not afraid to say it - I'm glad Rails exists.

I do think it's good to maintain some perspective, and some Ruby fans are more than a bit overzealous. Ruby on Rails is a niche technology, and although all signs indicate that its popularity is growing rapidly, it's a bit premature to be thinking that it will dethrone existing technologies. In fact, history has shown that technologies can happily coexist, even if they target the same problem space. The success of Rails doesn't depend on another technology's failure.

Like Andi, I don't see Rails as a direct competitor to PHP, but my reasoning is a bit different. Both target the web problem, sure, but the ideologies behind them aren't very similar. (Rails seems more like a better J2EE than a better PHP.) Those who prefer one over the other are already of a different mind.

I should elaborate, but I'm hesitant to try to explain such an ethereal topic. Recognizing tendencies can tempt one to make generalizations, and generalizations are rarely useful or accurate. However, I think recognizing tendencies can help us to understand a group of people. Web developers are a diverse group, but I think it's possible for us to be divided based upon the qualities that we tend to admire most in a technology:

  • Flexible and Powerful
  • Structured and Organized

Of course, these qualities aren't necessarily mutually exclusive, but there is a balance to be made in most cases. Those who prefer "Flexible and Powerful" (let's call them flexies, since they desire flexibility) like to develop in C, C++, Perl, and PHP. Those who prefer "Structured and Organized" (let's call them stiffies, since they desire structure) like to develop in Java, ASP.NET, and Rails. Flexies see stiffies as those who spend more time thinking about problems than doing anything to actually solve them. Stiffies see flexies as those who don't do enterprise development. (Some flexies appreciate structure and organization, but they prefer freedom.)

I think Java has been a burden on the web industry for years. Java apologists have tried to explain to me why it's the best choice for web development, but the truth is that history just doesn't support this stance. A web application built primarily with Java technologies tends to require more developers, more money, and more time. The finished product (if there is a finished product) tends to be substandard. Sure, some developers can make great web applications with Java, and MacGyver can make a bomb out of a stick of gum. I'll take my chances with the gum.

Rails is shaking things up by providing stiffies with a better choice for web development. (It's also lowering the barrier of entry in much the same way that PHP did for the flexies.) Those who prefer (or will prefer) Rails over PHP are probably either not using PHP today or aren't happy to be using it. (Maybe they just think it sucks less than Java and ASP.NET.) I'm glad there's an emerging technology that will let these people be happier and more productive developers. I think we'll see better web applications emerge as a result.

But, it's a bit early to think Rails will replace Java. Maturity matters. (This is especially true for stiffies.) PHP is getting a lot of attention these days in the business community (in fact, one could describe its recent growth as explosive), but many businesses still see PHP as cutting edge. This is a technology that's been around for more than a decade, yet it's considered cutting edge.

It's also important to realize that excitement is subtly different than popularity. Excitement is trendy. Ruby hasn't yet made the TIOBE Top 20 - its popularity still falls far short of Java, C, C++. PHP, and Perl. In fact, Ada and Fortran are more popular than Ruby.

If you're like me, you expect to find that Rails is used to build many of the Web 2.0 applications - you know, the kind of applications you sell to Yahoo for millions:

I sense the presence of flexies. Let's see what else they've been up to:

These are the only Web 2.0 applications I use with any consistency. I honestly expected to find many more Rails applications, so I decided to specifically look for some, and I discovered a list of Rails applications. Apparently most of the good Rails applications are developed by 37signals (they created Rails), and they're all pretty cool:

I think a larger point is that good applications are built by good developers, not technologies. Did you know what all of these applications were written in? Did you care? Be honest.

I'd like to end where I began - speaking about Rails fans. I spoke with a Rails fan the other day who had this to say:

You need to be quite a bit more of an advanced programmer to get into Rails.

This type of argument always makes me raise an eyebrow. It can be restated as "Our technology is better, and if you were smart enough, you'd agree." If I have to be smarter to use your technology, then your technology sucks.

On the Ruby on Rails site, Tim O'Reilly has this to say about it:

Ruby on Rails is a breakthrough in lowering the barriers of entry to programming.

Tim's statement does more to improve the perception of Rails. Easy is good. Let's roll with that.

About this post

Ruby on Rails Fans was posted on Wed, 01 Feb 2006. If you liked it, follow me on Twitter or share:


1.GrumpySimon said:

I agree completely - and I have to say that some of the Ruby fanboys about there are more annoying than starwars geeks.

However, the thing to remember is that the hype is mainly around the framework ( the "..on rails" part ) and not the language itself. Some people do prefer it because of things like closures, but the main arguments for it are things like "I can get a blog app written in 20 minutes". It seems to work well for your standard one table CRUD apps, but breaks down when your db and app gets more complicated ( so I've heard - I may be wrong here )

The same hype is surrounding the python frameworks ( Django, Turbogears, etc ), and again, these are very cool, as far as frameworks go.

So - PHP needs a shiny framework out there to cater to these people who want this rapid development ( & who doesn't? ), for simple apps. It should take care of all those boring parts like escaping html, templating, CRUD queries, etc. Hopefully the Zend App. Framework will do this, if not there's always CakePHP.


Thu, 02 Feb 2006 at 00:38:29 GMT Link

2.kenrick said:

I think ruby works well to solve a certain subset of web problems and does it well. I don't think the creators mean it to solve every problem out there, thats really rediculous as a developer to claim that you have the one true solution. Just make sure you app is secure, flexible, and works. Thats success.

Thu, 02 Feb 2006 at 01:01:54 GMT Link

3.Greg Beaver said:

"stiffies"? Please tell me this isn't Freudian, Chris ;)

Thu, 02 Feb 2006 at 02:05:56 GMT Link

4.Carl Youngblood said:

I think your analogies are bad. Most rails guys see themselves as diametrically opposed to everything in Java and other enterprise frameworks. You're the first person I've seen who classifies them in the same category.

I used to program in PHP all the time (so did the creator of Rails). It's a great language. But there are some things in the way Ruby works that makes creating domain specific languages easier than it is on PHP.

I think that your choice of appeal to certain popular apps to demonstrate PHP's superiority is specious. PHP has been around a lot longer. Wait 5 years and then you'll have a fairer comparison.

Thu, 02 Feb 2006 at 02:40:41 GMT Link

5.Carl Youngblood said:

Excuse me--poor editing job. I meant to say, "I think that your appeal to certain popular apps to demonstrate PHP's superiority is specious."

Thu, 02 Feb 2006 at 02:41:52 GMT Link

6.Dave Magill said:

Hi Chris,

Nice write up and about as fair as can be. I'm intrested in Rubyonrails but warey (sp?) of using something just for the sake of using it. On the other hand, it does remind me of COBOL. I'm not quite sure why, but it just does. Maybe it's the lack of line terminators, or the indentation, throw in some capitalisation and it'lll look even more like COBOL.


Thu, 02 Feb 2006 at 03:00:27 GMT Link

7.bivouac said:

I've been using Ruby for the past couple of months but specifically for Watir (automated testing). I think it's been a great learning experience and a decent introduction to Ruby. And I've also gone through the RoR tutorial in the Prag Prog book - which was a nice weekend excercise. However, I think Chris has a point.

This Rails madness is very Jonestown-esque - everyone's drinking the kool-aid. But I don't think that's such a bad thing.

When I go into my kitchen to cook dinner, I have a variety of tools to choose from. That variety is a good thing - sometimes I want to use the stand mixer to do something and sometimes I want to use a whisk. Each gets the job done, but each does it differently.

I think having multiple ways to solve different problems is a good thing, but for groups of people to think that they uncovered a silver bullet that's going to make development easier, quicker, better and simpler are simply fooling themselves.

Thu, 02 Feb 2006 at 03:52:24 GMT Link

8.Chris Shiflett said:

"Most rails guys see themselves as diametrically opposed to everything in Java and other enterprise frameworks."

I'm sure they do, but if they were flexies, they'd have appreciated Ruby before Rails. Yes, Rails is better than anything I've seen in the Java world, but its strengths are structure and organization more than flexibility and power. The language is raw, and Rails provides structure.

"I think that your appeal to certain popular apps to demonstrate PHP's superiority is specious."

I think you've missed the entire point. Based on what I've written, it's clearly not possible to demonstrate that PHP is superior. It's a different tool that those of a different mind prefer, but that doesn't make it better or worse. Try to resist the urge to treat this like a competition, because it's not.

Aside from the fact that I'm clearly a PHP developer, I'm not sure how anyone could read this blog entry and think that I don't like Rails. I have nothing but good things to say about it. I just think some of its fans need to curtail their enthusiasm to more realistic levels.

If a Java developer wants to get defensive, at least that will make some sense. :-)

Thu, 02 Feb 2006 at 04:32:15 GMT Link

9.n said:

i think you're not really comparing similar things - ruby on rails is a MVC framework (which is made for stiffies, i agree) - and php is a language (which can have frameworks like some MVC based ones talked about here http://www.phpwact.org/php/mvc_frameworks ). ruby can be used without rails to do web development - and that could be compared to using php to do web based development (like most do)

Thu, 02 Feb 2006 at 04:37:22 GMT Link

10.Chris Shiflett said:

You're right about Rails being a framework and PHP being a language, and yes, this is the primary reason that they're so fundamentally different. PHP is raw and unstructured, as a programming language should be. Rails is structured and organized, as a framework should be.

I guess the Zend Framework will be frequently compared to Rails, and perhaps these technologies will directly compete. I'm betting against it.

I see the Zend Framework as an attempt to move PHP closer to the structured and organized side, but there's a strong desire to remain close to what PHP does best - solving the web problem as simply and directly as possible.

Thu, 02 Feb 2006 at 04:45:38 GMT Link

11.lame said:

What a lame comparison.

You're comparing a web development framework with a programming language.

Thu, 02 Feb 2006 at 04:55:09 GMT Link

12.Chris Shiflett said:

I should probably have written one of those anticipatory FAQs for this entry. Luckily, answers already exist for the two most common and/or likely questions.

Q: Why don't you like Rails?

A: http://www.beust.com/weblog/archives/000348.html

Q: Why are you comparing a language to a framework?

A: http://www.loudthinking.com/arc/000553.html

Thu, 02 Feb 2006 at 05:14:25 GMT Link

13.Ivo Jansch said:

Mind you that you are focussing a lot on the ajax side of Rails. This is just 'one of the features' of rails. They use the 'prototype' library for all the nifty dhtml/ajax features. All the sites you mention are examples of how prototype can make your apps flashy, but this could also be done using prototype in combination with other (php even) frameworks.

Thu, 02 Feb 2006 at 08:19:13 GMT Link

14.Ilkka Huotari said:

Sorry for jumping on to Java for a while.

BTW, isn't Gmail written in Java?

And, isn't there one clear advantage in Java compared to others - that the app is always running? No need to include() this, require() that, and construct the data from the database every time a request is handled? That the code and data can be permanent in memory (can it?) is a great point in my mind.

Now, I'm not completely sure about that - I'm a PHP developer and basically I wanted to hear your opinions on this - maybe I'm completely wrong.

Thu, 02 Feb 2006 at 08:48:36 GMT Link

15.DearLord said:

Another DHH disciple? Don't kid yourself. Java isn't batting an eye at Rails. Even if they wanted something that did Rails functionality, Trails already exists:


Rails is a threat to the Php space if anything, but Zend will do everything in its power to avoid being taken down.

In reality though, Rails is just too damn slow as a development tool to not laugh at. Open your eyes at :


I get the impression most of the people who use technologies like Rails and prefer it over Java, don't really use Java at all. I suppose that they don't realize Java web development can be done in 3 lines also. But you wouldn't understand that because you do as you're told and are a Rails DHH sheep, that's fine.

I use Php and Java for personal development and won't go anywhere else for the next 5-7 years easy. Why would want I want Rails for that 15 minute blogging application when

1. I could make it myself in 15 minutes with Java

2. I could make it myself in 15 with Php

3. WordPress/JBlogger already exist and are highly professional products?

Rails is funny technology because really the only thing it has going for it is steam.

But more importantly,

Your user really doesn't give a shit what technology you use as long as it comes back in milliseconds and looks fantastic and is easy to use as a web site. If it's slow, it better be damn worth it. *RUBY* has a ways to go before it can do that.

Thu, 02 Feb 2006 at 09:06:38 GMT Link

16.Christ On a Stick said:

Q: Why are you comparing a language to a framework?

A: http://www.loudthinking.com/arc/000553.html

You can't compare it, it's not a valid comparison. DHH is too damn dumb to understand that, and by "Q and A"ing him, you aren't making yourself look credible.

For instance, you can write a Ruby interpreter on top of Java, JRuby http://jruby.sourceforge.net/, but you can't write a Java interpreter on top of Rails.

Ok? Can we stop being retarded now? Some of you people need to stop being stupid.

Thu, 02 Feb 2006 at 09:22:09 GMT Link

17.ismael said:

Mmm I have to disagree. A good framework will only give you more power and true flexibility, meaning that it abstracts the nuts and bolts and you can focus on designing the more conceptual, functional parts of your applications. I'm a PHP developer and, having built my own php mvc framework,I can say that it only allows me to make better and more powerful apps. Rails is a "light", low configuration framework, which makes it ideal for rapid development and thus the hype. I'm betting something equally "light" could be built for Java -certainly lighter thatn Struts- and I know it can be done for PHP.

Thu, 02 Feb 2006 at 13:57:48 GMT Link

18.ismael said:

Oh, and Wordpress is such a bad example, it's so poorly written every time I look at it's code it makes me cringe.

Thu, 02 Feb 2006 at 14:05:49 GMT Link

19.spence said:

Java can have overengineered solutions. Yes, sometimes a website is really short, sweet and simple. But java does bring something to the table. Structure.

Yes, in php you can do all this powerful stuff, and you can structure it. But you can do the same thing in ASM. It's just very hard.

What Rails, and JEE bring to the table is some semblance of structure. All PHP brings is a toy that can create a bloody mess out of things. Sure PHP has speed to deliver, but so does any fast food joint.

Sorry bub. Any chef worth his salt will use good tools and use them reasonably.

Thu, 02 Feb 2006 at 19:06:40 GMT Link

20.ismael said:

I agree that Ruby is awsome and Rails is wonderfully designed, but really, there's nothing stopping you from building a very structured, flexible framework for small to medium projects in PHP. Ruby, Rails, Java...A good coder makes 80% of the success of a project. The thing with PHP is that it allows for bad code too easily, but it's powerful enough to support wonderful code. The thing with Ruby is that almost everybody knows it through Rails, which is a wonderful app ready-made for you to use. I seriously believe that a bad programmer could do even more harm with Ruby hadn't he Rails to help him, just because of how flexible the language is.

Thu, 02 Feb 2006 at 23:13:46 GMT Link

21.Hernán said:

Rails show a path to the problem of web development, tendencies, look how many php clones of rails appear every day. After ten years the php community can't agree in anything, and now Zend says that they has a great team making a nice and "stiffies" framework.

Rails has make more in one years than php in ten for the developer community, with a language that isn't in the top 20, that is another tendency.

The php community is so fragmented that the Zend guys are going to spend big money in attract developers and show the "new way" of make a web app in the "good way".

I'll be glad to read someone that says that rails has a point that deserve be experienced and try it.

Fri, 03 Feb 2006 at 06:02:37 GMT Link

22.David Harris said:

In the end, it also matters what your personal ideals for development are. As someone who likes Agile methods, customer interaction and allowing software to evolve, RoR has been perfect. I can literally sit with a customer and ask them what they want to see, explain that it won't look pretty right off, open up a new migration, type in simple database tables, generate the scaffold, and bam, the client has a dirty application in literally a few minutes. They can then say "no" or "yes" to certain parts, and right then and there we can edit it until we get it right.

From there, yes, things take time; Rails doesn't make everything simple. But for purposes of client interaction and agile development, Rails is far better suited than any other web framework I've used.

If the way you program is by planning everything out ahead of time, then Rails may not ever work for you. It's very easy to prune into the direction you want to go, it's very difficult to force it into the shape you want it to take.

Fri, 03 Feb 2006 at 20:14:34 GMT Link

23.Elliot Anderson said:

@ Carl

Your wrong about how old both languages are. Matz first started working on the language sometime in '93 and released it to the public in '95 whereas PHP was started in '94 and publically released in '95 aswell, although it wasn't nearly as useful until the PHP3 rewrite in '97.

Now Rails might only be young, but lets keep the comparison on the same level shall we?

Sat, 04 Feb 2006 at 09:06:11 GMT Link

24.Chris Shiflett said:

Elliot, I think Carl meant that PHP has been around a lot longer than Rails.

Sat, 04 Feb 2006 at 16:17:46 GMT Link

25.Mike A. Owens said:

Although I'm a Python programmer at heart, but I've been using Rails for new web development where possible.

I've written large amounts of PHP for clients, never in anger. But contrary to the article, I think there is a huge market overlap for Rails and PHP, and this overlap increases with complexity.

A PHP project of decent size will be structured very similar to Rails, with Smarty templates, a "PartialPage" class or similar, a URL dispatch scheme, many classes wrapping database objects, etc. David Heinemeier Hansson isn't magic, there's nothing in Rails that really can't be expressed in PHP, but a lot of the difference goes back to style, taste, and discretion.

And after you've written or downloaded your PHP MVC framework, the biggest remaining difference between the two is just the PHP syntax and core vs. Ruby. And PHP is actually a lower level language than Ruby.

Ruby breathes iterators, blocks and lists. PHP has 'foreach', 'create_function', and 'array_map'. Ruby thinks in terms of closures and inline predicates, while PHP has 'call_user_func_array' and has a different sort function for every possible combination of order, key and value comparisons.

I use Rails not because it provides something which can't be realized in PHP. I choose Rails because, once I'm there, I'm left with an environment (language and framework) which is simpler, /more flexible/, consistent within itself, and lets me get more done with less code.

Sun, 05 Feb 2006 at 01:26:35 GMT Link

26.Bill said:

"Aside from the fact that I'm clearly a PHP developer, I'm not sure how anyone could read this blog entry and think that I don't like Rails."

Well, how about your comment that "Flexies see stiffies as those who spend more time thinking about problems than doing anything to actually solve them." And, of course, you lump Rails developers into the Stiffies category, which doesn't make a lot of sense to me. I've seen plenty of enterprise thinking applied to PHP. The Advanced PHP Programming book tries to teach some rigor. Does this mean Schlossnagle is a "stiffy"? Hardly. I think it means experts, including PHP programmers, know when a particular problem requires a little more structure and when a particular problem is little more than "hello world."

To get any kind of reasonable feedback to your piece, you ought to define your terms. What do you mean by "flexible and powerful"? I think you want a language/framework that doesn't get in the way (make you jump through hoops) and accelerates your ability to get work down with minimal code. Ruby is the most flexible and powerful of the languages that have significant open source web frameworks. And Ruby is what you use to tailor Rails to your particular problem.

Is Rails a golden bullet for everything? No sane Rails programmer is saying so. Rails is a great development tool for specialized web apps. But within that space, Rails is extremely flexible and powerful, much more so than the many, many frameworks and packages I looked at in the PHP world. Just as you said you weren't knocking Rails, I say I'm not knocking PHP. I really appreciate many open source PHP projects. I use Drupal, phpBB, phpAdmin, and developed my first web stuff in PHP. I just agree with Mike Owens (comment above) -- we both think Rails is more flexible and powerful than PHP. So it's odd that your analysis places it in the J2EE/.NET camp.

Sun, 05 Feb 2006 at 19:59:59 GMT Link

27.Chris Shiflett said:

Hi Bill,

I don't see why lumping Rails into the "stiffies" category is seen as derogatory, except that Java and ASP.NET are there. Guilty by association? :-)

I'm contributing to the Zend Framework project, so I clearly see the value in bringing a bit more rigor to the PHP community. However, there are problems that will always be best solved with a simple and direct approach, sans framework.

"What do you mean by "flexible and powerful"? I think you want a language/framework that doesn't get in the way (make you jump through hoops) and accelerates your ability to get work down with minimal code."

Not at all. Flexibility and getting work done with a minimal amount of code are almost opposite ideas. For example, higher level languages allow you to do more with less code, but you almost always lose some control. In PHP, I can't manage my own memory, whereas I can in C. But, not having to manage my own memory saves me time.

A good analogy would be writing HTML. PHP is like writing it by hand, and Rails is like using a WYSIWYG HTML editor. The Zend Framework and Rails will certainly be compared, and perhaps they will appeal to some of the same people, but the "flexies" who want a bit of rigor are probably going to use the Zend Framework, not Rails.

Mon, 06 Feb 2006 at 01:34:25 GMT Link

28.Bill said:

"Not at all. Flexibility and getting work done with a minimal amount of code are almost opposite ideas."

If you think flexibility and getting work done with minimal code are opposite ideas, how do you define "powerful" as in your flexy "flexible and powerful" grouping?

Instead of PHP vs C and pseudo-HTML arguments, why not use specific PHP vs Ruby on Rails supporting facts. After using Rails, I can't point to any experience that fits your WYSIWYG HTML editor analogy, but maybe others can give me an example.

In Rails, I've been able to metaprogram an authorization system. I use a simple declaration in my controllers that is quite readable. For example:

permit "moderator of :workshop or admin"

That one statement checks if the current user is a moderator of the current workshop, or if the current user is the administrator of the entire web site. If not, it redirects to a denial page.

It is flexible because I can easily modify the permissions I'm checking. Different web pages use different authorizations. I can use any role on any object in any boolean combination. I can override the redirect page easily. I can change the behavior of the permit keyword by modifying the underlying code.

It is powerful because it saves me lots of time in typing the authorization checks/redirection at each place I need it. Note that this permit is a class method. One permit line can control the authorization of all the pages associated with a controller, so it's not the same as simply having a PHP function permit(..).

If you are saying Rails is inflexible because you want to write a real-time multiplayer game and Rails is for web apps, I guess my response would be "yeah, and your point is..." My point is that Rails is good at developing web apps. It's got a sweet spot, and within that sweet spot, it's both flexible and powerful *and* provides structure. It would help your argument if you could provide specific examples supporting your blog's flexy-vs-stiffy categorization.

Mon, 06 Feb 2006 at 08:56:37 GMT Link

29.Chris Shiflett said:

Hi Bill,

I'm hesitant to continue to make the same points, because I'm not sure what you're missing, and I think my points are pretty simple and obvious. If you think more powerful means writing less code, then you and I are going to have a difficult time communicating. :-)

Semantics aside, my advice is to embrace the advantages of whatever technology you choose, but don't fool yourself into thinking that there are no disadvantages. The less code you write, the quicker you can get a job done, but the less control over the solution you have. Seems pretty simple to me. Until now, I've never seen someone who thinks that frameworks aren't a little bit restrictive.

"I can change the behavior of the permit keyword by modifying the underlying code."

Maybe your own statement can help you understand the difference. Modifying the underlying code is necessary for the power and flexibility you sometimes need.

Mon, 06 Feb 2006 at 13:40:39 GMT Link

30.Bill said:

Hi Chris,

I guess you are right that we aren't communicating well with each other.

"The less code you write, the quicker you can get a job done, but the less control over the solution you have. Seems pretty simple to me."

It doesn't seem as simple to me. In many cases, you can use a simple declaration and use the default parameters, which means you write very little. When you need more control, you add a few words to change the defaults. I don't see how this gives any less control per words of code. Because Ruby classes are open, you can modify and override internals. You aren't prevented from exercising more control. You might have to write the code you would have written from scratch anyway. You seem to feel that a framework (used within its sweet spot) literally prevents you from dropping down to the underlying language to get finer control.

"Until now, I've never seen someone who thinks that frameworks aren't a little bit restrictive."

I've already said Rails is good for particular types of apps. It's not a panacea. Seems like that's acknowledgement of restriction. Where we disagree is that within the space of customized web app development, you think Ruby and Rails isn't flexible and powerful but somehow PHP is.

And Chris, I'm trying to be civil even though I feel you are responding in a fairly patronizing way (e.g., "my advice" or "help [me] understand"). You've put forth a way of categorizing web development. Maybe there's something to what you are saying. Others may find your arguments simple and obvious. I don't. If you had shown an example or two why PHP is more "flexible and powerful" even in the sweet spot of Rails, it would have helped the rest of us get what you are saying. But this well-beaten horse has rigor mortis. I sincerely wish you guys good luck with the Zend framework.

Mon, 06 Feb 2006 at 21:47:14 GMT Link

31.Chris Shiflett said:

Hi Bill,

Apologies for any perceived tone. My choice of words is based upon my understanding of our conversation - I've presented a perspective (right or wrong), and you're trying to understand it. I don't mean to be patronizing, and I describe my perspective as "simple" to point out that there isn't some deep meaning to be found in it.

I don't perceive two perfectly-distinct groups of people, but I do think there are characteristics that can't easily coexist in a single technology, and I think some of us will generally prefer one over another when we can't have both.

This is one of the reasons I like Rails - it once again demonstrates that an open source solution can be a better alternative - an alternative to Java and ASP.NET. Despite what we might want, those are the two dominant technologies in the enterprise.

My other point is that there are advantages to curbing your enthusiasm. Rails is great, but it hasn't dethroned Java yet, and the current excitement surrounding it is trendy. There's also the likelihood that Rails won't "dethrone" anything, and it doesn't have to - it can (and likely will) be a successful technology regardless.

Tue, 07 Feb 2006 at 00:54:01 GMT Link

32.Dave said:

There is a lot of talk out there about scalability of Ruby, but that's not my main worry. I have a PHP app, xcart, which is an ecommerce store. It takes about "TIME all="4.46695709229" sql="3.71701598167" php="0.749941110611"" on first runs and "TIME all="0.827121019363" sql="0.185864448547" php="0.641256570816"" on later runs, to generate a product index page. The question for me is how much slower/faster might this be under RoR? now obviously this is a PHP app and so direct comparison is impossible. Equally the same app in RoR could be written by better coders and so still isn't a true comparison of RoR's abilities.

I suppose what I am getting at is that until we have a large selection of large scale apps in RoR, we really won't be able to compare speed. It's this page generation speed that concerns me because frankly 4.4secs for a page to generate is 4 secs too long :-) The arguement that if you are big enough to do 300,000 pages a day then you should be big enough to have 5 machines to run it on isn't reasonable, why should you have to when with PHP you don't?

Btw, my site does 360,000 pages a day in FUDforum and rarely goes above 0.20 load ave on a dual P4 3Gig with 2gig of RAM and RAID 5. I've yet to see any app comperable to that in RoR. Maybe Ilia is a genius or maybe FUDforum is a tiny app, but I'm willing to be proved wrong :-)


Tue, 07 Feb 2006 at 03:05:52 GMT Link

33.Chris Shiflett said:

Slide 28 of this presentation seems to agree with that I've suggested:


Tue, 07 Feb 2006 at 14:57:50 GMT Link

34.Antonio Ognio said:

I just wanted to try to redirect a bit of your attention to Cherokee Web Server. This program claims to be the fastest web server on earth, at least not in kernelspace and is definitely something to be watching closely since at some point it could go mainstream and gain preferences pretty fast.

It's been making remarkable progress this very last days: it know supports Ruby On Rails via SCGI, has started to support PHP via FastGCI and has started to work on Windows as a real port without any Cygwig or tricks.

They have a website here:


Definitely something to keep on the radar!!

Mon, 13 Feb 2006 at 05:48:03 GMT Link

35.Nathaniel Brown said:

Hey Chris,

Regarding the comment I made:

"You need to be quite a bit more of an advanced programmer to get into Rails."

Let me be clear on one thing. This doesn't mean, because you need to be more of an advanced programmer to get into Rails, that inherantly it is a better language framework to work with than that of one built with PHP.

It simply means, you need to understand far more about programming, such as objects, methods, MVC architecture, templates, and the list goes on. Compared to PHP's full functional programming support, whereby you can have a <? include 'header.html' ?>, and instantly, you are a PHP programmer.

For Rails, you really need to have a solid understanding of what a object is in order to create new methods within your controller. We come from experienced backgrounds, writing applications for many years now, so the principle of what an object is, seems trivial. But I assure you, when I started teaching myself how to program. An Object isn't a walk in the park. You need understanding. Something by which Rails requires, but PHP does not.

Another very simple requirement once you get into Rails, you are presented with an MVC framework. What is a model? What is a view? and what par-tay, is a controller? Now, you and I may know this, but again. Ask the avergage PHP programmer, and chances are they don't _really_ know. Again, more understanding needed, by default.

Now, I could go into the depths of why Rails requires developers to be "quote a bit more of an advanced programmer" compared to developing with PHP. But I am fairly certain I made my point. The fact that you need to be more of an advanced programmer to write in C++ compared to PHP, doesn't phase me as C++ being a better langauge, it simply means you need to understand more about what is going on, such as memory leaks. A worry PHP developers don't even have to blink an eye at, unless you are an advanced programmer, and dive deeper into the lanaguge.

Sun, 26 Feb 2006 at 04:46:11 GMT Link

36.Alex said:

Have you tried to deploy a rails app? Before you say rails is easy, try getting anything running on a shared host. It is a heck of a lot harder than a php/mysql app.

I have been unsuccessful and my web host is telling me they don't know a lot about ruby on rails. I am actually thinking about finding a php framework so i don't have to deal with this.

Perhaps "works great on my iMac" <> "Great Solution For A WEB SERVICE"?

Wed, 01 Mar 2006 at 22:00:48 GMT Link

37.Mal said:

I'm a small time developer by trade and the majority of my time is spent building lightweight apps, which is why sometimes PHP is just fundamental for me to save some time, but surely this distinction of "flexies" and "stiffies" is simply the difference between a small app and a larger one.

Don't get me wrong, I adore PHP, it has saved me countless hours when I need quick web solutions, and I've even written some slightly larger things with it (although I find it's OO syntax kind of clunky, but that's just a personal view) but it's PERL styled TIMTOWTDI attitude makes it a nightmare for large scale apps. I'm not saying it can't be done, or that the engine isn't speedy enough, because by gun it is; however you seem to spend more time digging through the code you've just written trying to remember which way you did something and how it will impact on the way you do something later on. It is a preverbial pain in the arse!

I've followed the Zend Framework since it was previewed and I like the inclusion of a fully backed MVC framework for PHP (CakePHP is lovely, but really, who can guarantee it's upkeep longterm?) and I'm hoping it helps define some standards in concrete so we CAN produce large scalable apps in PHP. We all know deployment would be a breeze and the support base is second to none, but PHP is going to take some time to break out of it's previous "hacking" mould.

As for the Rails argument, I have made some small apps in Rails just for kicks, but I find the ORM procedure absolutely horrible and I don't like the strict idea of "convention over configuration" because sometimes it's just a plain annoyance! I have found TurboGears (a Python MVC framework based on, among others, CherryPy, Kid templates, SQLObject) to best suit my needs in this domain, even if deployment can be rather tricky.

I'd still like to point out that I don't believe you must be either a "flexie" or a "stiffie", as I love the flexibility of PHP for small apps, but for anything sizeable, it simply becomes too hard to follow unless you spend the time dictating a plethora of coding standards and even then there's no real guarantee that they'll be used. Having said that, I'm still watching the Zend Framework development with a keen eye!

Fri, 07 Apr 2006 at 03:09:56 GMT Link

38.carlivar said:

Note that your link to the TIOBE Top 20 languages now shows Ruby in the Top 20 (and it passed Fortran!). In fact Ruby seems to be a HUGE gainer in the past year (from #30 to #17 July 2005 to July 2006).

Personally I'm pretty much a beginner, maybe intermediate, programmer. Almost all self-taught but I'm starting to be able to make some pretty decent stuff in Perl and PHP. I've recently started developing my own big website in PHP and now after reading about Ruby on Rails I'm starting to think about starting over from scratch with it. It seems that good. I'm really, really tired already of hassling with SQL statements. RoR seems to be EXACTLY what I'm looking for to make the database more "invisible" and allow me to spend my time adding features rather than constant framework.

Thu, 06 Jul 2006 at 06:03:19 GMT Link

39.InfoHatter Blog! said:

Here is a little piece written by Chris Shiflett in his Ruby on Rails Fans post:

<p><i>“Ruby on Rails is a niche technology, and although all signs indicate that its popularity is growing rapidly, it’s a bit premature to be thinking that it will dethrone existing technologies.”</i></p>....

Tue, 11 Jul 2006 at 13:06:19 GMT Link

40.InfoHatter Blog! said:

I’m taking on a bit more of Chris Shiflett’s post 'Ruby on Rails Fans'. Following a list of the best Web 2.0 applications (Digg, del.icio.us, Wikipedia etc.) He shows how these kick-ass sites are written in PHP. He then reviews the best Ruby applications. Following this he writes:

“I think a larger point is that good applications are built by good developers, not technologies. Did you know what all of these applications were written in? Did you care? Be honest.”...

Tue, 11 Jul 2006 at 13:22:59 GMT Link

41.rit said:

i m a student and i tried ruby on rails...its very easy and convinient..better than java but difficult to install ..

Tue, 18 Jul 2006 at 17:57:48 GMT Link

42.Joe S said:

You should have a look to this http://akelos.org Ruby on Rails port to PHP.

They have ported most of the original Ruby On Rails to PHP + added i18n. Even RoR API documentation has been ported. I feel that this framework can gain popularity quickly as most RoR tutorials, cheat-sheets, videos and manuals can be easily adapted.

The only concern is that this is a ONE man project!!, but I'm sure that a community will grow quickly around it as the http://www.bermi.org/projec... fetaures it already provides are quite impressive and will match those needed by many programmers.

Thu, 03 Aug 2006 at 23:57:35 GMT Link

43.Kiernan Holland said:


Mon, 07 Aug 2006 at 23:52:53 GMT Link

44.Kiernan Holland said:

All PHP needs is some kind of server running seperate from Apache or IIS, that processes the requests, and maintains the data structures that are created by the processes each time a request comes in, rather than reloading the scripts on each request. That would easily eliminate "Servlet" advantages.

Like this:

< ?

$result = call_function_on_persistent_server("blog_display",$_POST);

? >

Heck even the POST data could be placed in shared memory so as to save time.

The disadvantage with that is if you are running a shared server, like for most paid-for sites, servicing requests this way can use a lot of memory and a lot of CPU resources because resources are not reliquished until the scripts decide to reliquish them. But even that could be fixed by puting persistence limitations on the resources. Better yet if you really wanted to, you could make this server into a

laguage independent solution, where different kinds of scripting languages could be serviced in that server..

Hey isn't this essentially what CORBA does?

Tue, 08 Aug 2006 at 19:48:54 GMT Link

45.Fellow Flexie said:

Nice article. The Ruby believers are very zealous!

Sun, 17 Sep 2006 at 00:33:52 GMT Link

46.Sentinel said:

How can a web development framework that doesn't support Unicode be taken seriously?

Wed, 20 Sep 2006 at 19:22:07 GMT Link

47.Gabe da Silveira said:

This article attempts to make a charitable comparison between PHP and Rails. The problem is charity is no substitute for working knowledge. Of course the amount of hype and FUD out there confuses the issue even more. I've worked with PHP professionally for 7 years, and Rails for 2 years (some Ruby before that), so I feel qualified to address some of these issues.

First of all, flexibility and structure are not orthogonal. mal makes an excellent point above. Structure is necessary as a function of complexity. If your app is very simple Rails is overkill, you would use Camping instead or just plain Ruby. PHP has an advantage to Ruby here because it is dead simple to deploy and supported everywhere. However when your app is more complex then you need structure to manage it. I can see how from an birds eye view this structure appears limiting, but in actuality you have to have some kind of structure. The real question is how flexible is your structure?

Now let's talk about flexibility at the language level. Ruby is an order of magnitude more flexible than PHP (particularly PHP4). Features such as closures, mixins method_missing? and others provide flexibility that the PHP programmer doesn't even know exists. If you show a given Ruby solution to a PHP programmer, the natural tendency is to translate it into PHP mentally (much as one does when learning a new human language). Satisfied that they now understand the solution, they can go back and point at the Ruby code and say, "I can do that in PHP too." Thus the existing worldview is protected, but the whole benefit of the Ruby architecture is missed.

Now how did Rails win me over when PHP was working just fine? Well after years of PHP I found myself doing the same things over and over and over. I looked at a ton of frameworks, but they all added too much overhead. Simple things became more complex, and some complex things became impossible. There was definitely a sweet spot of things that the framework made easier. What Rails did was to expand this sweet spot. Of course any structure involves tradeoffs, but Rails really makes great choices here in the realm of web applications. The use of Ruby keeps this sweet spot big while maintaining flexibility. If you don't like something about how Rails works you can override any class, module or method in an external included file at runtime. I can't see any reason you would ever need to do this, but the point is you can, and you an do it in a maintainable fashion. A good example of a feature that a PHP framework could not implement would be dynamic finders such as Record.find_by_attribute1_and_attribute2. This features is not possible in PHP or Java because those methods can not be constructed in advance due to the number of possibilities (it's a factorial function of the number of fields in the database). Of course you can emulate this by using a parameter instead of the dynamic method name, but that belies the simple elegance of the Rails solution. These kinds of simple features are easy to dismiss, but one by one they ultimately add up to a much simpler solution for a given amount of power.

So have I given up PHP? Not at all, PHP has a lot of practical advantages ranging from speed, to memory usage, easy of deployment, and availability of existing libraries and open source projects. Likewise, Rails can not replace J2EE solutions of greater complexity, and especially interactions with legacy systems. I just don't think it serves anyone to write a bunch of generalizations about a language and framework without actually understanding it first. Remember, just because fanboys spew reams of ill-informed misinformation does not necessarily make the opposite conclusions true. Beneath all the hype of Rails is a foundation of serious programmers who know its power and benefits. You should be one of those people rather than just adding to the noise.

Mon, 12 Feb 2007 at 19:12:22 GMT Link

48.php on rails said:

Why not use PHP on Trax then ?

Gosh, no one cares about languages, except for the fact rails is easier and funner to work in. Productivity savings can be enormous. With PHP on Trax though, you can break out the of the framework as needed and run straight PHP.

Mon, 19 Mar 2007 at 02:28:19 GMT Link

49.Matthew Ratzloff said:


A number of the things you described can be accomplished in PHP 5 with the __call() magic method. I encourage you to look into it.

Sun, 16 Sep 2007 at 21:24:14 GMT Link

Hello! What’s your name?

Want to comment? Please connect with Twitter to join the discussion.