Skip to content
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

Review components and keywords, define labels for future use #99

Open
mkoeppe opened this issue Jan 6, 2023 · 139 comments
Open

Review components and keywords, define labels for future use #99

mkoeppe opened this issue Jan 6, 2023 · 139 comments
Labels
help wanted Extra attention is needed

Comments

@mkoeppe
Copy link

mkoeppe commented Jan 6, 2023

component_frequency.txt

keyword_frequency.txt

@mkoeppe mkoeppe added the help wanted Extra attention is needed label Jan 6, 2023
@mkoeppe mkoeppe added this to the Switchover to GitHub milestone Jan 6, 2023
@kwankyu
Copy link

kwankyu commented Jan 10, 2023

So the migration is a good time to update the components list? Would there be a corresponding (fixed) list in Github?

I don't know if we have anything to do with keywords though. They are just whatever the authors chose.

@mkoeppe
Copy link
Author

mkoeppe commented Jan 10, 2023

Yes, our script maps components to labels of the form "component: ...."

The set of labels is fixed for the repository (can only be changed by privileged users), and it needs to be a small list because the UI is a dropdown list for all labels. (Our prefix "component: " makes sure that they are kept together in the list.)

Removing component labels later is tricky because it amounts to removing historical information. (I think but have not tested that removing a label also removes the events that indicate adding this label.)

@kwankyu
Copy link

kwankyu commented Jan 10, 2023

Outdated!

github labels for components:

Code label color frequency
MF foundations & categories 3682
MS symbolics & calculus 3472
MM numerical 880
MA algebra 6115
ML linear algebra 2338
MG geometry & topology 3720
MC combinatorics 5477
MP graph theory 3454
MN number theory 4152
MX mathematics 1576
IL programming 3720
IP packages 7624
ID documentation 4796
IT doctest 2178
IB build 4008
II interfaces 2234
IG graphics 1820
IU user interface 3108
IR refactoring 1210
ID distribution & porting 2270
IX miscellaneous 3595

@kwankyu
Copy link

kwankyu commented Jan 10, 2023

Outdated!

Mapping trac components to github labels:

Code trac component frequency
MC combinatorics 5477
IP packages: standard 5313
ID documentation 4740
MP graph theory 3454
IB build 3362
MA algebra 2990
IL python3 2540
MS symbolics 2390
IX misc 2350
ML linear algebra 2338
MF basic arithmetic 2232
IU notebook 2100
II interfaces 1938
IG graphics 1820
IP packages: optional 1806
MG geometry 1742
IT doctest coverage 1572
MA commutative algebra 1406
MN number theory 1392
MG algebraic geometry 1182
IR refactoring 1138
MS calculus 1082
MN elliptic curves 974
MN number fields 936
IU user interface 898
MM numerical 880
MN modular forms 850
MA group theory 828
ID porting: cygwin 782
MF categories 754
ID porting 708
MF coercion 696
ID distribution 664
IB build: configure 610
IT doctest framework 602
IX scripts 600
MA padics 568
IL cython 468
MX coding theory 442
ID porting: solaris 428
IL performance 370
IL memleak 342
MG manifolds 330
II interfaces: optional 296
IP packages: experimental 284
MC combinatorial designs 270
MG algebraic topology 266
MX linear programming 264
MX asymptotic expansions 258
MN quadratic forms 252
MX cryptography 228
MA finite rings 217
MG dynamics 200
IP packages 199
MC matroid theory 196
IX website/wiki 190
MX finite state machines 156
IX c_lib 136
ID debian-package 130
IX pickling 120
IU interact 110
IX dsage 108
MA factorization 106
MX statistics 104
ID porting: bsd 88
IR relocation 72
ID porting: aix or hp-ux 70
ID docker 64
ID translations 56
MX finance 54
MX game theory 54
IX spkg-check 46
IB pbuild 36
XX linbox 30
IP packages: huge 22
MX fractals 8
IX sage-mode 8
MX databases 8
IX fast callable 6
IT doctests 4
IX givaro 1

@kwankyu
Copy link

kwankyu commented Jan 10, 2023

Maybe, 21 component labels are still too many?

@kwankyu
Copy link

kwankyu commented Jan 10, 2023

Apart from mapping trac components to github labels, we may want to leave the trac component in the issue's description.

@kwankyu
Copy link

kwankyu commented Jan 10, 2023

After we decide the maximum number of github component labels, I could request a help on sage-devel.

@mkoeppe
Copy link
Author

mkoeppe commented Jan 10, 2023

What is the purpose/meaning of the two-letter code?

@mkoeppe
Copy link
Author

mkoeppe commented Jan 10, 2023

After we decide the maximum number of github component labels, I could request a help on sage-devel.

