Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
E
edx-platform
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
edx
edx-platform
Commits
8f9f4ba5
Commit
8f9f4ba5
authored
Aug 27, 2014
by
Sarina Canelake
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Update Contributing documentation with new PR process. OPEN-111
parent
e0f9def0
Show whitespace changes
Inline
Side-by-side
Showing
12 changed files
with
201 additions
and
51 deletions
+201
-51
CONTRIBUTING.rst
+24
-3
docs/en_us/developers/source/process/community-manager.rst
+38
-24
docs/en_us/developers/source/process/contributor.rst
+47
-6
docs/en_us/developers/source/process/core-committer.rst
+2
-2
docs/en_us/developers/source/process/cover-letter.rst
+58
-0
docs/en_us/developers/source/process/index.rst
+4
-5
docs/en_us/developers/source/process/overview.rst
+9
-6
docs/en_us/developers/source/process/pr-process.graffle
+0
-0
docs/en_us/developers/source/process/pr-process.graffle/data.plist
+0
-0
docs/en_us/developers/source/process/pr-process.graffle/image2.png
+0
-0
docs/en_us/developers/source/process/pr-process.png
+0
-0
docs/en_us/developers/source/process/product-owner.rst
+19
-5
No files found.
CONTRIBUTING.rst
View file @
8f9f4ba5
...
...
@@ -13,9 +13,30 @@ Step 0: Join the Conversation
Got an idea for how to improve the codebase? Fantastic, we'd love to hear about
it! Before you dive in and spend a lot of time and effort making a pull request,
it's a good idea to discuss your idea with other interested developers. 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.
it's a good idea to discuss your idea with other interested developers and/or the
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.
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
For real-time conversation, we use `IRC`_: we all hang out in the
`#edx-code channel on Freenode`_. Come join us! The channel tends to be most
...
...
docs/en_us/developers/source/process/community-manager.rst
View file @
8f9f4ba5
...
...
@@ -10,10 +10,11 @@ pull requests. For each pull request, a community manager should:
#. Read the description of the pull request to understand the idea behind it
and what parts of the code it impacts. If the description is absent or
unclear, inform the author that the pull request cannot be reviewed until
the description is clearer.
the description is clearer. Guide them to the :doc:`pull request cover letter <cover-letter>`
guidelines.
#.
Evaluate the idea behind the pull request. Is this something that
Open edX wants? Discuss with product owners as necessary.
If you and the
#.
Help the product team evaluate the idea behind the pull request.
Is this something that Open edX wants?
If you and the
product owner(s) all believe that Open edX does not want this pull request,
add a comment to the pull request explaining the reasoning behind that
decision. Be polite, and remind them that they are welcome to fork the code
...
...
@@ -24,8 +25,8 @@ pull requests. For each pull request, a community manager should:
#. Check that the author of the pull requests has submitted a
`contributor's agreement`_, added name to AUTHORS file, and any other
necessary administrivia
. If not, inform author of problems
and wait for them to fix it.
necessary administrivia
(our bot will make an automated comment if this is not
properly in place). If not, inform author of problems
and wait for them to fix it.
#. Once you’ve verified that the code change is not malicious,
run a Jenkins job on the pull request and check the result.
...
...
@@ -77,25 +78,39 @@ meaningful way.
If the pull request is small, it can be reviewed immediately. If the community
manager that is handling this pull request feels comfortable doing the code
review, then he or she should do so rather than handing it off to a core
committer. If not, he or she should add a comment to the PR tagging a core
committer to do the review, and informing the author that it might take a few
days for the reviewer to get around to it.
committer. If not, he or she should move the JIRA ticket for the PR review
into the "Awaiting Prioritization" state and add enough detail on the ticket for
the product team to understand the size and scope of the changes.
Inform the author that it might take a few days for the engineering team to review the PR.
If the pull request is not small, it will be handled by the core contributor
Scrum process. The community manager should:
If the pull request is not small, it will be handled by the full pull request process:
* Determine which teams of core committers this pull request impacts.
At least one developer from each of these teams should review this pull request.
.. image:: pr-process.png
:align: center
:alt: A visualization of the pull request process
* For each team, create a story on the team’s JIRA board that links to the
pull request in question. In the story description, include any relevant
information about which contributor organization is behind the pull request,
any known political factors, etc. Tag the story as a contributor pull
request in whatever manner the team prefers: adding it to an epic, perhaps.
The community manager should:
* Inform the product owner of the team that there is a contributor pull request
that their team is responsible for reviewing, and send them a link to the
JIRA story that you’ve just created. Ask the product owner for an estimate
* Make sure the pull request is ready for Product Review, if that has not yet happened.
That means getting enough detail out of the contributor for the product owner
to properly do a product review. Once this is done, move the JIRA ticket to the
"Product Review" state.
* If questions arise from product owners during review, work with the contributor to
get those questions answered before the next round of review.
* Once a PR has passed product review, do a first-round review of the PR with the
contributor. That is, make sure quality and test coverage is up to par, and that
the code generally meets our style guidelines. Once this has happened, move the
ticket to the "Awaiting Prioritization" state.
* At each of these junctures, try to update the author with an estimate of how long
the next steps will take. The product team will meet biweekly to review new
proposals and prioritize PRs for team review. Direct the contributor to the JIRA ticket
as well; the state of the JIRA ticket reflect the above diagram and can give a good
sense of where in the process the pull request is.
* Once a PR has been prioritized for team review, ask the product owner for an estimate
of how many sprints it will take for the pull request to be reviewed:
if its more than one, try to push back and advocate for the contributor.
However, the estimate is ultimately up to the product owner, and if he/she
...
...
@@ -105,9 +120,8 @@ Scrum process. The community manager should:
is queued to be reviewed. Give them an estimate of when the pull request
will be reviewed: if you’re not sure what to say, tell them it will be in
two weeks. If the product owner has estimated that it will take more than
one sprint before the pull request can be reviewed, tag the product owner
in the comment so that they will be notified of further comments on
the pull request.
one sprint before the pull request can be reviewed, direct the contributor to
JIRA to monitor progress.
For determining which teams that the pull request impacts, use common sense --
but in addition, there are a few guidelines:
...
...
@@ -124,7 +138,7 @@ but in addition, there are a few guidelines:
* If any logging events are modified,
include the analytics team.
* Include the doc team on every contributor pull request.
* Include the doc team on every contributor pull request
that has a user-facing change
.
Once the code review process has started, the community managers are also
responsible for keeping the pull request unblocked during the review process. If
...
...
docs/en_us/developers/source/process/contributor.rst
View file @
8f9f4ba5
...
...
@@ -15,17 +15,36 @@ track -- before you spend a lot of time and effort making a pull request.
.. _chat on the IRC channel: http://webchat.freenode.net?channels=edx-code
.. _open an issue in our JIRA issue tracker: https://openedx.atlassian.net
If you've got an idea for a new feature or new functionality for an existing feature,
and wish to contribute your code upstream, please `start a discussion on JIRA`_
(you may first need to `create a free JIRA account`_).
Do this by visiting the JIRA website and clicking the "Create" button at the top.
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. 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
It’s also sometimes useful to submit a pull request even before the code is
working properly, to make it easier to collect early feedback. To indicate to
others that your pull request is not yet in a functional state, just prefix the
pull request title with "(WIP)" (which stands for Work In Progress).
pull request title with "(WIP)" (which stands for Work In Progress). Please do
include a link to a WIP pull request in your JIRA ticket, if you have one.
Once you’re ready to submit your changes in a pull request, check the following
list of requirements to be sure that your pull request is ready to be reviewed:
#. Prepare a :doc:`pull request cover letter <cover-letter>`. When you open
up your pull request, put your cover letter into the "Description" field on Github.
#. The code should be clear and understandable.
Comments in code, detailed docstrings, and good variable naming conventions
are expected.
are expected. The `edx-platform Github wiki`_ contains many great links to
style guides for Python, Javascript, and internationalization (i18n) conventions.
#. The pull request should be as small as possible.
Each pull request should encompass only one idea: one bugfix, one feature,
...
...
@@ -37,7 +56,7 @@ list of requirements to be sure that your pull request is ready to be reviewed:
"Fixup" commits should be squashed together. The best pull requests contain
only a single, logical change -- which means only a single, logical commit.
#. All code in the pull request must be compatible with edX
’
s AGPL license.
#. All code in the pull request must be compatible with edX
'
s AGPL license.
This means that the author of the pull request must sign a `contributor's
agreement with edX`_, and all libraries included or referenced in
the pull request must have `compatible licenses`_.
...
...
@@ -49,13 +68,16 @@ list of requirements to be sure that your pull request is ready to be reviewed:
(edX’s continuous integration server will verify this for your pull request,
and point out any failing tests.)
#. The author of the pull request should provide a test plan for verifying
#. The author of the pull request should provide a test plan for
manually
verifying
the change in this pull request. The test plan should include details
of what should be checked, how to check it, and what the correct behavior
should be.
should be. When it makes sense to do so, a good test plan includes a tarball
of a small edX test course that has a unit which triggers the bug or illustrates
the new feature.
#. For pull requests that make changes to the user interface,
it’s very helpful if you can include screenshots of what you changed.
please include screenshots of what you changed. Github will allow
you to upload images directly from your computer.
In the future, the core committers will produce a style guide that
contains more requirements around how pages should appear and how
front-end code should be structured.
...
...
@@ -95,6 +117,24 @@ if we do reject your pull request, we will explain why we aren’t taking it, an
try to suggest other ways that you can accomplish the same result in a way that
we will accept.
Once A PR is Open
-----------------
Once a pull request is open, our faithful robot "Botbro" will open up a JIRA ticket
in our system to track review of your pull request. The JIRA ticket is a way for
non-engineers (particularly, product owners) to understand your change and prioritize
your pull request for team review.
If you open up your pull request with a solid description, following the
:doc:`pull request cover letter <cover-letter>` guidelines, 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
on the JIRA ticket. A community manager will ping you on Github to clarify these questions if
they arise; you are not required to monitor the JIRA discussion.
Once the product team has sent your pull request to the engineering teams for review, all
technical discussion regarding your change will occur on Github, inline with your code.
Further Information
-------------------
For futher information on the pull request requirements, please see the following
...
...
@@ -107,5 +147,6 @@ links:
* `Python Guidelines <https://github.com/edx/edx-platform/wiki/Python-Guidelines>`_
* `Javascript Guidelines <https://github.com/edx/edx-platform/wiki/Javascript-Guidelines>`_
.. _edx-platform Github wiki: https://github.com/edx/edx-platform/wiki#development
.. _contributor's agreement with edX: http://code.edx.org/individual-contributor-agreement.pdf
.. _compatible licenses: https://github.com/edx/edx-platform/wiki/Licensing
docs/en_us/developers/source/process/core-committer.rst
View file @
8f9f4ba5
...
...
@@ -49,8 +49,8 @@ many contributor pull request reviews they want to commit to.
Once a pull request from a contributor passes all required code reviews, a core
committer will need to merge the pull request into the project. The core
committer who merges the pull request will be responsible for verifying those
changes on the staging server prior to release, using the
test plan provided by
the author of the pull request.
changes on the staging server prior to release, using the
manual test plan provided
by
the author of the pull request.
In addition to reviewing contributor requests as part of sprint work, core
committers should expect to spend about one hour per week doing other tasks
...
...
docs/en_us/developers/source/process/cover-letter.rst
0 → 100644
View file @
8f9f4ba5
*************************
Pull Request Cover Letter
*************************
When opening up a pull request, please prepare a "cover letter" to place into
the "Description" field on Github. A good cover letter concisely answers as
many of the following questions as possible. Not all pull requests will have
answers to every one of these questions, which is okay!
* What JIRA ticket does this address (if any)? Please provide a link to the JIRA ticket
representing the bug you are fixing or the feature discussion you've already
had with the edX product owners.
* Who have you talked to at edX about this work? Design, architecture, previous PRs,
course project manager, IRC, mailing list, etc. Please include links to relevant
discussions.
* Why do you need this change? It's important for us to understand what problem your
change is trying to solve, so please describe fully why you feel this change is needed.
* What components are affected? (LMS, Studio, a specific app in the system, etc)
* What users are affected? For example, is this a new component intended for use
in just one course, or is this a system wide change affecting all edX students?
* Test instructions for manual testing. When it makes sense to do so, a good test
plan includes a tarball of a small test course that has a unit which triggers
the bug or illustrates the new feature. Another option would be to provide
explicit, numbered steps (ideally with screenshots!) to walk the reviewer
through your feature or fix.
* Please provide screenshots for all user-facing changes.
* Indicate the urgency of your request. If this is a pull request for a course
running or about to run on edx.org, we need to understand your time constraints.
Good pieces of information to provide are the course(s) that need this feature
and the date that the feature needed by.
* What are your concerns (the author’s) about the PR? Is there a corner case you
don't know how to address or some tests you aren't sure how to add? Please bring
these concerns up in your cover letter so we can help!
Example Of A Good PR Cover Letter
---------------------------------
`Pull Request 4675`_ is one of the first edX pull requests to include a cover
letter, and it is great! It clearly explains what the bug is, what system is
affected (just the LMS), includes a tarball of a course that demonstrates the
issue, and provides clear manual testing instructions.
`Pull Request 4983`_ is another great example. This pull request's cover letter
includes before and after screenshots, so the UX team can quickly understand
what changes were made and make suggestions. Further, the pull request indicates
how to manually test the feature and what date it is needed by.
.. _Pull Request 4675: https://github.com/edx/edx-platform/pull/4675
.. _Pull Request 4983: https://github.com/edx/edx-platform/pull/4983
docs/en_us/developers/source/process/index.rst
View file @
8f9f4ba5
...
...
@@ -8,8 +8,8 @@ Contributing to Open edX
:maxdepth: 2
overview
core-committer
product-owner
community-manager
contributor
\ No newline at end of file
cover-letter
community-manager
product-owner
core-committer
docs/en_us/developers/source/process/overview.rst
View file @
8f9f4ba5
...
...
@@ -30,10 +30,10 @@ different jobs and responsibilities:
Prioritizes the work of core committers.
:doc:`community-manager`
h
elps keep the community healthy and working smoothly.
H
elps keep the community healthy and working smoothly.
:doc:`contributor`
s
ubmits pull requests for eventual committing to an Open edX repository.
S
ubmits pull requests for eventual committing to an Open edX repository.
.. note::
At the moment, developers who work for edX are core committers, and other
...
...
@@ -49,10 +49,13 @@ Overview
If you are a :doc:`contributor <contributor>` submitting a pull request, expect that it will
take a few weeks before it can be merged. The earlier you can start talking
with the rest of the Open edX community about the changes you want to make,
before you even start changing code if possible, the better the whole process
will go. Follow the guidelines in the document for a high-quality pull
request: include a detailed description, keep the code clear and readable,
make sure the tests pass, be responsive to code review comments.
before you even start changing code, the better the whole process
will go.
Follow the guidelines in this document for a high-quality pull request: include a detailed
description of your pull request when you open it on Github (we recommend using a
:doc:`pull request cover letter <cover-letter>` to guide your description),
keep the code clear and readable, make sure the tests pass, be responsive to code review comments.
Small pull requests are easier to review than large pull requests, so
split up your changes into several small pull requests when possible --
it will make everything go faster. See the full :doc:`contributor guidelines <contributor>`
...
...
docs/en_us/developers/source/process/pr-process.graffle
deleted
100644 → 0
View file @
e0f9def0
File deleted
docs/en_us/developers/source/process/pr-process.graffle/data.plist
0 → 100644
View file @
8f9f4ba5
File added
docs/en_us/developers/source/process/pr-process.graffle/image2.png
0 → 100644
View file @
8f9f4ba5
63.9 KB
docs/en_us/developers/source/process/pr-process.png
View replaced file @
e0f9def0
View file @
8f9f4ba5
90.2 KB
|
W:
|
H:
153 KB
|
W:
|
H:
2-up
Swipe
Onion skin
docs/en_us/developers/source/process/product-owner.rst
View file @
8f9f4ba5
...
...
@@ -2,11 +2,25 @@
Product Owner
*************
The product owner is responsible for prioritizing pull requests from
contributors, and keeping them informed when prioritization slips. The community
managers will inform product owners of incoming pull requests that are relevant
to their team. For every sprint, each incoming pull request should either be
included in the sprint as a commitment to get the pull request reviewed, or the
The product owner has two main responsibilities: approving user-facing features
and improvements from a product point of view, and prioritizing pull request
reviews.
When a contributor is interested in developing a new feature, or enhancing
an existing one, they can engage in a dialogue with the product team about
the feature: why it is needed, what does it do, etc. Product owners are expected
to fully engage in this process and treat contributors like customers. If
the idea is good but the implementation idea is poor, direct them to a better
solution. If the feature is not something we can support at this time, provide
a detailed explanation of why that is.
A product owner is responsible for prioritizing pull requests from
contributors, and keeping them informed when prioritization slips. Pull
requests that are ready to be prioritized in the next sprint will have a
"Awaiting Prioritization" label on their JIRA review tickets. At every
product review meeting (which should happen each sprint), pull requests awaiting
prioritization should either be included in the sprint for the appropriate team
as a commitment to get the pull request reviewed, or the
product owner must inform the author of the pull request that the pull request
is still queued and is not being ignored. Contributors should be treated as
customers, and if their pull requests are delayed then they should be informed
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment