-
Notifications
You must be signed in to change notification settings - Fork 58
Description
Note
This issue relates to an LFX mentorship proposal for Term 01 - 2026 March - May, see cncf/mentoring/pull/1594
Overview
Maintenance of a stable Go library often involves value-judgement calls regarding what changes can impact downstream consumers. While some existing tooling like apidiff can go some way towards preventing breakage, these tools work purely in terms of API-level breakage such as changing the type of a symbol. Inspired by tooling in other language ecosystems such as Rust this proposal sets out to build a tool that can give statistical information about the impact of any change on downstream consumers by running the build pipelines and test suites of dependents before and after a particular change.
Once a minimum tool is available, the initial goal is to evaluate using this tool in the OpenTelemetry Collector and OpenTelemetry Go CI, starting just with the internal dependencies between each repository and its 'contrib' counterpart.
Tool design
The tool will have three subcommands:
- A subcommand for gathering the list of dependents of a module (by using e.g. pkg.go.dev, x/pkgsite: implement HTTP/MCP API for pkg.go.dev golang/go#76718 if available, index.golang.org or https://docs.deps.dev/api/v3alpha/#getdependents)
- A subcommand for securely running the test suite of a list of dependents of a module and generating an artifact describing the results
- A subcommand for comparing the results of two test suites and providing a statistical summary