This is definitely a good topic for sage-devel. A brief previous discussion on this happened in https://groups.google.com/g/sage-devel/c/2dKvRwdwVQM/m/dDmGmheFAgAJ

@kwankyu
Copy link

kwankyu commented Jan 10, 2023

What is the purpose/meaning of the two-letter code?

That is to organize the mapping from trac components to github labels, as a temporary stepping stone.

Also it groups the github labels by:

initial letter group
M mathematics
I infrastructure
D distribution

and X for miscellaneous or anything. The second letters were chosen arbitrary.

@kwankyu
Copy link

kwankyu commented Jan 10, 2023

The number of labels, presently 21, is adequate? Could we increase?

@mkoeppe mkoeppe changed the title Review components and keywords Review components and keywords and label colors Jan 10, 2023
@mkoeppe
Copy link
Author

mkoeppe commented Jan 10, 2023

In addition to the label name, we can also play with the label's color and text_color.

@mkoeppe
Copy link
Author

mkoeppe commented Jan 10, 2023

The number of labels, presently 21, is adequate? Could we increase?

I'll have a version of the imported repository ready later today, then we can check how things feel on the UI side of things

@jhpalmieri
Copy link
Member

Is there a limit on the length of each label? If I had an issue related to categories, I am not sure that I would realize it should belong under "Foundation" (or "Foundations"), but a longer label might capture that. Similarly, "Geometry & Topology" would be better than "Geometry", especially since topology is not geometry. "Symbolics & Calculus".

Does "Refactoring" need to be a label?

Re colors: I like the idea of using one color for the M labels, another for I, etc.

@mkoeppe
Copy link
Author

mkoeppe commented Jan 10, 2023

Is there a limit on the length of each label?

