DEV Community

loading...
Cover image for On Death and Dying: Ruby on Rails

On Death and Dying: Ruby on Rails

remy29 profile image Arthur Remy Updated on ・6 min read

Is Ruby on Rails a “dead” framework?

Perhaps a good place to start would be with a statement from the creator of Rails, David Heinemeier Hansson when asked about a blog post discussing the topic: “Cools! I don’t really care much to respond to trolling nonsense like "Rails is dead". It’s not worth the dignity of a response, given its obvious fallacy. But thanks for trying anyway 😄”.

There is a clear emotion shining through Hansson’s words: the irritation of someone who has had to answer the same damn question too many damn times. What is inferable from how he phrases his response is that he thinks it’s a topic not really even worth broaching, that the topic of “Rails being dead” is on the level of a bad internet meme, and that the people who promulgate it are mere trolls.

Somehow, though, this question just won’t stop popping up. Hiding somewhere in each conversation about the well-worn framework is the inevitable interjection of some variation of: “yeah, but isn’t Rails dying though?”. Let’s take a dive into some opinions on both sides of the matter, take into account some facts, and see if we can glean some insight on the oft-asked question. Let’s find out if this truly is just a bad internet meme pushed by think-pieces trying to be ahead of the curve, or if there is in fact some validity to the concern.

If you’re anything like me, you’re fairly new to your career in development. Some relatively important choices have to be made early on. One has to decide what tech to specialize in. Picking languages, frameworks, libraries, etc, to dedicate yourself to isn’t a choice you should make lightly, therefore when news spreads that “Ruby on Rails is Dead!” it can make you seriously second-guess placing your bet on that horse. For this reason, I want to explore the topic from the perspective of a newcomer just deciding what technologies will best suit them and their career. Without any pre-existing biases, preferences, or notions of best practice; without any pre-existing investment in the Ruby on Rails ecosystem as a new developer, is it a good choice?

Some Diagrams

Let's start by having a look at some factual data. The first question is what exactly constitutes a dead framework? Rail’s naysayers will often point out a slow down in the creation of new Rubygems as proof, however, this argument has some problems, mainly that Ruby is a mature ecosystem. It's only natural that the creation of new tools would mostly slow down when most contemporary problems web developers needed to be addressed with that framework are taken care of. When you finish moving into a house do you keep buying new furniture? Of course not, you sit on the couch you have and replace it when it's relevant.

Perhaps a better metric is user engagement. User engagement tells us a lot, it tells us new developers are spending time asking questions and learning the framework, it tells us experienced developers are discussing advanced topics and techniques, it tells us that in general people are being educated on RoR. Perhaps most importantly it tells us that developers find it worthwhile investing their time in the framework. Let's have a look at the following two charts:

Alt Text

Alt Text

The first addresses the issue head-on, it surveys working developers to find out their take on the matter. This still falls within the realm of opinion, but that opinion seems to be resoundingly clear: yes RoR is still relevant in 2020. The second chart I find a little more interesting, it cross-references the number of projects and questions on Github and Stackoverflow, arguably the 2 largest platforms for all things code. While it’s true that Ruby is by no means the top dog, it certainly hangs out with them. While this chart might indicate the overall popularity of Ruby as a language more than Rails as a framework, it's a fairly safe assumption that most of those Ruby-related queries are also related to Rails. So the answer to the question “are users engaged” is a big fat resounding yes.

The Dark Side

All this aside, Rails or even Ruby being dead isn’t exactly an obscure opinion, what gives? I think the answer is fairly simple. Back in 2008 Twitter (and some other major players at the time) made public that they were moving off of Rails and moving to Scala because of Rail’s supposedly poor scaling. This sparked the debate on the future of the framework which has continued to rage for the last 12 years! This begs the question “if RoR was dead/dying, wouldn’t it be dead by now?”. Well, yes, I think it would be. Moreover, the argument that it's dying because one major platform doesn’t use it anymore is missing the forest for the trees. Basecamp, Github, Shopify, Airbnb, Hulu, Zendesk, not even to mention Netflix, there are some of the names of major players still relying on Rails. If all these companies began to jump ship I would certainly be looking for the exit, but that is simply not the case.

The idea that Ruby on Rails simply doesn’t scale is hotly contested, and while the detractors may take this as a fact, once again it is the stuff of debate and opinion. While there are some strong arguments to be made that on a giant scale this might actually be true, there's plenty of people on the other side of the aisle countering that idea. Take this tweet from Shopify’s Lawrence Mandel as evidence:

