Frameworks & Libraries

Frameworks & Libraries

Work in Progress

Orange is under consideration

Blank cells are unknown

N/A cells are known to not be addressed

 

OpenLMIS

OpenMRS

MoTech

OpenERP / Odoo

 

 

 

 

 

 

Link

Authentication/SSO

Spring Security: B. Auth & OAuth2

 

Auth & OpenID

 

 

 

Community - License

GNU Affero General Public License Version 3

MPL v2

 

 

 

GPL V3

Community - Organization/Support

Committees

 

 

 

 

 

Community - Sustainability

 

 

 

 

 

 

Deployment Packaging

Services built as WARs in JARs (Spring Boot)

Services published as Images to DockerHub

Service Images composed and deployed with Docker Compose

WAR + Custom module (Maven)

WAR

WAR

Python Django

 

Continuous Delivery approach

Jenkins builds&publishes to DockerHub, Jenkins deployment script to cloud

Bamboo builds and deploys to UAT servers

 

 

 

 

Continuous Integration approach

Jenkins builds PR, GitHub integration shows test status

Sonar analysis on dev branch

Bamboo builds committed code,
deploys to integration test server,
and runs functional tests.

Jenkins builds PR, GitHub integration shows test status

 

 

 

SCM Tool (branching strategy)

Git, GitFlow, Feature branches and Pull Requests off of develop branch

Git, Feature branches and Pull Requests

Git, Feature branches and Pull Requests

Bzr

Git

 

Database - Access

 

 

 

 

 

 

Database - Data Migration

Flyway

Liquibase

Flyway

 

 

 

Database - ORM

JPA w/ Hibernate

Hibernate

 

Hibernate, JDBC

 

 

Database - Spatial Support

PostgreSQL + PostGIS

 

 

PostGIS

 

 

Documentation - API

Swagger

Swagger UI, Javadoc

 

 

 

 

Documentation - Framework(s)

 

 

Sphinx

 

 

 

Documentation - Publishing

 ReadTheDocs.org

REST Module

ReadTheDocs.org

 

 

 

Extra Data -- extending entities

JSON column, maybe NoSQL w/ UUID

Thin Tables

MoTech Data Services

Thin Tables

 

 

Localization and il8n

Java Resource Bundle, Transifex

Java Resource Bundle, Transifex

 

 

 

 

Logging

SLF4J to Syslogd w/ Docker Engine

SLF4J

 

 

 

 

Notifications

Spring Integration Channels:  SMTP, Kannel

 

 

 

 

 

Reporting

Jasper Engine, BI Integration (Tableau)

Custom Reporting module against transactional DB

 

 

 

 

Scheduling/Tasks

Quartz

JDK Timer

 

 

 

 

Test Coverage

Cobertura

Sonar (not used much)

 

 

 

 

Static Analysis

STYLE-GUIDE, CheckStyle, Sonar

Sonar (not used much)

 

 

 

 

Testing

JUnit, Mockito, PowerMock, WireMock

JUnit, Mockito, PowerMock

 

JUnit

 

 

UI - Framework

AngularJS 1

Legacy: JSP, current: GSP + Angular 1

 

 

 

 

UI - Modularity

ocLazyLoader?  Angular2?  RequireJS?

independent "apps" from home screen

 

 

 

 

UI - Separation

RESTful API

 

 

 

 

 

UI - Testing

Jasmine, Karma

Jasmine, WebDriver

 

 

 

 

UI - Test Coverage

Karma Coverage

 

 

 

 

 

UI - Static Analysis

JsHint, LESSLint

 

 

 

 

 

Web Security

 

 

 

 

 

 

OpenLMIS: the global initiative for powerful LMIS software