Wiki Spaces


Get Help from Others

Q&A: Ask OpenMRS »
Discussion: OpenMRS Talk »
Real-Time: IRC Chat


Skip to end of metadata
Go to start of metadata


Once you've read through the book, here's a quick summary of things you can do to get started!

  1. If you don't have one, create an OpenMRS ID, which you can use to contribute to this Wiki, manage issues in JIRA, and more.
  2. Sign up for the developer (and maybe implementer) mailing lists. The developers mailing list is a great place to ask specific questions if you get stuck along the way (if you can't find answers elsewhere).
    1. Since we moved from the mailing list,its important to acquire an id so as you can continue to interact with the community. We are currently using
  3. Create an account at
  4. Configure your Eclipse environment with the Step-by-Step Installation for Developers. The New Developer's Guide has a helpful chapter on Setting Up Your Development Environment.
  5. Watch some OpenMRS development screen-casts on YouTube.
  6. Create your first OpenMRS module. The New Developer's Guide features a chapter on how to create a Hello World Module.
  7. Find some introductory issues (also shown below) that have the "Ready for Work" status to work on, and assign them to yourself by clicking the Claim Issue button. (Ask for clarification on the issue if needed.) If you find yourself taking long (days) without making any progress, feel free to un-assign yourself from the issue and choose another.
  8. Try as much as you can to include unit tests for your changes. Remember to also do an "mvn clean install" to ensure that all existing unit tests and yours pass. Then create a pull request. If your changes affect the user interface, please run the web application to see the effects, and then attach a screenshot, before you commit.
  9. Log your time spent on that issue and click "Request Code Review" and a core developer will get you some feedback in short order
  10. Find another issue or choose a larger project to work on. See Unassigned Projects.
  11. If you join a sprint or choose to share your module (we hope you do), then you'll want to read about Using Git.
  12. When you no longer want to work on an issue that you have already assigned to yourself, please remember to un-assign yourself from it such that others can take it up. If you have any findings that you feel would be useful to whoever takes it up, please feel free to add a comment.





New Developers

Please record your experiences (good or bad) on this child page.  We are always trying to find ways to improve where we can do better and reinforce things we are doing well, so getting input from your perspective is very helpful & appreciated.

Current Sprint Issues

At all times, we have an ongoing Development Sprint.

For each sprint, we include issues of low complexity which are suitable for developers who are getting started with OpenMRS. We therefore encourage you to look in this pool of issues when looking for which to work on. Because a sprint has a number of developers working on a set of related features at the same time, working on it will give you the advantage of getting more immediate feedback in terms of responses to blocker questions, reviewing of your code, mentoring and guidance regarding how to do the issues, pair programming where necessary, and more.

You can always look at the Sprint Schedule to check for the active or current development sprint. In case of any questions about these sprints, feel free to ask on IRC or the developers mailing list.

Introductory Issues

The following issues are both "introductory" and also "curated", meaning that they have thorough descriptions of how to approach solving them:


If you aren't able to find an appropriate issue in the list above, here is the complete list of "introductory" issues, not necessarily "curated":

Showing 20 out of 35 issues Refresh

After Introductory Issues

After doing a couple of introductory issues, you may feel like working on issues of increased complexity. Or you may find the introductory issues boring and hence want to work on something more exciting.

Should you find yourself in this state, the active Development Sprint may be a good place for you to look next. The sprint has issues for all levels of complexity. The Sprint Schedule will always be updated with the active or current development sprint.

Here is a backlog of tickets prioritized by the community:

Key Summary T Created Updated Due Assignee Reporter P Status Resolution
UIFR-199 -DuiFramework.development.moduleid vm argument should support multiple folders New Feature 2016-01-21 2016-02-01 Unassigned Daniel Kayiwa Should Ready for Work Unresolved
UICM-71 Build an example of an Open Web App with the Reference Application style guide New Feature 2016-02-14 2016-02-14 Unassigned Darius Jazayeri TBD Ready for Work Unresolved
TRUNK-4830 Delete liquibase changesets added before OpenMRS 1.9.x New Feature 2016-02-16 2016-03-21 Unassigned Rafal Korytkowski Must Design Unresolved
TRUNK-4822 Fix broken CI plan for MariaDB Docker test Task 2016-02-01 2016-02-14 Unassigned Wyclif Luyima TBD Ready for Work Unresolved
TRUNK-4821 Fix broken CI plan for OpenMRS on MariaDB Task 2016-02-01 2016-02-14 Unassigned Wyclif Luyima TBD Ready for Work Unresolved
TRUNK-4820 Fix broken CI plan for MySQL with OpenMRS Task 2016-02-01 2016-04-23 James deGraft-Johnson Wyclif Luyima TBD In Progress Unresolved
TRUNK-4765 Upgrade path from OpenMRS 1.9 to Platform 2.0 + Legacy UI Epic 2015-10-02 2016-04-08 Unassigned Mayank Sharma Must Ready for Work Unresolved
TRUNK-4747 Move Allergies API into the core platform New Feature 2015-08-17 2016-03-27 James deGraft-Johnson Daniel Kayiwa Must Code Review (Post-Commit) Unresolved
TRUNK-4730 Verify that all relevant domain objects have changed_by and date_changed fields Task 2015-06-09 2016-03-25 Mehari Bekele Darius Jazayeri TBD In Progress Unresolved
TRUNK-4212 SchedulerServiceTest fails depending on thread scheduling Bug 2014-01-10 2016-03-17 Wyclif Luyima Rafal Korytkowski Could In Progress Unresolved
TRUNK-3675 Cache results from getSearchLocales() New Feature 2012-08-10 2016-03-18 Unassigned Rafal Korytkowski Non-Essential Ready for Work Unresolved
TRUNK-3638 Separate liquibase file into separate files per version Task 2012-07-25 2016-04-27 Wolf Schlegel Roger Friedman Should In Progress Unresolved
TRUNK-208 Fix Transactions Across Service Methods Bug 2010-01-04 2016-04-07 Mayank Sharma Ben Wolfe Could Code Review (Initial) Unresolved
STAND-85 Drastically improve documentation about building the Standalone Bug 2016-02-18 2016-05-06 Sri Maurya Kummamuru Darius Jazayeri TBD Code Review (Post-Commit) Unresolved
RESTWS-538 Review recent changes to Java API and ensure everything is reflected in REST module Task 2015-11-09 2016-04-01 Daniel Kayiwa Darius Jazayeri Must Code Review (Post-Commit) Unresolved
RESTWS-496 Handle internal errors gracefully, make them self-explanatory Bug 2015-03-25 2016-04-19 James deGraft-Johnson Lluis Martinez Should Code Review (Post-Commit) Unresolved
RESTWS-466 REST custom representation of encounter : exception thrown if no preferredName Bug 2014-10-27 2016-04-08 Unassigned Jonathan Dick Should Ready for Work Unresolved
RESTWS-439 Get concepts throws exception when concept numeric fields are included in custom representation Bug 2014-05-06 2016-04-08 Unassigned Deepak N Should Ready for Work Unresolved
RESTWS-362 Add search for subresources New Feature 2013-02-25 2016-04-08 Unassigned Rafal Korytkowski TBD Ready for Work Unresolved
RA-1008 Most login scenarios should take you to the home page, not the last page that a logged-in user was seeing Story 2016-02-13 2016-04-08 Unassigned Darius Jazayeri TBD Waiting for Dev Unresolved
Showing 20 out of 27 issues Refresh

You could also do code reviews for pull requests.

If you try out the sprint, code reviews, and still find it boring, please feel free to ask us on IRC or the developers mailing list.

Other Useful Resources

Code Style

Coding Conventions

Newbie Guide to OpenMRS Development - by Sri Maurya Kummamuru

  • No labels


  1. It would actually be good to have the green message directing them to the current sprint


    1. I fully agree with Wyclif. What do others think?

      1. How about both – i.e., refactor the tip to direct people to the current sprint or, if they don't have luck there, then to the community development swim lane?