This topic became top of mind for me recently because there was another post on Hacker News about whether or not Rails was still relevant. It comes up quite frequently, and with good reason. When deciding to build a system, matching up the framework with the goals of the project are critical. Reading through the comments on HN it was, as always, a mixture of comments ranging from “Rails is the greatest of all time!” to “I worked on a Rails app, and it was terrible, Rails is terrible.”
Reading through the comments, most of the support of Rails was centered around a few topics:
- Great for development speed – full stack framework that has an ecosystem of gems that integrate with it directly.
- Ecosystem is big – ton of gems to do almost anything you need.
- Testing is first class – Rails ecosystem has always promoted testing and libraries emphasize it.
- Actively developed – Rails 7 just came out in December of 2021, before that Rails 6 came out in August of 2019.
While I agree with all of those things, these alone would never be enough to keep me in the ecosystem and certainly wouldn’t convince me to join the ecosystem. If there was a newer equivalent to Rails in a more popular ecosystem we would happily explore it and use it where it made sense, but after a lot of searching I don’t think we are there yet. You might be reading that and thinking: “you idiot, there are a ton of modern Rails equivalents in other ecosystems!”
Dependable, Boring, and Gets the Job Done
The Rails ecosystem is the exact opposite. Sure there are a few alternative frameworks to Rails, some of them with some great ideas, but there isn’t any real competition in the Ruby space. Every Ruby gem that you want to use is designed explicitly to work with Rails. No fiddling to plug this framework into that framework, or having this framework step on that framework (yes, it happens occasionally, but it is resolved quickly). Gems can count on the fact that you’ll be using ActiveRecord or ActiveJob and because of that can integrate directly into this tooling. For the most part, it all just works, and you can count on things being compatible. As long as Rails exists, it’ll continue to operate that way. The community has no incentives to break things in fundamental ways or go down paths that lead to upheaval.
That last paragraph may have sounded incredibly boring to you, but that is also what a mature software ecosystem that is built around a single tool looks like. For many organizations, applications and software engineers, the primary goal is to pragmatically build lasting software using tools that we know we can depend on.
Everything is About Tradeoffs
It’s critical to keep experimenting, to stay informed on industry trends and new technologies, to never get too complacent. We always strive to evaluate new tools that claim to solve problems in better ways. Choosing Rails or any piece of a solution should always be a decision made by evaluating the needs of the project, not just a lazy default because that’s how we’ve always done things. At the end of the day, you can build most systems in most technologies, with various tradeoffs. Choosing the right tool is about understanding the goals of a project.
For me and most of our clients, delivering working software that lasts is the only goal that matters. To do that, I need tools I can depend on, and there aren’t a ton of tools that I use which have made it into that list.
I can depend on Rails.
What tools can you truly depend on?
Loved the article? Hated it? Didn’t even read it?
We’d love to hear from you.