roc-lang / roc-lang/basic-cli

Generate complete third-party license notices

Open
#446 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

ci high priority
Dominant language
Rust
Stars
121
Forks
45
Avg merge
18h 43m
Merged PRs (30d)
10

Description

Context

#417 ensured that THIRD_PARTY_LICENSES.md is included in release bundles. The remaining gap is completeness.

The current file contains notices only for:

  • musl libc;
  • LLVM libunwind.

The statically linked host also includes direct and transitive Rust crates such as crossterm, Hyper, rustls, ring, Tokio, and libsqlite3-sys. The Windows build copies a set of Windows SDK import libraries into the platform bundle in scripts/build.py:200-207.

This issue is about producing and validating a complete notice set, not merely ensuring the existing file is archived.

Suggested direction

Use a reproducible tool such as cargo-about or a suitably configured cargo-deny license report to generate notices from Cargo.lock. Add any non-Cargo inputs separately:

  • musl and crt objects;
  • LLVM libunwind;
  • bundled SQLite/public-domain status;
  • Windows SDK libraries and applicable redistribution terms;
  • the external Roc HTTP package if its contents are redistributed transitively.

Have the release workflow fail when the generated notice differs from the committed/bundled notice.

This should receive an appropriate maintainership/legal review; the issue does not assume a particular legal conclusion for Windows SDK files.

Acceptance criteria

  • Every statically linked Cargo dependency is represented in generated license metadata/notices.
  • Non-Cargo binary inputs have documented source, version/provenance, and license status.
  • Windows SDK redistribution is explicitly reviewed and documented.
  • CI detects stale or incomplete notices.
  • The generated notice remains included in the final .tar.zst bundle.
  • The generation/update procedure is documented for contributors.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with Cargo.lock and the existing THIRD_PARTY_LICENSES.md, then inspect scripts/build.py:200-207 for the Windows SDK inputs. Research a reproducible license-report workflow and the listed non-Cargo dependencies, including the external Roc HTTP package. Done means complete metadata, documented provenance and review status, stale-notice detection, bundle inclusion, and contributor documentation.

Written by the indexing model from the issue text.

Assessment

Tech stack
rust
Domain
ci-cd, cli, documentation, release
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
42/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.