274 lines
12 KiB
Markdown
274 lines
12 KiB
Markdown
|
|
# Subproject Maintainership and Forward Progress
|
||
|
|
|
||
|
|
<!--toc:start-->
|
||
|
|
|
||
|
|
- [Subproject Maintainership and Forward Progress](#subproject-maintainership-and-forward-progress)
|
||
|
|
- [Process](#process)
|
||
|
|
- [Problem Description](#problem-description)
|
||
|
|
- [Scope](#scope)
|
||
|
|
- [Considerations](#considerations)
|
||
|
|
- [Social](#social)
|
||
|
|
- [Technical](#technical)
|
||
|
|
- [Security](#security)
|
||
|
|
- [Synthesis of Considerations](#synthesis-of-considerations)
|
||
|
|
- [Defining and Determining Unresponsiveness](#defining-and-determining-unresponsiveness)
|
||
|
|
<!--toc:end-->
|
||
|
|
|
||
|
|
## Process
|
||
|
|
|
||
|
|
1. A complaint is raised to the TOF about lack of forward progress in a
|
||
|
|
subproject
|
||
|
|
2. The TOF validates the complaint against the
|
||
|
|
[pre-conditions and definitions described below](#defining-and-determining-unresponsiveness)
|
||
|
|
1. The complaint is valid if all the pre-conditions are met and the behavior
|
||
|
|
exceeds the limits outlined in the definitions below
|
||
|
|
2. The complaint is partially valid if the pre-conditions are met and but the
|
||
|
|
behaviour does not exceed the limits outlined in the definitions below
|
||
|
|
3. The complaint is invalid if the pre-conditions are not met
|
||
|
|
3. If the complaint is valid the TOF notifies the current maintainers of the
|
||
|
|
impending addition of maintainers
|
||
|
|
1. The TOF identifies the set of candidate maintainers
|
||
|
|
2. If willing candidates exist, one or more are added as subproject
|
||
|
|
maintainers
|
||
|
|
3. Otherwise, the TOF members mentor the complainant on maintenance until
|
||
|
|
there is consensus they would be considered a candidate. The TOF then
|
||
|
|
introduces the complainant as a maintainer
|
||
|
|
4. If the complaint is partially valid then the TOF must notify the maintainers
|
||
|
|
of the impending addition of maintainers in the event of continued
|
||
|
|
unresponsiveness
|
||
|
|
5. If the complaint is invalid then no further action is taken
|
||
|
|
|
||
|
|
## Problem Description
|
||
|
|
|
||
|
|
OpenBMC is a Linux distribution specialised for Baseboard Management Controllers
|
||
|
|
(BMCs). While it exploits existing open-source projects where possible, the
|
||
|
|
OpenBMC community also maintains many integrated projects that are specific to
|
||
|
|
its use-cases.
|
||
|
|
|
||
|
|
By observation, BMC firmware encounters a lot of diversity in use-cases as well
|
||
|
|
as board and platform design. The shape of the project's community reflects the
|
||
|
|
fact that developing OpenBMC-based systems is most effectively done by the
|
||
|
|
companies designing the platforms. Reverse-engineering efforts
|
||
|
|
exist([1][],[2][]) but do not represent the typical path by which platform
|
||
|
|
support enters the project. As a consequence the community tends to be dominated
|
||
|
|
by people contributing to the project to support the needs of their employer,
|
||
|
|
and are broadly motivated by platform-specific requirements rather than general
|
||
|
|
capabilities. The motivation for contribution by those in the community tends to
|
||
|
|
be extrinsic.
|
||
|
|
|
||
|
|
[1]:
|
||
|
|
https://github.com/Keno/openbmc/commit/327da25efde4fc54b27586be3914159136f03784
|
||
|
|
[2]: https://lore.kernel.org/lkml/7baebe77f0f8963e06d5ddeec6c737f5@rnplus.nl/
|
||
|
|
|
||
|
|
A consequence of this latter point is that engagement in the community can vary
|
||
|
|
greatly with time based on events beyond the control of contributors and
|
||
|
|
maintainers, through changes of roles, organisational direction or other factors
|
||
|
|
like completion of support for a given platform.
|
||
|
|
|
||
|
|
Extrinsic motivation driving variation in engagement is at odds with the
|
||
|
|
consistency required by maintainer roles for the many integrated projects owned
|
||
|
|
by the OpenBMC community.
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
The [Technical Oversight Forum (TOF) contract][tof-contract] paints the TOF's
|
||
|
|
role in the project with broad brush strokes:
|
||
|
|
|
||
|
|
[tof-contract]: /tof/contract.md
|
||
|
|
|
||
|
|
> The TOF handles the processes around accepting new features into OpenBMC,
|
||
|
|
> creating new subprojects (git repositories), approving subproject maintainers,
|
||
|
|
> handling and enforcement of subproject maintainer issues, and many other
|
||
|
|
> technical leadership concerns related to OpenBMC.
|
||
|
|
|
||
|
|
and:
|
||
|
|
|
||
|
|
> Issues the TOF handle include:
|
||
|
|
>
|
||
|
|
> - Approval of new bitbake meta layers.
|
||
|
|
> - Approval of new subprojects.
|
||
|
|
> - Supervising subproject maintainers.
|
||
|
|
> - Resolving subproject maintainer disputes.
|
||
|
|
> - Guidance and oversight of the technical direction of OpenBMC.
|
||
|
|
|
||
|
|
These broad brush strokes touch on the TOF's responsibilities towards
|
||
|
|
maintenance but the subject receives no further treatment.
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
[TOF issue #20][tof-issue-20] motivates exploration of a mechanism for it to
|
||
|
|
introduce maintainers to subprojects to ensure the community can make forward
|
||
|
|
progress when the existing maintainers become unresponsive.
|
||
|
|
|
||
|
|
[tof-issue-20]: https://github.com/openbmc/technical-oversight-forum/issues/20
|
||
|
|
|
||
|
|
## Scope
|
||
|
|
|
||
|
|
While all unresponsive maintainers are problematic maintainers to some extent,
|
||
|
|
it's not true that all problematic maintainers are unresponsive maintainers.
|
||
|
|
This discussion specifically considers defining a mechanism to allow forward
|
||
|
|
progress at the subproject scope in the face of unresponsive maintainers. It
|
||
|
|
does not consider the more general problem of problematic maintainers.
|
||
|
|
|
||
|
|
## Considerations
|
||
|
|
|
||
|
|
The social, technical and security impacts of the TOF changing a subproject's
|
||
|
|
maintainers are considered in the context of the following principle:
|
||
|
|
|
||
|
|
> [Many decisions and actions are reversible and do not need extensive
|
||
|
|
> study.][bias-for-action]
|
||
|
|
|
||
|
|
[bias-for-action]: https://www.aboutamazon.com/about-us/leadership-principles
|
||
|
|
|
||
|
|
The principle is used to prompt the question "Are the consequences easily
|
||
|
|
reversed?" for each of the concerns below.
|
||
|
|
|
||
|
|
### Social
|
||
|
|
|
||
|
|
The [maintainer-workflow][] document recognises the personal effort required to
|
||
|
|
become a maintainer:
|
||
|
|
|
||
|
|
[maintainer-workflow]: /maintainer-workflow.md
|
||
|
|
|
||
|
|
> Repository maintainers ought to have the following traits as recognized by a
|
||
|
|
> consensus of their peers:
|
||
|
|
>
|
||
|
|
> - responsible: have a continuing desire to ensure only high-quality code goes
|
||
|
|
> into the repo
|
||
|
|
> - leadership: foster open-source aware practices such as [FOSS][]
|
||
|
|
> - expertise: typically demonstrated by significant contributions to the code
|
||
|
|
> or code reviews
|
||
|
|
|
||
|
|
[foss]: https://en.wikipedia.org/wiki/Free_and_open-source_software
|
||
|
|
|
||
|
|
Further, the community of maintainers inside the project [isn't broad enough to
|
||
|
|
accommodate the review load][ed-is-only-human]. While unresponsive maintainers
|
||
|
|
can be frustrating for contributors and a concern for the project, the problem
|
||
|
|
needs to be weighed against the risk of alienating those who have (previously)
|
||
|
|
put in the effort to build the project to its current capabilities. Healing
|
||
|
|
alienation is at best intensive if not a futile effort; it is hard to reverse.
|
||
|
|
This suggests that the TOF stepping in to remove maintainership responsibilities
|
||
|
|
from community members without their consent is likely counter-productive,
|
||
|
|
[contrary to the initial proposal][initial-proposal].
|
||
|
|
|
||
|
|
[ed-is-only-human]:
|
||
|
|
https://lore.kernel.org/all/CAH2-KxAsq8=+kYZHb9n_fxE80SuU29yT90Hb0k72bKfY8pnWEQ@mail.gmail.com/
|
||
|
|
[initial-proposal]:
|
||
|
|
https://github.com/openbmc/technical-oversight-forum/issues/20#issuecomment-1272667701
|
||
|
|
|
||
|
|
### Technical
|
||
|
|
|
||
|
|
At least two technical concerns exist:
|
||
|
|
|
||
|
|
1. Contributors promoted to maintainers may lack or have no way to learn the
|
||
|
|
nuances and context for the current state of the codebase in question. There
|
||
|
|
may be a period (or periods) of instability until these issues are resolved.
|
||
|
|
|
||
|
|
2. An unresponsive maintainer's knowledge of the codebase may age to the point
|
||
|
|
that it no-longer applies in the event that they attempt to return to the
|
||
|
|
subproject
|
||
|
|
|
||
|
|
By the bias-for-action thought framework, (1) shouldn't be much of a concern in
|
||
|
|
practice - it should be feasible to revert changes if necessary. This same
|
||
|
|
approach applies in the case of (2) so long as the work is done in good faith.
|
||
|
|
The process does need to consider the scenario where changes are not made in
|
||
|
|
good faith.
|
||
|
|
|
||
|
|
### Security
|
||
|
|
|
||
|
|
Security concerns cut both ways. It's possible that:
|
||
|
|
|
||
|
|
1. Contributors promoted to maintainers knowingly make changes that impact the
|
||
|
|
security posture of the project, or behave in a way that erodes or fails to
|
||
|
|
build the community's trust in their decision making.
|
||
|
|
|
||
|
|
2. Not removing rights of an unresponsive maintainer from the subproject exposes
|
||
|
|
the project to a security hazard in the event that their account is
|
||
|
|
compromised.
|
||
|
|
|
||
|
|
The first concern suggests that the contributors must have established trust
|
||
|
|
relationships in the community before earning the responsibility of
|
||
|
|
maintainership. It's hard to reverse a problem that isn't known to exist (though
|
||
|
|
it may be possible to quickly revert the problematic code once its existence is
|
||
|
|
known). Security problems can have an impact on the project's reputation; damage
|
||
|
|
to reputation is also difficult to reverse, therefore the TOF needs to have
|
||
|
|
confidence in any promotions.
|
||
|
|
|
||
|
|
The second concern exists even for active maintainers and the process required
|
||
|
|
to handle it might be the same: Removing rights until it's established that the
|
||
|
|
compromise has been addressed. Unannounced activity from an otherwise
|
||
|
|
unresponsive maintainer should itself be notable.
|
||
|
|
|
||
|
|
### Synthesis of Considerations
|
||
|
|
|
||
|
|
By the discussion above, a method for enabling forward progress should focus on
|
||
|
|
putting guard-rails in place for the TOF to safely on-board new maintainers to a
|
||
|
|
subproject. This is in contrast to not concerning itself too much with
|
||
|
|
unresponsive maintainers, beyond recognising that they have met some bar of
|
||
|
|
unresponsiveness in order to trigger the on-boarding process for new
|
||
|
|
maintainers.
|
||
|
|
|
||
|
|
## Defining and Determining Unresponsiveness
|
||
|
|
|
||
|
|
Defining unresponsiveness sets expectations for both contributors and
|
||
|
|
maintainers. Contributors can expect to have their work reviewed inside this
|
||
|
|
period, and maintainers should endeavour to not let patches lapse.
|
||
|
|
Responsiveness is a social contract.
|
||
|
|
|
||
|
|
A tension exists between contributors needing feedback to maintain momentum
|
||
|
|
against maintainers' available time both inside and outside the project.
|
||
|
|
Maintainers are people: Life happens. Sometimes it is possible to communicate
|
||
|
|
expected absences or hand over responsibilities, other times that may not
|
||
|
|
happen. It's likely that unresponsiveness requires a fair margin in favour of
|
||
|
|
maintainers, and that more than one instance should be needed before triggering
|
||
|
|
the ability for the TOF to on-board new maintainers. Further, as it is a social
|
||
|
|
contract it should be a socially-driven process: Inspection of the state of
|
||
|
|
affairs in a subproject should only be performed if there are complaints about
|
||
|
|
it, rather than using automation to detect the conditions.
|
||
|
|
|
||
|
|
Unresponsiveness can appear at multiple scopes:
|
||
|
|
|
||
|
|
1. Patch scope: Maintainers may ignore a given patch while attending to others
|
||
|
|
2. Subproject scope: Maintainers may ignore a given repository while attending
|
||
|
|
to others
|
||
|
|
3. Project scope: Maintainers may cease involvement in the project entirely
|
||
|
|
|
||
|
|
Unresponsiveness at the patch scope would suggest a failure by the contributor
|
||
|
|
and the maintainer to build consensus. It is already the role of the TOF to
|
||
|
|
mediate these cases; this proposal considers such problems as out of scope.
|
||
|
|
|
||
|
|
Unresponsiveness at the subproject scope but not the project scope suggests its
|
||
|
|
at least possible to discuss on-boarding new maintainers to affected
|
||
|
|
subprojects. Where possible, this is the preferred route to enabling forward
|
||
|
|
progress. Failure of this process is again a failure of consensus, and is
|
||
|
|
handled using existing mechanisms.
|
||
|
|
|
||
|
|
The proposal concentrates on unresponsiveness at the project scope: Without
|
||
|
|
regard to reason it is not possible to hold discussion with the maintainers in
|
||
|
|
question.
|
||
|
|
|
||
|
|
Lack of activity in a subproject is not evidence of lack of responsiveness. A
|
||
|
|
pre-condition must be that unmerged contributions exist and remain unaddressed
|
||
|
|
for the defined period.
|
||
|
|
|
||
|
|
Further, multiple instances of unresponsiveness should be measured serially.
|
||
|
|
Unresponsiveness is a property of behaviour in time: while the number of
|
||
|
|
unaddressed contributions increases the impact and may increase frustrations,
|
||
|
|
for any one period of unresponsiveness there is only one instance of the
|
||
|
|
behaviour.
|
||
|
|
|
||
|
|
Unresponsiveness also needs to be measured in terms of the set of maintainers.
|
||
|
|
If any maintainer of a subproject is responsive in the project it's possible to
|
||
|
|
make forward progress or to consider unaddressed contributions in terms of
|
||
|
|
failed consensus. Therefore it is a pre-condition that all maintainers of a
|
||
|
|
subproject are unresponsive at the project scope before the TOF may on-board new
|
||
|
|
maintainers to enable forward progress.
|
||
|
|
|
||
|
|
The following values apply when the pre-conditions are met:
|
||
|
|
|
||
|
|
1. Maintainers are considered unresponsive after failing to address
|
||
|
|
contributions for a minimum period of 1 month.
|
||
|
|
2. The TOF may on-board new maintainers to the subproject after 3 notifications
|
||
|
|
of unresponsiveness have been issued to the subproject's maintainers in a 12
|
||
|
|
month period.
|