[Repo alignment] Fix labels #40
Labels
No labels
effort
high
effort
low
effort
medium
good first issue
help wanted
meeting topic
needs changes
needs reporter feedback
needs review
priority
high
priority
low
priority
medium
type/content
type/misc
No milestone
No project
No assignees
7 participants
Notifications
Due date
Blocks
#18 Repository alignment
docs/tickets
#56 Update labels
docs/team-docs
Reference
docs/tickets#40
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
The labels in our docs organization repositories are currently a massive mess. We need to come up with a common set of useful labels that we want to use. To do that, we first need to figure out what exactly we want to track (the fewer things the better, and they should be self-explanatory as much as possible), and then set every repo in the docs organization to use them.
Here is the current org-level set of labels for https://forge.fedoraproject.org/docs.
The format is
scope/itemand labels within a certain scope are mutually exclusive. So, for example, if an issue has a?/needs changes, it can't also have?/needs triage. A scope can also be empty, which means those items can be used on top of anything else.Some thoughts:
needs triageis only useful if it's automatically applied to any new issue. It tells us that it's new and hasn't been seen by anyone from the team, so it needs attention - but we can't expect issue reporters to consistently apply it by hand, and I don't think forgejo can do it automatically. There definitely isn't a way to set that up in the settings. Maybe a runner could do it?scope/group doesn't seem particularly useful to me. Do we really care if something is a bug fix vs improvement?state/is kinda missing acompletelabel, though I suppose an issue being closed without any other state present implies that.AIs from the docs meeting on May 5 2026:
@pboy @pbokoc Write a clear proposal for issue labels and update Ticket #40 with the proposal, so it is clear to all Docs Team members what is being voted on. Do this at least 48 hours before the next Docs Team meeting on 19 May 2026.
@pbokoc Create a first-draft version of issue label howto for Fedora Docs team docs repo, prepare to share on 19 May 2026 team meeting
There's also this in our current docs, we'll need to completely rewrite it when we come up with a set of labels for the org: https://docs.fedoraproject.org/en-US/fedora-docs/organizational/workflow/
Added docs/team-docs#56 for https://docs.fedoraproject.org/en-US/fedora-docs/organizational/workflow/
Discussed in 2026-05-05 Docs Team meeting.
The team engaged in a deep discussion about how to organize issue labels. We agreed to focus on standardizing an organization-wide label set across the
docs/*namespace to make cross-repository work easier, while leaving repo-level labels up to individual maintainers. A formal vote to ratify a clear proposal for these labels will be held at the May 19 team meeting.Follow-up Items:
!agreed As a team, we should focus this conversation about _organization-wide issue labels_ since it impacts all repos and contributors working under the forge.fp.o/docs organization. We prefer to not get in the business of standardizing repo-level labels, as we believe individual maintainers can decide whether greater specificity is needed beyond the organization-wide labels.!agreed We are putting a team vote requirement on this ticket. All team members are encouraged to share feedback in Ticket #40. On the next team meeting on 19 May 2026, we will record a final vote, ratify, and move on. Docs Team leads will also work on a clear proposal for voting on, and also writing meta docs on the proposed labeling system.@pbokoc wrote in #40 (comment):
Our issue templates automatically add this label to new issues, at least on the Tickets repo. I think it is worth keeping for use with the issue templates.
The concept was having a way to track/measure how much work the team does that is net-new work, improving existing work, or fixing problems. However, in practice… I don't think this is happening that often. I'm not committed to these labels. They could go.
There is a
state/approvedlabel, which I guess was supposed to indicate this. But something like "done" or "complete" would make sense as a new state too, IMHO.+1
I would like to propose a clearer and more beginner-friendly label structure/framework for the repository. The goal is to make issues easier to understand, faster to triage, and more approachable for new contributors.
Proposal: Issue Label Structure
The proposed structure separates four different questions that an issue can answer: what kind of work it is, how much effort it may require, how important it is for the team, and where it currently stands in the workflow. This makes the labeling system easier to read and helps contributors quickly understand how to approach an issue.
1. Type
This category describes what kind of work an issue is about.
TextCodeInfrastructure2. Effort
This category describes how much effort an issue is likely to require.
lowmediumhigh3. Priority
lownormalhigh4. Status
This category describes where the issue currently is in the workflow.
Needs InfoNeeds DecisionNeeds DiscussionTodoIn ProgressNeeds HelpBlockedNeeds ReviewIn ReviewNeeds ChangesNeeds TestingIn TestingDoneDuplicateWon't be DoneWhy this structure works
This structure separates four different questions very clearly:
That makes the system easier to understand for new contributors, while still being detailed enough for maintainers to manage the workflow effectively.
Why this is better than a mixed label set
In a mixed label system, labels often describe several things at once, which makes them harder to interpret. By separating type, effort, priority and status, each label has one clear purpose.
For example:
Type:Texttells contributors that the issue is about writing or editing content.Effor:hightells them that the issue is likely more demanding.Priority:lowtells how important this issue is.Status:Needs Reviewtells them that the work is ready and waiting for review.Suggested workflow meaning
The status labels can be understood as follows:
Needs Info: More information is needed before work can continue.Needs Decision: A decision has to be made first.Needs Discussion: The topic should be discussed before work starts.Todo: The issue is ready to be worked on.In Progress: Someone is currently working on it.Needs Help: Extra help is needed.Blocked: Work cannot continue right now.Needs Review: The work is finished and ready for review.In Review: The issue is currently being reviewed.Needs Changes: Review is done, but changes are required.Needs Testing: The work is ready for testing.In Testing: Testing is currently happening.Done: The issue is completed.Duplicate: The issue already exists elsewhere.Won't be Done: The issue will not be pursued further.For example, an issue may start at
Needs info, move toTodo, thenIn Progress, thenNeeds Review, and finallyDone; if something is missing or unclear, it can move toNeeds DiscussionorNeeds Decisioninstead. With this setup, it is always possible to see whether an issue is waiting for input, actively being worked on, under review, blocked, or already finished.Closing note
Overall, this structure should lower the entry barrier for new contributors while still giving maintainers a practical and flexible workflow. It also keeps the labels readable, consistent, and easier to maintain over time.
Reading through this, I really like @a-moor's suggestion for tags. it provides a lean, clean tag system that is logical and makes sense.
+1 for this suggestion
I like it too, with the minor tweak that
Type: Textshould beType: Content, which covers changes like images and (someday!) diagrams.+1
So, I don't dislike the set @a-moor came up with, but I'd like to cut down the number of possible statuses to make the ones we do use easier to find in the dropdown. Here's what I've come up with:
type/contenttype/infrastructuresize/tasksize/epiceffort/loweffort/mediumeffort/highpriotity/lowpriority/mediumpriority/highgood first issuemeeting topicneeds infoneeds voteneeds reviewneeds changesblockedThe ones that start with the same keyword are mutually exclusive, so you can always only have one
type, onesize, etc. The last group can all be used at once as needed.An
epicis a set of multipletasks, you can see an example of an epic here.I cut all statuses that describe the ticket being closed (
done,won't be done,duplicate...), because that's implied by the ticket itself being closed - it's good manners to describe why when you're closing one, anyway, so it doesn't need to be a status. I also cut a few others due to overlap, e.g.type/codeandtype/infraorneeds discussionandneeds decisionare effectively the same thing. I did have to addgood first issueandmeeting topicbecause those have proven useful before.@pbokoc This simplification looks good to me.
+1 from me,
Less is Moor,
+1 and apologies for the aweful pun.
+1 KISS principle is good.
Hey everyone!
I would like to add a few points and explanations to my proposal and explain the assumptions under which the labels and their categories were created and grouped.
Using Forgejo as a project management tool
Forgejo is, first and foremost, a version control tool, but it is obviously also used as a project management tool. This makes sense, since the primary goal of the Docs Team could be described as:
This is probably not a SMART goal formulation, but rather a working goal to explain the following points.
Ideally, all team processes should be optimized to support this primary goal. The workflow around issues and their labeling should also be seen as one of the processes that can improve efficiency in reaching that goal.
A proper label strategy could not only help the Docs Team and contributors understand which categories an issue belongs to, but also use labels for data-driven decision-making.
Data- and KPI-driven decision-making and process optimization
Even though the label categories I proposed were not originally created with this specific strategy in mind, they can still be used to measure specific metrics and provide insights into the current and future work of the Docs Team. Specific interventions or improvements could then be tested, measured, and refined.
Simplification vs. precision
Reducing complexity in labeling should focus on lowering cognitive load. In my opinion, the most important way to achieve this goal is not necessarily to reduce the total number of labels, but to reduce the number of categories and ensure that no category contains redundant or unclear labels that lead to decision paralysis ("Should I use this label or that one?" "What does that label even mean?").
On the other hand, reducing labels, especially in the status category, can also reduce the level of insight available if the team is interested in measuring its processes, improvements, and successes.
The number of labels I have chosen for the status category should not bloat the category, but instead allow for precise decisions if the team is interested in a data- and KPI-driven approach.
If every possible state an issue can be in is labeled and timestamped, specific KPIs could provide the following insights.
Sub-goals, KPIs, and their calculations
Below is a handful of KPIs that could be valuable for the Docs Team if the related sub-goals are considered relevant. The table is far from complete and should be seen as a pool of KPIs to brainstorm, discuss, and expand.
In Progress- timestamp ofTodoBlockedIn RevieworNeeds Reviewuntil the next valid statusDone- timestamp ofIn ProgressDoneissues per week or monthNeeds Changes/ number of reviewed issuesNeeds Decisionuntil the next active statusComments to @pbokoc
type/codewas meant to be used for specific customization of HTML, CSS, or JS.type/infrastructurewas meant to be used for CI/CD and Forge-related topics.size/epicis not a common word outside of agile workflows. Maybesize/projectandsize/taskwould be easier to understand for contributors without an agile project management background.sizecategory is redundant with theeffortcategory.effort/mediumoreffort/highcannot really be a single task, from my point of view.good first issueis also a somewhat redundant label, because it is basicallyeffort/low.Reducing the labels in the
statuscategory to:meeting topicneeds infoneeds voteneeds reviewneeds changesblockedwould lead to missing issue states.
One example is
needs reviewandin review. The first label provides a state in which it is clear that the issue needs a second person to review it, while the second signals that a person has already taken responsibility for the review and is actively working on it. Having both labels would make the KPIReview timepossible and could, for example, lead to the conclusion that more reviewers are needed.Summary
Using Forgejo could be an interesting way to use labels not only for description, but also for data-driven decision-making. A well-thought-out balance between a minimal number of labels and label categories, and labels that can provide valuable insights into performance and improvement opportunities, could add real value to both the team and the users of the Docs.
@a-moor wrote in #40 (comment):
Yeah but 99% of our issues are
type/docsand it doesn't make sense to distinguish between that and non-docs, so I'm just calling everything that isn't docs "infra".Right, I think I'll just drop the whole
sizecategory. It's somewhat indicated by an issue having other issues that block it, I don't like that it doesn't show up in the issue list, but it's not a big deal.Kinda, but there are issues that are low effort but absolutely not good first issues. Having "good first issue" as a separate label is meant to help new contributors, who don't really have any way to gauge what we mean by "effort/low".
The problem is that absolutely nobody will ever remember to switch the labels, so it's meaningless and just takes up space in the label list.
We only want two very simple things from issue labels:
We're not a company, we're "staffed" almost exclusively with volunteers who contribute in their spare time. KPIs are meaningless for us because I can't put someone on a PIP when their contributions drop too much compared to the previous quarter. So all having a ton of labels would do is annoy everyone. I also don't want issue states (beyond "needs doing/being done/finished" which is indicated without labels) because believe me, nobody would ever remember to switch the labels when they move an issue into another "state", so any data you might gather from these labels would be useless.
Alright, so, I've settled on this setup:
type/content
type/misc
effort/high
effort/medium
effort/low
priority/high
priority/medium
priority/low
good first issue
help wanted
meeting topic
needs changes
needs reporter feedback
needs review
I dropped "blocked" because it overlaps with "needs X".
I also tried to give them some reasonable color coding (green/yellow/red for priorities and efforts, red for "needs X", etc.)
The labels are now available on all repos within the docs organization, you should be able to see them in any issue.