26
Jul 10

ActiveSupport Considered Harmful

This an open letter to my fellow ruby gem authors and maintainers.

Hi Everybody,

It’s been a while. You’re doing awesome stuff; all this great code out there making Ruby do all sorts of nifty things. It’s a big reason – maybe the reason – why being a Rubyist is so great. But yeah, there’s just one thing that’s been bugging me… we need to talk about ActiveSupport.

ActiveSupport is great, don’t get me wrong. I love try and tap and sum as much as the next guy. It sure saves me some lines of code. But the problem is it’s, well, a little invasive. Many of us love Ruby precisely because it’s more flexible than a Russian gymnast. But just because you can reopen Object and add

class Object
  def your_great_method
    puts "HEY I'M CHANGING OBJECT"
  end
end

doesn’t mean you always should. As we all know, ActiveSupport is one giant ball of I’M CHANGING OBJECT (and Enumerable and Array and String and, well, you get the picture). This is a pretty awesome idea in a controlled environment like Rails. Rails is all-encompassing. When you write Rails, you’re not really in Ruby anymore, you’re 3 layers deep, Inception style, inside DHH’s dream of web programming. In that world, Object can do magic things and Strings can inflect right back on themselves. And so, of course, ActiveSupport is an integral part of Rails (more on that in a moment).

The problem comes when you decide you just can’t  live without tap or a few of these other modern conveniences and so you throw in the ol’ ActiveSupport dependency in the gemspec. The first effect of this is that whatever project your users are working on now much bring in this giant ball o’ Ruby changin’ with its various invasions, idiosyncrasies and occasional incompatibilities.

But, you say, most people are using Ruby for Rails and Rails has ActiveSupport baked right in. We’re good right? Well, no, actually. This is where it gets really painful. When you’re gemspecin’ and you decide to throw in that latest version of ActiveSupport, well, you’re basically telling every Rails user out there that’s not on the latest version that they need to upgrade their entire environment just to use your gem. Now, the Ruby community is made up of people who are pretty early adopters so many people are on the latest and won’t even notice. However, as Ruby gets more mature and lots of people have lots of versions of things out there, not everyone can just upgrade at the drop of a hat. You’re cutting off those people from your gem awesomeness unless they either a) upgrade (which isn’t always immediately possible) or b) resort to horrifying monkey patches. And all this because you just love sum so much.

So, my fellow gem authors, I ask you to think twice next time you really want to use that convenience method that’s only in ActiveSupport N.N.N. Perhaps a little helper method would do? Maybe one that’s in your gem’s own namespace perhaps? Your users will thank you.

Sincerely,

Hayes


19
Jul 10

Austin

At the beginning of 2005, I knew nothing about this city that I’ve come to love. That spring, Jenn was accepted into the Organizational Communication PhD program at UT and suddenly Austin was on the short list of places that we might make our home. We came to visit for a few days; it was warm (even in March), it was green, there was a river, there were hills, the people were friendly and there seemed to be a never-ending supply of bars and tex-mex. It was my first visit to Texas. We came back again for a weekend June. On that second visit to Texas, we bought a house. And so, five years ago this month, we moved to Austin from Raleigh, NC.

Jenn went to school and I worked remotely for a company in Raleigh. This was the first chapter. We made friends, we played kickball, we learned our way around. We got used to the heat (though the humidity wasn’t as bad as North Carolina despite what anyone said). This part was fun, but I never felt terribly connected to Austin. Most of our friends were here for grad school as well. They were from all over and knew they would be leaving in a few years. These are some of my dearest friends and will be so for the rest of my life, but we could all have met up anywhere. So that was not when I came to love Austin itself.

In 2008, I was feeling the itch to start a new company. This is the second chapter. That spring, we went to SXSW. In May, I quit my remote job in Raleigh and Jenn and I founded Appozite. I was a Ruby n00b but had decided that I would write our software in Ruby. I’ve never been much of a “user group” kind of person but I wanted to learn, so I went to an Austin on Rails meeting. I was in over my head during the presentations and I didn’t know anyone. Afterward though, Damon Clinkscales took the time to sit down with me over beers. He was genuinely interested in who I was and what I was doing. At that point, I realized there was something special here in the tech community Austin.

What followed has been the most fun, stressful and interesting two years of my life so far. And I owe most of that to the people here in Austin. Jenn and I went to all sorts of things: Refresh, tweetups, Bedouins, more SXSWs and on and on. I got to know other people struggling with the same challenges I was. I learned from those who had already been through it a few times, with their experience of both successes and failures. I felt what it was like to be part of a real community of people doing diverse things, learning from each other, sometimes competing with each other, and always supporting each other. I’ve made incredible friends in Austin over these last two years and met some incredible people who have advised us as we continue to build Appozite. This is when I learned to love the unique people and character of Austin.

The people are the reason it’s now so difficult to say goodbye. In a few weeks, Jenn and I will be moving to San Francisco to pursue our goals both personally and professionally. We have big ambitions for Appozite and our products and we believe that the Bay is the right place to realize those. More than that, we’ve always had a deep love of San Francisco; we spent our honeymoon there. We know that, for us, now is the time.

So, to all our friends in Austin and to so many of you who have supported us, thank you. You probably don’t realize the impact you’ve had on making us who we are today. We love this city and the people.

Goodbye, Austin.