commons-app-documentation

Project maintenance

Pull requests and merging workflow

See Developer workflow

Procedure to release a new version

Before release

Before proceeding to do the steps necessary for publishing a release, make sure you build the prodRelease variant of the app from the code you plan on using for the release. If that build works fine, you could proceed with the steps to release the version.

This is particularly necessary if the change touches any model classes as ProGuard would kick in and trim them if our rules are not appropriate.

Generate release build after verification

  1. Add the new features to CHANGELOG.md
  2. Increment versionCode and versionName in app/build.gradle
  3. Commit, and push to Github
  4. Tag the commit as v + the version number, for instance v1.32 for version 1.32. This is needed for F-Droid (git tag v1.32). Don’t forget to push the tags (git push --tags).
  5. Generate the signed app bundle using the keystore via the Build > Generate Signed Bundle / APK menu [ref]
    • Note: In this step, we need to generate an APK not an Android App bundle.
  6. Create a new release in GitHub and publish the same with appropriate release notes. The CHANGELOG content helps here. Further, GitHub’s auto-generated release notes is also helpful as it lists all PRs that were included in this release along with a section highlighting the “New contributors” to that release.

Publish ‘Open testing’ release

  1. Once the production APK is ready, go to the Google Play Console and switch to the Testing > Open Testing page.
  2. Click ‘Create new release’ and upload the production APK.
  3. Make sure to attach the ReTrace mapping file located at app/build/outputs/mapping/prodRelease/mapping.txt to the uploaded APK. This is possible through the overflow menu seen near the uploaded APK.
  4. Fill in the changelog and verify rollout information.
  5. After verification is done, rollout the release for testing.

Promoting the test release to production

  1. Go to the Google Play Console and switch to the Testing > Open Testing page.
  2. Click on the “Promote release” button on the last testing release and choose “Production” from the menu.
  3. Verify the release APK attached, release notes and if all looks fine, hit “Next”.
  4. Initiate a staged roll out of 20% and hit “Save”.
  5. Go to publishing overview, cross check stuff and send the changes for review.

Branching and hotfix system for releases

Moderation of the mailing list

The mailing list is moderated by volunteers. New users who post to the mailing list have their messages put in a moderation queue, and an email is sent to the moderators asking them to either whitelist or blacklist the person. The moderator receives emails with this kind of title:

commons-app-android - Google Groups: Message Pending [{IJCjjKCbgtX0ASoCb2kwB4ITL8vhkvwd0}]

A moderator will then review the email, and blacklist or whitelist the sender. All spam will be blacklisted; Spam is often companies that want our app for advertising.

Notes for moderators: