The problem with Rails in 2012.

I had a great conversation recently with a large startup that’s using Rails heavily for their product(s). They’re doing a big architectural pivot, and one of the things we discussed is whether or not Rails is the right solution for them, and if not, what the alternatives would be.

It brought up a lot of the things I’ve been thinking about and fighting with Rails lately, which I suspect happens with every open source project once it hits a certain size. It boils down to one thing:

Rails moves too damn fast.

This is both a blessing and a curse - for those of us hacking away on the bleeding edge (I start most fresh apps on edge), it’s wonderful. Bugfixes show up (or we can add them) overnight, and the community is always looking to improve upon our existing solutions. I’ve used at least 5 auth solutions since I started with Rails, and they’re getting better every time. The same thing applies to testing - remember when shoulda was the cool kid on the block?

There are problems, though. From a developer’s standpoint, if you’re not in the thick of it, it’s easy to get left behind. @bphogan hits the nail on the head here:

For those of us with deployed and active apps, often times they can get left behind - I’ve got at least a few apps on 3.0.0, and the company I was chatting with has some still on 2.3. They just don’t have time at the moment to make the migration, and they have concerns about how sustainable it will be to keep up with current Rails versioning.

I don’t have a ready-made solution, but I’ve got an idea:

An enterprise Rails distribution.

I hate that word, but it makes sense here. Rails needs a CentOS to its Fedora, something that intentionally and methodically slows down progress, focusing on stability and security. An organization that works on backports, security patches, and best gem choices. Anybody coming into Rails today has a million decisions to make that could give them so many headaches down the road - do I use devise or authlogic? Formtastic or simple_form? Test::unit, rspec, shoulda?

I’d love to see some of the large companies invested in Rails’ future help out with something like this. Blue Box Group, GitHub, Engine Yard, Heroku, I’d love to see some of your ops chops and learnings getting passed back out to the community!

Rails friends, I’d love to hear your comments and thoughts, even if they’re that this is a terrible idea and I should feel bad for even thinking about it. Drop a comment or a tweet (@adrianpike) my way. :)

Posthumus edit #1: The fine folks at github have a branch where they’ve been applying patches & backports to older versions of Rails as they work up to 3.2. @holman mentioned that they might do a writeup once they get up to date, which would be awesome!