Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Table of Contents

Who are

...

Code Committers?

Committers, under the Core Contributor Program, are individuals with merge and ownership rights to (parts of) the Open edX codebase. They are essential contributors to the Open edX ecosystem with demonstrated influence on the technical upkeeping and direction of the platform.

Currently, only edX engineers and contractors have these rights. This document describes a phased program for expanding these rights to other members of the Open edX community.

Why?

We believe having See https://openedx.atlassian.net/wiki/spaces/COMM/pages/2759460357/Core+Contributor+Role+Definitions#Code-contributors---Sarina

Why?

Having a more inclusive Committers group will lead leads to a more vibrant platform ecosystem that fosters:

  • stronger innovative collaboration with the Open edX community

  • increased developer velocity that accelerates platform advancement

  • increased developer capacity to own and maintain the platform

Principles

...

  • Uphold the principles and standards defined in OEP-54 Core Contributors and OEP-55 Maintainers.

  • Continue to remain in compliance with edX’s the platform’s security (PCI, etc), privacy (GDPR, etc), i18n, and a11y commitments.

  • Do not regress in the forward movement we are concurrently making on technical ownership. For each Committer contribution, we will need to ensure:

  • edX Product accepts future maintenance costs of new/enhanced features in the platform.

  • edX Engineering owning team acknowledges acceptance of ownership of changes.

    Since edX.org currently (as of March 2024) deploys continuously off of master, please work with the relevant groups (https://docs.google.com/spreadsheets/d/1ryqbaxMp4x-8Apwss2Br2IOU2UA7zXEI-VDo8dJPb9U/edit#gid=0) to determine when appropriate merge windows are; guidelines will vary repo-to-repo.

    • PRs merged by a core contributor will go to edx.org production systems in a matter of hours or less. Coordination between CCs and edx.org engineers is sometimes necessary when merging changes that require migrations or are highly impactful - even a very small change may be highly impactful to a production system. Therefore CCs should use these chat rooms to do merge coordination with 2U/edX engineers and ask pointed questions around the PRs. These chat rooms are not for questions along the lines of “help me design/code/review my feature”.

    • Each room is monitored by a 2U/edX engineering manager. Each room maps to one or more repositories as described in this spreadsheet. Core contributors should join the room(s) applicable to them. Others are welcome to sit in, but please be sure to keep the channel’s usage to what is described above.

    • Merge guidelines for coding CCs are expanded upon here: Merge Guidelines for Coding Core Contributors

  • Support Committers who are at varying levels of technical expertise, though they must demonstrate excellent judgment and accountability.

  • Be transparent and open about the existence and eligibility of the Committer program.Constrain Committer’s relationship to the Open edX (public) codebase, without exposing edX-confidential business or data.

  • Hold an equal bar for both edX engineers and community engineers, in the long-term. In the future, for instance, edX engineers might earn merge rights just as other contributors to the platform.

  • Respect edX’s right to modify and terminate the Committer program.

Committer Rights and Responsibilities

...

Right

...

Responsibility

...

Legal

...

Be an individual Committer regardless of organization affiliation 

...

Sign individual (and, if needed, entity) contributor agreements, per edX legal requirements

...

Renew annual continued interest in being an individual Committer 

...

Complete annual training for security, privacy, a11y, and architecture

...

Merge

...

Merge to master, using defensive CI/CD techniques such as feature toggles

...

Ensure approved review process is upheld and be on-call to address issues with recently merged PRs. Follow follow guidelines.

...

(for Pilot) 2 designated edx-internal champions to support Committer with on-call issues

...

Retain strong communication with the champions, including visibility into expected merges and time availabilities

...

Own

...

Review PRs and suggest technical changes in designated repositories

...

Learn and advocate for clean code, quality, and architecture principles and practices (per repository’s definition of done)

...

Co-establish technical direction of designated repositories1

...

Documenting and reviewing decisions in ADRs (and OEPs) and maintaining READMEs, HowTos, etc

...

Co-maintain prioritized backlog of needed technical improvements of designated repositories.

...

Negotiate and allocate a regular percentage of time toward technical upkeep, including refactorings and other items listed in this column.

...

(in Future) Co-own designated repositories

...

Ongoing upgrade and feature maintenance and other ownership costs of designated repositories

...

Process

...

Vote in the selection process for future Committers

...

Train new/young developers2 to help hone their own judgment and skills, while following our code of conduct

...

Co-establish the selection process for Committers

...

Lead by example

1 Sharing insights into product goals and roadmap will enable us to be successful in establishing technical direction.
2 Each Committer uses their own experience and judgment to determine how best to train new folks. For example, investing time in scaffolded constructive reviews on both code PRs and design/decision PRs can have a multiplicative effect.

Reviews and Ownership

The requirements for when edX Product must review a PR varies based on the type of change as summarized in the table below. Similarly, non-trivial changes need to be accepted by the team that owns the repository in order to ensure the owning team has the context for the change and acknowledges its future ongoing maintenance.

...

Type of change

...

Required review3
(not counting the author)

...

Required Technical Ownership

...

Maintenance updates & bug fixes

...

1 CCP Committer

...

N/A

...

Technical enhancements

...

1 CCP Committer

...

Acknowledgement from owning team4

...

End-user facing changes

...

1 edX product
1 CCP Committer

...

Acknowledgement from owning team

3 In the event of any disagreement between Committers, it is expected that the Committers will demonstrate appropriate judgment and work it out amongst themselves. If moderation is required, they can reach out to Nimisha, as head of architecture.
4 The process for “acknowledgment” from the owning team is left to the discretion of the Champion and Committer so they may find a working model for the relevant changes. For certain types of contributions, a one-time acknowledgment at the beginning of a project is sufficient to avoid blockers on every PR.

Current Status

The Committer program is currently in its Phase 2, as described in Core Committers: Phases for Rollout. The program relies on individual edX champions to support designated Committers; as of Sept 2021, we are piloting a team-based model with some newly added Committers.

In Phase 2, we are removing identified friction and enhancing the program’s operations, as tracked in GitHub. We are also expanding the program: inviting additional technical Committers per edX champion capacity and inviting non-technical core contributors.

...

  • all engineers.

High Level Contributing Guidelines

  • Technical changes must be reviewed by other contributors and should align with the maintainers goals for the component.

    • Before making large technical or architectural changes, be sure to communicate your ideas with the other engineers that work in that area and make sure everyone is aligned on the impementation. These discussions should take place on issues in the relevant repo or in the discussion forums if they span multiple repositories.

  • Any user-facing change should go through Open edX Product Review prior to starting on coding. This process is described: How to submit an open source contribution for Product Review

    • Once a change has passed through product review, implementation may begin. If, during implementation, it is discovered that the approved design cannot be coded for one reason or another, the product review discussion thread should be re-opened and alternatives discussed until agreement is reached.

    • Code reviewers of a user-facing change should read through the product review discussion to ensure they are reviewing and approving only a design that the product team has approved.