In Response to Dave Thomas' RailConf 07 Keynote

Posted by Craig Ambrose on May 25, 2007 at 11:37 PM

Conference keynotes often introduce plenty of new ideas and challenges to a development community, but they are a bit of a one way dialogue if we don’t have a think about them and share our views. In particular Dave Thomas, of the Pragmatic Programers, is not shy about trying to inspire programmers to take new directions, and I always look forward to his keynotes in particular.

Dave Thomas

For RailsConf 07, Dave’s talk centered around the idea of “cargo cults”. Cargo cults were popular on Pacific island nations, who emulated the activities of the Americans during the war, to the point of building runways, control towers, and trying to summon planes with coconut headphones, in order to make the cargo come. The metaphor here is that we, as rails developers, need to stop doing things just because they have worked for others in the past, and start being truly creative.

While it’s hard to disagree with a call to be creative, I’m going to go out on a limb and say that I don’t think this is a particularly good direction for the Rails community to take at present.

Ruby on Rails has several strengths that make it quite unique. Some of these relate to the software itself, but these are minor compared to the strengths of the Rails community. There have been plenty of other open source ecosystems with a strong community, so what makes the Rails one different to, for example, the python community?

My belief, if you’ll excuse me for stretching David’s metaphor perhaps a little too far, is that it’s our cargo cults. The rails community demonstrates a particular unity of purpose. While we are all out building our own crazy web applications, the opportunities for re-use of code and design ideas is particularly high. If you ask three python programmers how to build web applications, you’ll get three different answers. If you ask three ruby programmers, statistically speaking, you’re liable just to hear about Rails three times.

This goes further than just the dominance of Rails within the Ruby community. Even within Rails, we have our cargo cults. REST is a good example, and one mentioned during David’s talk. Sure, there’s life beyond REST, but the benefit of picking such an approach as a community, and sticking to it (at least for the next year or two), is staggering. If I build a RESTful application, it’s no big deal, but if Rails developers everywhere build them, then suddenly there’s an ecosystem of useful applications that can talk to each other in such a practical and simple way that it makes Soap developers weep.

Not only do we have our cargo cults, but we also have our high priests. The whole REST thing happened because at RailsConf 06, DHH said that we should do it. This year, he was a little more reserved, but was still quite happy to go out on a limb and pick some particular technologies which were more right than others. One slide of his talk listed the friends and allies of the rails community. Our friends, we are told, include OpenID and Atom. There’s no reason why the Ruby on Rails framework need to be particularly associated with either of these technologies, and from a technical perspective, it probably wont be. But DHH says that they are our friends. Suddenly, OpenID support is appearing in Rails apps all over the place. This is an amazing result which you can normally only see happen within a hierarchical organisation. Here we are seeing unity of purpose within a very anarchistic open source community.

So I say, investigating new ideas is fine, but be aware that there is great benefit to be gained by following the path that we’re all traveling on together. People with different ideas from the Rails core team tend to write plugins, and if people think that the ideas are good enough, they eventually gain traction. Just take a look at the adoption of rspec within the rails community, even though it is quite different from the default testing system.

You can think of this as a cargo cult if you like, or laugh and say that rails developers have swallowed too much of their own hype. However, taking a common path that represents the combination of a range of views without simply all going our separate ways is a technique that works very well in nature.

Amongst humans, we call this technique consensus.

Hierarchy: previous, next

Comments

There are 5 comments on this post. Post yours →

I think a key point in the cargo cult metaphor is the importance of understanding over imitation. The Rails Way includes convention over configuration. Someone who (we assume) knows what they’re doing sets sensible defaults which you only change if you know what you’re doing.

It’s OK to accept conventions but I think Dave was reminding us that to be our best we really need to question why we’re doing what we’re doing.

- Mike

Craig, great posting. Here is my weigh in on a few of the points you discuss.

You say, “the metaphor here is that we, as rails developers, need to stop doing things just because they have worked for others in the past, and start being truly creative.” I do not find that the conventions implemented by Rails constrain me in any way from being creative. Perhaps there are too many “me too” applications out there being built using Rails. Ce la vie. Fortunately for us and all of those folks, it is super easy to create sites in Rails. Having said that, the creativity comes not in writing code that conforms to the conventions, but finding new and innovative ways to work use them.

“You can think of this as a cargo cult if you like, or laugh and say that rails developers have swallowed too much of their own hype.” If Rails was all hype, it wouldn’t be growing like it is. Look too at JRuby. JRuby combines the flexibility of Ruby and the power of Java. Java + Ruby, what a great idea! I hope to see more programming language convergence in the future, and believe that we will.

In the end, it is all about the right tool for the right job, and Rails makes jobs easy :)

I really liked your thoughts.

Thanks for thinking them.

Have to agree with you – Rails’ great strength certainly seems to be it’s ‘unity of purpose’. Don’t see why you need to pick on Python to make your point, though. :)

OMG, where are you Craig??? I haven’t checked back in several months but I loved your podcasts that you used to post….. You were one of my inspirations! Now it looks like your site is abandoned, what happened?

This makes me sad…..

Post a comment

Required fields in bold.