In order to accelerate project delivery, OpenLMIS version 3 uses a scaled agile approach. Read more about our Methodology and Process.
For OpenLMIS version 3, the primary technologies used are:
- Docker to run micro-services in containers. Using Docker, OpenLMIS can run on Linux, Mac, Windows or in the cloud.
- Java 8 with for the back-end services. Each micro-service provides a RESTful JSON API over HTTP.
(HTML5 and CSS are used for templates and layout)
|API Services||Java 8 with Java Spring|
|Database||PostgreSQL 9 or Amazon RDS|
Docker Engine 1 and Docker Compose 1
(Docker Containers run locally, in a data center, or in the cloud)
If you do not have these tech skills, there are lots of online resources to learn, and there are also lots of ways to contribute to OpenLMIS besides writing code. We value contributions including bug reports, feature suggestions, documentation, translations and more. See the Contributing section on docs.openlmis.org.
The OpenLMIS software is focused on a service-based, API-driven, modular approach designed to better support customizations and extensions. The goal of this micro-services architecture is to enable multiple OpenLMIS implementations in different countries while still sharing one global, open source codebase. The end result is a powerful, flexible product that emphasizes interoperability, extensibility, andperformance at scale across countries, programs, and products.
(also see Frameworks & Libraries)
Repositories on GitHub (each service/component in its own repo): OpenLMIS
Issue tracking on JIRA.
Developer Forum hosted on Google Groups: https://groups.google.com/forum/#!forum/openlmis-dev
Jenkins for continuous integration.
SonarQube for static code analysis.
Transifex for translation/localization management.
Slack for real time chat, GitHub notifications, etc. Slack domain is openlmis.slack.com.
docs.openlmis.org as a global document repository.
An ERD of the dev branch is at ci.openlmis.org/ERD/, built by a Jenkins build job. An ERD for each service is built by Jenkins and published online at URLs that follow this pattern: http://ci.openlmis.org/erd-[name of the service]/ (eg, http://ci.openlmis.org/erd-referencedata/).
Docker is used for managing containers. See our Docker Cheat Sheet
IntelliJ IDEA is the recommended IDE for Java web service development. See our IntelliJ IDEA Knowledge Base
See OpenLMIS Coding Standards and Service Style Guide.
For UI, see UI Extension Architecture and Guide, UI Coding Conventions and UI Build documentation in the Requisition UI Readme and Dev UI Readme.
The dev community supports several communication channels. Each mode serves a different purpose:
- OpenLMIS Discourse
- Discussions, questions and decisions on application design and behavior. As messages are kept forever, this is the place to record the how and why for future reference
- Discussions and decisions by the Tech Committee (as well as the other OpenLMIS Committees)
- Technical support questions
- Announcements, news, etc.
- For messages that are transient/short-lived. Good for real-time discussion and project messaging. No guarantee messages are persisted forever.
- #dev is reserved for tool notifications. Humans shouldn't generally post here as it will get lost among automated notifications
- #general for most OpenLMIS messages
- #toolbox for tools and techniques relevant to the OpenLMIS' tech stack
- #random for non-project FYIs, relevant articles and links, etc.
- Issue tracking, project management, Epics, Stories, etc.
- Discussion on specific bugs, stories, etc. should use the Comment facility on the JIRA issues, NOT private emails.
- If an email thread veers to generating discussions/decisions that should be public per a healthy open source project, move it to a community forum.