Contribute as a Developer


Once you have read Get Started as a Developer, and have set up your development environment, you can start contributing to development work. 

Prerequisites

Having some basic understanding of the following topics can be beneficial to your work:

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 someone more experienced than you. 

Reviews can be as simple as checking to ensure that commits are 

  • adhering to our code conventions 
  • free of spelling mistakes 
  • not missing JavaDoc comments. 

More details about code reviews can be found at this Code Review page.


Tutorial on How to Contribute Code

Work on an issue

The code issues ready to be assigned are listed on JIRA. The introductory issues are recommended for beginners. To work on an issue, follow these steps:

  1. Claim an issue.
    Review  introductory issues, community priorities, active projects or unassigned projects below to find an issue of interest to you, claim it, and make your first contribution.

    Tip: If you need any clarification on the issue, use OpenMRS Talk , join Slack for real-time interaction.
    Tip: If you find yourself taking long time (days) without making any progress, feel free to un-assign yourself from the issue and choose another.
  2. Include unit tests for your changes.
    Make sure you always have unit tests for your code. Remember to also do an "mvn clean install" to ensure that all existing unit tests and yours pass. 
  3. Check the effects of your changes on the user interface.
    If your changes affect the user interface, please run the web application with OpenMRS SDK to see the effects, and then attach a screenshot, before you send a pull request. 
  4. Make a pull request.
    After your code has passed the unit test, you can make a pull request on GitHub. Remember to have a look at the Pull Request Tips.
Note: 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.

Work on other issues and projects 

There are issues and projects of various difficulty levels for you to choose from. 

Try Introductory Tickets

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

Curated introductory issues

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").

Work on Community Priorities

You also have the option to pick an issue prioritized by the community from the community priority Kanban.

Join a Project Team

Check out our list of active projects, and the teams (or squads) who are actively looking for contributors with a variety of skills to fill different roles. Active Projects & Squads

Tackle a Big Unassigned Projects

If you are feeling ambitious and ready to tackle a more complex problem, you can work on unassigned projects.