FOSS Development Process and Toolsets
From Wiki
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
- Project
- Usually proposed by a developer. Large time requirements
- Feature
- Addition or enhancement, less time than a project
- Posted to forum or mailing lists, moved to trac tickets
- 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
- troubles and adaptations in Africa:
- 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 extensively | Use openoffice docs in CVS to share knowledge | Documents via email and server |
| Version Control | Subversion | CVS | n/a |
| Mailing lists | yes, 2 main | yes, 2 main | 1 developer mailing list |
| Forums | yes, used occasionally | Yes, rarely used | n/a |
| Bug tracking | trac, for openmrs specific problems, implementations have their own bug tracking, etc | mantis, for Chisimba specific problems. installations have separate locations | BugGenie |
| IDE | Eclipse | Eclipse | NetBeans |
| Modular architecture | yes | yes | no |
| Server | apache/tomcat or just tomcat | apache or litehttp | tomcat |
| Language | java/jsp | php | java/jsp |
| Testing | junit for both core and module, not required, not always done | core tested with phpunittest, required for core, not required for modules. | junit |
| Usability | working on it | Yes, had a lab for it. No progress recently (lost funding) | no |
| Load testing | No | Yes | no |
