Release & Development Process

This document would give an idea how aah framework Development and Release Process. I will be improving process efficiency iteratively as project moves on.

Table of Contents


aah framework internally uses codebase for Package Versioning and commitment to provide stable release version in-addition to the user choice of package management tools like glide, govendor, etc.

  • Github Tag is Stable and Production ready.
  • Default branch is v0-edge, v1-edge, and so on. Development, Bug fix, Pull Request, happens on that.
    • Note: master is not a default branch for aah framework.
  • Branch master is kept as tidy codebase of aah framework.
  • In the being of every development iteration, version is updated from v0 set to v0-edge (v1, etc.)
  • In the release preparation package references are updated from v0-edge to v0 (v1, etc.)
  • Travis build, test cases and few manual dry-testing to ensure codebase is stable & ready for the release.
  • PR created from v0-edge branch (v1, etc.) to master branch.
  • Release tag gets created from latest commit sha, typically readme file update commit of the release.

Release Cycle

  • Security fix is gets addressed and released as soon as possible, refer to how to report security issues?.
  • Bug fixes and minor enhancements are planned to release on monthly basis.
    • Please Note: If zero bug fixes then this release may not happen.
  • Feature and Enhancement is planned to release every 3 to 6 months cycle.
    • Smaller feature or enhancement might get released earlier.
    • Have a look on Roadmap.

API Stability

aah framework and it’s libraries will be maintained in a compatible way between major version unless some vital bugs prevent me from doing so. I don’t take API changes lightly.

Process to Release Framework/Library

  • Make good effort for Unit testing and code coverage
  • Check Travis Build is alright and you get green ticket on Github.
  • Execute shell script with library-name, version and release as parameters.
    • bash <(curl -s router v0 release
    • It basically does find and replace of v0-edge to v0.
  • Commit it as preparing for v<version-number> release.
    • For e.g.: preparing for v0.5.2 release.
  • Update with appropriate information (status icons URLs, version no, date, etc).
  • Commit it as readme update for v<version-number> release [ci skip].
    • Typically used for creating release tag with this commit sha.
    • We are building branch and master that is good enough for consistency check and release. Let’s use the Travis CI resources optimally for aah framework project.
  • Push it to repo.
  • Create a PR from branch v0-edge to master and Merge it.
  • Update the Documentation on go-aah/docs repo.
    • On go-aah/docs branch master is always the latest release.
    • Create a branch from master for previous release.
      • These previous release branch docs are accessible from by version-number.
      • For e.g.: new release v0.6 so create branch called v0.5 from master (preserving previous release docs).
    • Update the documentation on the branch master for the release and add Release Notes, Changelog and Migration Info.
    • Push it go-aah/docs repo.
  • Create a Release Tag and Publish
    • Tag name must comply with SemVer For example: v0.1, v1.0, v1.0.1 etc.
    • Release Title is v<version-number> Release.
    • In Describe release text box, put the links to official website for release notes, changelog, migration info.
    • Hit the Publish release button.
  • Refer Broadcast section about making release announcement.

Broadcast Framework Release

We have to broadcast new release of Framework on -

aah community: Framework and Libraries release.

Global Audience: Only Framework release.