Configurability
The CHT Core Framework has always been highly configurable, enabling app developers to define forms, tasks, targets, SMS messages, and integrations for a project’s unique workflows. However, these are all well defined functional areas with known limitations on how much can be customised.
As an open source framework, developers can fork the repository and make unlimited modifications, but this has the downside of making it difficult to upgrade the Core Framework to incorporate future improvements.
Plugins
An alternative would be for the CHT to develop a plugin architecture so app developers can write code that can be incorporated. This would enable far more powerful customisation without forking the entire codebase. The Core Framework would provide APIs to make plugin development easier, and guarantee backwards compatibility so the CHT could be upgraded without breaking the plugin.
One significant challenge of the plugin approach is it would require software developers to design, develop, test, and deploy the plugin. Additionally, while the CHT would provide some safeguards for developers, a poorly built plugin could lead to a poor user experience such as locking out users or data corruption.
Examples
Just about anything could be made pluggable, but some examples of likely candidates are;
- Additional tabs or replacing the default tabs with custom versions
- Additional or improved form widgets
- Bespoke sections on the Contacts tab
- Sentinel transitions to modify documents when they sync to the server
- Scheduled tasks for performing an action periodically on the server
- Server APIs for querying and modifying data
- Theming: styles, colours, icons, etc
- Anything else?
Questions
We’d really like to hear if this approach would be useful, and if so, which areas you would like to develop plugins for.
- Is this a feature you would consider using?
- Do you have the software development capacity to develop plugins?
- What aspects of the CHT would you like to be able develop plugins for?