Nimblesite / Nimblesite/Basilisk

Replace CDDL/MPL deps to reach pure MIT/BSD/Apache license footprint

Open
#48 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
Rust
Stars
54
Forks
3
PR merge metrics
No merged PRs in 30d

Description

Background

Pre-publish license audit (May 2026) found two runtime Rust dependencies with non-permissive (weak copyleft) licenses statically linked into the `basilisk` and `basilisk-profiler-helper` binaries shipped in the VSIX:

Crate License Where
`inferno` 0.12 CDDL-1.0 direct dep in `crates/basilisk-lsp/Cargo.toml` (+ transitively via `py-spy`)
`colored` 3.x MPL-2.0 workspace dep declared in root `Cargo.toml`

Both are currently mitigated by shipping the `NOTICES` file inside the VSIX with full license text + a "modifications: NONE" statement (legally compliant). But this is paperwork we'd rather not maintain.

Goal

Drop both deps so Basilisk's runtime license footprint is pure permissive (MIT / BSD / Apache-2.0 / ISC / Unicode / Zlib). No CDDL, no MPL, no weak copyleft of any kind.

Tasks

  • Replace `colored` with `nu-ansi-term` (already in the dep tree, MIT) or `owo-colors` (MIT). Trivial drop-in — both expose similar `.color()`/`.bold()` builders. Audit every `use colored` site in `crates/basilisk-cli/` and swap.
  • Replace or drop `inferno`. Options:
    • Drop the flamegraph SVG generation feature entirely (write raw stack traces only, let users feed them into `flamegraph.pl` themselves).
    • Find a permissive flamegraph crate (none currently exist on crates.io that are well-maintained — verify).
    • Vendor just the SVG-emission code we use under a clean-room rewrite.
  • Verify `py-spy`'s transitive `inferno` dep gets pruned (it may use a feature flag we can disable).
  • Re-run `cargo tree | grep -E 'CDDL|MPL|GPL|LGPL'` — must come back empty.
  • Remove the `inferno` and `colored` sections from `NOTICES` once they're gone.
  • Update the third-party license audit doc.

Why this matters

  • Cleaner license story for downstream packagers (homebrew, distros, vendoring into proprietary projects).
  • One less thing to remember when adding the eventual full `THIRD_PARTY_LICENSES.txt` generator (`cargo-about`).
  • MPL/CDDL aren't VS Code Marketplace blockers but they do require source-availability statements, which gets tedious at scale.

Non-goals

  • This is hygiene, not a blocker. Publishing today is legally fine with the NOTICES file in place.

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 the dependency declarations in Cargo.toml and crates/basilisk-lsp/Cargo.toml, then audit every use of colored in crates/basilisk-cli/. Check the NOTICES file and the third-party license audit document, and inspect py-spy's inferno feature path. Done means the dependencies and notices are removed, the audit is updated, and cargo tree | grep -E 'CDDL|MPL|GPL|LGPL' returns empty.

Written by the indexing model from the issue text.

Assessment

Tech stack
rust
Domain
release, tooling
Issue type
Refactor
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.