|
| 1 | +# SimpleX Network Protocol Specifications — Governance and Evolution (draft) |
| 2 | + |
| 3 | +## Why this document exists |
| 4 | + |
| 5 | +SimpleX Network protocol specifications must evolve as the network grows. This document defines how specifications change, who governs those changes, and how the history of changes is preserved. |
| 6 | + |
| 7 | +### Lessons from the web: why ratcheted governance matters |
| 8 | + |
| 9 | +The web's governance history demonstrates both the necessity of consortium governance and the dangers of getting the transition wrong. |
| 10 | + |
| 11 | +[Tim Berners-Lee invented the web in 1991](https://home.cern/science/computing/birth-web/short-history-web). [Netscape took over in 1994](https://en.wikipedia.org/wiki/Netscape_Navigator), driving rapid innovation as a single company — SSL, cookies, JavaScript, and the features that made the web commercially viable. In 1994, [W3C was founded](https://www.w3.org/about/history/) as a consortium hosted across multiple independent institutions (MIT in the US, INRIA/ERCIM in Europe, Keio University in Japan, later Beihang University in China) to govern web standards. |
| 12 | + |
| 13 | +The transition from company-led innovation to consortium governance was abrupt rather than gradual. Netscape's decline (accelerated by the [browser wars](https://en.wikipedia.org/wiki/Browser_wars) and [AOL acquisition](https://cybercultural.com/p/1999-the-fall-of-netscape-and-the-rise-of-mozilla/)) transferred control to a standards body that prioritized process over progress. The result was [a lost decade of web stagnation](https://eev.ee/blog/2020/02/01/old-css-new-css/): CSS 2.0 shipped in 1998; CSS 2.1 didn't reach Candidate Recommendation until 2004 and wasn't finalized until 2011. W3C pursued XHTML and rejected proposed enhancements to HTML, until frustrated engineers from Apple, Mozilla, and Opera formed [WHATWG in 2004](https://en.wikipedia.org/wiki/WHATWG) to build HTML5 outside W3C's process. The abrupt governance transition, without a mechanism to balance community guarantees against the imperative to continue evolving the product at pace, dramatically slowed web evolution at the time it was needed most. |
| 14 | + |
| 15 | +Then in 2023, [W3C restructured from a multi-host consortium into a single 501(c)(3) nonprofit entity](https://www.w3.org/press-releases/2023/w3c-le-launched/) — W3C Inc, incorporated in the US. The previous structure distributed governance across four independent university hosts in different countries, making capture by any single entity structurally difficult. The new structure concentrates governance in a single legal entity with a board of directors. While presented as modernization, this effectively ended the decentralized consortium model that had protected web standards for nearly three decades. |
| 16 | + |
| 17 | +### The governance double ratchet |
| 18 | + |
| 19 | +SimpleX follows the same Netscape-to-consortium evolution path, but with two ratchets designed to prevent both failure modes — stagnation from premature governance transfer, and capture from governance centralization: |
| 20 | + |
| 21 | +- **Licensing ratchet**: all contributed IP is licensed under AGPLv3 (software) and Creative Commons (documentation), perpetually and irrevocably. What is licensed cannot be unlicensed. If a Party transfers Licensed IP, the licensing obligations transfer with it. |
| 22 | + |
| 23 | +- **Governance ratchet**: power can be given to the SimpleX Network Consortium, but never taken back. The Consortium Agreement requires unanimous approval of all Governing Parties for changes to the agreement itself, IP policy, and admission or removal of parties. |
| 24 | + |
| 25 | +The ratcheted transition is not just a clever device — it is a historically proven imperative. It allows the company to continue driving rapid product innovation (as Netscape did for the web) while incrementally and irreversibly transferring governance to the consortium, without the abrupt handover that stalled web evolution or the centralization that later undermined it. |
| 26 | + |
| 27 | +### Specification governance via the Consortium Agreement |
| 28 | + |
| 29 | +The SimpleX Network Consortium Agreement (being deployed in 2026) establishes two levels of intellectual property governance: **Licensed IP** (all contributed protocol specifications, software, and documentation, licensed perpetually and irrevocably) and **Core IP** (the subset essential to the network, requiring consortium governance to change). The distinction between these levels and how they map to the RFC process is described in [Standard vs Core specifications](#standard-vs-core-specifications) below. |
| 30 | + |
| 31 | +## Specification change process: protocol specifications and RFCs |
| 32 | + |
| 33 | +Protocol knowledge lives in two places: |
| 34 | + |
| 35 | +### `protocol/` — Consolidated specifications |
| 36 | + |
| 37 | +Each file is a complete, self-contained description of a protocol as it exists today. Like consolidated legislation in the UK legal system: the full current law in one document, not a patchwork of amendments. |
| 38 | + |
| 39 | +Consolidated specifications are maintained on every code change that affects protocol behavior. With LLMs, the cost of maintaining consolidated documents collapses — reworking prose to incorporate a new RFC is now inexpensive relative to the value of a single authoritative document per protocol. |
| 40 | + |
| 41 | +Implementers read `protocol/`. They should never need to reconstruct current behavior from a base spec plus a chain of RFCs. |
| 42 | + |
| 43 | +### `rfcs/` — Protocol evolution commits |
| 44 | + |
| 45 | +Each RFC describes a single change to a protocol specification. RFCs are the atomic unit of protocol evolution — analogous to commits in version control, or amending acts in legislation. |
| 46 | + |
| 47 | +An RFC is not part of the protocol specification. It becomes part of the specification only when embedded into the consolidated `protocol/` document. The RFC itself remains as a permanent historical record of what changed, when, and why. |
| 48 | + |
| 49 | +## RFC lifecycle |
| 50 | + |
| 51 | +``` |
| 52 | + ┌——> done/ ——> standard/ |
| 53 | +draft (root) ——>──┤ |
| 54 | + └——> rejected/ |
| 55 | +``` |
| 56 | + |
| 57 | +### Draft — `rfcs/*.md` |
| 58 | + |
| 59 | +A proposal for a protocol change. Not yet implemented. Active proposals live in the `rfcs/` root directory. |
| 60 | + |
| 61 | +Named by proposal date: `YYYY-MM-DD-topic.md`. |
| 62 | + |
| 63 | +A draft may be rejected if the proposal is considered but not accepted for implementation. |
| 64 | + |
| 65 | +### Done — `rfcs/done/` |
| 66 | + |
| 67 | +Implemented in code. The protocol change described by this RFC exists in the codebase, but the RFC has not yet been verified against the actual implementation (code may have diverged from the proposal during implementation). |
| 68 | + |
| 69 | +### Standard — `rfcs/standard/` |
| 70 | + |
| 71 | +Verified against the actual implementation and synchronized with code. The RFC accurately describes what was implemented. This is a permanent historical record — standard RFCs are never modified or removed. |
| 72 | + |
| 73 | +On promotion to standard, the RFC is: |
| 74 | +1. Renamed from proposal date to standardization date: `YYYY-MM-DD-topic.md` (new date, same topic slug) |
| 75 | +2. Updated with a document history header capturing the full lifecycle |
| 76 | +3. Embedded into the corresponding `protocol/` consolidated specification |
| 77 | + |
| 78 | +The `protocol/` document references embedded RFCs by name (e.g., "Private message routing added by RFC 2023-09-12-second-relays, standardized 2026-XX-XX"), similar to UK legislation citing the amending act for each clause. |
| 79 | + |
| 80 | +Protocol version numbers make it clear which RFCs are included in which protocol revision — no separate tracking is needed. |
| 81 | + |
| 82 | +### Rejected — `rfcs/rejected/` |
| 83 | + |
| 84 | +Draft proposals that were considered but not accepted for implementation. Only drafts move to rejected — once an RFC is implemented (done/), it proceeds to standard/ after verification. Preserved for historical record of design decisions. |
| 85 | + |
| 86 | +### Document history header |
| 87 | + |
| 88 | +Every RFC in `standard/` carries a history header: |
| 89 | + |
| 90 | +``` |
| 91 | +--- |
| 92 | +Proposed: YYYY-MM-DD |
| 93 | +Implemented: YYYY-MM-DD |
| 94 | +Standardized: YYYY-MM-DD |
| 95 | +Protocol: simplex-messaging v9 (or whichever protocol this amends) |
| 96 | +--- |
| 97 | +``` |
| 98 | + |
| 99 | +## Governance |
| 100 | + |
| 101 | +SimpleX Network follows the Netscape-to-W3C evolution path, with ratcheted rather than abrupt transitions: |
| 102 | + |
| 103 | +| Phase | Period | Governance | Development process | |
| 104 | +|-------|--------|-----------|-------------------| |
| 105 | +| Protocol invented | 2020 | Two people | Prototype developed | |
| 106 | +| SimpleX Chat Ltd | 2022 | One company | Product-first: code leads, specs follow | |
| 107 | +| SimpleX Network Consortium | 2026 | Agreement of SimpleX Chat Ltd and non-profit entities | Product-first for standard; standards-first for core | |
| 108 | +| Decentralized governance | Future | TBD (DAO research ongoing) | Standards-first | |
| 109 | + |
| 110 | +### Current: product-first development |
| 111 | + |
| 112 | +SimpleX protocols currently follow a product-first development process: requirements drive code, code drives specification. RFCs are written as design proposals before implementation, but implementation details are figured out in code. Consolidated protocol specifications in `protocol/` are then amended to match the implementation. |
| 113 | + |
| 114 | +This process is governed by SimpleX Chat Ltd as the IP Holding Party under the Consortium Agreement. |
| 115 | + |
| 116 | +Any Specification Author (as defined in the Consortium Agreement) may propose RFCs. Acceptance and standardization decisions are made by SimpleX Chat Ltd during the current product-first phase. |
| 117 | + |
| 118 | +### Standard vs Core specifications |
| 119 | + |
| 120 | +The distinction between standard and core maps directly to the two levels of IP governance in the Consortium Agreement, and reflects the difference between product-first and standards-first development: |
| 121 | + |
| 122 | +**Standard** — Licensed IP, not yet under consortium governance. Governed by the company. |
| 123 | + |
| 124 | +All contributed protocol specifications are Licensed IP under the Consortium Agreement. Standard specifications follow product-first development: the company can evolve them with product needs, and they must be maintained on every code change that affects protocol behavior. |
| 125 | + |
| 126 | +Standard specifications live in `rfcs/standard/` and `protocol/`. |
| 127 | + |
| 128 | +**Core** — Governed IP, governed by the consortium. |
| 129 | + |
| 130 | +A subset of standard specifications will be designated as Core IP under the Consortium Agreement. Core specifications will follow standards-first development: specification changes must be agreed via Governing Decision before code changes. |
| 131 | + |
| 132 | +This is a legally binding commitment. Once Licensed IP is included in Core IP, the company that owns the code cannot unilaterally change it — even though they own the code, the Consortium Agreement requires a Governing Decision for any change to Core IP. This protects the fundamental properties of the network (privacy, security, decentralization) from unilateral modification by any single party. |
| 133 | + |
| 134 | +The designation of specific specifications as Core IP is itself a Governing Decision requiring unanimous approval. The transition will happen incrementally as protocols stabilize — the governance ratchet ensures that each designation is irreversible. |
| 135 | + |
| 136 | +The exact mechanism for distinguishing core from standard within the RFC and protocol folder structure is TBD — it will be decided as the first protocols are designated as Core IP. |
| 137 | + |
| 138 | +### Future: standards-first development |
| 139 | + |
| 140 | +As more protocols are designated as Core IP, development naturally transitions to a standards-first process for a growing portion of the protocol suite. The governance ratchet ensures this transition is gradual and irreversible — each protocol that becomes core gains the protection of consortium governance permanently, while remaining standard protocols continue to evolve at product pace. |
| 141 | + |
| 142 | +## Current state |
| 143 | + |
| 144 | +| Location | Contents | Count | |
| 145 | +|----------|----------|-------| |
| 146 | +| `protocol/` | Consolidated specs (SMP v9, Agent v5, XFTP v2, XRCP v1, Push v2, PQDR v1) | 6 specs + overview | |
| 147 | +| `rfcs/` root | Active draft proposals | 19 | |
| 148 | +| `rfcs/done/` | Implemented, not yet verified | 25 | |
| 149 | +| `rfcs/standard/` | Verified against implementation | (to be populated) | |
| 150 | +| `rfcs/rejected/` | Draft proposals not accepted | 7 | |
0 commit comments