Open mSupply’s plugin system allows countries to modify their system to meet their needs.

Open mSupply’s Plug-in system for customisations.

There are several ways of handling the unique needs of each country:

  1. You can add a lot of configuration options (usually called “preferences”) in the software. This allows an administrator or a user to make the system work how they want without recourse to the software developers. Open mSupply provides such options where appropriate.
  2. You can make a unique version of the software for each country. The (huge) disadvantage of this approach is that later feature additions or bug fixes to the software have to be coded, tested and deployed again and again for each country. Categorise this under “seemed easy at the time: turned out terrible”
  3. You can keep a single code base, but have a preference to say which country you’re in, and a whole lot of internal code that says “If the country is X, then do add column A, or if the country is Y, then hide column B, etc etc”. You get one code base (yay), but you get a system that is hard to test, and still can only be customised further by changes to the main code base.
  4. You can build a plug-in system. This is what we’ve done in Open mSupply. You’ll be used to using software with plugins, as both Firefox and Chrome use plug-ins (“extensions”) to allow you to add features such as a password manager, while still maintaining a single code base for everyone.

Here’s an example of a dashboard panel (on the right) that shows the synchronisation status which has been added to Open mSupply using a plug-in. It can be added for a new country installation simply by dropping the code into a folder on the Open mSupply server.

Here we’ve added the Donor column to a list using a plug-in