Renewed Interest in Rails
August 7th, 2009
I like a lot of Leo Laporte’s podcasts and listen to a few of them regularly: TWiT, MacBreak Weekly, Security Now, and FLOSS.
I killed a good chunk of time at the bus station listening to an episode of FLOSS featuring David Heinemeier Hansson. For those not in the know, he’s the very bright and ambitious gent behind the Ruby on Rails framework.
FLOSS stands for “Free, Libre, Open-Source Software” and is a great way to either catch up on OSS you may not have encountered in the wild or dig into the people behind OSS you already use.
My Rails History
I was a really early adopter of Rails for professional work. Having spent my time with Struts and similar frameworks – the inspiration for Rails – I saw the familiar patterns and liked the quick bootstrapping. The Barbarian Group was, as far as I know, the first advertising/marketing shop to deploy Rails apps – back in the 0.12 days. I wrote an early intro article about Rails in .net magazine and was scheduled, along with the former CTO of the company, to speak at the first RailsConf, in Chicago. (Unfortunately, some sudden staff changes at TBG forced us to cancel.) So, yeah – to paraphrase a t-shirt, Rails had me at, “Hello, world!”
I always loved the full-stackiness of Rails: from the generators, to the testing tools, to the console, to the plugins and helpers. It’s great to go from concept to boilerplate in under an hour. The Rails folks inspired people, divided the fuck out of people, and helped make OSS contributions massively hip. All in all, I’m really glad Rails came about and objectively support most of the hype.
Gripes
Subjectively, over time, I got pretty frustrated with Rails for the type of work I was doing. It’s really great for start-ups and clean room builds, but was always a little inflexible when special considerations popped up. For a long time, fitting Rails projects into larger ecosystems tasted quite strongly of vinegar. There is an amazing amount of flexibility in Ruby, and hot-patching the shit out of Rails is very easy. There’s a point at which you kind of pause and ask if you’re building on the wrong foundation for the job at hand.
For a long time (and maybe today), that kind of question would get you tarred and feathered in the #rails world. I got sick of the quasi-religious bickering between “Rails developers” and “web developers” at large and dropped out. Drama around a web framework? No, thanks.
We still run Rails projects and use it often, but we do so with a certain emotional detachment. We also do our best to be agnostic, which means giving an honest evaluation to the decision of a toolset for each and every project.
When we do pick Rails, we try to focus on the engineering and ignore the drama in the greater community. This has always meant, in large part, ignoring DHH and almost every Rails blogger out there. That choice means I occasionally miss out on some true gems (heh) of knowledge or interesting arguments, but I’ve rarely regretted dropping out of the conversation.
Enter FLOSS
I thought DHH did a killer job on FLOSS. He’s one of those folks who comes across one way in print and another in person. It’s not an inconsistency as much as a lack of nuance in the written form. I’ve never liked the written form of Mr. Hansson but he and Randal Schwartz had a blast during the interview and it was very endearing.
So DHH got me inspired about Rails again. Not converted to the golden path or anything, but a renewed interest in the future of the framework beyond keeping a competency for client needs.
Getting Sidetracked
As an aside, he also made me wonder if he really understands the architectural style he promotes so heavily: REST.
In the podcast, he explains REST to Randall Schwartz (the host) by describing “the four verbs” used to operate on resources. It seems like he’s still confusing CRUD with REST. Oddly, the Rails source doesn’t really make the confusion.
Maybe this explains little mysteries, like the default Rails asset helpers appending “cache buster” query strings to support files (like Javascript, CSS, and images) in production environments. REST is about using HTTP to the fullest – including caching.
It could be that he really understands REST, but chooses to dumb it way down for his audience. That seems a bit risky, though. Developers hate that.
Getting Real?
In either case, I won’t get too wrapped up in the dude. I will say, kudos to adding some much-needed sugar to balance out the vinegar. Rails PR could use some attention and clarity along with a taming of the “opinionated software” side of things.
I hope the conversation around Rails stays creative but keeps growing up – even if DHH wants to avoid being too “professional.”

