purescript / governance

22 stars 2 forks source link

Define labels for use in issue trackers #5

Closed hdgarrood closed 2 years ago

hdgarrood commented 4 years ago

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

We might want to have something like a set of labels that we attach to PRs and issues to signal the following things:

  • "needs approval from the core team"
  • "voting started"
  • "approved"
  • "rejected"

If this sounds sensible, then we should specify them here so that people involved in such discussions can always refer to this document for reference on how things work.

@joneshf, https://github.com/purescript/governance/pull/3#discussion_r415084285

Labels would also help in mitigating approval limbo. If we label every PR:

  • "merge three days after approval"
  • "merge two weeks after approval"
  • ...

It ought to make this stuff a lot clearer to everyone involved.

I also think labeling issues provides value. Right now, it's really hard to know whether an issue was closed because it won't be accepted, isn't a bug, priorities changed, was actually a question, etc. You have to open the issue and read through all the comments to find where the decision was made. A label provides a high-level summary of the decision.

rhendric commented 4 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.

Workflow for issues

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):

  1. Is the reporter misusing the issue tracker or mistaken about any question of fact? If not, add label confirmed. Non-core collaborators can apply this label.
  2. Is it clear what could be done to respond to the report? If so, add label designed. Non-core collaborators can apply this label.
  3. Is there an approach that would improve the project, in the opinion of the core team? If so, add label accepted. An accepted issue may be worked on by contributors.
  4. Does the core team know on what timescale they intend to implement the approach? If so, assign to milestone (either a release or a ‘Help Wanted’ milestone).

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.)

Workflow for pull requests

For pull requests, the relevant questions are as follows:

  1. Does the PR represent an approach that would improve the project, in the opinion of the core team? If so, add label accepted. A PR addressing an accepted issue can automatically be marked accepted.
  2. Is the PR good? Individuals can conduct code reviews and record approvals or needs-changes. The governance document already describes the conditions for merging the PR based on who and how many approve. When those conditions are met, add label ready to merge.
    • (Maybe there should be multiple ‘ready to merge’ labels of different durations, as @joneshf suggests? Specify these durations if so.)
  3. After the appropriate waiting period, a ready-to-merge PR can be merged.

Pull requests may be assigned to milestones if the core team decides to commit to landing a PR in that time frame.

Blocker labels for issues and PRs

If any of the above workflow questions can't be answered:

The above statuses are removed when they no longer apply.

Category labels for issues and PRs

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:

Issue type

Areas of interest

Other

Issue resolutions

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:

thomashoneyman commented 4 years ago

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.

JordanMartinez commented 2 years ago

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.

JordanMartinez commented 2 years ago

Here's the output of https://github.com/purescript-contrib/governance/pull/47:

