Closed hdgarrood closed 2 years ago
I would roll milestones up into this as well and say that it would be good to codify workflows for issues and PRs, which can be implemented with labels, milestones, code reviews, and/or possibly other features.
I'd love for this to be a thing—it would make it easier for me to help out as a new collaborator—so if this is the right medium for the discussion let me make a rather more detailed proposal than the above. If this is ahhh too much process we hates it, no big deal; I just thought this might help to advance the metaprocess.
For each issue, the following questions should all get answered in roughly this order (or the issue should end up closed one way or another):
The above statuses are retained for the life of the issue, unless the conditions by which they were reached are determined to be incorrect. (E.g., an issue can have its designed label removed if the design is subsequently found to be substantially incomplete.)
For pull requests, the relevant questions are as follows:
Pull requests may be assigned to milestones if the core team decides to commit to landing a PR in that time frame.
If any of the above workflow questions can't be answered:
The above statuses are removed when they no longer apply.
In order to make sure people can look at issues and PRs of interest to them, any of the following categories of labels can be applied at any point in the workflow:
A closed issue doesn't need to be shepherded anymore, but it may still be useful to determine at a glance why the issue was closed. For this purpose, use the following resolution labels:
For what it’s worth, the PureScript Contributors organization has an updater CLI tool which can be used to, among other things, sync labels via the GitHub API for any library. It can be used outside the organization too, if desired. It could perhaps be useful in implementing whatever labels end up being settled on for the PureScript organization.
I'd like to update all core libraries to have consistent labels. It significantly helps when determining what breaking changes we can make when updating the ecosystem.
Here's the output of https://github.com/purescript-contrib/governance/pull/47:
Upon reading Sane GitHub Labels, I will work on adding the following labels across core, contrib, node, and web libraries. Colors are TBD. The following labels are a conservative approach that is IMHO better than what we currently have. We can always build upon these later, but these are likely core:
type: breaking change
type: bug
type: regression
type: enhancement
type: documentation
type: housekeeping
type: question
status: abandoned
status: blocked
status: needs review
status: needs approval
status: wontfix
good first issue
good second issue
help wanted
context: merge before 0.14
context: fix before 0.14
The context labels enable us to search across the multiple repos to find all breaking changes we intend to do before making a new breaking change release.
Ok, how's this for colors:
It would help me judge these labels if we also had short descriptions of each (which we can include on GitHub). Or perhaps criteria is the better word — basically, what does each label cover? How do we know what label to apply?
Some are obvious, like a breaking change label. But what about housekeeping, or abandoned? When should we apply those labels and what do they indicate wrt what actions maintainers or contributors want to be taken?
I ask not just for myself to better understand the labels but also so that people coming to a PureScript repo for the first time have a way to understand what a label means.
From that label list I'd suggest "duplicate" is a missing one that's useful to have.
I'm not really sure what "good second issue" would be used for either, I don't really think someone's ability to work on stuff is going to be that much better after resolving the average "good first issue" that it's a distinction worth making - and we barely use the first one anyway. :smile:
I'm also never really sure what "help wanted" means... I think if an issue is accepted as something we want to do, and nobody is doing it, then we don't need to specify that help would be appreciated.
On that note, maybe a "status: accepted" would be good to have, since not every issue that is opened is well thought out/specified enough to be worked on.
I also think we could probably remove the 0.14-related labels altogether as they were a temporary band-aid. We can use milestones instead in the future.
From that label list I'd suggest "duplicate" is a missing one that's useful to have.
I was initially thinking that we would label such issues a different way by putting [DUPLICATE]
in the title. Right now, one cannot use GitHub's normal search to do something like (label:one AND label:two AND (NOT label:three)
. NOT
only works on the issue itself. However, excluding such issues by using that approach would also remove issues that have duplicated
somewhere in their title or content.
All that to say, yes, I think this should be added.
we barely use the first one anyway.
I'm fine with dropping "good second issue" for now, but I do think keeping the "good first issue" label is worthwhile because it enables one to easily search for such issues if they want to make a contribution.
I'm also never really sure what "help wanted" means...
Yeah.... this seems to be a weird one. I'll drop it. It seems to mean, "Hey, I as a maintainer don't plan to work on this feature, but someone else can if they want." If so, then it's kind of useless as isn't that the case for most issues? Also, if someone does choose to work on something, we can assign an issue to that person, which is arguably a better indicator.
On that note, maybe a "status: accepted" would be good to have, since not every issue that is opened is well thought out/specified enough to be worked on.
If we'll have "status: accepted", then we should likely have "status: needs more info" as well.
I also think we could probably remove the 0.14-related labels altogether as they were a temporary band-aid. We can use milestones instead in the future.
AFAICT, you can't search for milestones across multiple repos using GitHub's default search. That's the benefit of using labels to track this. If I was using their GraphQL to find things, that might be a different story.
It would help me judge these labels if we also had short descriptions of each (which we can include on GitHub).
I agree. I wanted to get some names down initially before agreeing what they mean.
I'm fine with dropping "good second issue" for now, but I do think keeping the "good first issue" label is worthwhile because it enables one to easily search for such issues if they want to make a contribution.
I definitely want to keep this one; I've used it on my personal libraries and a few PureScript ones, and it definitely helps both me as an issue author to write it in such a way that a new contributor can make progress with it, and for folks to find issues to work on.
No argument from me on "good first issue", I didn't meant to imply we shouldn't have it.
:+1: for "status: needs more info"
I think all conversation from this point forward should continue in https://github.com/purescript-contrib/governance/pull/49 where I'm implementing a command to do this.
Closing now that the labels have been synced. Note: the compiler repo doesn't use these labels yet.
I don’t think the labels we settled on should apply to non-library repositories as the needs can be quite different.
In #3, @f-f suggested defining labels for use in GitHub issue trackers so that it's easier to cross-reference from this document to any particular issue and see what state it is in.
@f-f, https://github.com/purescript/governance/pull/3#discussion_r409556464
@joneshf, https://github.com/purescript/governance/pull/3#discussion_r415084285