You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Open-source license compliance requires the source repository itself to carry a complete, redistributable notice for the third-party components it bundles. Apache License 2.0 Section 4(d) requires attribution notices to be passed along with redistribution, and the notice must accurately reflect what is actually shipped. TiFlash's root NOTICE was last updated in 2022 and no longer reflected the current C/C++ source inputs; the name also diverged from the ThirdPartyNotices.txt convention.
Goals
Maintain a root ThirdPartyNotices.txt in the repository listing third-party components: names, versions, license identifiers, and license texts, so it can be redistributed with source bundles and release artifacts.
The content must be traceable to a fixed source commit and fixed generation inputs (pinned tool version, audited overrides).
Updates should be generated by an automated process (periodic, e.g. weekly) rather than manual editing, without blocking on dependency changes.
Approach
Collect components and license evidence from the dependency graph (go list -deps ./...), excluding the standard library and first-party modules.
The generator is only responsible for discovering and extracting evidence; it does not decide legal matters. Cases it cannot decide (missing license metadata, unusual license choices) are handled by audited, exact-version overrides owned by humans. A renderer produces the final stable file; raw generator output is never used directly as the final notice.
Components with unresolved evidence must be recorded explicitly for review, never silently dropped.
Replaces the root NOTICE with a self-contained root ThirdPartyNotices.txt.
Records the current gitlink revision and pinned source/license URLs for 45 public third-party contrib/ submodules; covers 60 C/C++ source components with 64 unique reproduced license or upstream-NOTICE texts (AWS CRT, gRPC, BoringSSL fiat code, QPL ISA-L, etc.).
Source-only scope: Rust/Cargo, first-party and private submodules, system/toolchain libraries, container images, and package inputs require release-target-specific notice assembly.
Follow-ups: wire the generation into a periodic CI job that opens update PRs, and keep the override/policy inputs versioned in the repository.
Background
Open-source license compliance requires the source repository itself to carry a complete, redistributable notice for the third-party components it bundles. Apache License 2.0 Section 4(d) requires attribution notices to be passed along with redistribution, and the notice must accurately reflect what is actually shipped. TiFlash's root
NOTICEwas last updated in 2022 and no longer reflected the current C/C++ source inputs; the name also diverged from theThirdPartyNotices.txtconvention.Goals
ThirdPartyNotices.txtin the repository listing third-party components: names, versions, license identifiers, and license texts, so it can be redistributed with source bundles and release artifacts.Approach
go list -deps ./...), excluding the standard library and first-party modules.Scope of this track
NOTICEwith a self-contained rootThirdPartyNotices.txt.contrib/submodules; covers 60 C/C++ source components with 64 unique reproduced license or upstream-NOTICE texts (AWS CRT, gRPC, BoringSSL fiat code, QPL ISA-L, etc.).