Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

For example, in the current architectural context, we could have:

API versionMaintained API controller's versionCompatible client version (web / mobile)Compatible database version
1.4.11.4.X1.5.01.4.1
1.3.X1.4.0
1.2.X
1.4.01.4.X1.4.0

1.3.2

1.3.X1.3.1
1.2.X1.3.0
1.3.61.3.X1.3.11.2.9
1.2.X
1.1.X1.3.0
1.3.51.3.X
1.2.X
1.1.X

This means that:

  • An API version will contain the definition of past controllers
  • When fixing an API bug in a given API version, this very bug will also be fixed in the 2 previous API versions
  • A MINOR change in the database will trigger a MINOR change in the API
  • A MINOR API change will trigger a database MINOR change only if new data field is required
  • The mobile app versions will be independently incremented

Contribution workflow (GitHub)

A separate GitHub repository is created to manage each openIMIS component, e.g;

  • web_app_vb
  • web_service_vb
  • rest_api_c-sharp
  • etc

Using the Git branching features, each of these repositories will have a master branch (the latest stable version) and a separate branch for each version. For example, for the repository rest_api_c-sharp, there could be the following branches:

  • 1.1.0
  • 1.1.1
  • 1.2.0
  • Master ( = branch 1.2.0)

Contributions for a given version will be made via pull requests:

  • For example, if a bug(s) is found in API 1.2.1, a new branch 1.2.2 is created from branch 1.2.1.
  • No more changes will be made to branch 1.2.1.
  • Developers/contributors assigned to the fix_XYZ will create the branch 1.2.2_fix_XYZ based on branch 1.2.2.
  • Contributors will clone the branch 1.2.2_fix_XYZ locally to work on the fix
  • Contributors will then commit and push their changes to the GitHub branch 1.2.2_fix_XYZ
  • Once finished with the fix XYZ, contirbutors will make a pull request to ask for their contribution to be integrated by the system architect.
  • The system architect will then review contributions and merge the branch 1.2.2_fix_XYZ with a new branch 1.2.2 (assuming that the code change is accepted).
  • Branch 1.2.2 will then be tested before a release is tagged to this branch (=GitHub snapshot for this version)
  • Branch 1.2.2 will be merged with the master branch to ensure that the lastest version is always available through the master branch
  • No more changes will be made to branch 1.2.2.