.. _Contributing Code:

##########################################
Contributing Code to the Open edX Project
##########################################

Contributing your custom code to the Open edX project is a two-step process:
review of your idea by the product team (the Product Review Process),
followed by a review of your code by the project's core committers.
We describe this process on the `Product Review Process`_ wiki page.

.. note::

   By and large, bug fixes do not require the Product Review Process.
   However, if your bug fix will change user facing behavior, you should check
   with the Product Working Group (you can use `#wg-product-core on Slack
   <https://openedx.slack.com/archives/C057J2D1WU9>`_) on the best way to land
   your fix before beginning to write code.

****************************************
Product Review Process & Product Roadmap
****************************************

New features added to the Open edX project go through a `Product Review
Process`_, lead by the `Open edX Product Working Group`_. If you're interested
in adding new features, we ask that you undergo the product review process
_before_ you begin coding your feature. This allows the project to get
alignment on new features and help guide you to implement the feature in
a way that works with the overall platform. Additionally, there might well
be someone else already working on the same change you want to make,
and it's much better to collaborate than to submit incompatible pull requests.

If you open up your feature request with a solid description, the product owners
will be able to quickly understand your change and prioritize it for
review. However, they may have some questions about your intention, need,
and/or approach that they will ask about.

To read more about the product review process and how to submit your idea,
please visit the `Product Review Process`_ wiki page.

Features that the project wants, as well as ones being currently worked on
by community members, are represented on the `Product Roadmap`_. This
kanban-style board represents units of work on individual cards. Check
out the tickets on the far left for help reading the board. The tabs at
the top will allow you to drill into roadmap tickets by platform area.

If you're interested in contributing to the Open edX project but don't know
what to contribute, check out the roadmap! If you're interested in picking
up or collaborating on a ticket, join the conversation by adding a comment
on the ticket.

****************************
Getting Preliminary Feedback
****************************

It is sometimes useful to submit a pull request even before the code is
working properly, to make it easier to collect early feedback on your
implementation. To indicate to others that your pull request is not yet in a
functional state, just prefix the pull request title with "(WIP)" (Work In
Progress), and start the pull request as a draft on GitHub.

Please include a link to your roadmap ticket in the PR description, and add a
link to a WIP pull request in any discussion threads you start.

*************
Start Coding!
*************

Follow the :ref:`Git workflow`, and the instructions for :ref:`Landing Your Work`.

.. _Open edX Product Working Group: https://openedx.atlassian.net/wiki/spaces/COMM/pages/3449028609/Product+Working+Group
.. _Product Roadmap: https://github.com/orgs/openedx/projects/4

.. include:: /links.txt

**Maintenance chart**

+--------------+-------------------------------+----------------+--------------------------------+
| Review Date  | Working Group Reviewer        |   Release      |Test situation                  |
+--------------+-------------------------------+----------------+--------------------------------+
|              |                               |                |                                |
+--------------+-------------------------------+----------------+--------------------------------+
