Android release notes

The release notes for the Android application are maintained as part of the repository in a file named CHANGELOG. Every release to the Play Store has a section in the document. Each section title has two parts, namely

  • The date of release, in the format YYYY-MM-DD

  • The build number, which is a number auto-generated by the CI system (currently a monotonically number)

The two parts are combined together using a hyphen. For example, if a build was released to Production on 15th January 2019 and the build number was 1000, the section title would be 2019-01-15-1000.

Any changes to master that haven't gone into a release branch yet go into a "live" section called Next Release. Any PR that includes a change (see section below as to what constitutes a "change") to the codebase must also add an item to this section describing the change.

When a release branch is cut out from master and goes live on DEMO, the changelog must be updated and the section should be renamed from Next Release to On Demo. When the demo branch goes live on Production, the section title must be updated again with the final section title as described above.

Types of changes

Each changelog section can have upto three different sub-sections, based on the category of change:

  • Feature: This is a user-visible change that adds new functionality to the application. There can be three categories of features:

    • The first category is a feature where the development is complete, but it is behind a local feature flag (one that needs to be manually toggled and requires a source code change to enable). This kind of feature will go into the Features section, but will need to have a note along with the feature that the feature is disabled. When this feature is enabled, the change that enables this feature should go into the Internal section (see below).

    • The second category is one where the development is complete, but it is behind a remote feature flag.

    • The third category is one where the development is complete and there is no feature flag.

  • Internal: This is a change to the codebase that does not add any new functionality to the application, but may or may not have user-facing functionality. Toggling of a local feature flag to enable (or disable) a feature will go here as well.

  • Fixes: This section includes bug fixes.

Example changelog section

CHANGELOG.MD
## 2019-01-15-1000
### Features
- Allow user to select between normal call and masked call (disabled locally).
- Nudge app updates when the locally installed app version is outdated.
### Internal
- Enabled feature to show the "All Patients" view.
- Disabled brute force protection feature.
- Improved performance of local patient lookup by 20%.
- Added support for server-controlled resync.
- Migrated all usages of v1 and v2 api versions to v3.
- Change patient summary layout to match Zeplin.
### Fixes
- Fixed crash when there are more than 1000 patients matching the search term.