trailofbits / trailofbits/coop

Consider publishing to crates.io for cargo install coop

Open
#392 0 comments 1 reaction 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
Rust
Stars
243
Forks
13
Avg merge
1d 20h
Merged PRs (30d)
30

Description

coop currently installs via install.sh + release tarballs (with build-provenance attestation). Consider also publishing to crates.io so users can cargo install coop.

Considerations:

  • Publish under the trailofbits crates.io org/owner (per ToB packaging convention: make trailofbits an owner).
  • Cargo.toml would need the usual publish metadata: repository, homepage, readme, keywords, categories (already has description and license).
  • src/lib.rs exists only so tests/fuzz can import internals and is explicitly not a curated public API — decide whether publishing an app crate with an incidental lib target is acceptable, or restrict to the binary.
  • Wire a cargo publish step into the existing tag-driven release workflow (.github/workflows/release.yml) so it stays in sync with GitHub releases.
  • Cross-platform note: cargo install builds from source on the user's machine, so the Firecracker/Lima backend selection and any build.rs/cross-compilation assumptions must work in a plain cargo install build.

This is optional (the checklist only calls for a package-manager account "when packaging"); tarball + install.sh already covers distribution.

Context: identified during the open-sourcing readiness review as a judgment call, now tracked per request.

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 by reviewing Cargo.toml, src/lib.rs, and .github/workflows/release.yml, then check whether a plain cargo install build supports the documented Firecracker/Lima backend selection and cross-platform assumptions. Done means the crates.io packaging decision is resolved, including the incidental library target, and any accepted publication path is synchronized with the tag-driven release process.

Written by the indexing model from the issue text.

Assessment

Tech stack
github-actions, rust
Domain
build-system, cli, release
Issue type
Feature
Difficulty
4/5
Estimated time
3-5 days
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
48/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.