InfoQ

Interview

David H. Hansson on the Future of Rails

Interview with David H. Hansson on Nov 14, 2006 03:40 AM

Community
Ruby
Topics
Web Frameworks ,
Ruby on Rails ,
Performance & Scalability ,
Stories & Case Studies ,
Delivering Value ,
Programming
Tags
Rails ,
Conferences
Summary
InfoQ editor Obie Fernandez asks David some hard-hitting questions about the future of Rails in the enterprise, profiting from his success and whether a vendor will fork Rails someday. Contains lots of good information for technologists staking their future on the Rails platform, including David's opinions on Rails adoption, service-oriented architecture and scaling Rails applications.

Bio
David Heinemeier Hansson is the creator of Ruby on Rails, a powerful open-source framework for using the programming language Ruby. As a partner at 37signals in Chicago, Hansson created Ruby on Rails to write software for their popular project-management tools like Basecamp and Backpack. He is a big proponent of opinionated software and getting real.
So this is the first Rails conference?
What do you get out of attending these conferences yourself?
A little while ago people from Canada were asked to raise their hands and most of the room raised their hands. There are a lot of people here from a fairly limited area. To me it seems that Rails is moving towards mainstream acceptance. What does that mean for us old old-time Rails developers and what does that mean for someone who's just getting into Rails? Where do you see us going?
Some would take that statement that you'd basically look to solve your problems, as a statement that "If I'm working on 37signal style apps, meaning Web 2.0, heavy Ajax, then I should use Rails, but otherwise I shouldn't"?
Is Ruby on Rails the Mac of the development world?
You are brunt end of what I assume is a torrent of support requests, enhancement requests, praise, as well as complaints. What is it like to deal with that? What is your impression of the community?
How long until you are the vendor?
So at what point do the commercial appeals, at what point does your capitalistic urge kick in and say: "Okay. There are 2 million people worldwide using Rails, I can do Rails Inc. I can leverage the trademark!" When does that happen?
Let's say that you don't indulge that capitalistic kick, someone could theoretically come along and fork Rails, right?
What are the factors that make you say that it is unlikely that someone would come along and do a better job with Rails?
How do you feel about bug fixes and enhancements that are not fixed because no one feels enough pain, but actually we come across them, hit them and do a work around, because it's not worth enough time for us to go in and fix it. Do you take a pragmatic approach?
What do you say to development managers, directors, and technical architects who are concerned about whether Rails is going to work for their particular needs?
What about the typical third of the IT community who are in it for just a job, they are not really interested in technical excellence? Let's talk about that mainstream. Let's talk about what happens if they feel compelled to start adopting Rails. Let's talk a little bit about what happens when their bosses watch this interview and say "Okay, I'm going to have my guys to do a vertical Spike", and they tell all these guys "Have at it! Do some Rails!" What happens then?
Thanks to the Rails hype I think there are a lot of folks out there thinking mistakenly that we advocate Rails as a silver bullet! We don't advocate Rails as a silver bullet! Where wouldn't you use Rails? What applications are unsuitable for Rails?
How does Rails represent getting real?
WS-* is that bullshit?
SOA and Rails, we had a presentation on that. Where does Rails fit into the question of SOA?
SOA is predicated on the existence of standards so you can have all these pieces inter-operating, right?
Does 37 Signals have an SOA? Describe it.
You have five applications at 37signals that require sign-ups? That's a perfect scenario where someone would say "well of course they must have some sort of shared sign-up component". Do you have a shared signed-up component?
Not too long ago you guys introduced the Backpack API. That's going to allow outside developers to tie in their own applications into Basecamp. How is that going?
Can you share some numbers in terms of how many people use Basecamp?
Does Rails scale? Are people still asking if Rails has scalability issues. What do you say to them?
Why has the legitimacy of the question of Rails scaling tipped in your opinion? Why do you think there are less people still asking it?
Let's dig a little deeper in terms of scaling, let's talk about using Rails in situations where, typically, Java would be called for or some other harder technology [...] Say it's going to do some sort of credit application processing and I have an SLA - a service level agreement - that specifies subsecond response (times) and I have legitimate concerns that Ruby is not going to cut it for that kind of service level agreement. Do you feel qualified to talk about that, do you feel that you need to defer, that they shouldn't use Rails? Where do you stand on that?
You've just run into a case where Ruby did not scale in that sense for your performance need haven't you?
Can you tell us a little bit on how you went through the cycle of figuring out?
Was it a collection of controller methods? Was it a vertical slice?
An early Java One had a panel about "Real-world adoption of J2EE containers". One of the panelists spoke about achieving massive scalability and performance. It was some telco and they said "we have to support this huge throughput". It was like, exaggerating a little for emphasis, like a billion request a second. It was for cellphone billing, running on Java and the whole crowd went "oooohhhh" when they heard that. Well I was sitting there wondering what vendor stack they were running on, and it turned out they had written their own J2EE container! I remembered that as you were describing how to fix the performance issue, because you guys [37signals] are the best. Of everyone doing Rails, you can do that particular performance optimization, just like the guys that wrote their own J2EE container, since obviously they were the best at that time. What do you say to people with legitimate concerns about Ruby performance, who want to push forward, but have concerns about the resources [talent] available?
Let's talk about that for a second. We said earlier in conversation would you do Amazon? would you do EBay? They seem like silly questions, but would you or are you are just saying that those sites are all custom?
But their main CGI engine is C right?
show all  show all
Great article by Kevin Williams Posted Nov 14, 2006 2:18 PM
Re: Great article by Steve Zara Posted Nov 16, 2006 1:31 PM
this is C we're talking about by Mike Schwab Posted Mar 7, 2007 3:34 PM
Re: Great article by Ahmet A. Akin Posted Nov 17, 2006 8:29 PM
not very "hard hitting" by myke myers Posted Nov 21, 2006 3:33 PM
Re: not very "hard hitting" by Steve Zara Posted Nov 22, 2006 6:57 AM
  1. Back to top

    Great article

    Nov 14, 2006 2:18 PM by Kevin Williams

    Many Pointy-Haired Bosses think if your development tools couldn't create the same performance numbers as Amazon or Ebay or Google or Yahoo out of the box, then those tools are a waste of time and are not allowed. Thanks for clarifying *how* and *why* this idea is silly. The "300 lines of C" example really drives home how easy it is to hit performance numbers in Rails without sacrificing developer productivity and sanity.

  2. Back to top

    Re: Great article

    Nov 16, 2006 1:31 PM by Steve Zara

    What the "300 lines of C" example shows is how you have to trade easy portability for performance with Ruby. 300 lines may sound trivial, but any additional external code may raise problems if you want to switch platforms, or, say, switch to 64-bit. This is certain to change with ports of Ruby and Rails onto Java and .NET. JRuby on Rails allows easy use of 300 lines of Java without any loss of portability (and soon, without any loss of open-source-ness). But for now, count me in as a cautious pointy-haired boss (well, developer).

  3. Back to top

    Re: Great article

    Nov 17, 2006 8:29 PM by Ahmet A. Akin

    i really am having a hard time to understand if you are ironic or serious on this comment. give me 200 lines of Java code any day instead of wrapped 300 line of buggy C code any day. when has putting core work into unmaintainable black boxes become "productivity"??

  4. Back to top

    not very "hard hitting"

    Nov 21, 2006 3:33 PM by myke myers

    A few things that put me off about this. First - one of my big problems with the ruby community in general, is that there seems to be this very "join us or die a thousand firey deaths" mentality. You got your hammer from one store - i got mine from another, who cares. really? It's gotten better, but that undertone is still there I think. Second, the arrogance that seems to go along with it. "Java developers aren't real developers, they're java developers". Does the same go for old VB Developers? What about C guys, or Perl guys? Are Rubyists the only REAL developers out there? Wait, no C is real development, because you need it where ruby fails. Work on picking yourself up more than putting other people down. Seems like the only thing rubyists really have to say lately is "screw java!". Next, if there's no need to concern yourself with possible performance bottlenecks in ruby - if it really is as fast and stable and can handle all this stuff you throw at it - then why the need to drop down to C in the first place? Last, if the database is your bottleneck - perhaps the better solution is to look at the design of the database, and WHY it's a bottleneck, rather than just letting the system generate on-the-fly sql queries for you, and then impliment caching because it's slow. Maybe i'm wrong on that one, but i find it really hard to believe that all the volumes of text that have been written about how to optimize your db design and your queries are useless - and the only real smart solution is just to cache on the sql side of things. This interview was interesting, but it was not hard hitting by any means (as the summary says). Seems like more fluff and showboating than substance to me. I really do want to buy into the whole ruby thing, I do. If I decide to bring my personal projects back from the dead, maybe i'll play with it. But when i hear interviews like this from the creator of rails, along side statements like "we don't care about the enterprise, we care about keeping developers happy" - it doesn't give me much to go on. YOU may not care about big business, but my CEO does. If I walk into his office and say business doesn't matter, and this makes developers happy - how long before security escorts me from the building? Maybe i'm a pointy haired, overly cautious skeptic - but i think the Ruby community has a lot of soul searching to do in terms of where thier priorities lie, and where they're really going in the future. Until then - i guess i'm just lame for not drinking the kool-aide.

  5. Back to top

    Re: not very "hard hitting"

    Nov 22, 2006 6:57 AM by Steve Zara

    But when i hear interviews like this from the creator of rails, along side statements like "we don't care about the enterprise, we care about keeping developers happy" - it doesn't give me much to go on. YOU may not care about big business, but my CEO does. If I walk into his office and say business doesn't matter, and this makes developers happy - how long before security escorts me from the building?
    Another form of arrogance I often see in this context is frequent mention of ways to 'sneak' Ruby and Rails into companies, as if the Ruby developer is the only one who truly understands what is required. Use of different technologies should be a matter for open discussion and evaluation.

  6. Back to top

    this is C we're talking about

    Mar 7, 2007 3:34 PM by Mike Schwab

    C was designed, if I'm not mistaken, to run on absolutely any hardware that could ever be created. It is portable. So your complaint strikes me as misplaced. Yes there are probably changes that would have to be made in the examples you gave - but this is why optimization should only be done after you've chosen your deployment hardware. You could use Java as you say, but then you sacrifice the speed that you were optimizing for in the first place. Ooops!

