User:MGorny/GLEP:TPC

Abstract
This specification provides policies concerning incorporating third-party contributions into Gentoo.

Motivation
Since the Gentoo git repository started being mirrored on GitHub, pull requests became an important contribution channel for Gentoo. However, until now Gentoo lacked a consistent, well-approved policy for dealing with them.

There were multiple attempts at establishing a formal pull request review process. Multiple developers have noted various suggestions on Gentoo git workflow but it never became an official policy. There was a possible standardization as GLEP that never got finished. The Reviewers team was formed for people wanting to officially review pull requests but it didn't get traction and eventually got disbanded. Finally, the Proxy-Maintainers project became quite active on GitHub, seeming like a good point on standardization. There was also a request to create a GitHub project, mostly for administrative purposes but also to form policies.

Unlike the earlier unsuccessful attempts to create a detailed policy for GitHub pull requests, this document attempts to create a generic policy that can be used with any contribution channel. As such, it applies all the same to GitHub pull requests and patches and ebuilds attached to bug reports.

Range of application
This policy applies to all third-party (i.e. originating outside Gentoo project members) contributions, including but not limited to patches, files, code snippets, pull requests, documentation etc. The contributions can be delivered via any official or unofficial contribution channel, including but not limited to Gentoo web services, third-party web services, e-mail, IRC and any other media supported by the Gentoo project members.

This policy provides only generic policies regarding third-party contributions. The specific areas of Gentoo and channels of contribution may specify additional policies that also apply to all the contributions.

Channels of contribution
Gentoo project provides a specific set of official channels of contribution in which all project members are required to participate. The exact list of these channels is outside the scope of this specification.

Additionally, contributions can be accepted via other channels, as long as there is at least one project member willing to support the particular channel and either commit or proxy the contributions appropriately.

Responsibility for contributions
Gentoo encourages the contributors to take responsibility over their contributions. If a particular contribution causes issues, the contributor may be requested to provide a solution, or the contribution may be reverted. Furthermore, the project members may request the contributor to explicitly acknowledge taking responsibility over the related area of Gentoo and/or reject a contribution if the contribution is unwilling to take responsibility for its results.

Additionally, the committer is required to take responsibility over any merged contribution. He is required to check whether the contribution can be legally merged, and that it obtained the necessary approval. He may be also requested to contact the contribution on behalf of other project members and commit the fixes or revert the contribution as necessary.

The committer's responsibility can be deferred to another project member (i.e. committing on behalf of another project member). In this case, the project member must explicitly acknowledge the request for the contribution to be merged on his behalf (approving the contribution is not enough). The committer should ensure that the project member requesting this has write access to the particular area of Gentoo.

Contribution review
It is recommended that reviews of contributions are kept public and open to all interested parties. It is suggested that at least one project member having direct, unconditional and non-suspended write access to a particular area of Gentoo reviews and approves the contribution.

It should be noted that a negative review does not prohibit a contribution from being merged, unless the reviewer has the power of blocking the particular change as defined by other policies (e.g. is the maintainer of the particular area of Gentoo). Similarly, a positive review does not guarantee that a contribution will be merged.

Contribution approval
When determining whether merging a third-party contribution is allowed, the same rules as for committer's own work apply. In particular, if a particular change would require explicit approval from maintainers of the particular area of Gentoo or other project members, the necessary approval needs to be acquired before the contribution is merged.

If the support for a particular contribution channel is non-obligatory, the committer may be forced to contact the necessary maintainers via other means. The maintainers may request the contribution to be resubmitted via another contribution channel, in which case the committer may either proxy for the contributor or request the contributor to re-submit the contribution himself.

Rationale
The goal of this specification is mostly not to introduce any new rules but confirm and formalize the existing practices. For this reason, it is mostly giving recommendations and deferring to other policies.

In particular, any contribution committed by a Gentoo developer follows the same rules as his own commits. He is allowed to commit minor fixes to packages maintained by other developers following his own judgement (or QA's approval), and for major changes he (or the contributor) is required to obtain the maintainer approval. Due to the generic allowance of unofficial/non-obligatory contribution channels, they may be requested by the maintainers to use other contribution channels to contact them.

The review process is recommended because it is assumed that a third-party contributor does not have the same experience as a Gentoo developer, and that the contributor may not review the contribution thoroughly himself (i.e. rely on others reviewing it). Similarly to gentoo-dev reviews, the reviewer opinions are not binding, with exception to the package maintainers who are required to approve the contribution anyway.

Backwards Compatibility
n/a

Copyright
This work is licensed under the Creative Commons Attribution-ShareAlike 3.0 Unported License. To view a copy of this license, visit http://creativecommons.org/licenses/by-sa/3.0/.