- 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.
- To access the Wiki and JIRA, you can create a case at the OpenMRS Helpdesk stating that you'd like to contribute and would like access.
- If you haven't already, create an account at https://github.com/
- Join the 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.
- 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.
- Watch some OpenMRS development screencasts on YouTube.
- Try out the OpenMRS SDK.
- Create your first OpenMRS module. The Developer's Manual features a chapter on how to create a Hello World Module.
- 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.
- Meet some other developers through real-time chat in Telegram (telegram.me/openmrs) or IRC (irc.openmrs.org).
- Learn about OpenMRS Developer Stages, earn the /dev/null badge and, when you're ready, take the quiz to earn /dev/1.
- 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.
- Log your time spent on that issue and click "Request Code Review" and a core developer will get you some feedback in short order
- Find another issue or choose a larger project to work on. See Unassigned Projects.
- If you join a sprint or choose to share your module (we hope you do), then you'll want to read about Using Git.
- 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.
- 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, spelling mistakes, missing javadoc comments, and more. More details about code reviews can be found at this wiki page.
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.
Here is a list of tickets prioritized by the community from the Community Priority Kanban:
|TRUNK-344||PersonName.getFullName() should use the configured nameLayout||2010-03-08||2017-03-20||Unassigned||Darius Jazayeri||Ready for Work||Unresolved|
|RESTWS-644||ObsResource needs to support time zones and more date formats||2017-02-03||2017-02-28||Unassigned||Wyclif Luyima||Ready for Work||Unresolved|
|IDGEN-42||web-services for idgen||2015-03-04||2017-02-23||Unassigned||Shruthi Dipali||Ready for Work||Unresolved|
|RA-982||Support Coded Person Attributes in Reference Application Registration||2015-11-21||2017-03-08||Unassigned||James Arbaugh||Waiting for Dev||Unresolved|
|RA-1001||Update all modules that use Transifex to support all languages we support||2016-01-28||2016-11-24||Unassigned||Mark Goodrich||Waiting for Dev||Unresolved|
|TRUNK-4821||Fix broken CI plan for OpenMRS on MariaDB||2016-02-01||2016-11-21||Unassigned||Wyclif Luyima||Ready for Work||Unresolved|
|TRUNK-4822||Fix broken CI plan for MariaDB Docker test||2016-02-01||2016-11-21||Unassigned||Wyclif Luyima||Ready for Work||Unresolved|
|STAND-85||Drastically improve documentation about building the Standalone||2016-02-18||2016-11-14||Unassigned||Darius Jazayeri||Ready for Work||Unresolved|
|TRUNK-4865||Fix TODO in HL7ServiceImpl#resolveUserId||2016-04-28||2017-03-23||Unassigned||Dengfeng Li||Ready for Work||Unresolved|
|RESTWS-645||Default representation of the module resource should include version||2017-02-06||2017-02-06||Unassigned||Darius Jazayeri||Ready for Work||Unresolved|
|AM-185||Patients are given appointment slots with different providers in the overlapping time intervals||2017-03-03||2017-03-03||Unassigned||Shireesha Bongarala||Ready for Work||Unresolved|
|TRUNK-5093||AbstractHandler allows blind rewriting of existing complex obs file||2017-03-06||2017-03-07||Unassigned||Dimitri Renault||Ready for Work||Unresolved|
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.