Output ``` # of Unique Labels: 27 Label names: ["accepted","breaking","breaking change","bug","dependencies","document me","documentation","duplicate","enhancement","fix before 0.14","good first issue","help wanted","ideas","invalid","merge before 0.14","new feature","question","reproducible","reviewing","spam","stale","type: bug","type: enhancement","type: question","type: reference","type: syntax","wontfix"] ---------------- Label 'accepted' appears in 1 repos: ["purescript-web-events"] Label 'breaking' appears in 4 repos: ["purescript-either","purescript-foldable-traversable","purescript-foreign","purescript-lists"] Label 'breaking change' appears in 62 repos: ["purescript-prelude","purescript-st","purescript-unfoldable","purescript-ace","purescript-aff","purescript-aff-bus","purescript-aff-coroutines","purescript-affjax","purescript-argonaut","purescript-argonaut-codecs","purescript-argonaut-core","purescript-argonaut-generic","purescript-argonaut-traversals","purescript-avar","purescript-concurrent-queues","purescript-coroutines","purescript-css","purescript-fixed-points","purescript-fork","purescript-form-urlencoded","purescript-formatters","purescript-freet","purescript-http-methods","purescript-js-date","purescript-js-timers","purescript-machines","purescript-matryoshka","purescript-media-types","purescript-now","purescript-nullable","purescript-options","purescript-parsing","purescript-pathy","purescript-precise","purescript-profunctor-lenses","purescript-quickcheck-laws","purescript-react","purescript-react-dom","purescript-routing","purescript-string-parsers","purescript-strings-extra","purescript-these","purescript-unicode","purescript-unsafe-reference","purescript-uri","purescript-canvas","purescript-web-clipboard","purescript-web-cssom","purescript-web-dom","purescript-web-dom-parser","purescript-web-dom-xpath","purescript-web-encoding","purescript-web-fetch","purescript-web-file","purescript-web-html","purescript-web-promise","purescript-web-socket","purescript-web-storage","purescript-web-streams","purescript-web-touchevents","purescript-web-xhr","purescript-node-process"] Label 'bug' appears in 133 repos: ["purescript-arrays","purescript-assert","purescript-bifunctors","purescript-catenable-lists","purescript-console","purescript-const","purescript-contravariant","purescript-control","purescript-datetime","purescript-distributive","purescript-effect","purescript-either","purescript-enums","purescript-exceptions","purescript-exists","purescript-filterable","purescript-foldable-traversable","purescript-foreign","purescript-foreign-object","purescript-functions","purescript-functors","purescript-gen","purescript-graphs","purescript-identity","purescript-integers","purescript-invariant","purescript-lazy","purescript-lcg","purescript-lists","purescript-math","purescript-maybe","purescript-minibench","purescript-newtype","purescript-nonempty","purescript-numbers","purescript-ordered-collections","purescript-orders","purescript-parallel","purescript-partial","purescript-prelude","purescript-profunctor","purescript-psci-support","purescript-quickcheck","purescript-random","purescript-record","purescript-refs","purescript-safe-coerce","purescript-semirings","purescript-st","purescript-strings","purescript-tailrec","purescript-transformers","purescript-tuples","purescript-type-equality","purescript-typelevel-prelude","purescript-unfoldable","purescript-unsafe-coerce","purescript-validation","purescript-ace","purescript-aff","purescript-aff-bus","purescript-aff-coroutines","purescript-affjax","purescript-argonaut","purescript-argonaut-codecs","purescript-argonaut-core","purescript-argonaut-generic","purescript-argonaut-traversals","purescript-arraybuffer-types","purescript-avar","purescript-concurrent-queues","purescript-coroutines","purescript-css","purescript-fixed-points","purescript-fork","purescript-form-urlencoded","purescript-formatters","purescript-freet","purescript-github-actions-toolkit","purescript-http-methods","purescript-js-date","purescript-js-timers","purescript-js-uri","purescript-machines","purescript-matryoshka","purescript-media-types","purescript-now","purescript-nullable","purescript-options","purescript-parsing","purescript-pathy","purescript-precise","purescript-profunctor-lenses","purescript-quickcheck-laws","purescript-react","purescript-react-dom","purescript-routing","purescript-string-parsers","purescript-strings-extra","purescript-these","purescript-unicode","purescript-unsafe-reference","purescript-uri","purescript-canvas","purescript-web-clipboard","purescript-web-cssom","purescript-web-dom","purescript-web-dom-parser","purescript-web-dom-xpath","purescript-web-encoding","purescript-web-events","purescript-web-fetch","purescript-web-file","purescript-web-html","purescript-web-promise","purescript-web-socket","purescript-web-storage","purescript-web-streams","purescript-web-touchevents","purescript-web-uievents","purescript-web-xhr","purescript-node-buffer","purescript-node-child-process","purescript-node-fs","purescript-node-fs-aff","purescript-node-http","purescript-node-net","purescript-node-path","purescript-node-process","purescript-node-readline","purescript-node-streams","purescript-node-url","purescript-posix-types"] Label 'dependencies' appears in 1 repos: ["purescript-node-readline"] Label 'document me' appears in 60 repos: ["purescript-prelude","purescript-ace","purescript-aff","purescript-aff-bus","purescript-aff-coroutines","purescript-affjax","purescript-argonaut","purescript-argonaut-codecs","purescript-argonaut-core","purescript-argonaut-generic","purescript-argonaut-traversals","purescript-avar","purescript-concurrent-queues","purescript-coroutines","purescript-css","purescript-fixed-points","purescript-fork","purescript-form-urlencoded","purescript-formatters","purescript-freet","purescript-http-methods","purescript-js-date","purescript-js-timers","purescript-js-uri","purescript-machines","purescript-matryoshka","purescript-media-types","purescript-now","purescript-nullable","purescript-options","purescript-parsing","purescript-pathy","purescript-precise","purescript-profunctor-lenses","purescript-quickcheck-laws","purescript-react","purescript-react-dom","purescript-routing","purescript-string-parsers","purescript-strings-extra","purescript-these","purescript-unicode","purescript-unsafe-reference","purescript-uri","purescript-canvas","purescript-web-clipboard","purescript-web-dom","purescript-web-dom-parser","purescript-web-dom-xpath","purescript-web-encoding","purescript-web-fetch","purescript-web-file","purescript-web-html","purescript-web-promise","purescript-web-socket","purescript-web-storage","purescript-web-streams","purescript-web-touchevents","purescript-web-xhr","purescript-node-process"] Label 'documentation' appears in 2 repos: ["purescript-safe-coerce","purescript-github-actions-toolkit"] Label 'duplicate' appears in 75 repos: ["purescript-arrays","purescript-assert","purescript-bifunctors","purescript-catenable-lists","purescript-console","purescript-const","purescript-contravariant","purescript-control","purescript-datetime","purescript-distributive","purescript-effect","purescript-either","purescript-enums","purescript-exceptions","purescript-exists","purescript-filterable","purescript-foldable-traversable","purescript-foreign","purescript-foreign-object","purescript-functions","purescript-functors","purescript-gen","purescript-graphs","purescript-identity","purescript-integers","purescript-invariant","purescript-lazy","purescript-lcg","purescript-lists","purescript-math","purescript-maybe","purescript-minibench","purescript-newtype","purescript-nonempty","purescript-numbers","purescript-ordered-collections","purescript-orders","purescript-parallel","purescript-partial","purescript-prelude","purescript-profunctor","purescript-psci-support","purescript-quickcheck","purescript-random","purescript-record","purescript-refs","purescript-safe-coerce","purescript-semirings","purescript-st","purescript-strings","purescript-tailrec","purescript-transformers","purescript-tuples","purescript-type-equality","purescript-typelevel-prelude","purescript-unfoldable","purescript-unsafe-coerce","purescript-validation","purescript-arraybuffer-types","purescript-github-actions-toolkit","purescript-js-uri","purescript-web-cssom","purescript-web-events","purescript-web-uievents","purescript-node-buffer","purescript-node-child-process","purescript-node-fs","purescript-node-fs-aff","purescript-node-http","purescript-node-net","purescript-node-path","purescript-node-readline","purescript-node-streams","purescript-node-url","purescript-posix-types"] Label 'enhancement' appears in 133 repos: ["purescript-arrays","purescript-assert","purescript-bifunctors","purescript-catenable-lists","purescript-console","purescript-const","purescript-contravariant","purescript-control","purescript-datetime","purescript-distributive","purescript-effect","purescript-either","purescript-enums","purescript-exceptions","purescript-exists","purescript-filterable","purescript-foldable-traversable","purescript-foreign","purescript-foreign-object","purescript-functions","purescript-functors","purescript-gen","purescript-graphs","purescript-identity","purescript-integers","purescript-invariant","purescript-lazy","purescript-lcg","purescript-lists","purescript-math","purescript-maybe","purescript-minibench","purescript-newtype","purescript-nonempty","purescript-numbers","purescript-ordered-collections","purescript-orders","purescript-parallel","purescript-partial","purescript-prelude","purescript-profunctor","purescript-psci-support","purescript-quickcheck","purescript-random","purescript-record","purescript-refs","purescript-safe-coerce","purescript-semirings","purescript-st","purescript-strings","purescript-tailrec","purescript-transformers","purescript-tuples","purescript-type-equality","purescript-typelevel-prelude","purescript-unfoldable","purescript-unsafe-coerce","purescript-validation","purescript-ace","purescript-aff","purescript-aff-bus","purescript-aff-coroutines","purescript-affjax","purescript-argonaut","purescript-argonaut-codecs","purescript-argonaut-core","purescript-argonaut-generic","purescript-argonaut-traversals","purescript-arraybuffer-types","purescript-avar","purescript-concurrent-queues","purescript-coroutines","purescript-css","purescript-fixed-points","purescript-fork","purescript-form-urlencoded","purescript-formatters","purescript-freet","purescript-github-actions-toolkit","purescript-http-methods","purescript-js-date","purescript-js-timers","purescript-js-uri","purescript-machines","purescript-matryoshka","purescript-media-types","purescript-now","purescript-nullable","purescript-options","purescript-parsing","purescript-pathy","purescript-precise","purescript-profunctor-lenses","purescript-quickcheck-laws","purescript-react","purescript-react-dom","purescript-routing","purescript-string-parsers","purescript-strings-extra","purescript-these","purescript-unicode","purescript-unsafe-reference","purescript-uri","purescript-canvas","purescript-web-clipboard","purescript-web-cssom","purescript-web-dom","purescript-web-dom-parser","purescript-web-dom-xpath","purescript-web-encoding","purescript-web-events","purescript-web-fetch","purescript-web-file","purescript-web-html","purescript-web-promise","purescript-web-socket","purescript-web-storage","purescript-web-streams","purescript-web-touchevents","purescript-web-uievents","purescript-web-xhr","purescript-node-buffer","purescript-node-child-process","purescript-node-fs","purescript-node-fs-aff","purescript-node-http","purescript-node-net","purescript-node-path","purescript-node-process","purescript-node-readline","purescript-node-streams","purescript-node-url","purescript-posix-types"] Label 'fix before 0.14' appears in 36 repos: ["purescript-lists","purescript-affjax","purescript-avar","purescript-css","purescript-fixed-points","purescript-form-urlencoded","purescript-formatters","purescript-js-timers","purescript-matryoshka","purescript-nullable","purescript-parsing","purescript-pathy","purescript-precise","purescript-profunctor-lenses","purescript-react","purescript-routing","purescript-string-parsers","purescript-these","purescript-unicode","purescript-uri","purescript-canvas","purescript-web-clipboard","purescript-web-dom","purescript-web-dom-parser","purescript-web-dom-xpath","purescript-web-encoding","purescript-web-fetch","purescript-web-file","purescript-web-html","purescript-web-promise","purescript-web-socket","purescript-web-storage","purescript-web-streams","purescript-web-touchevents","purescript-web-xhr","purescript-node-process"] Label 'good first issue' appears in 71 repos: ["purescript-effect","purescript-foreign-object","purescript-ordered-collections","purescript-prelude","purescript-safe-coerce","purescript-ace","purescript-aff","purescript-aff-bus","purescript-aff-coroutines","purescript-affjax","purescript-argonaut","purescript-argonaut-codecs","purescript-argonaut-core","purescript-argonaut-generic","purescript-argonaut-traversals","purescript-avar","purescript-concurrent-queues","purescript-coroutines","purescript-css","purescript-fixed-points","purescript-fork","purescript-form-urlencoded","purescript-formatters","purescript-freet","purescript-github-actions-toolkit","purescript-http-methods","purescript-js-date","purescript-js-timers","purescript-js-uri","purescript-machines","purescript-matryoshka","purescript-media-types","purescript-now","purescript-nullable","purescript-options","purescript-parsing","purescript-pathy","purescript-precise","purescript-profunctor-lenses","purescript-quickcheck-laws","purescript-react","purescript-react-dom","purescript-routing","purescript-string-parsers","purescript-strings-extra","purescript-these","purescript-unicode","purescript-unsafe-reference","purescript-uri","purescript-canvas","purescript-web-clipboard","purescript-web-cssom","purescript-web-dom","purescript-web-dom-parser","purescript-web-dom-xpath","purescript-web-encoding","purescript-web-events","purescript-web-fetch","purescript-web-file","purescript-web-html","purescript-web-promise","purescript-web-socket","purescript-web-storage","purescript-web-streams","purescript-web-touchevents","purescript-web-uievents","purescript-web-xhr","purescript-node-fs","purescript-node-http","purescript-node-net","purescript-node-process"] Label 'help wanted' appears in 113 repos: ["purescript-assert","purescript-bifunctors","purescript-catenable-lists","purescript-console","purescript-const","purescript-contravariant","purescript-distributive","purescript-effect","purescript-exists","purescript-filterable","purescript-foreign-object","purescript-functions","purescript-functors","purescript-gen","purescript-graphs","purescript-identity","purescript-integers","purescript-invariant","purescript-lcg","purescript-lists","purescript-minibench","purescript-newtype","purescript-nonempty","purescript-numbers","purescript-ordered-collections","purescript-orders","purescript-parallel","purescript-partial","purescript-prelude","purescript-profunctor","purescript-psci-support","purescript-record","purescript-safe-coerce","purescript-semirings","purescript-st","purescript-tailrec","purescript-type-equality","purescript-typelevel-prelude","purescript-unfoldable","purescript-unsafe-coerce","purescript-validation","purescript-ace","purescript-aff","purescript-aff-bus","purescript-aff-coroutines","purescript-affjax","purescript-argonaut","purescript-argonaut-codecs","purescript-argonaut-core","purescript-argonaut-generic","purescript-argonaut-traversals","purescript-arraybuffer-types","purescript-avar","purescript-concurrent-queues","purescript-coroutines","purescript-css","purescript-fixed-points","purescript-fork","purescript-form-urlencoded","purescript-formatters","purescript-freet","purescript-github-actions-toolkit","purescript-http-methods","purescript-js-date","purescript-js-timers","purescript-js-uri","purescript-machines","purescript-matryoshka","purescript-media-types","purescript-now","purescript-nullable","purescript-options","purescript-parsing","purescript-pathy","purescript-precise","purescript-profunctor-lenses","purescript-quickcheck-laws","purescript-react","purescript-react-dom","purescript-routing","purescript-string-parsers","purescript-strings-extra","purescript-these","purescript-unicode","purescript-unsafe-reference","purescript-uri","purescript-canvas","purescript-web-clipboard","purescript-web-cssom","purescript-web-dom","purescript-web-dom-parser","purescript-web-dom-xpath","purescript-web-encoding","purescript-web-events","purescript-web-fetch","purescript-web-file","purescript-web-html","purescript-web-promise","purescript-web-socket","purescript-web-storage","purescript-web-streams","purescript-web-touchevents","purescript-web-uievents","purescript-web-xhr","purescript-node-child-process","purescript-node-fs","purescript-node-fs-aff","purescript-node-http","purescript-node-net","purescript-node-process","purescript-node-streams","purescript-node-url","purescript-posix-types"] Label 'ideas' appears in 1 repos: ["purescript-record"] Label 'invalid' appears in 74 repos: ["purescript-arrays","purescript-assert","purescript-bifunctors","purescript-catenable-lists","purescript-console","purescript-const","purescript-contravariant","purescript-control","purescript-datetime","purescript-distributive","purescript-effect","purescript-either","purescript-enums","purescript-exceptions","purescript-exists","purescript-filterable","purescript-foldable-traversable","purescript-foreign","purescript-foreign-object","purescript-functions","purescript-functors","purescript-gen","purescript-graphs","purescript-identity","purescript-integers","purescript-invariant","purescript-lazy","purescript-lcg","purescript-lists","purescript-math","purescript-maybe","purescript-minibench","purescript-newtype","purescript-nonempty","purescript-numbers","purescript-ordered-collections","purescript-orders","purescript-parallel","purescript-partial","purescript-prelude","purescript-profunctor","purescript-psci-support","purescript-quickcheck","purescript-random","purescript-record","purescript-refs","purescript-safe-coerce","purescript-semirings","purescript-st","purescript-strings","purescript-tailrec","purescript-transformers","purescript-tuples","purescript-type-equality","purescript-typelevel-prelude","purescript-unfoldable","purescript-unsafe-coerce","purescript-validation","purescript-arraybuffer-types","purescript-github-actions-toolkit","purescript-web-cssom","purescript-web-events","purescript-web-uievents","purescript-node-buffer","purescript-node-child-process","purescript-node-fs","purescript-node-fs-aff","purescript-node-http","purescript-node-net","purescript-node-path","purescript-node-readline","purescript-node-streams","purescript-node-url","purescript-posix-types"] Label 'merge before 0.14' appears in 1 repos: ["purescript-machines"] Label 'new feature' appears in 1 repos: ["purescript-filterable"] Label 'question' appears in 132 repos: ["purescript-arrays","purescript-assert","purescript-bifunctors","purescript-catenable-lists","purescript-console","purescript-const","purescript-contravariant","purescript-control","purescript-datetime","purescript-distributive","purescript-effect","purescript-either","purescript-enums","purescript-exceptions","purescript-exists","purescript-filterable","purescript-foldable-traversable","purescript-foreign","purescript-foreign-object","purescript-functions","purescript-functors","purescript-gen","purescript-graphs","purescript-identity","purescript-integers","purescript-invariant","purescript-lazy","purescript-lcg","purescript-lists","purescript-math","purescript-maybe","purescript-minibench","purescript-newtype","purescript-nonempty","purescript-numbers","purescript-ordered-collections","purescript-orders","purescript-parallel","purescript-partial","purescript-prelude","purescript-profunctor","purescript-psci-support","purescript-quickcheck","purescript-random","purescript-record","purescript-refs","purescript-safe-coerce","purescript-semirings","purescript-st","purescript-strings","purescript-tailrec","purescript-transformers","purescript-tuples","purescript-type-equality","purescript-typelevel-prelude","purescript-unfoldable","purescript-unsafe-coerce","purescript-validation","purescript-ace","purescript-aff","purescript-aff-bus","purescript-aff-coroutines","purescript-affjax","purescript-argonaut","purescript-argonaut-codecs","purescript-argonaut-core","purescript-argonaut-generic","purescript-argonaut-traversals","purescript-arraybuffer-types","purescript-avar","purescript-concurrent-queues","purescript-coroutines","purescript-css","purescript-fixed-points","purescript-fork","purescript-form-urlencoded","purescript-formatters","purescript-freet","purescript-github-actions-toolkit","purescript-http-methods","purescript-js-date","purescript-js-timers","purescript-machines","purescript-matryoshka","purescript-media-types","purescript-now","purescript-nullable","purescript-options","purescript-parsing","purescript-pathy","purescript-precise","purescript-profunctor-lenses","purescript-quickcheck-laws","purescript-react","purescript-react-dom","purescript-routing","purescript-string-parsers","purescript-strings-extra","purescript-these","purescript-unicode","purescript-unsafe-reference","purescript-uri","purescript-canvas","purescript-web-clipboard","purescript-web-cssom","purescript-web-dom","purescript-web-dom-parser","purescript-web-dom-xpath","purescript-web-encoding","purescript-web-events","purescript-web-fetch","purescript-web-file","purescript-web-html","purescript-web-promise","purescript-web-socket","purescript-web-storage","purescript-web-streams","purescript-web-touchevents","purescript-web-uievents","purescript-web-xhr","purescript-node-buffer","purescript-node-child-process","purescript-node-fs","purescript-node-fs-aff","purescript-node-http","purescript-node-net","purescript-node-path","purescript-node-process","purescript-node-readline","purescript-node-streams","purescript-node-url","purescript-posix-types"] Label 'reproducible' appears in 1 repos: ["purescript-filterable"] Label 'reviewing' appears in 1 repos: ["purescript-filterable"] Label 'spam' appears in 1 repos: ["purescript-options"] Label 'stale' appears in 5 repos: ["purescript-concurrent-queues","purescript-js-date","purescript-media-types","purescript-now","purescript-unsafe-reference"] Label 'type: bug' appears in 1 repos: ["purescript-free"] Label 'type: enhancement' appears in 1 repos: ["purescript-free"] Label 'type: question' appears in 1 repos: ["purescript-free"] Label 'type: reference' appears in 1 repos: ["purescript-free"] Label 'type: syntax' appears in 1 repos: ["purescript-free"] Label 'wontfix' appears in 76 repos: ["purescript-arrays","purescript-assert","purescript-bifunctors","purescript-catenable-lists","purescript-console","purescript-const","purescript-contravariant","purescript-control","purescript-datetime","purescript-distributive","purescript-effect","purescript-either","purescript-enums","purescript-exceptions","purescript-exists","purescript-filterable","purescript-foldable-traversable","purescript-foreign","purescript-foreign-object","purescript-functions","purescript-functors","purescript-gen","purescript-graphs","purescript-identity","purescript-integers","purescript-invariant","purescript-lazy","purescript-lcg","purescript-lists","purescript-math","purescript-maybe","purescript-minibench","purescript-newtype","purescript-nonempty","purescript-numbers","purescript-ordered-collections","purescript-orders","purescript-parallel","purescript-partial","purescript-prelude","purescript-profunctor","purescript-psci-support","purescript-quickcheck","purescript-random","purescript-record","purescript-refs","purescript-safe-coerce","purescript-semirings","purescript-st","purescript-strings","purescript-tailrec","purescript-transformers","purescript-tuples","purescript-type-equality","purescript-typelevel-prelude","purescript-unfoldable","purescript-unsafe-coerce","purescript-validation","purescript-argonaut-codecs","purescript-arraybuffer-types","purescript-github-actions-toolkit","purescript-js-uri","purescript-web-cssom","purescript-web-events","purescript-web-uievents","purescript-node-buffer","purescript-node-child-process","purescript-node-fs","purescript-node-fs-aff","purescript-node-http","purescript-node-net","purescript-node-path","purescript-node-readline","purescript-node-streams","purescript-node-url","purescript-posix-types"] ---------------- Labels with no differences in metadata: ["accepted","dependencies","document me","documentation","ideas","merge before 0.14","new feature","reproducible","reviewing","spam","stale","type: bug","type: enhancement","type: question","type: reference","type: syntax"] ---------------- 11 labels have differences in metadata: question has 3 differences Color: cc317c | Description: Color: d876e3 | Description: Further information is requested Color: fbca04 | Description: Question that needs an answer good first issue has 3 differences Color: 0052CC | Description: Color: 0E57E0 | Description: Color: 7057ff | Description: Good for newcomers breaking change has 5 differences Color: C0F4D9 | Description: Color: CF4D83 | Description: Color: E99695 | Description: Color: e99695 | Description: A change that requires a major version bump Color: e99695 | Description: Change will require a major version bump breaking has 4 differences Color: 444444 | Description: Color: d4c5f9 | Description: Color: f9d0c4 | Description: Color: fef2c0 | Description: bug has 4 differences Color: d73a4a | Description: A legitimate bug in the library that ought to be fixed Color: d73a4a | Description: Something isn't working Color: ee0701 | Description: Color: fc2929 | Description: duplicate has 2 differences Color: cccccc | Description: Color: cfd3d7 | Description: This issue or pull request already exists enhancement has 4 differences Color: 84b6eb | Description: Color: a2eeef | Description: New feature or request Color: a6e1ea | Description: An addition to the library Color: a6e1ea | Description: New feature or request fix before 0.14 has 3 differences Color: 0052CC | Description: Color: 0052cc | Description: Color: 0052cc | Description: An issue or PR which should be fixed before the PureScript 0.14 compiler release invalid has 2 differences Color: e4e669 | Description: This doesn't seem right Color: e6e6e6 | Description: help wanted has 5 differences Color: 006b75 | Description: Extra attention is needed Color: 006b75 | Description: Maintainers would like assistance with solving this issue Color: 008672 | Description: Extra attention is needed Color: 128A0C | Description: Color: 159818 | Description: wontfix has 2 differences Color: ffffff | Description: Color: ffffff | Description: This will not be worked on ```
JordanMartinez commented 2 years ago

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.

JordanMartinez commented 2 years ago

Ok, how's this for colors: Screenshot from 2021-11-20 20-13-04

thomashoneyman commented 2 years ago

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.

garyb commented 2 years ago

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.

thomashoneyman commented 2 years ago

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.

JordanMartinez commented 2 years ago

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.

JordanMartinez commented 2 years ago

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.

JordanMartinez commented 2 years ago

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.

thomashoneyman commented 2 years ago

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.

garyb commented 2 years ago

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"

JordanMartinez commented 2 years ago

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.

JordanMartinez commented 2 years ago

Closing now that the labels have been synced. Note: the compiler repo doesn't use these labels yet.

thomashoneyman commented 2 years ago

I don’t think the labels we settled on should apply to non-library repositories as the needs can be quite different.