Every Two Weeks

Mike Burns

Our most popular gems—paperclip, capybara-webkit, factory_bot[^1], and clearance—will see new releases every two weeks.

Trying to be reasonable

Release early, release often. In the past we’ve often released new versions of gems in a “when we feel like it” fashion: either we needed the gem to exist for a personal project, or we’re proud of some change we just made, or someone complained to us about an old version. This lead to a problem: when we were just taking pull requests we didn’t think to release a new version.

By setting up a regular schedule this means that contributions will be more public more quickly. We chose two week cycles as a compromise between releasing very often (every time we take a pull request) and in a wide duration (every three months). Too often and we’d annoy people when they upgrade; too infrequently and the bugs are simply not being fixed for the largest number of people.

It’s a process

Setting aside time to make a release elevates it from “OK I made these changes gem push woo!” to “I am going to make a proper release”—it reifies the release as a first-class action for us to concentrate on. Changelogs, blog posts, and tweets are side effects of putting the right amount of care into releasing a new version of a gem.

When

Factory Bot (factory_bot and factory_bot_rails)[^1] and Paperclip are on a two week release cycle starting January 27th, 2012. Clearance and capybara-webkit are on a two week release cycle starting February 3rd, 2012.

You can track gem releases using the RubyGems Web site and your favorite feed reader. It’s like this:

  1. Sign up for RubyGems, or sign in if you already have an account.
  2. Navigate to the page for the gem you care about.
  3. Click “Subscribe”.
  4. Click the “Dashboard” link at the top of the Web page.
  5. There’s a sweet orange RSS icon in the middle of that page. Subscribe to that link!

This blog post would make no sense in The Land Before Time

When you say “every two weeks”

Sometimes it doesn’t make sense to cut a release only every two weeks. Important security fixes or bugs that block everyone from using the gem are examples where getting something out as soon as possible is the only way to do it. On the other hand, sometimes there simply haven’t been any changes.

If we release a new version of a gem on the 26th and the 27th is when a scheduled release is to happen, it’s likely that we’ll skip the schedule. In general we’ll continue the “do I feel like making a release?” thought process, but every two weeks and with a bias towards a positive answer.

Or whenever

The bi-weekly cycle is new and, like everything else in software and life, worth reconsidering at all times. Please let us know if it’s too often, too seldom, just right, or completely useless to you!


Disclaimer:

FactoryGirl was renamed to FactoryBot in 2017. Project name history can be found here.
RubyGems factory_bot.
RubyGems factorybotrails.