-
Notifications
You must be signed in to change notification settings - Fork 2.4k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Initial committer guidelines and requirements for merging #10780
Conversation
site/docs/contribute.md
Outdated
There are several exceptions to this process: | ||
|
||
* Large changes or functional changes to a specification must go through the an [Iceberg improvement proposal](#apache-iceberg-improvement-proposals) before any code can be merged. | ||
* Changes to files under the `format` directory and `open-api/rest-catalog*` are considered specification changes. Unless already covered under an Iceberg improvement proposal, specification changes require their own vote (e.g. bug fixes or specification clarifications). The vote follows the ASF [code modification][apache-vote] model with three positive PMC votes required and no lazy consensus modifier. Grammar, spelling and minor formatting fixes are exempted from this rule. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We also have aws/src/main/resources/s3-signer-open-api.yaml
; would changes to that file fall under the "specification changes" category?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I don't know. Seems AWS specific based on the directory structure? @jackye1995 ?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
yes, but that is not contributed by AWS. It was added to support remote signing feature in Tabular. I think it is more like a vendor integration feature, I would not consider that a part of the official REST spec. Thoughts? @nastra @danielcweeks
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This makes sense to me, thanks for this writeup @emkornfield
Co-authored-by: Fokko Driesprong <fokko@apache.org>
Co-authored-by: Fokko Driesprong <fokko@apache.org>
Co-authored-by: Eduard Tudenhoefner <etudenhoefner@gmail.com>
It looks good to me. Thanks ! By the way, it would be also possible to update We could update
Don't get me wrong: I don't propose to update |
I'm OK either way. A mechanism doesn't hurt here, but I think in terms of merging I think it is sufficient to operate on a model of trust (I think merging accidentally is pretty hard to do and pretty easy to reverse). |
site/docs/contribute.md
Outdated
Most pull requests can be merged once a committer is satisfied with the code in the PR. For larger changes or additions to public | ||
APIs committers will wait at least 24 hours before merging to ensure there is no additional feedback from members of the community. As in | ||
all ASF governed projects committers are expected to act in the best interest of the project. If a committer feels there might be a conflict | ||
of interest with a pull request they review, they are encouraged to ask for another committer to look at the pull request. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Could we define what "a conflict of interest" means, or at least give any examples?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Does this mean cases like a committer working mainly on pyiceberg go to merge something directly in iceberg-spark? Just to given an arbitrary example.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I left this intentionally vague. In general committers are expected to use their best judgement. If there are explicit examples that have happened in the community where it was believe something should not been committed we can include those. Otherwise, I think this is place that can be refined if the PMC thinks some changes are being merged prematurely.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This goes to the ethos of community over code and trust in committers.
I thought that is already the case. Here is the screenshot from PR #10777 that I submitted. Without any approval, merge button is disabled ![]() |
site/docs/contribute.md
Outdated
There are several exceptions to this process: | ||
|
||
* Large changes and functional changes to a specification must go through the [Iceberg improvement proposal](#apache-iceberg-improvement-proposals) before any code can be merged. | ||
* Changes to files under the `format` directory and `open-api/rest-catalog*` are considered specification changes. Unless already covered under an Iceberg improvement proposal, specification changes require their own vote (e.g. bug fixes or specification clarifications). The vote follows the ASF [code modification](https://www.apache.org/foundation/voting.html#votes-on-code-modification) model and no lazy consensus modifier. Grammar, spelling and minor formatting fixes are exempted from this rule. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We may want to allow for draft specifications, so we can publish changes as we develop the reference implementation.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yes, I agree, I think we probably need more guidance under the Improvement proposals section and this point should be discussed as part of the refinement there?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I guess it doesn't hurt to add something now, I added some language on what I think is reasonable.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
How does draft specification work? Could you describe more details?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
i put down what I was thinking. Not sure if matches with what @rdblue means?
site/docs/contribute.md
Outdated
There are several exceptions to this process: | ||
|
||
* Large changes and functional changes to a specification must go through the [Iceberg improvement proposal](#apache-iceberg-improvement-proposals) before any code can be merged. | ||
* Changes to files under the `format` directory and `open-api/rest-catalog*` are considered specification changes. Unless already covered under an Iceberg improvement proposal, specification changes require their own vote (e.g. bug fixes or specification clarifications). The vote follows the ASF [code modification](https://www.apache.org/foundation/voting.html#votes-on-code-modification) model and no lazy consensus modifier. Grammar, spelling and minor formatting fixes are exempted from this rule. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Confirming my understanding here:
Functional spec changes go through improvement-process , which in the end require a code modification vote (3 +1 votes without lazy consensus modifier)
Any spec clarification still requires a code modification vote (3 +1 votes without lazy consensus modifier). A current example we are working is #10793.
Grammar, spelling, and minor formatting still go through normal code review process.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This is my understanding (I was trying to codify rules that have come across the mailing list recently).
* clarify committer should not be author. Remove content in favor of links. * Separate and define large changes should be discussed on the mailing list.
|
||
Requesting changes on a PR indicates a reviewer believes the PR has merit but still needs issues addressed before merging. If a reviewer believes the change should not be merged at all and there is nothing the author could do to address the reviewers concerns, the reviewer should explicitly state this on the PR. In the rare event that a PR author and reviewers cannot come to a consensus on a PR, the disagreement should be raised to the developer mailing list for further discussion. In this context, a reviewer is anyone leaving comments on the PR including contributors, committers and PMC members. | ||
|
||
There are several exceptions to a single committer being able to merge a PR: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Is there a way to reframe this differently? It sounds like the below and single committer merging a PR are not mutually exclusive, because after the below happens, it is quite possible that a single committer reviews and merges, right?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Something about seeking feedback from the community?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
My intention was more on the structure. Basically, I think the intended message here is there are changes that can be merged through the regular PR process solely, and other changes require following more formal process, like dev list discussion, IIP, vote etc. I think something like this could make it clearer:
There are two types of changes: those that can be merged through the regular PR process, and those that require a more formal procedure in addition to the PR process, such as a developer mailing list discussion, an Iceberg Improvement Proposal (IIP), or a vote.
Then we can describe (1) the regular process and (2) the more formal process required before the regular process.
It is essentially the same content but with a clearer message about the relationship between the processes (e.g., the latter is a pre-requisite of the former in some cases).
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I added a parenthetical "(exceptions that require additional input from the community are detailed below)" in the first paragraph. which I think address this concern. @wmoustafa please let me know if that captures the intent of your suggestion.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks @emkornfield. LGTM.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks @emkornfield for driving this discussion and PR.
|
||
Requesting changes on a PR indicates a reviewer believes the PR has merit but still needs issues addressed before merging. If a reviewer believes the change should not be merged at all and there is nothing the author could do to address the reviewers concerns, the reviewer should explicitly state this on the PR. In the rare event that a PR author and reviewers cannot come to a consensus on a PR, the disagreement should be raised to the developer mailing list for further discussion. In this context, a reviewer is anyone leaving comments on the PR including contributors, committers and PMC members. | ||
|
||
There are several exceptions to a single committer being able to merge a PR: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks @emkornfield. LGTM.
|
||
There are several exceptions to a single committer being able to merge a PR: | ||
|
||
* Behavioral and functional changes to a specification must go through the [Iceberg improvement proposal](#apache-iceberg-improvement-proposals) before any code can be merged. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Do we really require all changes to the spec to go through an improvement proposal? That doesn't seem right.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think "Behavioral and function changes" should be going through a more formal process. Not sure exactly what the standards are here?
Thanks @emkornfield and everyone who reviewed! Merged per the dev list vote. |
* main: (208 commits) Docs: Fix Flink 1.20 support versions (apache#11065) Flink: Fix compile warning (apache#11072) Docs: Initial committer guidelines and requirements for merging (apache#10780) Core: Refactor ZOrderByteUtils (apache#10624) API: implement types timestamp_ns and timestamptz_ns (apache#9008) Build: Bump com.google.errorprone:error_prone_annotations (apache#11055) Build: Bump mkdocs-material from 9.5.33 to 9.5.34 (apache#11062) Flink: Backport PR apache#10526 to v1.18 and v1.20 (apache#11018) Kafka Connect: Disable publish tasks in runtime project (apache#11032) Flink: add unit tests for range distribution on bucket partition column (apache#11033) Spark 3.5: Use FileGenerationUtil in PlanningBenchmark (apache#11027) Core: Add benchmark for appending files (apache#11029) Build: Ignore benchmark output folders across all modules (apache#11030) Spec: Add RemovePartitionSpecsUpdate REST update type (apache#10846) Docs: bump latest version to 1.6.1 (apache#11036) OpenAPI, Build: Apply spotless to testFixtures source code (apache#11024) Core: Generate realistic bounds in benchmarks (apache#11022) Add REST Compatibility Kit (apache#10908) Flink: backport PR apache#10832 of inferring parallelism in FLIP-27 source (apache#11009) Docs: Add Druid docs url to sidebar (apache#10997) ...
Based on mailing list discussion add focused language to contributing.md on committing PRs.