Contribution guidelines
Code of Conduct
openIMIS Initiative has adopted theย Contributor Covenantย as its Code of Conduct, and we are asking project participants to adhere to it. Please readย the full text here.
Issue Tracker
Please ensure that we got enough information to make
Open Development
All work on openIMIS happens directly onย GitHub. Both core team members and external contributors send pull requests which go through the same review process.
Semantic Versioning
React followsย semantic versioning. We release patch versions for critical bug fixes, minor versions for new features or non-essential changes, and major versions for any breaking changes. When we make breaking changes, we also introduce deprecation warnings in a minor version so that our users learn about the upcoming changes and migrate their code in advance. Learn more about our commitment to stability and incremental migration inย our versioning policy.
Every significant change is documented in theย change log of the repository of each component in Sources.
Branch Organization
Submit all changes to theย develop branch
. We use separate branches for development (develop branch
) or for upcoming releases. We do our best to keepย master
ย in good shape, with all tests passing.
Code that lands inย develop
ย must be compatible with the latest stable release. It may contain additional features, but no breaking changes. We should be able to release a new minor version from the tip ofย develop
ย at any time.
Architectures to follow to design modules
Backend (API) Target Architecture
Frontend(s) Target Architecture
Code convention ย
Variables
All variables must be named using UK English language (except for FHIR module because US English terminology). Wherever possible, use Glossary names: Glossary. If you find different uses of a word, feel free to correct or comment the glossary.
JSON (mirror the guidelines for naming JavaScript identifiers)
Property names should be meaningful namesย
Property names must be camel-cased, ASCII strings
The first character must be a letter
Subsequent characters can be a letter, a digit, an underscore
Reserved JavaScript keywords should be avoidedย
Translations
Translations are managed through Lokalized. Translation Management platform
Coding standard used
backend
Django contribution: https://docs.djangoproject.com/en/dev/internals/contributing/
Python Style Guide: https://www.python.org/doc/essays/styleguide/
frontend
ReactJS contribution: https://reactjs.org/docs/how-to-contribute.html
Material Design: https://material.io/develop/android/docs/contributing/
JavaScript Standard Style Guide: GitHub - standard/standard: ๐ JavaScript Style Guide, with linter & automatic code fixer
Mobile app
Google Java Style Guide: https://google.github.io/styleguide/javaguide.html
Google JavaScript Style Guide: https://google.github.io/styleguide/jsguide.html
Getting started
Front end module are required to change the interface, it doesnโt mean that you need a matching backend module; e.g a portal for some user
openimis-fe_js/README.md at main ยท openimis/openimis-fe_js
a template module can be found here GitHub - openimis/openimis-fe-template_js: Template module for openimis-fe_js
Backend is required to manage a group of entity; e.g. claim and claim item (item part of the claim).
openimis-be_py/README.md at main ยท openimis/openimis-be_py
No template is available because the Django โcreate moduleโ is enough to start.
Document your architecture
if possible, user and other developers will appreciate such documentation in your code repository
database diagram: database.txt/database.png
any kind of documentation helps, a free and simple way is to use plantuml https://www.planttext.com/
Please donโt call your tables with a generic name like โItemโ or โflagsโ โฆ
Please add your module name as a prefix of you table.
workflows / use case covered by your module: workflows.txt
AS a <role> I <do_action> so I get<result>
Questions
Global openIMIS guidelines or per programming language?
Better have per language, but define overlaps/interactions
FHIR is already guiding, GRAPH-QL is more open
ย
Did you encounter a problem or do you have a suggestion?
Please contact our Service Desk
This work is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License. https://creativecommons.org/licenses/by-sa/4.0/