aboutsummaryrefslogtreecommitdiffstats
path: root/README.md
diff options
context:
space:
mode:
Diffstat (limited to 'README.md')
-rw-r--r--README.md44
1 files changed, 43 insertions, 1 deletions
diff --git a/README.md b/README.md
index a3d0f06..3c4cbd1 100644
--- a/README.md
+++ b/README.md
@@ -30,6 +30,9 @@ feature, and they are off on the reference deployment, [meshbay.org](https://mes
- **How it works:** [`docs/MESHBAY_DESIGN.md`](docs/MESHBAY_DESIGN.md) is the
architecture specification, and
[`docs/MESHBAY_NODE_PROTOCOL.md`](docs/MESHBAY_NODE_PROTOCOL.md) the wire format.
+- **Programming against it:** [`docs/MESHBAY_HTTP_API.md`](docs/MESHBAY_HTTP_API.md)
+ lists every route of the hub and of the node's control API, and
+ [`examples/`](examples/) has small Python programs that use them.
## Repository layout
@@ -39,7 +42,8 @@ feature, and they are off on the reference deployment, [meshbay.org](https://mes
| `packages/meshbay-hub/` | Hub server (FastAPI + PostgreSQL) and the web client it serves |
| `packages/meshbay-node/` | Node daemon, its CLI and its local control UI |
| `packaging/` | `.deb`, `.rpm` and Windows packaging, systemd units, Caddy and firewall configuration |
-| `docs/` | Design specification, protocol, user and operator guides |
+| `docs/` | Design specification, protocol, HTTP API, user and operator guides |
+| `examples/` | Small Python programs using the hub, a node and its control API |
| `man/` | Manual page for `meshbay-node` |
| `site/` | Static website pages (not deployed) |
| `poc/` | Early proof-of-concept scripts, kept for reference |
@@ -57,6 +61,44 @@ pip install -e "packages/meshbay-common[dev]" -e "packages/meshbay-hub[dev]" \
.venv/bin/pytest
```
+## Licence
+
+MeshBay is free software.
+
+| Component | Licence |
+|---|---|
+| `packages/meshbay-common/` — the protocol and its cryptography, in Python | [LGPL-3.0-or-later](packages/meshbay-common/COPYING.LESSER) (with the [GPL-3.0](packages/meshbay-common/COPYING) it builds on) |
+| The same layer in the clients: the files marked `SPDX-License-Identifier: LGPL-3.0-or-later` — in the interface, `keyderive.js`, `crypto.js`, `playlist-crypto.js`, `transport.js` and `transport-*.js`; on the desktop, `keyring.js`, `transcripts.js` and `argon2-wasm.js`; on Android, `keys/Kdf.kt`, `keys/Keyring.kt` and `keys/Transcripts.kt` | LGPL-3.0-or-later |
+| Everything else — hub, node, the rest of the interface, the desktop and Android shells | [AGPL-3.0-or-later](LICENSE) |
+
+The line is the protocol. Whatever a program needs to speak to a hub and a node —
+key derivation, the identity bundle, sealing and opening, what is signed, the
+wire codec and the transport — is under the Lesser GPL, in every language it
+exists in, so a client may use it whatever its own licence; changes to those
+files themselves stay under the LGPL. A file without an SPDX line has its
+package's licence. Talking to a hub or a node over the network needs none of
+this code and carries no condition at all. The rest is under the Affero GPL:
+whoever runs a modified hub or node for other people must offer them its
+source. The licence texts travel with the interface, in `static/licenses/`.
+
+Group applications — the application store — may be under any licence, free
+or not: the interface grants them that in an additional permission,
+[`static/licenses/APPLICATION-EXCEPTION.txt`](packages/meshbay-hub/src/meshbay_hub/static/licenses/APPLICATION-EXCEPTION.txt),
+as long as they use it only through the documented application interface
+(`docs/MESHBAY_DESIGN.md` §9.2–9.4 and the modules the permission names). The
+reference application, `helloworld-app.js` and its settings pane, is under 0BSD:
+copy it to start one.
+
+The Android application adds one permission to the AGPL, for the Google Play
+services libraries the cast to a television goes through:
+[`packages/meshbay-android/LICENSE-EXCEPTION.txt`](packages/meshbay-android/LICENSE-EXCEPTION.txt).
+
+Third-party code keeps its own licence: the vendored browser libraries are
+listed in [`static/vendor/PROVENANCE.md`](packages/meshbay-hub/src/meshbay_hub/static/vendor/PROVENANCE.md)
+with their texts in `LICENSES.txt` beside it, and every package build carries a
+`THIRD-PARTY-NOTICES.txt` generated from what it actually ships
+([`packaging/third_party_notices.py`](packaging/third_party_notices.py)).
+
## Source
The repository is published read-only at <https://git.meshbay.org/>, and can be