Notes for managing release 2016.10

From opm
Jump to: navigation, search

To do some time before the release

  • Start discussing what should go in the release and what should not.
  • Call a meeting near (preferably before) the release month to get concrete commitments and estimates for individual features.
  • Discuss packaging and related issues with the packaging responsible (Arne Morten Kvarving), to see if there are any important changes (new Ubuntu versions, changes to module structure etc.)

Modules for the 2016.10 release

  • opm-common
  • opm-parser
  • opm-output
  • opm-material
  • opm-core
  • opm-grid
  • opm-simulators
  • opm-upscaling
  • eWoms

Also:

  • opm-data (must be up to date for tests)
  • opm-utilities (must verify that Vagrant works at least

Phases of the release process

  1. Startup. Agree on approximate schedule, evaluate which ongoing work should go in and not, trial packaging (October 7 - October 12)
  2. Consolidation. Reduce issues and merge pull requests (or explicitly postpone until after release) (October 13 - October 25)
  3. Testing. Create release branch, repeatedly tag, test and fix until stable (October 25 - 31)
  4. Release. Final tag and verification, announce to web site and mailing list. (October 31 -)

Log for release process

Date Task
October 7, 2016 Hangout with (some) maintainers to discuss release. Delegated responsibility for restart-related integration to Tor Harald Sandve. Discussed packaging with Arne Morten, agreed on October 20 as the time for making the release branches.
October 7, 2016 Send email to OPM mailing list, calling for contributions to be finalized for the release.
October 12, 2016 Arne Morten reports that initial packaging run complete, PRs for necessary packaging updates pushed.
October 13, 2016 Create this wiki page for easier transfer of knowledge, for later release managers.
October 13, 2016 Update figure for the website showing module dependencies. (Now opm-output depends on opm-parser, perhaps old figure was wrong?) Figure is located in private OPM/articles repo, in the figures subdir.
October 14, 2016 Start going through issues and pull requests, defining milestones for the release, sorting issues/PRs to be handled/merged for the release or not.
October 20, 2016 The merging of features has not gone rapidly enough to create the release branches. Sent out email to maintainers describing situation and requesting assistance for particular details, and suggesting October 24 as branch day. Delays partially caused by large PRs, such as OPM/opm-parser#939.
October 21, 2016 By this afternoon, all open PRs that were marked for release have been merged. We still want to try to get better restart functionality in, but will not let perfect restarts stand in the way of a release. We have a regression failure that must be addressed before release though.
October 24, 2016 Regression is getting fixed, also bug discovered in restart functionality. Declared a further 1 day delay, making October 25 branch day, to get these two things in.
October 25, 2016 Submitted PRs for the restart fix. Started going through the repos building from scratch to clean out any compiler warnings, and pushed PRs. Discovered significant bug in opm-simulators, that would have held back release, fixed in opm-simulators#876. Late in the evening, release branches were created as announced to maintainers.
October 26, 2016 Sent email to maintainers requesting change summaries for release notes. Initial version of Ubuntu packages ready on ppa:opm/testing. Bugs for two-phase simulations were discovered, that were considered necessary to fix for the release.
October 27, 2016 Testing of Ubuntu 14.04 packages conducted on virtual machines.
October 28, 2016 Identified bugs fixed, merged to master and cherry-picked to release branches for opm-output, opm-core and opm-simulators.
October 31, 2016 Test results are in, and successful. In particular the most complex test is ok (running model 2 in parallel with the flow_mpi binary from the Ubuntu package). Final sanity testing performed (running the packaged binary again, compiling the release branches, looking at the release vs master branch logs). Release declared ready for final build, Arne Morten starts building the packages.
November 1, 2016 All packages are built and ready, release announced on mailing list and web site.

Release branches

In all repositories, the release branches are named "release/2016.10".

How I created the release branches.

Release notes

While it would be better to log changes for the release notes as we go, that was unfortunately not done. To get an idea of the changes it seems reasonable to take a look at the PRs merged since last release. For that, I used a slight modification of the "alldo.bash" script used when creating the branches:

#!/bin/bash
echo "============ Running log commands ============="
for m in $(cat modules); do
    echo "=== Entering module: $m"
    ( cd src
      cd $m
      git log --oneline --decorate upstream/release/2016.04.. | grep Merge
    )
done
echo "============ Done running log commands ============="

This gave only a few false positives, in any case using 'grep' and 'wc' to count only the lines containing "#"it turns out we had 572 merged PRs since last release!