CONTRIBUTING.rst 10.7 KB
Newer Older
1
############################
2
Contributing to Open edX
3 4
############################

5
Contributions to Open edX are very welcome, and strongly encouraged! We've
6 7
put together `some documentation that describes our contribution process`_,
but here's a step-by-step guide that should help you get started.
8

9
.. _some documentation that describes our contribution process: http://edx.readthedocs.org/projects/edx-developer-guide/en/latest/process/index.html
10

11 12
Step 0: Join the Conversation
=============================
13

David Baumgold committed
14
Got an idea for how to improve the codebase? Fantastic, we'd love to hear about
15
it! Before you dive in and spend a lot of time and effort making a pull request,
16
it's a good idea to discuss your idea with other interested developers and/or the
17 18 19 20
edX product team. You may get some valuable feedback that changes how you think
about your idea, or you may find other developers who have the same idea and want
to work together.

21 22 23
JIRA
----

24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
If you've got an idea for a new feature or new functionality for an existing feature,
please start a discussion on the `edx-code`_ mailing list to get feedback from
the community about the idea and your implementation choices.

.. _edx-code: https://groups.google.com/forum/#!forum/edx-code

If you then plan to contribute your code upstream, please `start a discussion on JIRA`_
(you may first need to `create a free JIRA account`_).
Start a discussion by visiting the JIRA website and clicking the "Create" button at the
top of the page. Choose the project "Open Source Pull Requests" and the issue type
"Feature Proposal". In the description give us as much detail as you can for the feature
or functionality you are thinking about implementing. Include a link to any relevant
edx-code mailing list discussions about your idea. We encourage you to do this before
you begin implementing your feature, in order to get valuable feedback from the edX
product team early on in your journey and increase the likelihood of a successful
pull request.

.. _start a discussion on JIRA: https://openedx.atlassian.net/secure/Dashboard.jspa
.. _create a free JIRA account: https://openedx.atlassian.net/admin/users/sign-up
43

44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61
Slack
-----

To talk with others in the Open edX community, join us on `Slack`_.
`Sign up for a free account`_ and join the conversation!
The group tends to be most active Monday through Friday
between 13:00 and 21:00 UTC (9am to 5pm US Eastern time),
but interesting conversations can happen at any time.
There are many different channels available for different topics, including:

* ``#ops`` for installation help
* ``#events`` for upcoming events related to Open edX
* ``#content`` for discussions about course content and creating the best courses

And lots more! You can also make your own channels to discuss new topics.

.. _Slack: https://slack.com/
.. _Sign up for a free account: https://openedx-slack-invite.herokuapp.com/
62

63 64
Mailing Lists
-------------
65 66 67 68 69 70 71 72

For asynchronous conversation, we have several mailing lists on Google Groups:

* `openedx-ops`_: everything related to *running* Open edX. This includes
  installation issues, server management, cost analysis, and so on.
* `openedx-translation`_: everything related to *translating* Open edX into
  other languages. This includes volunteer translators, our internationalization
  infrastructure, issues related to Transifex, and so on.
73
* `openedx-analytics`_: everything related to *analytics* in Open edX.
74 75 76 77 78
* `edx-code`_: everything related to the *code* in Open edX. This includes
  feature requests, idea proposals, refactorings, and so on.

.. _openedx-ops: https://groups.google.com/forum/#!forum/openedx-ops
.. _openedx-translation: https://groups.google.com/forum/#!forum/openedx-translation
79
.. _openedx-analytics: https://groups.google.com/forum/#!forum/openedx-analytics
80 81
.. _edx-code: https://groups.google.com/forum/#!forum/edx-code

82 83 84
Byte-sized Tasks & Bugs
-----------------------

85
If you are contributing for the first time and want a gentle introduction,
86 87 88 89 90 91
or if you aren't sure what to work on, have a look at the list of
`byte-sized bugs and tasks`_ in the tracker. These tasks are selected for their
small size, and usually don't require a broad knowledge of the edX platform.
It makes them good candidates for a first task, allowing you to focus on getting
familiar with the development environment and the contribution process.

92
.. _byte-sized bugs and tasks: http://bit.ly/edxbugs
93 94 95 96 97 98 99

Once you have identified a bug or task, `create an account on the tracker`_ and
then comment on the ticket to indicate that you are working on it. Don't hesitate
to ask clarifying questions on the ticket as needed, too, if anything is unclear.

.. _create an account on the tracker: https://openedx.atlassian.net/admin/users/sign-up

100 101 102 103 104 105 106
Step 1: Sign a Contribution Agreement
=====================================

Before edX can accept any code contributions from you, you'll need to sign
the `individual contributor agreement`_ and send it in. This confirms
that you have the authority to contribute the code in the pull request and
ensures that edX can relicense it.
107 108 109 110 111

You should print out the agreement and sign it. Then scan (or photograph) the
signed agreement and email it to the email address indicated on the agreement.
Alternatively, you're also free to physically mail the agreement to the street
address on the agreement. Once we have your agreement in hand, we can begin
112
reviewing and merging your work.
113 114 115