Alt Text

Perhaps one of the most foreboding signs for RoR however is that it's not as popular with startups as it used to be. Its reputation for being “on the way out” coupled with the prospects of future scaling issues keep newcomers away. This is likely the single biggest challenge for the future of the framework, which is a shame. People are always eager to move on to the next hot thing without taking into account the benefits of the more mature ecosystem offered by RoR. Tech is all about the “bleeding edge”, but this could be a mistake in this scenario. Unfortunately, though, only time will tell if RoR’s reputation as the oldhead’s framework of choice will have a meaningful impact on its longevity. I think it's somewhat fair to say that the biggest issue RoR is suffering from is its own reputation.

The Bottom Line

So, where does that leave new devs like me? My bottom line is this: it's an absolutely great time to be getting into Ruby on Rails. It is a mature ecosystem, with more resources than you could hope for, experienced devs to help you along the way, gems letting you implement almost any feature you would want, and a robust reputation for having a deep culture of code quality. It's an opinionated framework eliminating a lot of the guesswork for newcomers and is overall a joy to use. Perhaps most importantly, there is an abundance of high-paying jobs looking for Rails devs on the market.
The people of the internet, in my view, have made the mistake of confusing maturity for declining, and while it's certainly not the new kid on the block, it's a worthwhile investment of time for any new dev. “Ruby on Rails is Dead!” is the stuff of bad internet rumors, and opportunistic think pieces trying to seem ahead of the curve. While it’s certainly possible, and even likely that you won’t spend your entire career over the next 20-30 years working with Ruby on Rails, the question was never is it here forever, but is it dying today? The answer: absolutely not.

Edit:
As per leastbad's comment I wanted to link the two resources they pointed out. They're both much more extensive dives into this topic and definitely worth having a look at.

RailsConf 2009 - Keynote: The Great Surplus by David Heinemeier Hansson:
https://www.youtube.com/watch?v=4PVViBjukAE

The Rails Doctrine:
https://rubyonrails.org/doctrine/

Sources:

https://www.tivix.com/blog/is-ruby-on-rails-dead
https://naturaily.com/blog/who-gives-f-about-rails
https://www.ideamotive.co/blog/state-of-ruby-on-rails-web-development#:~:text=Despite%20almost%2016%20years%20since,widely%20used%20among%20professional%20developers.
https://blog.topolyan.com/is-ruby-on-rails-dead-some-real-numbers/
https://devbrett.com/2019/03/why-i-believe-rails-is-still-relevant-in-2019.html
https://www.monterail.com/blog/why-ruby-on-rails-development-2020

Discussion

pic
Editor guide
Collapse
ben profile image
Ben Halpern

Dear fellow readers. You are on a Rails app.

Collapse
andrewmcodes profile image
Andrew Mason

I quite enjoyed this comment as well.

Fellow readers it’s open source too! You can do your part to keep the magic alive and slaps roof firing on all pistons.

Collapse
ben profile image
Ben Halpern

But of course.

GitHub logo forem / forem

For empowering community 🌱


Forem 🌱

For Empowering Community

ruby version rails version Travis Status for forem/forem Code Climate maintainability Code Climate technical debt CodeTriage badge Dependabot Badge GitPod badge Netlify badge GitHub code size in bytes GitHub commit activity GitHub issues ready for dev Honeybadger badge Knapsack Pro Parallel CI builds for dev.to

Welcome to the Forem codebase, the platform that powers dev.to. We are so excited to have you. With your help, we can build out Forem’s usability, scalability, and stability to better serve our communities.

What is Forem?

Forem is open source software for building communities. Communities for your peers, customers, fanbases, families, friends, and any other time and space where people need to come together to be part of a collective See our announcement post for a higher level overview of what Forem is.

dev.to (or just DEV) is hosted by Forem. It is a community of software developers who write articles, take part in discussions, and build their professional profiles. We value supportive and constructive dialogue in the pursuit of great code and career growth for all members. The ecosystem spans from beginner to advanced developers, and all are welcome to find their…

Collapse
jaredcwhite profile image
Jared White

Congratulations! You sir just won the comment of the day award. 😆

Collapse
zarszz profile image
Collapse
andevr profile image
drew

Hey Ben, does dev use a framework for the front end?

Collapse
ben profile image
Ben Halpern

Mostly Preact

