Country Versioning in OpenLMIS 3
What does a country implementation deploy?
Implementers of OpenLMIS are responsible for choosing the combinations of services to use to satisfy their needs. This "recipe" of combinations is defined in a distribution. An implementation can also include custom-built extensions (see next question) and customizations. Figure 3 provides a visual example of how a country can select different services for its specific deployment.
How does a country/implementation instance differ from OpenLMIS version 3?
A country/implementation instance runs on top of OpenLMIS version 3 with some of its own customizations and extensions. Because each new global release of OpenLMIS 3 is backwards compatible, the extensions will continue to operate with minimal changes over time.
Figure 3: A country implementation selects which OpenLMIS services it wants to use.
How does an implementation upgrade to OpenLMIS 3.1, 3.2, etc?
Each time a new core version of OpenLMIS is released, we recommend implementations stay up-to-date and use the new version. The benefit of staying up-to-date is that each new version will include some bug fixes, performance enhancements and security improvements. In addition, the global shared value proposition depends on countries staying up-to-date, so that when one country makes an improvement it then becomes available to other countries.
What does an implementation team need to do to upgrade?
Regression testing occurs prior to each release and is completed by the global OpenLMIS team. The goal is to minimize any possibility of new releases causing issues during an upgrade. The OpenLMIS community strives to make upgrades easy and pain-free so that multiple implementations can participate in the shared value community.
We recommend that each implementation first upgrade one of their test servers in order to test out the system with their configuration and their set of extension modules in place before upgrading their production servers.
Figure 4: Country upgrade process
Backward compatibility and code forking
OpenLMIS strongly discourages code forking. The OpenLMIS community adopted this strategy after previous country implementations forked the core code software, causing concern by funders over the costly nature of these one-off implementations. The community responded by adopting an approach whereby features and improvements could be funded once and then used to benefit multiple countries.
OpenLMIS: the global initiative for powerful LMIS software