openIMIS consists of a number of interacting components (web app, mobile apps, API/web service, database) which are maintained in parallel GitHub repositories, as a result it is important to track and document compatibility across different versions of each component.

Numbering system

Maintenance / Compatibility

The 3 most recent versions of the API will be maintained, where maintenance means that only bugs will be fixed in these versions. Only the latest version of the mobile app is maintained. The same will apply for the database.

The compatibility restrictions across components will be documented on GitHub:


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:

Contribution workflow (GitHub)

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


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:


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