3 min read

Taking a Step Back from Ruby

I wrote briefly about this on Mastodon earlier in the month, but I wanted to expand on my thoughts a bit.

I’ve been writing and defending Ruby for more than 20 years. It isn't a huge community, and it's often dismissed by others. But whenever people were content to dismiss or write it off, I've always put on a smile and explained why I loved writing Ruby.

Writing in Ruby has always given me the ability to express an idea in code in a way that felt natural and human. It lets me write something that's clear and direct. Your code ends up being more like a conversation between people, rather than simply instructions.

You could write this:

def active_users_over_age(users, age_limit)
  result = []
  users.each do |user|
    if user.active && user.age > age_limit
      result << user.name
    end
  end
  result.sort
end

But, in Ruby, you could also write something like:

def active_users_over_age(users, age_limit)
  users
    .select { |u| u.active && u.age > age_limit }
    .map(&:name)
    .sort
end

Or, perhaps:

class User
  def eligible?(age_limit)
    active && age > age_limit
  end
end

def active_users_over_age(users, age_limit)
  users.select { |u| u.eligible?(age_limit) }.map(&:name).sort
end

There’s an inherent flexibility I’ve always felt comes with writing Ruby. You can express what your code is doing in many ways and you can iterate and improve on patterns.

I’m not saying this isn’t the case in any other language, but over 20 years ago, when Rails was first announced, I had been primarily writing J2EE web apps for years. Rails was a revelation and Ruby was beautiful.

Again, Ruby has always been a relatively small community, but I’ve always been proud of it. When people claimed Rails didn't scale, we would point to GitHub, Shopify, and others. I volunteered enormous time and energy to organize and run the Rails Rumble and Ruby Rampage hackathons for several years, when we had thousands of people across 500 teams — per year! — competing in the largest virtual hackathons in the world, just for fun. Just to be part of the community.

Today, though, things are different. I’m extremely disappointed by what’s been done by Ruby Central and the Ruby Core Team with regard to Bundler and RubyGems.

Ruby hasn’t been the primary language I use in my day job for the past five years (that would be Python), so I feel privileged that I’m even able to take a step back from it. But because of everything that's happened recently, I’ve been deeply unmotivated to work on my side projects, which are all written in Ruby.

Recent events with Ruby have compounded my negative feelings toward Rails, despite using it since its pre-1.0 days, as a result of the increasingly disgusting things written by Rails’s BDFL and the Rails Core Team not caring.

I had already been unmotivated to work on one side project because it used Rails, but I had started on a pure Ruby CLI tool recently, as well as started planning to migrate my larger project to Hanami — a great framework with a wonderful community, and a reminder that the problems aren’t with everyone in the Ruby world, but with those in power.

Unfortunately, I’m now unmotivated by both, because it’s not just a framework thing anymore, where I can keep finding joy writing in such a wonderful language. Now I’m disappointed in Ruby so completely, I don’t want to be writing with it at all. It makes me not want to continue investing in the language. I’ve put so much into Ruby and the community over the years, it’s just sad to see it this way.

So, I'm going to take a step back from Ruby and invest more time in Python. It's a great language, which often gives me those good feelings I got from writing Ruby. Perhaps these many decades into my career, I’m ready to embrace the “there should be one — and preferably only one — obvious way to do it” philosophy. And what's even better? Just this week, the Python Software Foundation withdrew a $1.5M proposal to the U.S. government because of the requirements to shut down their DEI-related activities. That’s what true leadership looks like.