Page tree
Skip to end of metadata
Go to start of metadata

About this page

At OpenMRS 2012, a birds-of-a-feather group took place with the goal of identifying the pitfalls involved in getting starting with OpenMRS and how different people overcame those problems. Two interviews were conducted, and a summary of these interviews appears in the next few paragraphs. We welcome additional descriptions of peoples' experiences getting started as developers, either here in-line or below as comments. To facilitate the recording of issues, the next section of this document contains sections for each of our technologies for you to describe problems you have had with them. The third section of this document contains proposed solutions. Again, your edits or comments are welcome.

Subject 1: The HelloWorld module was a good place to start. I had experience with OpenJDBC so annotations were familiar to me. Discovered extension points as the result of a question. Eclipse was a major difficulty, was a Netbeans user. Concepts are hard to understand. HelloWorld gives exposure to config.xml but application.context is difficult. Sample applications are the best way to learn, you can copy them. Liquibase is well-documented, not hard. Library conflicts are annoying, particularly with many modules loaded. General problem-solving strategy of overcoming problems was to Google first, then talk to mentor.

Subject 2: Had to figure out how to look for answers, worried about asking dumb questions on IRC/list. Had some problems with Tomcat.

Particular technologies – experience gained the hard way

Eclipse

Configuring plug-ins can be difficult.
Getting the right version for Linux.

Tomcat

Out of virtual memory

Spring

Hibernate

Maven

Configuring proxy for maven

JUnit/Jetty/Testing

Liquibase

svn/git

Ticket management/code submission and review

Proposed solutions

Please feel free to add additional solutions and to comment on or edit the current proposals.

1. A better developer guide

At OpenMRS12, there were several requests for a better developer guide. In light of the upcoming Google Documentation Camp (Dec. 3-7, 2012, proposal deadline Oct. 29, 2012), we would appreciate your suggestions here. The initial suggestions come from the interviews conducted at OpenMRS12.

  • The guide should be step-by-step. It should be separated by platform (Linux, Windows), with additional separations possible (e.g. IntelliJ or NetBeans instead of Eclipse, mvn from the command line instead of frin Eclipse plug-ins). Each step should show what to do, what the result is when it is done right, and the ways it can be done wrong. This can be done with links as well as embedded text/images.
  • The HelloWorld module is a good starting point. It would be good to have a second, more complex module that would illustrate the use of another table and dependencies on other modules (e.g. Role-specific home page, REST, reporting).
  • The System Architecture session should result in some better architecture diagrams.

2. Mentoring for new developers

All of the interview subjects were GSOC interns, and all of them credited their mentors with getting them over the humps and with overcoming feelings of intimidation in using IRC, the dev list, Answers, forums, etc. While there is no way we can provide the GSOC mentoring experience (6-12 hours per week) to every new developer, it might be possible to get a list of people who would commit to 4 hours per week of mentoring. Developers taking their first ticket would be eligible to be hooked up with a mentor. At the end of 4 hours, the new developer would be eligible for a second 4 hours at the discretion of the mentor (usually the same mentor would carry on).

UPDATE: We have now launched the OpenMRS Guides program to help with this. Feedback on this program is welcome!

2 Comments

  1. Another challenging thing will be how we want to layout the developer module. Are we looking for tutorial centric developer guide, with each tutorial telling about specific things like basic CRUD, extension points etc or we are looking for a more comprehensive guide that contain basic liquibase/hibernate/spring related content along with other modules related things ?

  2. Here is the extra basic blog post about Hibernate that I mentioned: http://jquerencia.wordpress.com/2012/08/12/hibernate/