nirc-rs/NOTICES.md

4.7 KiB

NOTICES — nirc-rs

This file collects project-level notices that affect the legal or operational status of nirc-rs features. It is intentionally separate from CHANGES.md (which is a release-engineering log) so that legal/compliance readers can find these notes quickly.


BitChat protocol module — withdrawn in 0.10.2

Status: Removed. Affected versions: All releases up to and including 0.10.1 contained a src/protocols/bitchat.rs module. It was removed in 0.10.2. Date of removal: 2026-07.

What was removed

  • src/protocols/bitchat.rs — the entire protocol backend (libp2p-based P2P chat with mDNS discovery, gossipsub, noise handshake).
  • ProtocolType::BitChat enum variant and all of its match arms in tag(), label(), badge(), naim_color(), dispatcher routing, command parsing, TUI color tables, history-tag mapping, log sanitiser, and the F1 menubar "Connect → BitChat…" entry.
  • Command::BitChatPeers, BitChatDm, BitChatSendFile variants and their /bitchat … parser arms.
  • ProtocolCommand::BitChat(BitChatCommand) dispatcher variant.
  • The connect_bitchat() method on Dispatcher.
  • The libp2p dependency in Cargo.toml. libp2p was only consumed by bitchat.rs; no other module imports it. Dropping it significantly reduces the dependency tree and compile time. The Noise primitive in src/engine/crypto.rs uses x25519-dalek + aes-gcm directly (not libp2p), so ADC's encrypted client-client connections still work.

Why it was removed

The BitChat project — Jack Dorsey's recently-announced P2P messaging protocol — is the subject of active litigation in the Indian courts. The legal status of the protocol specification, the reference implementation, and downstream reimplementations such as the one previously shipped in nirc-rs is currently unclear. Specifically:

  • Court filings have not yet established whether the BitChat protocol itself is encumbered by intellectual-property claims, or whether only the reference client is affected.
  • There is live ambiguity about whether shipping a third-party implementation of the protocol exposes downstream distributors to secondary liability.
  • The reference implementation's license terms have changed during the dispute, and it is not yet clear which license applies to derivative works that were created before the change.

Pending clarity on these points, we have removed the BitChat module from nirc-rs entirely. The risk of shipping an encumbered protocol backend outweighs the benefit of offering P2P chat that users can obtain from other sources in the meantime.

What this means for users

  • Existing configs: Any [[servers]] entry in ~/.nirc/config.toml with protocol = "bitchat" will be silently ignored at load time. You do not need to edit your config file, but you may remove the entries to clean it up.
  • Existing history files: Per-tab scrollback files in ~/.nirc/history/ that were tagged P2P:<name> (the BitChat tab-key prefix) will fail to match any known protocol on load and will be silently assigned to the Status tab. The files themselves are not deleted; you can read them with a text editor if you need to recover the content.
  • Existing tabs: If you were connected to a BitChat network when you last exited nirc-rs 0.10.1 or earlier, the tab will not reconnect on startup. It will appear as an inert entry in the winlist until you /close it.
  • No data loss: Your IRC / Matrix / ADC / Discord / Stout / Spacebar / Nerimity history, configs, and credentials are unaffected.

Re-evaluation criteria

We will re-evaluate restoring the BitChat module when all of the following are true:

  1. The India courts case has reached a final judgement (not an interim order), OR the parties have publicly settled and the settlement terms are clear about downstream-implementation rights.
  2. The BitChat reference implementation's license is unambiguous and permits third-party reimplementations.
  3. There is at least one independent legal opinion (not from a party to the litigation) concluding that shipping a clean-room reimplementation of the protocol is safe.

Until then, the module will remain withdrawn. If you want P2P chat in nirc-rs in the meantime, the ADC protocol's client-client connections offer a similar feature set (direct file transfer, direct messages) over a hub-and-spoke topology rather than full mesh P2P.

Acknowledgement

We acknowledge the work of the original BitChat team and the broader P2P messaging community. The decision to withdraw the module is purely a legal-risk mitigation, not a commentary on the technical merits of the protocol or the people who built it.


Future notices

New entries will be appended below this line as needed.