Cable is a protocol for peer-to-peer group chat. It operates differently from the traditional server-client model, wherein the server is a centralized authority. Instead, in Cable, every node in the network is equal to each other. Nodes of a cabal (i.e. a particular group chat) share data with each other in order to build a view of the state of that cabal.

Relevance to permacomputing

Cable is designed to be:

  • fairly simple to implement in any language, with minimal dependencies
  • general enough to be used across different network transports
  • useful, even if written as a partial implementation
  • efficient in its use of network resources, by syncing only the relevant subsets of the full dataset, and being compact over the wire
  • not specific to any particular kind of database backend

As a protocol, Cable emphasizes efficient use of resources and bytes. Similarly to Gemini and Uxn, it has been developed to be implementable across many different scales, levels of fidelity, and is designed to agnostic/adaptable to many systems.

As a project it is built around values and goals that overlap significantly with permacomputing. It prioritises collaboration within a scrappy community of likeminded people over arbitrary technical contributions.

Limits and challenges

Cable makes use of modern cryptographic primitives as part of the protocol design. While these have been chosen carefully to enable widespread implementation in modern (C and onward) programming language ecosystems, the choices still likely limits protocol implementation on retrocomputing-adjacent hardware and languages. Similarly, at time of writing, and while this is not a limitation of the protocol per say, the available clients do not reflect the potential diversity of implementation and platforms on which it could be implemented and used.

Links