Files
corsairctl/DECISIONS.md
T
nevaforget c38996b8a4 docs: add publish plan and decision log
PLAN.md: 5-phase plan to publish as a multi-protocol headset tool
(rename away from Corsair trademark, abstract device layer, port
additional protocols, publish, upstream to HeadsetControl).

DECISIONS.md: rationale for GPLv3 relicense, naming constraints, and
the multi-protocol architecture.
2026-06-10 16:37:08 +02:00

1.7 KiB
Raw Blame History

Decisions

2026-04-09 License: GPLv3 instead of MIT

  • Who: Dom, F.R.I.D.A.Y.
  • Why: Plan to support multiple headset protocols using HeadsetControl (GPLv3) as reference for protocol implementations. HeadsetControl's code is community-tested — reimplementing blind without hardware to test against is impractical. GPL copyleft is acceptable since the tool is open source on GitHub anyway.
  • Tradeoffs: MIT would allow proprietary use, but we gain access to tested protocol implementations. GPL has no practical downside for a CLI tool distributed as source.
  • How: GPLv3-or-later in Cargo.toml and LICENSE file.

2026-04-09 Tool name: must avoid "Corsair" trademark

  • Who: Dom, F.R.I.D.A.Y.
  • Why: "Corsair" is a registered trademark. Publishing under corsairctl risks trademark issues. "Bragi" is also risky (Bragi GmbH, Danish audio company).
  • Tradeoffs: headsetctl is descriptive and follows Linux naming conventions (bluetoothctl, brightnessctl). Less specific but safer.
  • How: Rename TBD — to be decided as part of the publish plan.

2026-04-09 Multi-protocol architecture using HeadsetControl as reference

  • Who: Dom, F.R.I.D.A.Y.
  • Why: Each headset vendor uses a proprietary HID protocol. No common standard exists. HeadsetControl already has tested implementations for SteelSeries, Logitech, HyperX, Corsair, etc.
  • Tradeoffs: Porting C code to Rust takes effort, but the protocol logic is the hard part (byte sequences, timing, quirks) — and that's already documented in HeadsetControl's source.
  • How: Modular backend architecture — each protocol as a separate module behind a common trait. Bragi is the first backend; others follow.