How to start contributing to the Open edX code base

This article is for people who are interested in contributing code to the Open edX open source project space but don't know what contributions would be most valuable. 

Start Here!

Before we can merge your contribution you'll need to sign a Contributor Agreement.  We suggest starting that process sooner rather than later.

  1. If you are contributing as an individual go ahead and sign the Individual Contributor Agreement.

  2. If your work will be contributed as part of a company or institution email 

How do I know if I should sign the individual contributor agreement or contribute as part of a larger organization?

If you will be working on your contribution during school or work time or are using an Github or email account administered by that organization you likely fall under our larger organization agreements.  You may also be under contractual obligation from your employer that all code you write is their property or may be their property if written on a machine that they purchased.  If you have any questions about whether you should sign the individual contributor agreement or contribute as part of an organization email your situation to and they will help find the right agreement for you.

Finding Something To Work On

Right now, we're in the process of retooling how we capture and advertise "good first tasks". However, we encourage you to check out our Working groups! There are a few working groups that may have some work they can help guide you through as a new contributor to the project. Particularly:

  • The Build-Test-Release WG (or BTR): they manage our named releases, which come out each June and December. They particularly need help starting mid-Feb through June and mid-August through December. See the Working groups page to get in touch with them and view their project board.

  • The frontend working group: they manage the state of our frontend, including both new features and upgrades. They'd love more people to join them!

  • The DEPR WG: they work on deprecating various aspects of the Open edX platform. Some deprecations are pretty approachable, others are rather complex. Reach out to them to see if they've got anything you might be able to work on.

The other working groups are very interesting (and worth attending!) but don't have a backlog of work.

Do you have an idea of what to work on? That's awesome! We encourage you to post your ideas on the Open edX discussion forums to get feedback on your idea and get connected to others that can help you out. Please clearly state your idea, what you plan to do, link to any relevant code/screen shots, and ask specifically for what type of feedback or help you are looking for.

Dev Env!

Get Started with the edX devstack explains how to stand up Devstack. Post in the Development category on the Open edX forum if you have questions about set-up or development. 

Note: we are currently (spring 2022) in an effort to replace Devstack with Tutor. We encourage you to try out Tutor and see how it goes for you. There's a special Tutor forum to get help specifically on Tutor.

Getting Support

Join the #dev Open edX Slack channel to ask questions and get support.  There may be also more channels to get technical support, for example #ops is better suited if you are running your own instance and have questions. Also consider using the Open edX forums - please search for your answer first.  Why?  The Slack history is deleted after 6 months but the forums never delete history, so your questions there will be displayed to people searching for similar questions in the future.

Making Your First Pull Request

When you are ready to submit changes, create a Pull Request.  (Don't forget to sign the Contributor Agreement)

  1. Be sure to reference which ticket your code is resolving.

  2. If you did work for a working group, post your pull request in the appropriate WG Slack channel

  3. Communicate with the reviewer about the code and respond to feedback.

  4. Once your PR is approved it will be merged by the reviewer.

  5. Celebrate 🎉

Giving Feedback

We are always looking to improve this process and make it easier for people to contribute to the platform.  Your feedback is a very important part of that process.

Please fill out the survey posted on your pull request once it is closed. If you have specific praise, or constructive criticism you think the community could benefit from, please post on the forums.