Development Process

Note

This part is a work in progress, reach out to the maintainers if you have any questions!

We recommend you follow Kenneth Reitz folder structure guide when writing Python programs which will be under the control of the ActivityWatch organisation: http://docs.python-guide.org/en/latest/writing/structure/

Working with submodules

Working with submodules comes with some complexity, here are a few neat tricks to make things easier:

  • We recommend configuring git to include submodule changes in git status, you can do so with the following: git config --global status.submoduleSummary true

  • If you want the latest committed version of all submodules, use: git submodule update --recursive

  • If you want the latest master branch on all submodules, use: git submodule update --recursive --remote

  • If you want to ensured you’ve pushed all commits in the submodules, use: git submodule foreach 'git push'

A longer guide to git submodules can be found here.

Making a release

  1. Close milestone on GitHub if one exists.

  2. Ensure that all the tests pass: make test && make test-integration

  3. Test the latest build and check that it works correctly (use the nightly builds: issue #507)

  4. Write a changelog entry in docs/changelog.rst

  5. Sign the commit: git commit -S -m "bumped version"

    • NOTE: don’t push it before the tag! (if you do, CI won’t run on the tag)

  6. Create a signed tag: git tag -s v0.7.1

  7. Push the commit and tag: git push origin refs/tags/v0.7.1

  8. Create a draft release on GitHub

    • Generate changelog with python3 scripts/build_changelog.py

    • Clean it up a bit (remove non-user-affecting changes, merge commits etc)

  9. Wait for the builds to finish

  10. Publish the release

  11. Post about it online: Twitter, the forum, mailinglist (if major)