Project

General

Profile

Release guide

In this article, we describe how we handle OpenWalnut releases. This might be informative for you but is also a checklist for us. We begin with describing the organizational part. In the second section, we list the technical work for actually doing the release.

Organizational

  1. All: decide for feature freeze
  2. All: define feature set
  3. Project Manager: decide feasibility of features
  4. Project Manager: assign features to developers
  5. Project Manager: define fuzzy deadline
    • defines release month, exact date not reasonable
  6. Release Manager: summarize feature set in Roadmap (website)
  7. All: create tickets for features or assign existing tickets to target version
  8. All: work on the tickets
  9. Release Manager: check for progress & ensure progress
  10. Release Manager: responsible for release
  11. Release Manager: finally, build (technically) the release
    • Packaging, upload and so on

After Release:

  1. Release Manager: assign bug reports to developers using tickets
  2. All: fix bugs, do not add features
  3. Release Manager: decide for bug fix release, start at second step

Technical

  1. Release Manager: create a branch for the release.
    • The branch is named "OpenWalnut_MAJOR.MINOR"
    • The branch is named with MAJOR.MINOR and does NOT include the patch number.
      • The 1.2.5 branch is an exception from the rule.
  2. All: work on assigned tickets in branch only
    • Merge these to default regularly
    • Accidental commits to default are patched into release branch
  3. Release Manager: prepare source in release branch
    • Change version info in VERSION file
    • Change version info on doc/core/doxygenConfig and doc/developer/doxygenConfig
    • Modify version info in tools/release/owrelease
    • Update the distribution package specific changelog files
      • for DEB packages, use "dch" to add a changelog entry
    • No further changes needed as the build&pack scripts manage the remaining things
  4. Release Manager: on release, set a tag to release branch head revision
    • The tag is named "Release_MAJOR.MINOR.PATCH"
  5. Release Manager: use owrelease, owpack and owrelease for release packaging (source:tools/release/)
  6. Release Manager: upload src and binary packages, update NeuroDebian package
  7. Release Manager: update documentation
  8. Release Manager: make some advertisement
    • Add a News-entry
    • Announce on mailing lists (openwalnut, openwalnut-dev)

After Release:

  1. All: fixes for bugs in the release branch
  2. All: no adding of features in release branch
  3. Release Manager: for bug fix release, add tag with incremented patch number
    • named "Release_MAJOR.MINOR.1" in branch "OpenWalnut_MAJOR.MINOR"