The time has come to stop relying on the ContactStore implementation in Gerrit to limit code contributions to Foundation Individual Members. Change-Id: I735db483d56ae71e3e3c92caec81fe813d329f22 Story: #2001094 Task: #4755
6.7 KiB
Copyright 2017 OpenStack Foundation
This work is licensed under a Creative Commons Attribution 3.0
Unported License.
http://creativecommons.org/licenses/by/3.0/legalcode
Gerrit ContactStore Removal
https://storyboard.openstack.org/#!/story/2001094
The time has come to stop relying on the ContactStore implementation in Gerrit to limit code contributions to Foundation Individual Members.
Problem Description
According to the Bylaws of the OpenStack Foundation Appendix 4 Technical Committee Member Policy §3.b along with the OpenStack Technical Committee Charter definitions for APC and ATC, we limit the voter rolls for technical elections to Foundation Individual Members. In order to comply with this requirement, we currently require all contributors to CLA-enforced Git repositories to submit contact info to the Gerrit contact store which in turn pings a simple API in the foundation member system to confirm the preferred E-mail address in Gerrit matches the primary E-mail address of an existing OpenStack Foundation Individual Member.
This has a number of drawbacks:
- It forces contributors to join the OpenStack Foundation even if they have no interest in voting in technical elections or participating in other member benefits.
- Our interpretation of the meaning of contributor for these
purposes has been unnaturally limited to change owners in
Gerrit, in part because commit authors and co-authors aren't
constrained by the contact store process and so might not be members;
manual listing as extra ATCs in the
governance
repo has been the sole workaround, and requires cumbersome manual verification of foundation membership for each addition. - The model is inherently flawed since it's been possible for a couple years now for a member to officially resign or allow their membership to lapse, but contact store submission is only ever enforced once when the account is first set up and so we may be incorrectly allowing lapsed or resigned members to vote in technical elections.
- The implementation is brittle and process confusing, resulting in opaque errors which often confound new contributors and overall inhibit onboarding.
- Because the protocol only submits a single E-mail address and backend implementation in the current member system only queries against a single address field, it unnecessarily causes users to have the same primary/preferred address in both systems (at least initially).
- Gerrit has removed contact store functionality upstream after 2.11, and we'd like to be able to upgrade to a newer Gerrit release.
Proposed Change
Very recently the OpenStackID Resources system has introduced a member directory API which is public and anonymous. Integrating this into the change owners script we use for generating electoral rolls will allow us to expressly filter out non-member contributors.
Side effect benefits include:
- it can help further identify duplicate contributors where there may be multiple E-mail addresses in the member system for a single membership, yet corresponding to multiple accounts in Gerrit with those different addresses
- it will also properly limit voting rights for extra ATCs who have not joined the foundation, eliminating any need for the current cumbersome vetting process
- it would even enable us (should we choose) to more easily expand the interpreted definition of ATC to include a variety of other types of verifiable contribution tied to a known E-mail address including commit authors and co-authors
Alternatives
We could live with the terrible terribleness, continue to hold easily disputed elections, scare away new contributors and run an outdated Gerrit. Not much of an alternative if you ask me.
Implementation
Assignee(s)
- Primary assignee:
-
fungi
Gerrit Topic
Use Gerrit topic "gerrit-contactstore-removal" for all patches related to this spec.
git-review -t gerrit-contactstore-removal
Work Items
- Update
owners.py
to use the new member directory API. - Notify election officials of the change in behavior.
- Remove the contact store implementation from Gerrit configuration
templates and manifests in
puppet-gerrit
andsystem-config
repos. - Update the account setup steps documented in the
infra-manual
repo to indicate that foundation membership is optional (but encouraged). - Notify the developer community at large by posting an announcement of the new contributor onboarding behavior change/simplification.
- Make sure the Upstream Institute volunteers are aware so they can update their training materials accordingly.
Repositories
No new git repositories need to be created.
Servers
No new servers need to be created. The
review.openstack.org
and
review-dev.openstack.org
servers will have configuration
changes via Puppet and need gerrit
service restarts for
this to take effect. The necessary outage will be brief, so a restart at
a reasonably convenient time for the community should not require
advance notification nor planning.
DNS Entries
No DNS entries need to be created or updated.
Documentation
As mentioned in the Work Items section, the Infra Manual will require updates to reflect the new onboarding workflow.
Security
This does not introduce any additional known security risks, and there are no identified security-related considerations which need discussing.
Testing
Manual testing of the owners.py
script change should be
performed against official contributor data, comparing output between
runs of the old and new versions for any unintended changes in
behavior.
Dependencies
There are no other specs, libraries or new Puppet modules on which this specification depends.