Dear Sage developers,
The conflicts we've seen in the last several months are multifaceted, but
one of the central issues at hand is how we decide what code is
incorporated into Sage through our review process.  I have two goals for
this thread: to describe our current standards (as codified in the Developer
Guide <https://doc.sagemath.org/html/en/developer/review.html>) and ask for
help in enforcing them, and to call a vote on several changes.

*Our current standards*:
1. A PR must be positively reviewed by another sage developer; there is no
notion of negative review.  If you come across a ticket that has positive
review and you notice a problem that the reviewer missed, you have several
options.  First, you can just make a comment drawing attention to the
matter.  If the problem causes repeatable build/test failures,
mathematically incorrect output or causes Sage's documentation to not
build, you should change the label from Positive Review to Needs Work and
make a comment describing the problem.  If the author and reviewer do not
agree that it is actually a problem, they should set the ticket back to
Positive Review and you *should not engage more on that PR*.  You are free
to create another issue or PR addressing the problem that you have noticed.
2. We have recently started using Disputed as a tag for PRs where there is
disagreement about how to proceed.  This is not mentioned in the Developer
Guide, and there has been no vote on sage-devel about how it should be
used.  But the purpose seems clear to me: it indicates the presence of
disagreement.  As such, once a PR has been marked Disputed, *do not remove
this tag*: you cannot unilaterally decide that there is no controversy.
3. We have no set process for deciding whether a PR should be marked as a
blocker; our guide currently just says "developers should use blocker
priority sparingly and should indicate the rationale on the PR. Though
there is no one fixed rule or authority that determines what is appropriate
for blocker status, PRs introducing new features and PRs that make big
changes are usually not blockers."  I make some proposals below to clarify
the situation, but in the meantime the sage-abuse committee will be
enforcing the following standards to prevent label wars: *if there is
disagreement about whether a PR should be marked as a blocker, mark it as
critical instead*.

All three of these standards have been frequently violated in the last
several months.  The sage-abuse committee intends to enforce them more
vigorously; a consistent pattern of violations will result in the loss of
Triage privileges (resulting in an inability to review PRs and change
labels).  If you notice violations of these standards, please draw them to
the committee's attention by emailing sage-ab...@googlegroups.com.


Proposals
I have two separate proposals related to the above issues; feel free to
vote on them separately.  Voting will be open until Friday, March 8.

1. Using Github to vote on disputed PRs.  Working things out amicably is
preferable, and anyone is welcome to ask on sage-devel for more eyes on a
PR.  If you notice a serious issue with a PR, it is acceptable to change it
to Needs Work (and make a comment!) as an initial step, but if the
author/reviewer don't agree the process below should be followed instead.
This process is intended as a lower-intensity method for resolving
disagreements, and full votes on sage-devel override the process described
below.
a. When there is disagreement about whether a PR should be merged, anyone
may mark a PR as disputed.
b. There is no scheduled vote, but rather an ongoing poll based on opinions
expressed by developers on the PR (these opinions can be expressed via
previous positive reviews or explicit comments giving approval).  The PR
author is presumed to vote in favor; if they give up or no longer favor the
PR they have the right to close the PR overall without any further voting.
c. If the total number of positive votes is at least twice the number of
negative votes, anyone involved may set the status to *positive review*; if
the total number of positive votes is less than twice the number of
negative votes, anyone involved may set the status to *needs review*.  When
either of these actions is taken, the person changing the status must list
the people they are counting as positive and negative votes in a comment
using @ mentions.
d. The final decision on merging a disputed PR remains with the release
manager, and we encourage the release manager to give enough time for
everyone to express an opinion.


2. We use CIfix rather than Blocker to determine whether an open PR should
be merged before running CI.  The process below describes how to resolve
disagreements about whether this label should be applied.
a. Only PRs with positive review should be marked with the CIFix label.
This should be done if both author and reviewer agree that it is
appropriate, and a rationale should be given in a comment on the ticket.
b. If a PR becomes disputed, The CIFix can be voted on separately upon
request; otherwise it will just follow the same process described above.


I'm sorry for abandoning this thread
<https://groups.google.com/g/sage-devel/c/XON6NTJa33o> for the last few
months, but hope that we can make some progress now.
David

-- 
You received this message because you are subscribed to the Google Groups 
"sage-devel" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sage-devel+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/sage-devel/CAChs6_k5QSCNFf_%2BuxN36n5GYoWgiVVQp5JdXdJxoWh%3DTW5_fQ%40mail.gmail.com.

Reply via email to