Hi folks,
I want to talk about the release process. Specifically, I want to talk about
how we can improve our release process.
There are a couple things I want to see in our release process:
1) Regular, periodic releases.
I had been shooting for every four weeks for the 3.0.x series. I don't think
this means we have to be held to a particular deadline. I think that if people
know that approximately every N weeks, we'll have a release, it will help
reduce upgrade friction.
Mainly what this means to me is setting expectations with the community, and
sticking to what we say.
2) Distributed responsibility
I would like to improve our Bus Factor. Today, I am the only one doing
releases. That means we have a Bus Factor of one. If I get hit, who will take
responsibility?
In order to fix this, I think we need other core team members to do releases.
In fact, I think it should be a requirement *as a core team member* to do
releases.
We require that core team members are able to work on all aspects of Rails (AR,
AS, AP, etc). If we make this requirement for the code base, we need to make
this requirement of our process.
We all need to go through the pain of the rubber actually hitting the road.
We all need to make the tough decision to release, or to face our users and
tell them why it is late.
I propose that we each take turns releasing Rails, and we publish who will be
doing which release. I think it will improve our Bus Factor, frequency and
stability of our releases, and improve our team overall.
If we can agree on these items, I will put together documentation about how to
release Rails, along with a roster of who will be releasing what. I will even
personally work with each core team member until we're all comfortable with the
process.
The status quo cannot remain. I can't be around all the time to do releases,
as frankly, it's burning me out.