Table of Contents
This document explains how we handle issue triage and scheduling in the Go project's issue tracker.
Issue States
Any issue must be in one of the following states. Project contributors move issues from one state to another. The intent behind these explicit states is to describe the (minimum) next steps required to bring the issue to resolution. Issues may move between states in any order, as dictated by the needs of the particular issue.
New
- The issue has been filed.
- May not be correctly formatted (title, etc).
- To transition from this state, someone must clean up the issue report and optionally CC people who might best investigate or fix it.
Needs Investigation
- Is correctly formatted.
- The title has a path prefix.
- The body describes the issue.
- Has a milestone.
- If the issue is not important, it is ok to set the milestone to
Backlog. Otherwise, set it to the next upcoming release.
- If the issue is not important, it is ok to set the milestone to
- Has the label
NeedsInvestigation.- May also have the label
WaitingForInfoif the investigator is waiting for more information from someone (e.g., the issue reporter).
- May also have the label
- To transition from this state, someone must examine the issue and confirm that it is valid and not a duplicate of an existing issue.
Needs Decision
- The issue is real, but we're not sure what action to take.
- The issue can be addressed in Go 1.
- Feedback is required from experts, contributors, and/or the community before a fix can be made.
- Note that the majority of issues will never transition to this state, as most of the time the decision is an obvious “Yes, this should be fixed.”
- Has a milestone.
- Has the label
NeedsDecision.- May have the label
WaitingForInfo. - May have the label
Blockedif forward progress depends upon the resolution of another issue or the release of a future version of Go. An accompanying comment should explain the blockage. - Must not have the label
Go2. (Those issues are handled separately.)
- May have the label
- To transition from this state, someone must decide how the issue is to be resolved.
- If the decision is complicated, the issue may be given a
Proposallabel. The issue remains in this state until the proposal process is complete, and moves toNeedsFixif approved.
- If the decision is complicated, the issue may be given a
Needs Fix
- The path to resolution is known, but the work has not been done.
- Has a milestone.
- Has the label
NeedsFix.- May have the labels
BlockedorWaitingForInfo.
- May have the labels
- To transition from this state, someone must do the work to fix the issue.
Fixed
- The issue is resolved. No further attention is required.
- The issue is closed.
Issues move from one state to another where appropriate. For example, a contributor may file an issue, assign it to themselves, and immediately apply the NeedsFix label. Or, an issue may go from NeedsDecision to NeedsFix, only to later move back to NeedsDecision as complexities arise.
An issue may be closed at any time, with a comment to indicate the reason for closure ("fixed by …", "duplicate of …", "working as intended", etc).
At any state (except New) the issue may be assigned to someone. Unassigned issues are considered available for anyone to address.
Milestones
Milestones describe the timeline for issue resolution.
-
Go1.x.y
Planned to be fixed in release 1.x.y.
-
Go1.x.y with release-blocker label
Must be fixed for release 1.x.y, or explicitly postponed to a later release.
-
Proposal
Is a proposal and does not pertain to a specific release.
-
Backlog
Someone has plans to work on it, but it is not assigned to a release milestone yet.
-
Unplanned
Might be fixed at some point, but nobody is planning to do it.
-
Unreleased
Is not included in or needed by a release.
-
Gccgo
For gccgo issues.
-
Go2
Deferred until Go 2.
Additional milestones may be used to manage specific project work.
The label "Soon" is used independently of milestones to indicate that the issue is time-sensitive.
AVX512 Articles AssemblyPolicy Benchmarks Blogs Books BoundingResourceUse CSSStyleGuide ChromeOS CodeReview CodeReviewComments CodeReviewConcurrency CodeTools Comments CommitMessage CommonMistakes CompilerOptimizations Conferences Configuring GoLand for WebAssembly Contributing to gopls CoreDumpDebugging Courses CreatingSubRepository CustomPprofProfiles Darwin DashboardBuilders Deprecated DesignDocuments Diagnostics Download build farm failed logs and debugging DragonFly BSD ErrorValueFAQ Errors ExperienceReports FileTreeDocumentation FreeBSD FromXToGo Frozen Fuzzing trophy case GOPATH Gardening GcToolchainTricks GccgoCrossCompilation GerritAccess GerritBot GithubAccess Go 1.10 Release Party Go 1.6 release party Go 1.8 Release Party Go Community Slides Go Release Cycle Go2 Go2ErrorHandlingFeedback Go2ErrorValuesFeedback Go2GenericsFeedback GoArm GoForCPPProgrammers GoGenerateTools GoGetProxyConfig GoGetTools GoMips GoStrings GoTalks GoUserGroups GoUsers Gomote Gopher HandlingIssues Home HostedContinuousIntegration How to ask for help HowToAsk IDEsAndTextEditorPlugins InstallFromSource InstallTroubleshooting InterfaceSlice InvalidFlag Iota Learn LearnConcurrency LearnErrorHandling LearnServerProgramming LearnTesting Linux LinuxKernelSignalVectorBug Livestreams LockOSThread MacOS12BSDThreadRegisterIssue MethodSets MinimumRequirements MinorReleases Mobile Modules MutexOrChannel NativeClient NetBSD NewSpeakers NoMeToo NoPlusOne NonEnglish OpenBSD PackagePublishing PanicAndRecover PerfDashboard Performance Plan9 Podcasts PortingPolicy PriorDiscussion Projects Proposals ProviderIntegration Questions Quiet Weeks Range RateLimiting ResearchPapers Resolving Problems From Modified Module Path Resources for slog SQLDrivers SQLInterface Screencasts SettingGOPATH SignalHandling SimultaneousAssignment SliceTricks SlowBots Solaris Spectre Spelling Style SuccessStories Switch TableDrivenTests TargetSpecific TestComments TestFailures Timeouts Training Ubuntu Watchflakes WebAccessibilityResourcesAndTips Well known struct tags WhyGo Windows WindowsBuild WindowsCrossCompiling WindowsDLLs X Repositories _Footer cgo golang tools gopherbot gopls integrator FAQ gopls heapdump13 heapdump14 heapdump15 through heapdump17 heapdump15