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

Welcome to the world of OpenMRS development! This page introduces you to the things you'll need to get started on your journey.

Your first step when getting started as a developer should be to look through our Developer Manual (PDF). This book will give you all the information you need to get started as an OpenMRS developer in an easy to read and concise format. 
Once you've read through the Developer Manual, here's a quick summary of things you can do to get started:
  1. Create an OpenMRS ID. Your OpenMRS ID defines your username in the OpenMRS community and provides access to community resources, like this wiki, our issues tracker, and the OpenMRS Talk forums.
  2. Create a new case at OpenMRS Helpdesk stating you'd like to contribute and would like edit access to Wiki and JIRA. Because of spammers, we must require this extra step before you can edit wiki pages or make any changes to JIRA tickets.
  3. Create a GitHub account if you don't have one.
  4. Join discussions at OpenMRS Talk. Be sure to add your GitHub username to your settings in Talk, then introduce yourself to the community. You can learn more about how to use Talk by reading this introduction.
  5. Set up your development environment. Follow the Step-by-Step Installation for Developers and How-To Setup And Use Your IDE. The Developer's Manual also has a helpful chapter on Setting Up Your Development Environment.
  6. Download and install the OpenMRS SDK.
  7. Watch some OpenMRS development screencasts on YouTube.
  8. Create your first OpenMRS module. The Developer's Manual features a chapter on how to create a Hello World Module.
  9. Claim an Issue. Review community priorities and introductory issues below to find an issue of interest to you that is ready for work, claim it, and make your first contribution. If you need any clarification on the issue, use OpenMRS Talk or join IRC for real-time interaction. If you find yourself taking long (days) without making any progress, feel free to un-assign yourself from the issue and choose another.
  10. Meet some other developers through real-time chat in Telegram ( or IRC (
  11. Learn about OpenMRS Developer Stages, earn the /dev/null badge and, when you're ready, take the quiz to earn /dev/1.
  12. 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. Remember to have a look at the Pull Request Tips.
  13. When you complete work on an issue, log your time spent on that issue and click "Request Code Review" and another developer will get you some feedback in short order.
  14. Read about Using Git. This is especially useful if you join a sprint or choose to share your module (we hope you do).
  15. Avoid staying assigned to issues you aren't actively working on. 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.
  16. Do some code reviews. Here is the list of pull requests that are waiting for review. Reviewing other people's work is one of the great ways of learning about OpenMRS. You can even review code for some one more experienced than you. Reviews can be as simple as checking to ensure that commits are squashed into one, adherence to our code conventions, finding spelling mistakes, or pointing out missing JavaDoc comments. More details about code reviews can be found at this wiki page.
  17. Review Unassigned Projects if you want to find a larger project to work on.


Share your experience

New developers, please share your experiences (good or bad) on this 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.

Community Priorities

Here is a list of tickets prioritized by the community from the Community Priority Kanban:

Key Summary T Created Updated Due Assignee Reporter P Status Resolution
TRUNK-344 PersonName.getFullName() should use the configured nameLayout New Feature 2010-03-08 2017-10-20 Unassigned Darius Jazayeri Should Ready for Work Unresolved
RA-429 Reference application contains duplicate concepts for yes/true and no/false Bug 2014-10-07 2017-05-11 Unassigned Andrew Kanter Should Waiting for Dev Unresolved
RA-452 XSS vulnerabilities in Ref App 2.x Bug 2014-10-20 2017-10-14 Unassigned Wyclif Luyima Should Waiting for Dev Unresolved
RESTWS-644 ObsResource needs to support time zones and more date formats New Feature 2017-02-03 2017-02-28 Unassigned Wyclif Luyima Must Ready for Work Unresolved
AM-184 Impossible to create appointments (on demo server) Bug 2017-01-22 2017-05-11 Unassigned Darius Jazayeri Should Ready for Work Unresolved
RA-1000 Automatically pull translations into modules as part of their release process Improvement 2016-01-28 2017-11-13 Unassigned Darius Jazayeri TBD Waiting for Dev Unresolved
RA-1001 Update all modules that use Transifex to support all languages we support Improvement 2016-01-28 2017-09-28 Unassigned Mark Goodrich TBD Waiting for Dev Unresolved
HTML-650 The HTML Form ExitFromCare tag doesn't work in the 2.x UI Bug 2016-11-07 2017-06-15 Unassigned Jeremy Ogembo Should Ready for Work Unresolved
AM-185 Patients are given appointment slots with different providers in the overlapping time intervals Bug 2017-03-02 2017-03-02 Unassigned Shireesha Bongarala Should Ready for Work Unresolved
TRUNK-5093 AbstractHandler allows blind rewriting of existing complex obs file Bug 2017-03-06 2017-04-19 Unassigned Dimitri Renault Should Ready for Work Unresolved
EA-125 Adding a "diagnosis" REST resource New Feature 2017-04-21 2017-05-01 Unassigned Yusuf Akhond Should Ready for Work Unresolved
TRUNK-5169 Saving PersonAttributeType breaks subsequent API calls (with NonUniqueObjectException) Bug 2017-05-18 2017-11-14 Unassigned Romain Buisson Must Ready for Work Unresolved
RA-1370 Clean up the constraints on the Dashboard widgets to show data within the Reference Application Improvement 2017-05-23 2017-07-31 Unassigned Stephen Senkomago Musoke TBD Waiting for Dev Unresolved

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, you can take a look at the complete list of "introductory" issues, (not necessarily "curated").

Beyond Introductory Issues

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.

Current Sprint Issues

We may have an ongoing Development Sprints. Feel free to ask on IRC or the development category of OpenMRS Talk.

Other Useful Resources

  • 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?