uber-go

uber-go/guide

Makefile Apache-2.0 Dev Tools

The Uber Go Style Guide.

17.6k stars
1.8k forks
slow
GitHub +22 / week

17.6k

Stars

1.8k

Forks

38

Open issues

30

Contributors

AI Analysis

The Uber Go Style Guide is a canonical reference documenting coding patterns, conventions, and best practices used in Go development at Uber. It serves Go developers and teams seeking to adopt consistent, production-tested conventions for larger codebases and is particularly valuable for organizations building systems at scale. General Go learners benefit, but the guide is most useful for teams adopting standardized practices rather than beginners learning the language fundamentals.

Dev Tools Developer Tool Discovery value: 3/10
Documentation 9/10
Activity 6/10
Community 9/10
Code quality 5/10

Inferred from signals mentioned in the README (tests, CI, type safety) — not a review of the actual code.

Overall score 8/10

AI's overall editorial judgment — not an average of the bars above, can weigh other factors too.

style-guide go-conventions code-standards best-practices enterprise-patterns
Popular Well documented Community favorite Apache-2.0 licensed Niche/specialized use case Beginner friendly Production ready
Deep Analysis · Based on README and public signals
2w ago

Uber's internal Go style guide, now a de-facto reference for the broader Go community

uber-go/guide is a documentation-only repository containing Uber's codified Go coding conventions and patterns. It targets Go developers — from individual contributors to engineering teams — who want opinionated, battle-tested guidance on idiomatic Go. Its broad adoption is evidenced by 17,585 stars, 16+ community translations into languages including Chinese, Korean, Japanese, Russian, and Arabic, and its frequent citation in Go onboarding materials and engineering blogs. It matters because the official Go documentation deliberately avoids strong opinions on many style questions, leaving a gap this guide fills with concrete, example-driven guidance.

Origin

Created in November 2018, the guide was initially Uber's internal coding standard made public. It has been incrementally updated since, evolving alongside Go language changes and community feedback. The translation ecosystem grew organically.

Growth

Growth was driven primarily by the Go community's appetite for authoritative, opinionated style guidance beyond gofmt and go vet. Uber's engineering brand lent credibility, and community-driven translations multiplied reach across non-English-speaking developer communities. The 17k+ stars accumulated steadily rather than via any single viral event. Slow but consistent weekly star additions (12 in the last 7 days as of evaluation date) confirm it remains in active circulation rather than declining.

In production

The existence of 16+ third-party translations maintained by independent community contributors is a strong indirect signal of real-world adoption. The guide is widely referenced in Go engineering blog posts, onboarding documentation, and code review discussions. The Chinese translation repository (xxjwxc/uber_go_guide_cn) independently has tens of thousands of stars, corroborating demand. Direct production usage metrics are not tracked, but community footprint is substantial.

Code analysis
Architecture

The repository appears to be a single Markdown document (style.md) with a Makefile likely used for linting or generating rendered output. There is no application code. Architecture is not applicable in a conventional sense.

Tests

not documented in README

Maintenance

Last push was April 15, 2026 — approximately 10 weeks before the evaluation date. This indicates active, ongoing maintenance. For a documentation repository, this cadence is healthy and suggests the guide is being kept current with Go ecosystem changes.

Honest verdict

ADOPT IF: you are onboarding a Go team and need a well-reasoned, example-rich style reference to align code review standards without building one from scratch. AVOID IF: your team has already established a mature internal style guide and is looking for tooling rather than documentation. MONITOR IF: you follow Go language evolution closely — the guide's guidance on newer language features (generics, structured logging, etc.) may lag behind fast-moving areas.

Independent dimensions

Mainstream potential

4/10

Technical importance

6/10

Adoption evidence

8/10

Risks
  • The guide reflects Uber's internal context, which may not map cleanly to smaller teams, different domain constraints, or organizations using different Go versions.
  • Some recommendations may become outdated or contradict evolving official Go tooling guidance (e.g., go vet, staticcheck) without immediate correction.
  • Community translations are maintained independently and may drift out of sync with the English source, creating inconsistency for non-English readers.
  • The guide does not cover newer Go features comprehensively (e.g., post-1.18 generics patterns), and guidance gaps in fast-moving areas may go unfilled for extended periods.
  • As a documentation-only project, it has no enforcement mechanism — teams that adopt it still require discipline or supplementary tooling to apply it consistently.
Prediction

The guide will likely continue its slow, steady growth as a stable reference artifact. It is unlikely to see explosive growth but equally unlikely to become irrelevant given the Go community's lack of an official opinionated successor.

0 found this helpful

Newsletter

Get analyses like this every Monday

Free weekly digest of the most interesting open-source discoveries.

Languages

Makefile
100%

Information

Language
Makefile
License
Apache-2.0
Last updated
3mo ago
Created
93mo ago
Analyzed with
anthropic/claude-haiku-4-5

Stars over time

Loading…

Contributors over time

Top 100 contributors only — repos with more will plateau at 100.

Loading…

Similar repos

thoughtbot

thoughtbot/guides

This is a comprehensive style guide and best-practices collection maintained by...

9.6k Ruby Dev Tools
rubocop

rubocop/ruby-style-guide

This is a community-driven Ruby coding style guide that documents best...

google

google/styleguide

Google Style Guides is a centralized collection of style guides for 16+...

39.4k HTML Dev Tools
uber-go

uber-go/fx

Fx is a dependency injection framework for Go that helps eliminate global state...

7.6k Go Dev Tools
github

github/opensource.guide

Open Source Guides is a curated collection of educational resources and best...

15.6k HTML Education
vs. alternatives
google/styleguide (Go section)

Google's style guide is more prescriptive and institutionally focused on internal Google patterns. Uber's guide tends to be more accessible with side-by-side good/bad examples, which many developers find more actionable.

effective-go (golang.org)

Effective Go is the canonical official resource but is deliberately not opinionated on many contested patterns and has not been substantially updated in years. Uber's guide fills the opinionated gap left by Effective Go.

thoughtbot/guides

Thoughtbot's guides cover multiple languages and frameworks with similar intent, but have no Go-specific coverage and serve a different (Rails-centric) community.

rubocop/ruby-style-guide

The Ruby style guide is analogous in purpose and community standing within the Ruby ecosystem. Both occupy the 'de-facto community reference' position in their respective languages.

preslav/golines (and similar linters)

Automated linters enforce subsets of style mechanically. The Uber guide complements rather than competes with linters — it covers patterns and reasoning that automated tools cannot enforce.