You'll also need to add yourself to the `AUTHORS` file when you submit your
first pull request.  You should add your full name as well as the email address
Ned Batchelder committed
116
associated with your GitHub account.  Please update `AUTHORS` in an individual
117 118 119 120 121
commit, distinct from other changes in the pull request (it's OK for a pull
request to contain multiple commits, including a commit to `AUTHORS`).
Alternatively, you can open up a separate PR just to have your name added to
the `AUTHORS` file, and link that PR to the PR with your changes.

122 123
Step 2: Fork, Commit, and Pull Request
======================================
Ned Batchelder committed
124
GitHub has some great documentation on `how to fork a git repository`_. Once
125 126 127 128
you've done that, make your changes and `send us a pull request`_! Be sure to
include a detailed description for your pull request, so that a community
manager can understand *what* change you're making, *why* you're making it, *how*
it should work now, and how you can *test* that it's working correctly.
129

130 131
.. _how to fork a git repository: https://help.github.com/articles/fork-a-repo
.. _send us a pull request: https://help.github.com/articles/creating-a-pull-request
132

133 134
Step 3: Meet PR Requirements
============================
135

136 137 138 139
Our `contributor documentation`_ includes a long list of requirements that pull
requests must meet in order to be reviewed by a core committer. These requirements
include things like documentation and passing tests: see the
`contributor documentation`_ page for the full list.
140

141 142
.. _contributor documentation: http://edx.readthedocs.org/projects/edx-developer-guide/en/latest/process/contributor.html

143

144 145 146 147 148 149 150 151 152
Areas of particular concern with their own detailed guidelines are:

* `Accessibility`_: making sure our applications can
  be used by people with disabilities, in keeping with the edX
  `website accessibility policy`_.
* `Internationalization`_: enabling translation for use
  around the world.


153
.. _Accessibility: http://edx.readthedocs.org/projects/edx-developer-guide/en/latest/conventions/accessibility.html
154
.. _website accessibility policy: https://www.edx.org/accessibility
155
.. _Internationalization: http://edx.readthedocs.org/projects/edx-developer-guide/en/latest/conventions/internationalization/index.html
156 157


158 159
Step 4: Approval by Community Manager and Product Owner
=======================================================
160

161 162 163 164 165 166
A community manager will read the description of your pull request. If the
description is understandable, the community manager will send the pull request
to a product owner. The product owner will evaluate if the pull request is a
good idea for Open edX, and if not, your pull request will be rejected. This
is another good reason why you should discuss your ideas with other members
of the community before working on a pull request!
167

168 169
Step 5: Code Review by Core Committer(s)
========================================
170

171 172 173
If your pull request meets the requirements listed in the
`contributor documentation`_, and it hasn't been rejected by a product owner,
then it will be scheduled for code review by one or more core committers. This
174
process sometimes takes awhile: most of the core committers on the project
175
are employees of edX, and they have to balance their time between code review
176
and new development.
177

178 179 180 181 182
Once the code review process has started, please be responsive to comments on
the pull request, so we can keep the review process moving forward.
If you are unable to respond for a few days, that's fine, but
please add a comment informing us of that -- otherwise, it looks like you're
abandoning your work!
183

184 185
Step 6: Merge!
==============
186

187 188 189
Once the core committers are satisfied that your pull request is ready to go,
one of them will merge it for you. Your code will end up on the edX production
servers in the next release, which usually which happens every week. Congrats!
190 191


192
############################
193
Expectations We Have of You
194
############################
195 196 197

By opening up a pull request, we expect the following things:

198 199
1. You've read and understand the instructions in this contributing file and
   the contribution process documentation.
200 201 202 203 204 205 206

2. You are ready to engage with the edX community. Engaging means you will be
   prompt in following up with review comments and critiques. Do not open up a
   pull request right before a vacation or heavy workload that will render you
   unable to participate in the review process.

3. If you have questions, you will ask them by either commenting on the pull
207
   request or asking us in Slack or on the mailing list.
208 209 210 211

4. If you do not respond to comments on your pull request within 7 days, we
   will close it. You are welcome to re-open it when you are ready to engage.

212
############################
Ned Batchelder committed
213
Expectations You Have of Us
214
############################
215

216 217 218 219
1. Within a week of opening up a pull request, one of our community managers
   will triage it, starting the documented contribution process. (Please
   give us a little extra time if you open the PR on a weekend or
   around a US holiday! We may take a little longer getting to it.)
220 221

2. We promise to engage in an active dialogue with you from the time we begin
222
   reviewing until either the PR is merged (by a core committer), or we
223 224 225 226 227
   decide that, for whatever reason, it should be closed.

3. Once we have determined through visual review that your code is not
   malicious, we will run a Jenkins build on your branch.

228
.. _individual contributor agreement: http://open.edx.org/sites/default/files/wysiwyg/individual-contributor-agreement.pdf