Historical Archive of Core Contributor Program Genesis
Updates & Disclaimers
This page was updated on 2021-09-08 to reflect nomenclature changes (“Core Contributor Program Committers” being the new name, was previously “Core Committers”) as well as changing legal requirements.
Note this page and its children were written in 2020 at the conception of the Core Contributor Program and thus current terminology, requirements, and implementation details may differ from what this document and its children pages describe.
Children Page Tree
Phased Rollout
Here is a proposal for a phased rollout of the Core Contributor Program Committers (formerly the “Core Committer” program), beginning with an initial low-effort learnable pilot, later expanding to a more scalable solution.
Phase 1: Pilot with champion support
This pilot is an initial increment of the Core Contributor Program, with an opportunity to test assumptions and gather initial learnings before moving forward. In this phase, we focus on discovering unanticipated technicalities and legalities in the program by enlisting a few carefully selected long-time contributors to the platform (external Committers and internal champions) to help us co-create this program and collectively identify issues.
Legal agreements
Individual Contributor agreement(s)
Each Committer signs an individual contributor agreement that allows the Committer to contribute to the platform without any affiliation with an organization. This is a required legal agreement that clarifies legal ownership and potential liability of the individual’s contributions.
If the Committer works at an organization that is an Open edX provider, an additional entity contributor agreement is required to eliminate any risk of confusion between work done in an individual capacity versus in an employee capacity.
Core Contributor Program Agreement
Each Committer signs an Core Contributor Program Agreement with edX in order to protect edX from any confidential/security/legal exceptional cases that occur from inadvertent code merges and when the Committer is included to troubleshoot the issue. Additionally, edX is obligated to protect member, customer, and learner info, when there is an unintended disclosure.
This Program Agreement covers contributions of any type, so a Committer may easily step into a Non-Technical Committer role at any time.
Internal Champions
Each Committer in the pilot is assigned to 2 edX employees as their 2 internal champions. The champions support the Committers through the pilot to:
Ensure a reliable and timely communication channel exists with the Committer, for example, in case of emergencies or questions on upcoming PRs.
Wherever possible, avoid private discussions and default to public channels.
Inform the Committer of escaped production issues through the deployment pipeline’s auto-notification.
The Committer can undo their changes by merging (and deploying via CD) a revert of their PR.
Escalate urgent issues to edX engineering management that are impediments for the Committer.
Help the Committer connect with relevant technical owners, as required by the review process.
Initial People
We believe the following shortlist of long-time contributors are ideal candidates for this initial pilot experiment and for providing feedback to iterate and improve the program in its future.
Committer | Current Org | Repos | 2 edX Champions |
Zia Fazal | Edly by Arbisoft | edx-platform | @Jeremy Bowman (Deactivated) & @Feanil Patel (Deactivated) |
Braden MacDonald | OpenCraft | blockstore, xblock, xblock-sdk, xblock-utils, opaque-keys, edx-platform | @Dave Ormsbee (Deactivated) & @Kyle McCormick (Deactivated) |
Usman Khalid | OpenCraft | blockstore, xblock, xblock-sdk, xblock-utils | @Dave Ormsbee (Deactivated) & @Kyle McCormick (Deactivated) |
Jill Vogel | OpenCraft | configuration, edx-ora2 | @Ned Batchelder (Deactivated) & @Feanil Patel (Deactivated) |
Felipe Montoya, | EduNext | xblock, xblock-sdk, xblock-utils, opaque-keys, edx-platform, | @Jeremy Bowman (Deactivated) & @Feanil Patel (Deactivated) |
Omar Al-Ithawi | Appsembler | edx-ace | @Ned Batchelder (Deactivated) & @Nimisha Asthagiri (Deactivated) |
Peter Pinch | MIT Open Learning | ccx-keys, opaque-keys, xblock, xblock-sdk, xblock-utils, edx-platform | @Dave Ormsbee (Deactivated) & @Kyle McCormick (Deactivated) |
Regis Behmo | devstack, edx-toggles, django-config-models, edx-django-utils, code-annotations | @Jeremy Bowman (Deactivated) & @Robert Raposa | |
Igor Degtiarov | Raccoon Gang | xblock-lti-consumer, edx-organizations, auth-backends, edx-search, edx-rest-api-client, edx-rbac, edx-proctoring | @Ned Batchelder (Deactivated) & @Nimisha Asthagiri (Deactivated) & @Simon Chen |
Phase 2: Co-establish and publish Committer program
Building upon learnings from the pilot, in this phase we focus on officially establishing and publishing the Committer program in collaboration with the participants in the pilot.
Retro. Collect feedback and input in the form of a retrospective of the pilot program.
Adjust. Based on learnings from the retro, make any adjustments to the proposed program.
Selection. With the group, form a concrete proposal for the selection criteria of who can join as a Committer.
Publish. Document and publish the establishment of the Committer program, along with its updated rights, responsibilities, and selection process. When published, communicate that the program is still in its infancy and yet to be fully developed (to be scalable in phase 3).
Links to Historic Phase 2 docs
Note: These documents all use the phrase “Core Committer”; the Program has evolved to use the language “Core Contributor Program Committer” or simply “Committer” for short.
Core Committer Phase 2 kickoff, with Review, Retro, and Rules: Miro board.
Core Committer Phase 2 Project tracking: https://github.com/orgs/edx/projects/1
Phase 3: Scale program without the need for individual champions
At this point, we pivot from small-scale hand-holding of Committers to a more scalable solution. Based on learnings from the previous phases, we can introduce measures to reduce involvement from the internal edX champions. Otherwise, the limited availability of edX champions will remain a bottleneck and prevent the expansion of this program.
During this phase, we can also revisit the need for Committers to sign an NDA, depending on learnings from earlier and how we choose to scale the program.
Expansion Ideas
Here are some preliminary ideas for scaling the program (pending learnings from earlier phases):
Self-serve testing capability to predict scalability and production issues (ref: DrupalCI Testing)
Further advancements in decoupling code changes from production usage
Toggle agility and scalability
Configuration simplicity and decoupling
Extract Committer-ownable extensions from the core and distribute shared ownership of extensions with Committers
Rejected Ideas
Here are some alternative ideas that were considered, but rejected after initial deliberation with edX Legal and Enterprise representatives:
Give Committers access to edX production debugging and monitoring tools so they can be self-sufficient with addressing issues in their own code changes and repositories.
Give Committers access to edX deployment pipeline and other operational infrastructure so they can rollback and manage deployment of their own changes.
These approaches take us down the path of having Committers be closer in relation to edX contractors, with them gaining potential access to edX PII and production data in order to troubleshoot issues. While this may be a viable path to production-aware self-sufficiency, it complicates the Committer relationship and introduces legal and security barriers. So we reject this path in favor of keeping Committers focused on code, rather than data and deployment and confidential business.
Target Milestones
Summer 2020: Phase 1 begins
Fall 2020: Phase 2 begins
2021: Phase 3 begins