There’s been a lot of controversy surrounding the changes to Rails 3.1. It started with an epic GitHub commit thread and the discussion exploded again in the past few days after What the Hell is Hapenning to Rails and Yehuda’s response thereto. I’m going to address the issue from a perspective that honestly hadn’t even occurred to me until I just said it while in a conversation with some Kansas City Ruby folks after the last meetup: “What if Rails isn’t for beginners anymore?”
Rails gained its popularity on the strength of its simplicity. The 15-minute blog was a shockingly powerful demonstration of what the framework could do, and from there it has gained thousands upon thousands of dedicated developers. But that’s just the thing: now it has thousands of dedicated developers. And these developers are building some of the most powerful and advanced web apps anywhere on the internet. It’s only natural that as the needs of the community grow so too does the framework. What we may be seeing is a point where Rails is becoming the tool for Ruby web experts instead of Ruby web novices. But if that’s true, is it necessarily a bad thing?
I built RailsWizard as part of the Rails Rumble last year and I thought it would be a tool that would serve two purposes: help me quickly spin up new apps I’m working on and also serve as a step-by-step guide for novice developers who need to get started building a Rails app. However, two rewrites later RailsWizard is a tool that is incredibly fast for my purposes but almost incomprehensible to anyone who doesn’t know what they’re doing. The tool evolved to focus on power for experts rather than friendliness for novices. Ultimately that’s the decision that has to be made for any tool or website: how much tradeoff are you going to give between making something easy to pick up and efficient for experts?
Since my livelihood depends on being able to rapidly build advanced web applications using Rails, you won’t see me beating the drum to take away power from Rails for the sake of novice ease-of-use. In fact, I’m beginning to wonder if Rails is the wrong place to get people started with Ruby web development anyway. There’s always been the problem of people who are Rails but not Ruby developers because ActiveSupport and the facilities Rails give you can make it hard to know what’s stdlib and what isn’t. If people learned Sinatra first, or if the community rallied around a “slightly more than Sinatra” framework like Padrino for newcomers and built up the requisite tutorials and documentations for 15-minute blogs and other things, then the novices who cut their teeth on those tools can come to Rails when they actually understand the power that Rails gives them as developers. They will understand Rails better because they have begun to stretch the limits of the lightweight frameworks and they need more. Maybe a system like that would make for better Ruby and Rails developers.
I’m not saying that any of this is necessarily true, but I think it’s another facet of the debate that hasn’t been explored yet. Personally I love the changes that have been coming to Rails. The asset pipeline may be the most important addition to Rails since even before 3.0: it is a game-changing piece of technology that has been a long time coming. I think the Rails core team has done an incredible job of pushing the envelope and refusing to remain complacent. And I think that’s important, probably more important even than beginner friendliness. Because if Rails gets complacent, if the core team stops pushing out into the weird and uncomfortable, then five years from now nobody will be using it because something better will have come along. And I like Rails.