All, We still have a few pain points left in our development process that I think are easy to fix with a bunch of simple rules. I think releasing 4.0 will be less painful if we try to address these.
1. Branch management for maintenance releases We already had this discussion during 3.2.1 release cycle, and agreed to follow the approach that is in line with what OpenStack and most other free software projects are following. Still, I think we should do better at actually following the process we agreed to. To see how good we were at following it for 3.2.1, open two terminal windows and run: git whatchanged 3.2..3.2-fixes git whatchanged 3.2..master and for each commit in 3.2-fixes, try to find a matching fix in master. Last time I checked there were still many cases where bugfixes were merged to 3.2-fixes before (or even without) merging them to master. Did anyone actually check that we're not missing any important fixes from 3.2.1 in 4.0? We should create a new stable/4.0 branch as soon as 4.0 code freeze is announced (ideally, the announcement itself should direct committers to the new branch). Reviewers should REJECT all commits to stable/4.0 that have not been merged into master, unless a justification is provided in the COMMIT MESSAGE. 2. Management and code review of feature development branches Yet another thing that everyone seems to agree on is that huge long-lived feature branches with many commits and thousands of lines worth of changes are evil and dangerous. Luckily, the move to Gerrit will make it hard enough to maintain and merge multi-commit branches, and will push people towards committing and merging changes in smaller self-sufficient chunks. A recent negative example is the fuel-library pull request #911 that has merged 104 duplicate commits from ancient alternative history into master, instead of simply rebasing a single commit. The only way to prevent something like this from happening is to summarily reject changes that are too large and/or contain messy revision history. The other side of the same problem is holding back small reasonable changes for too long, placing unnecessary burden on authors to keep rebasing their change on top of other changes that got merged earlier. For example, my own fuel-docs pull request #67 sat unreviewed for a week only to be obsoleted by the move of the repo to StackForge (after being obsoleted couple more times by changes that were merged ahead of it). I suspect most other developers had similar experiences. On top of obvious frustration, holding a change back tempts the author to keep piling changes onto the same request instead of creating a new review request on top of updated master for their next set of changes. To use the same example, most of the third commit on #67 should really have been a separate pull request. The fix is once again rather obvious: when going through reviews, start with fixes for critical bugs, then go through remaining reviews starting with the least recently updated ones. Don't merge a review request if there's an older review request that can also be merged. I'm using this link to see all our outstanding review requests: https://review.openstack.org/#/q/status:open+project:^stackforge/fuel-.*,n,z Right now I see that there are review requests that have +1 from CI and from reviewers (meaning they can be merged) sitting unchanged since Nov 25, and a few unreviewed requests going as far back as Nov 3. We shouldn't have a request sit untouched by an approver for more than a week, let alone a month. If there's a any reason you don't want to merge it, give it -1 and explain. Otherwise, there's no reason not to give it +2. If you have time to review and merge a newer request, you have time for that older one, too. 3. Bugs triage Moving our bug tracking to public launchpad was an important step towards opening up our development process, now we should improve visibility of our bugs triage and release management processes. In addition to announcing target release dates, we should also have well defined release criteria (for example, no critical bugs affecting the upcoming release, no more than 5 bugs with high importantce, etc.), and documented rules on how to set importance of a bug. We don't have to be rigid and beaurocratic about it, but having documented criteria will help all participants of the process prioritize their own work and understand how it fits into the state of the whole project. It will also help avoid situations like missing an important bugfix in a release, by forcing us to review priorities of all open bugs before announcing a release. -- Dmitry Borodaenko -- Mailing list: https://launchpad.net/~fuel-dev Post to : [email protected] Unsubscribe : https://launchpad.net/~fuel-dev More help : https://help.launchpad.net/ListHelp