I don't know if there's a hard limit, but probably we shouldn't make it much longer than "component: interfaces: optional" so that the display in the issue list does not become unwieldy
(see the very preliminary issue list at https://34.105.185.241/sagemath/sage-20230110084128/issues)

@mkoeppe
Copy link
Author

mkoeppe commented Jan 10, 2023

"Symbolics & Calculus"

+1 on merging these two into one

@mkoeppe
Copy link
Author

mkoeppe commented Jan 10, 2023

Does "Refactoring" need to be a label?

Probably not

@mkoeppe
Copy link
Author

mkoeppe commented Jan 10, 2023

Apart from mapping trac components to github labels, we may want to leave the trac component in the issue's description.

That would be easy to implement.

@kwankyu
Copy link

kwankyu commented Jan 10, 2023

This is a bit ugly, but "c: ..." may suffice. Or if we use the colors effectively, then we may not need "component: " prefix at all.

@kwankyu
Copy link

kwankyu commented Jan 10, 2023

Re colors: I like the idea of using one color for the M labels, another for I, etc.

Good idea.

@kwankyu
Copy link

kwankyu commented Jan 11, 2023

Does "Refactoring" need to be a label?

Probably not

Then trac components "refactoring" and "relocation" are mapped to what? XX (miscellaneous)?

@jhpalmieri
Copy link
Member

We should allow and encourage multiple components: a mathematical issue might fall between algebraic geometry and number theory, and maybe that should be be labeled with "algebra", "number theory", and "geometry & topology".

@kwankyu
Copy link

kwankyu commented Jan 11, 2023

I agree. That is allowed by default?

@kwankyu
Copy link

kwankyu commented Jan 11, 2023

Does "Refactoring" need to be a label?

Probably not

Then trac components "refactoring" and "relocation" are mapped to what? XX (miscellaneous)?

Though "refactoring" is not a component of the software sage, it seems an apt label for issues that restructure the codebase. For example, many issues for sage modularization may get this label. Note that the trac component "refactoring" is ranked high in the list (the trac components are ordered in frequency in trac)

@kcrisman
Copy link
Member

Is there a limit on the length of each label? If I had an issue related to categories, I am not sure that I would realize it should belong under "Foundation" (or "Foundations"), but a longer label might capture that. Similarly, "Geometry & Topology" would be better than "Geometry", especially since topology is not geometry. "Symbolics & Calculus".

Similarly with graph theory - is that combinatorics or topology? Probably want that label to be explicit as to where graphs go, since by Matthias' list that had the fourth most tickets (and combinatorics the first!).

@kwankyu
Copy link

kwankyu commented Jan 11, 2023

How about "discrete math" instead of "combinatorics"? The area of discrete math encompasses both combinatorics and graph theory, and "discrete math" is much shorter than "combinatorics & graph theory".

Personally I think graph theory is not a branch of topology though their intimate connection.

@trevorkarn
Copy link

trevorkarn commented Jan 11, 2023

Probably want that label to be explicit as to where graphs go, since by Matthias' list that had the fourth most tickets (and combinatorics the first!).

This makes a lot of sense to me and to me even justifies a graph theory category on its own. It seems like a lot to lump two of the four biggest categories together without having the labels lose meaning.

@kwankyu
Copy link

kwankyu commented Feb 2, 2023

"feature" would be a useful type label, regardless how it was used in trac.

@mkoeppe
Copy link
Author

mkoeppe commented Feb 2, 2023

6a. "t: enhancement" "t: feature" "t: performance" "t: refactoring" (and maybe "t: bug" or not...)

If enhancement has t: , then bug needs that prefix too.

I'm still not really convinced that these prefixes add enough value that merits the additional visual clutter in issue lists. But I'd be willing to try a PR on a small test migration to our GHE instance.

@mkoeppe
Copy link
Author

mkoeppe commented Feb 2, 2023

(That would have to happen within the next few hours.)

@tobiasdiez
Copy link

#174, but maybe needs further refinement.

@mkoeppe
Copy link
Author

mkoeppe commented Feb 2, 2023

The PR gives wishlist item a prefix t: ; I don't think that makes sense

@kwankyu
Copy link

kwankyu commented Feb 2, 2023

I updated #99 (comment) to reflect the discussion up to now.

@kwankyu
Copy link

kwankyu commented Feb 2, 2023

Or

"x: duplicate" "x: invalid" "x: wontfix" "x: worksforme" instead of "r: duplicate" "r: invalid" "r: wontfix" "r: worksforme"

so that the order becomes "s: ", "t: ", "x: "

@mkoeppe
Copy link
Author

mkoeppe commented Feb 2, 2023

And x: is short for excluded? extinguished? nixed?

@mkoeppe
Copy link
Author

mkoeppe commented Feb 2, 2023

I have to mention one more point on the drawbacks of more prefixes: Search criteria become harder to type in the issue search box. For example, .instead of using label:bug one has to type label:"t: bug".

@kwankyu
Copy link

kwankyu commented Feb 2, 2023

And x: is short for excluded? extinguished? nixed?

It's simply the most memorable character after "s", different from "t".

@kwankyu
Copy link

kwankyu commented Feb 2, 2023

I have to mention one more point on the drawbacks of more prefixes: Search criteria become harder to type in the issue search box. For example, .instead of using label:bug one has to type label:"t: bug".

Yes, that is a drawback of any prefix. It is one of the reasons why I initially didn't like the idea of prefixes. But after we accepted labels like "c: ..." or "p: critical / 2", I don't think about it anymore. (I still don't like " / 2" postfix!)

@tobiasdiez
Copy link

The PR gives wishlist item a prefix t: ; I don't think that makes sense

Okay, I was not sure about this one. Removed the prefix again.

@kwankyu
Copy link

kwankyu commented Feb 7, 2023

@sagemath/triage

One more change to consider about already beautiful labels, before too late, is to replace "s: " prefix with "z: ". Then the labels are ordered nicely: a typical pr would have labels like

Blah blah "c: linear algebra" "p: major / 3" "t: enhancement" "z: needs review"
Blah blah "c: number theory" "p: minor / 2" "t: feature" "z: needs work"

Note that the ordered combination of the last three labels reads well as a sentence :-)

@mezzarobba
Copy link
Member

Do we need to keep the needs review and positive review labels at all? They are useful to keep track of the status of issues imported from trac, but I find them more confusing than anything for pull requests as they are redundant with “draft“, resp. “approved” status. (But I don't remember if one can delete a label from the drop-down list without unlabelling issues labeled with it.)

@JohnCremona
Copy link
Member

I agree that for pull requests, these labels are obsolete: any open PR which is not a draft is implicitly seeking review.

Moreover I recommend discouraging having 'draft' PRs at all. If your branch is not ready for review, don't make a PR. (We don't use draft PRs in the LMFDB.) It is a useful feature that when a PR is created from a user's branch, whenever that branch is updated (after review, say), the PR is automatically updated; but it can be annoying when the PR authors make the PR early while still workon on their branch and repeatedly update the branch and PR.

@dimpase
Copy link
Member

dimpase commented Feb 7, 2023

draft PRs are akin to "needs work", IMHO

@mezzarobba
Copy link
Member

draft PRs are akin to "needs work", IMHO

The difference between “new” with code and “needs work” is not clear to me.

@mezzarobba
Copy link
Member

Moreover I recommend discouraging having 'draft' PRs at all. If your branch is not ready for review, don't make a PR. (We don't use draft PRs in the LMFDB.) It is a useful feature that when a PR is created from a user's branch, whenever that branch is updated (after review, say), the PR is automatically updated; but it can be annoying when the PR authors make the PR early while still workon on their branch and repeatedly update the branch and PR.

