A number of challenges have been identified with the current OpenLMIS architecture that we hope to address with the re-architecture. The key challenges are:

Note that there are many other pain points with the current version of OpenLMIS that will not necessarily prioritized to be addressed by the initial re-architecture. 

Based on the challenges noted above, we envision the following end-state after the re-architecture. At this point, this is a suggested proposal. The end-state described here will be validated by the governance committee during the OpenLMIS conference.

There is also a question of expectations regarding code reusability. After the re-architecture, it will be possible to clearly define to funders at the beginning of a project how reusable their investment will be, based on the target destination of the code to be created. In most cases, country specific implementation investments will results in community modules that are publicly available, but are likely not designed for easy deployment in additional countries. At the beginning of an OpenLMIS country implementation project, the project team would assess the requirements in coordination with the OpenLMIS Global Team and OpenLMIS Community to determine the target destination(s) for code that will be created and include this in the project plan provided to funders:

This scenario implies two general funding options for OpenLMIS software development:

1) Ongoing Core Product Funding: The OpenLMIS global team is sufficiently funded to build out the OpenLMIS roadmap. When a country implementation needs something that is on the roadmap, the community can discuss reordering priorities to move the feature "up" on the roadmap. For example, with the VIMS product the OpenLMIS Global Team could have contributed a community-supported stock management module.

2) Project-Based Funding: At project outset, it is decide what (if any) portion of the code should be a community-support module. If so desired, the project funds one of the software development orgs active in the OpenLMIS community to create the community-supported module. Note that any code submitted by an organization for community support must be reviewed and approved by the community.