Educational Content

Bindings, Platforms, and Innovation

This presentation focuses on the Internet and separating myth from fact, history from the future, and the mundane from the imaginative. Bob Frankston presents a vision of what could and should be.

Orchestrating Long Running Activities with JBoss / JBPM

This article explores the use of JBoss and jBPM to implement design solutions that effectively address the issue of orchestrating long running activities.

Neo4j - The Benefits of Graph Databases

This presentation covers the use of graph databases as an optimal solution for data that is difficult to fit in static tables, rapidly evolving data or data that has a lot of optional attributes.

Realistic about Risk: Software development with Real Options

This session introduces Real Options and shows how it can help in running your project. Real Options is a decision-making process that can be used to manage risk.

Communication Flexibility Using Bindings

This article discusses the use of bindings on services and references (including the instance of non-configured bindings) as the means to implement SCA communications in a Web and SOA environment.

Writing DSLs in Groovy

After a short introduction to DSLs, Scott Davis plays with the keyboard showing how to approach the creation of a DSL by typing working snippets of Groovy code that get executed.

Scaling Agile with C/ALM (Collaborative Application Lifecycle Management)

IBM Rational and InfoQ present, Scaling Agile with C/ALM, an eBook showing organizations how to become “finely tuned software delivery machines” by enabling team integration and scaling.

Concurrent Programming with Microsoft F#

Amanda Laucher presents a real life enterprise application written in F#. She shows actual code snippets, explaining design decisions and suggesting how to use some of the F# constructs.