Collapse
andrewmcodes profile image
Andrew Mason
  1. israilsdead.com/

  2. This is an incredibly well written article and you are to be commended. It’s hilarious that I detailed in length my intention to write an article with the same name but decided to do it tomorrow which I’m happy about bc this is much more in-depth than my outline.

  3. The is Rails dead question imo exists in 2021 because we joke about it without realizing others don’t know it’s a joke. What’s incredibly unfortunate about this is some people will never get to experience it because of that and because junior developers are paying the price by being told by their mentors that rails isn’t a viable option. We can and need to do better.

Rails is undeniably getting hot again. Some, myself included, lovingly call it a Renaissance. But the bottom line is if we don’t want Rails to die we need to be empowering the next generation of developers and helping them find work and advocating for them at our companies.

Whether Rails will die or not depends on whether we start making sure it doesn’t. And if we don’t, we are murdering Rails all by ourself.

Again this was phenomenal. Thanks for a great read.

Collapse
jaredcwhite profile image
Jared White

Excellent article! Another aspect of this conversation I would like to add:

Sometimes the debate seems to boil down to these talking points:

Person A: you should switch to using the new hotness! (Go?)

Person B: nah I'm good. Boring ol' Rails works fine for me.

Now it's certainly commendable if somebody is still using and appreciating Rails…but my beef lies with the notion that it's "old" and "boring".

Rails (and Ruby along with it) is anything but boring! And if Rails is old, well then so is React, or Node, or whatever because apparently anything older than 1-2 years in "internet time" is considered old! 🤪

