Open-Source Wikis

/

Grafana

/

How to contribute

grafana/grafana

How to contribute

A practical, repository-oriented index of how to work in this codebase. The canonical contributor handbook lives in CONTRIBUTING.md and the contribute/ directory; this section summarizes and links the parts a code reader most often needs.

Picking up work

  • Browse open issues and filter by team / squad labels (e.g. area/dashboard, area/alerting). Most squads keep their own backlog labels.
  • Beginner-friendly issues are tagged beginner friendly.
  • The CLA must be signed before a PR can land — the CLA assistant prompts you on first PR.

PR mechanics

  • Branch naming is per-author preference; branches are merged via squash on main.
  • Frontend and backend changes ship as separate PRs when possible. They are released on different cadences and the CI pipelines differ.
  • Every code change should have tests when feasible — see Testing.
  • Public APIs (HTTP/REST or @grafana/* package exports) change via a documented review by the relevant squad.
  • Conventional commit prefixes are not enforced but most commit titles use a domain prefix: Dashboards: Fix …, Alerting: Add …, Docs: …. Look at git log --oneline for the local style.

Definition of done

A change is ready to merge when:

  1. CI is green (frontend tests + backend tests + e2e + lint).
  2. CODEOWNERS-required reviewers (.github/CODEOWNERS) have approved.
  3. New tests have been added for new behavior (see the patterns referenced in Testing).
  4. User-facing changes include a changelog entry — usually generated automatically from the PR title and labels.
  5. For schema or feature-flag changes, the relevant make gen-* outputs are committed.

Where things live

If you want to … Look here
Add an HTTP route pkg/api/ (handler) + pkg/api/api.go (registration)
Add a backend service New folder in pkg/services/<name>/, wire up in pkg/server/wire.go
Add a feature flag pkg/services/featuremgmt/registry.go + make gen-feature-toggles
Add a frontend feature New folder under public/app/features/<name>/
Add or modify a panel plugin public/app/plugins/panel/<name>/
Add or modify a datasource plugin public/app/plugins/datasource/<name>/ (frontend) and pkg/tsdb/<name>/ (backend)
Add a CUE-defined kind kinds/<name>/ + make gen-cue
Add a new app-platform resource apps/<name>/ + make gen-apps

Sub-pages

Built by Factory AutoWiki from public repository content. It is a generated preview for codebase exploration, not source-maintained documentation.

How to contribute – Grafana wiki | Factory