FOSS Development Process and Toolsets

From Wiki

Jump to: navigation, search

Contents

OpenMRS

OpenMRS Application Stack

Conforms to the MVC pattern (Model-View-Controller)

- See attached application layers image -
Presentation Layer - jsp/html/javascript
Business Layer - OpenMRS Java API
Database Layer - Hibernate maps our API Java objects to the database tables
  • Hibernate is used to insert/update data in the, say, Patient object, to the patient tables, similar to the functionality that MDB2 provides
  • Apache Server is the frontend content web server. Traffic is redirect to the tomcat server
  • Tomcat is the common j2ee servlet container.
  • OpenMRS is packaged as a webapp in the servlet container. JSP is used as the front presentation layer language (equivalent to php served straight by a web server)
  • OpenMRS has a modular architecture. Modules are written to include all of the java/jsp to add functionality to the core OpenMRS code
    • The module architecture is custom for OpenMRS
    • Modules can hook into certain parts of the core code whether those are display hooks or functionality hooks
    • OpenMRS has developed a "module repository" to aid people in searching/finding/using modules for their installation
    • OpenMRS's module architecture is very similar to Firefox and Eclipse extensions


OpenMRS Development Stack

Three types of requests

  1. Project
    • Usually proposed by a developer. Large time requirements
  1. Feature
    • Addition or enhancement, less time than a project
    • Posted to forum or mailing lists, moved to trac tickets
  1. Bug
    • Small fixes to current code features
    • Posted to forum, mailing lists, or directly into trac tickets

Tools

  • Trac
    • Project management
    • Bug tracking
    • Anybody can self-create an account and then create a ticket
  • Mediawiki
    • Wiki
    • Documentation
    • Anybody can self-create an account and add/create/edit pages
    • A lot of discussion happens on user pages
      • A user talks about what he/she is working on currently
      • Discussions moved to trac tickets if features/bugs come up
    • Developers come to wiki first -- homepage of openmrs.org
  • Subversion
    • code version control
    • Code is committed, shows changed files, increments build number of code
    • Accounts are linked to trac, users are given permission to commit to
    • Restrictions on commit locations are social only, not in the code
    • Some developers that request accounts are given ability to only commit to their module
    • Usually, they become a new developer and can submit small bug fixes to our alpha/trunk, but new features are developed in branches
    • Patches can be added to trac tickets and submitted by a "core" developer
  • Eclipse
    • Code development environment
    • Just one of many options for java IDE
    • Chosen because of plugins for integration with trac, subversion, reporting
    • Test integration with junit
  • Mylar
    • Plugin for eclipse
    • integrates trac into eclipse
  • Forum
  • Mailing lists
    • One for developer and one for implementers
  • Weekly phone calls
  • ANT
    • Automatic nightly builds
    • Periodic releases
  • Testing
    • Junit
    • Very limited tests
    • Many implmentations running alpha code, bugs submitted often

OpenMRS uses the OpenMRS Public License -- its very similar to the Mozilla Public License.

OpenMRS is a customizable patient centric electronic medical record system. Forms are entered at each patient visit. Data is either entered by a physician during the visit or by data assistants after the fact.

Chisimba

(Malawi word for "framework")

Chisimba is a rewrite of the KINKY project

  • A framework for building software and skills.
  • Uses established design patterns
    • the MVC pattern
    • resuable objects
    • Modular architecture
    • Can build functionality totally independent of anything else
  • Primarily a web framework

Chisimba Application Stack

Each module has its own model, view, controller objects The application can be thought of as building blocks (See attached image)

Completely skinnable

  • content template
  • layout template (one vs two, vs three layout)
  • page template
  • Each element has ids and classes for each css customization

Can run on any device, not necessarily just web. Could do an xml output, eg.

  • The heart of Chisimba are the modules.
    • Modules have folders for classes, content, sql, and templates.
    • Modules have a text based module config file
    • Version numbers are input by the developer manually
    • Modules can require other modules
    • The online "module repository" is linked to Chisimba and automatic download/installation is available from within
  • Scalable:
    • Caches read requests to the database
    • Allows for nodes to be added for faster processing

Chisimba Development Stack

  • Eclipse
    • IDE, allows for plugins for code completion, integration
    • Built in cvs commands to allow commiting from within eclipse
  • Mailing lists
    • Developer lists
    • Both questions from devs about access, development and posts from developers about new updates to modules
    • Implementers lists
  • CVS
    • Code version control
    • Viewable online to see what is happening on different branches/modules
    • Command line acces available as well as within eclipse
  • Build process
    • ANT for auto building
    • Nightly builds
    • Monthly releases
  • ohloh
    • Shows stats and information about Chisimba
    • Automatically generated by scripts in on Ohloh
  • Testing model
    • core tested with phpunittest, required for core, not required for modules.
  • Documentation
    • troubles and adaptations in Africa:
      • People can't stay online long enough to edit the wiki
      • Documentation is done by committing docs to cvs
    • Have a master documentation document in cvs
  • Mantis
    • Bugs added, tracked, committed, commented
    • Stats on who does what bugs, how many bugs, severity of bugs
    • New module requests go into a white paper first. Goes into cvs

DrumNet

  • Supply chain communication platform
  • Uses established design patterns
    • the MVC pattern
    • reusable objects
    • Modular architecture

Architecture

  • Virtual machine
  • Application server: tomcat
  • Spring IOC
  • MVC framework build around Spring
  • Database component managed by Hibernate
  • JSP for user presentation
  • SMS Gateway
    • Generic communication module: messages in through mail server, out through http, if http fails use mail gateway to SMS

Chisimba Development Stack

  • NetBeans
    • IDE, allows for plugins for code completion, integration
  • Mailing lists
    • Developer list
  • CVS
    • None
  • Build process
    • ANT for auto building
    • Periodic builds
    • On demand releases
  • Testing model
    • core tested with JUnit
  • Documentation
    • User documentation in OpenOffice/PDF
    • JavaDoc for code documentation
  • BugGenie
    • Bugs not currently tracked.

Takeaways

Aspect OpenMRS Chisimba DrumNet
Wiki (document sharing)mediawiki used extensivelyUse openoffice docs in CVS to share knowledgeDocuments via email and server
Version ControlSubversionCVSn/a
Mailing listsyes, 2 mainyes, 2 main1 developer mailing list
Forumsyes, used occasionallyYes, rarely usedn/a
Bug trackingtrac, for openmrs specific problems, implementations have their own bug tracking, etcmantis, for Chisimba specific problems. installations have separate locationsBugGenie
IDEEclipseEclipseNetBeans
Modular architectureyesyesno
Serverapache/tomcat or just tomcatapache or litehttptomcat
Languagejava/jspphpjava/jsp
Testingjunit for both core and module, not required, not always donecore tested with phpunittest, required for core, not required for modules.junit
Usabilityworking on itYes, had a lab for it. No progress recently (lost funding)no
Load testingNoYesno
Personal tools