2007-01-04 Developers Conference Call

<html><head><title></title></head><body><div style="float:right">


In attendance:

Paul Biondich, Ben Wolfe, Ada Yeung, Hamish Fraser, Darius Jazayeri, Burke Mamlin, Justin Miranda

Others present:

Sandy Poremba, Doreen Harley

New OpenMRS feature: modules

Paul suggested a hack-in to quickly get something up and going. He mentioned that he had already talked to Ben about this and at times this would actually be quicker and easier than writing code into the main code base. Burke thought it might be worthwhile for each developer to make a little mini-module, so everybody can see how it works and then add feedback. Darius said it will force everyone to learn the modules. It is also the only way to make sure the modules are up to the task.

Ben discussed and gave an overview on the basic module, which is located in the module subversion folder. It has the very basic number of files that you need. There is a config.xml file in the metadata folder that has the module name, author name, and it describes what types of files are getting imported into OpenMRS. Burke asked if there is just one name for a module or do you have a name or code? Ben then stated that you define a module ID, which is the name without spaces and then there is a module name, which is the “pretty nameâ€ÂÂ. There is a module description and a module version. Other things you define, such as the spring file, you define in the metadata folder. This is optional. You only need a spring file if you’re adding a service. There is also a web folder where you put your JSP’s, your portlets, your resources (JavaScript files, image files) and then there is a web source folder that has your controller and your servlets. You can define your servlets in your config file as well. So, when you download the basic module, there is a build script that is in the download and you package the module and it creates a jar file in the dist folder, which you can then upload into OpenMRS. I gave the jar file the extension OMOD.

In subversion, there is a /branches, /trunk, /tags and we also have /modules. You can commit and new folder there. There is no deploy-web in modules. You’ll have to unload the module in OpenMRS through the web interface and then you upload your new one for jsp changes.

Paul spoke for the group asking, “If I am going to do a quick fix or a quick hack in a module is there a way I could rapidly prototype and make changes to it and see those changes without having to go and compile and uninstall and then reinstall the modules?â€ÂÂ

Ben-It takes 5-10 seconds to uninstall the module and then 5 -10 to install it and I think there is a duplicated effort because I believe spring is getting restarted a couple of times on each one of those. So, it needs to be sped up to under 5 seconds.

Burke directed the members to check out wiki under the developer notes to get information about debugging a web application using Eclipse. http://openmrs.org/wiki/Developer_Notes

Parking Lot Issues

Burke and Paul suggested for this year that we have a roadmap and agenda moving forward, so we know what our priorities are and have a clear picture from this point forward.

Paul introduced Ada, who will be the handling the AMRS development for Eldoret and also introduced Sandy and Doreen, who will be taking minutes and recording the meetings. They are also on the mailing list and will be keeping track of questions and answers and will eventually be able to add those to the wiki. Also, 2 new developers are being hired after January 15.

Darius said that they will be having a budgeting meeting in the near future and this will help them determine how much time they can move Christian’s time to programming.

The issue of the open source licensing came up. Hamish will escalate this in a week, if he has not heard back from their attorney. Paul offered the services of Viki, the Regenstrief attorney, if it would help move this forward.

A Wednesday or Thursday meeting for February in Indianapolis will be scheduled.

Meeting adjourned.


  • Discuss switching from MySQL to Postgres so we can have DATETIME fields default to today's date
    • Also so we can have sequences instead of autonumbers
  • Module System
    • Weighting needed for module/method preference
    • We need to define when code should be put in a module and when it goes in the core
      • Hacks should be put in a module
    • Each developer should create a small module to test and exercise the system