To me "Rails is old and boring/yay or nay" is simply a non sequitur. The way I write modern Rails apps today is quite different than how I would have written them 10 years ago, or even 3 years ago. Patterns/best practices change, new gems come out all the time, the frontend/browser tech evolves and Rails along with it, etc. I also witness the rise of Rails-adjacent projects such as Bridgetown (full disclosure, I'm one of the maintainers) that are pushing Ruby in ever new directions re: how websites in general get built today.

In short, while I am happy lots of people like their "boring ol' Ruby" tech, I don't even want to concede that ground. I believe in a thriving, vibrant, modern, and thoroughly forward-looking ecosystem. As Rubyists, let us not simply exist and quietly trudge along. Let's stand up and make some noise.

Collapse
brpaz profile image
Bruno Paz

Ah, still remember when RoR was the "cool kid", when the internet started hating PHP.

Now both are considered "dead" lol. I think that´s good sign for RoR. It´s a sign of maturity and stability!

Collapse
leastbad profile image
leastbad

Great post, kudos. Sadly, the people who would learn the most from it are so hardened and tribal that to click is to admit the possibility of being wrong. And we all know that there's nothing worse than an insecure person being wrong.

Some additional perspective from someone who has been in this from the beginning: before "is it dead?" was "but does it scale?", but before even that there was "this is a toy that's can't hit critical mass". This FUD was largely coming from Java developers (DHH always called them "enterprise astronauts", which made me giggle every time) who were rightfully deeply threatened by how easy it was to stand up a production ready app with Rails; ActiveRecord in particular was described in unflattering terms.

In reality, if Twitter was starting from scratch today, I would definitely use Rails again. The problem was that they were literally doing MySQL joins to push out tweets to (at the time) giant audiences. I feel that if they had a chance for a do-over, knowing what they know today, they would have started out with a clear intention to divide the messaging infrastructure and the front-end from the very beginning, and things would turn out very differently.

Anyhow, there's two excellent links that you should add to your list. You might have seen the Rails Doctrine. It's a long read but a poignant one, and worth revisiting every few years.

It's less likely that you've seen DHH's RailsConf 2008 keynote talk, "The Great Surplus". To me, this is the key moment where he broke down every aspect of why the whole "is rails dead" thing isn't just moot, it's a way that we can enjoy massive advantages over our competitors. It's a 100% must-see, at least once.

Collapse
remy29 profile image
Arthur Remy Author

Thanks for the input and great suggestion! I will link both of these in my post as they are far more in-depth look at the same topic.

Collapse
leesmith profile image
Lee Smith 🍻

The ruby community would do well to act more like the php community in this regard - literally just stop caring if others think your tech is "dead" or not. Facebook and Wordpress run on php and I don't see the php community up in arms that php is not as cool as elixir.

Who cares! Just keep writing ruby and enjoy life!

Collapse
nbageek profile image
Patrick Minton

Folks used to say that PHP was dying when I got into the industry (way back when Amazon only sold books). Today it is still the most widely used language on the web. It's still a pretty big part of a tiny niche website called "facebook".

Most of the time when you hear "yeah but language X is dying," it is being said by an engineer with very little experience who is really just saying "language X is from before I started programming, and I never learned it, so it must not matter." Which is, for obvious reasons, not a great framework for evaluating relevance.

Collapse
divporter profile image
David Porter

Unpopular opinion judging by the rest of the comments, but I really dislike Ruby syntax and I don't like some of the "magic" elements of Rails that are sometimes challenging to trace precisely what is going on. And the bundler is cumbersome and frustrating at times. I did however find Rails to be quite fast at processing queries which renders my gripes less relevant.

And while I'm at it:

  • Java: I hate it.
  • PHP: I don't like the syntax either, it can be very hard to read.
  • Go: Premise is good, but cumbersome, especially the endless error handling. Also quite rigid with the strong typing which most probably consider a feature.
  • Python: I love the syntax, dislike the performance. If Flask was a performant as Rails that would be the winner for me.
  • Node: As performant as the single thread async stuff is, I find you spend all your time making the request handling synchronous. I also hate curly brackets, I prefer ident based code.
Collapse
ic profile image
Eric Platon

Thank you for this nicely wrapped present to Rails and Ruby.

One aspect can be added to the mix: Every existing and new web framework steals something from Rails. So Rails’ genes are selected for the next Darwinian cycles whatever happens to the original Rails.

I had to suffer some Spring in 2010, and again in 2015. Starting a Spring project in 2015 was “new” and structured very much like a Rails project. Same with the Play framework on Scala, down to the project file structure and some configuration. I cite here only 2 frameworks, but this impression of “déjà vu in Rails” just comes back over and over. And, well, I started web development in Ruby with a framework called Merb, which should give a hint I joined Rails from 3.0, and reveal my age.

Coupled with the excellent points in the article, I say to new comers to at least have a look at Rails. It is so easy and comfortable to start with, and allows building the best foundation for web development, one can retrieve in every major framework now.

When everyone copies you one way or the other, you’re doing something “right”.

Collapse
elmuerte profile image
Michiel Hendriks

Talking about scaling/performance. I wonder what everybody uses to run their Ruby application.
The standard CRuby doesn't have the best performance.

Collapse
nbageek profile image
Patrick Minton

This is almost never a relevant benchmark when choosing a framework for building an internet site. And if this kind of performance is crucial to your application, then you shouldn't be choosing Python, PHP, or JS either. If how fast your code crunches numbers or iterates through loops is important, then you are doing something very niche and you should be using a compiled language anyway.

There are just soooooo many bottlenecks on website performance that come before the language's server-side runtime performance that optimizing for that particular aspect is a waste of time.

Collapse
elmuerte profile image
Michiel Hendriks

Who's picking frameworks here? We have an application, and different ways to run them. I'm just wondering what options are being used in the wild.

Have you tried running your long running internet site application on JRuby, or CRuby with/without JIT?

FYI, modern JIT compilers can produce better performing machine code than a AOT compiler. This is due to the fact than a JIT compiler can continuously create tracing profiles and re-compile the code. So there is definitely a benefit of not using a "compiled language". (I assume you mean a language which compiles to machine code rather than an intermediate byte code.)

There is also more to a runtime than just computation. There is also memory management and garbage collection, or creating more CPU cache/memory localized code. This leads to less system resource pressure. Sure, your IO will always be a bigger performance issue. But being able to resort to smaller and less loaded VMs has a significant benefit in your wallet and scalability.

Collapse
_bkern profile image
Barry

Nice article. I always kind of laugh when people call certain things dead or dying because it is very subjective and typically overstated. What is ironic to me is many 'dead' languages and frameworks are still deployed and need maintenance ou there in the world. I use deprecated /dead frameworks/protocols/language versions frequently because large enterprises can be very slow to move or not have proper motivation to migrate. Perhaps not as popular or hyped these days (RoR) I still believe it will be around for a long time and always remain a viable option.

Collapse
jrs profile image
JRS

I just started learning Ruby and Rails 3 months ago, and I've been loving it every since. I decided to commit to learning it because there are tons of rails jobs in the United States.

Collapse
darkogj profile image
darkogj

Yet to find a framework that's as productive as Rails.

Collapse
andevr profile image
drew

Good article. In the last several months I've been learning rails exclusively, and started building my first major project on it 3 weeks ago or so. Rails is definitely not dead 😂

Collapse
achiandet profile image
Aaron Chiandet

Well written, entertaining read. Also helpful as I'm the developer you speculate for in this article. Thanks.