How would you advise to proceed to ask for comments on a version of the code that is not ready for merging (in other words, to ask for comments without asking for approval)?

@JohnCremona
Copy link
Member

Perhaps on the issue, where you could link to the branch on your fork? But if people want to use draft PRs for this purpose, I would be willing to try it out.

@tobiasdiez
Copy link

The main point of the "positive review" label is to signal to the release manager that this PR can be merged. Similarly, "needs review" signals to devs that they should have a look at this PR, while "needs work" says that someone needs to work on this PR to move it forward. This information is there in the form of the "Approved" and "Changes required" state of a PR, but github hides this quite well so that labels can be used to make it clearer who should look at this PR next. There is also the idea to auto-sync the review state to the label: #117. But yeah, leaving of the labels could also work.

For me a draft PR is a "hey, I'm working on this. It's not yet ready, but if you want to have a look at it you are welcome to do so." and is handy if you want to prevent that multiple people are working on the same thing. Also normal PRs sometimes go back to draft mode, when there are huge changes required and the author of the PR doesn't have time right now to work on this (or it is blocked by an external dependency etc).

@alexjbest
Copy link

alexjbest commented Feb 7, 2023

Moreover I recommend discouraging having 'draft' PRs at all. If your branch is not ready for review, don't make a PR. (We don't use draft PRs in the LMFDB.) It is a useful feature that when a PR is created from a user's branch, whenever that branch is updated (after review, say), the PR is automatically updated; but it can be annoying when the PR authors make the PR early while still workon on their branch and repeatedly update the branch and PR.

Does CI run on branches that are simply uploaded to a forked repo? I interpreted opening a draft PR as a way of saying I want a CI run to happen on this PR, but don't want reviews yet until that finishes (at which point I'll convert to a non-draft PR)

@mezzarobba
Copy link
Member

There is also the idea to auto-sync the review state to the label: #117.

If #117 gets done, then I have nothing against redundant labels. But I already see some confusion about which one should use when reviewing code, and some PRs approved with no positive review label or conversely. So unless it is done soon, my vote is to get rid of the labels :-)

@tobiasdiez
Copy link

There are also a few edge-cases that make this more tricky. For example, say I want to approve the changes of the PR but would like to have a second pair of eyes on it ("needs review" label + positive review). Or someone disagrees with the implementation but is voted-over by other devs ("positive review" label + one changes-requested review).

So maybe for now we add a short guide on when to use which label to https://github.com/sagemath/trac-to-github/blob/master/docs/Migration-Trac-to-Github.md#for-reviewing-a-change?

@soehms
Copy link
Member

soehms commented Feb 7, 2023

There is also the idea to auto-sync the review state to the label: #117.

If #117 gets done, then I have nothing against redundant labels. But I already see some confusion about which one should use when reviewing code, and some PRs approved with no positive review label or conversely. So unless it is done soon, my vote is to get rid of the labels :-)

I have already started to work on that. See the code on my fork of this repo.

@dimpase
Copy link
Member

dimpase commented Feb 7, 2023 via email

@alexjbest
Copy link

On Tue, 7 Feb 2023, 10:02 Alex J Best, @.> wrote: Moreover I recommend discouraging having 'draft' PRs at all. If your branch is not ready for review, don't make a PR. (We don't use draft PRs in the LMFDB.) It is a useful feature that when a PR is created from a user's branch, whenever that branch is updated (after review, say), the PR is automatically updated; but it can be annoying when the PR authors make the PR early while still workon on their branch and repeatedly update the branch and PR. Does CI run on branches that are simply uploaded to a forked repo, I interpreted opening a draft PR as a way of saying I want a CI run to happen on this PR, but don't want reviews yet until that finishes (at which point I'll convert to a non-draft PR)
you can enable Actions on your fork, and have the CI they provide - which should be enough for most purposes. —

Reply to this email directly, view it on GitHub <#99 (comment)>, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAJXYHDUOKDGS4NGEKVSKFTWWIMT5ANCNFSM6AAAAAATTRXQXY . You are receiving this because you are on a team that was mentioned.Message ID: @.
>

Thanks, I was confused by the fact that they were not enabled by default, and that clicking on settings they seem to be enabled.
One must first click on the actions tab and enable them there, at some point we should add this to the workflow description (unless it is there already!)

@soehms
Copy link
Member

soehms commented Feb 7, 2023

There is also the idea to auto-sync the review state to the label: #117.

If #117 gets done, then I have nothing against redundant labels. But I already see some confusion about which one should use when reviewing code, and some PRs approved with no positive review label or conversely. So unless it is done soon, my vote is to get rid of the labels :-)

I have already started to work on that. See the code on my fork of this repo.

I've opened PR #187 for it.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
help wanted Extra attention is needed
Projects
None yet
Development

No branches or pull requests