diff --git a/src/yhub-server/LICENSE b/src/yhub-server/LICENSE new file mode 100644 index 000000000..135d20350 --- /dev/null +++ b/src/yhub-server/LICENSE @@ -0,0 +1,37 @@ +License notice for the src/yhub-server directory +================================================ + +The source code in this directory is, like the rest of this repository, +released under the MIT License (see the LICENSE file at the repository root, +Copyright (c) 2023 Direction Interministérielle du Numérique - Gouvernement +Français). + +Dependency on AGPL-licensed code +-------------------------------- + +However, the code in this directory (in particular `server.js`) depends on +and runs in the same process as the `@y/hub` package ("yhub"), which is +licensed under the GNU Affero General Public License v3.0 (AGPL-3.0) — or, +alternatively, under a proprietary license available from its author. + +Unless you have obtained such a proprietary license for yhub, the combined +work formed by yhub together with the code in this directory is governed by +the terms of the AGPL-3.0. This means in particular: + +- If you modify the code in this directory and run the resulting server for + users over a network, or distribute it, you must license your + modifications under the AGPL-3.0 or an AGPL-compatible license and make + the corresponding source available (AGPL-3.0, section 13). +- The MIT license of the files in this directory is compatible with this + obligation: MIT-licensed code may be incorporated into an AGPL-licensed + combined work. + +Scope +----- + +This notice applies only to this directory. The rest of the La Suite Docs +software (the Django backend, the frontend, and all other components in this +repository) does not link against yhub and communicates with it exclusively +through network requests (REST/HTTP and WebSocket). It therefore does not +form a combined work with yhub and remains governed solely by the MIT +License at the repository root. diff --git a/src/yhub-server/README.md b/src/yhub-server/README.md new file mode 100644 index 000000000..229c5b982 --- /dev/null +++ b/src/yhub-server/README.md @@ -0,0 +1,36 @@ +# yhub-server + +This directory contains the La Suite Docs-specific configuration for +[yhub](https://www.npmjs.com/package/@y/hub) (`@y/hub`), the collaboration +server that synchronizes Yjs documents between editors in real time. + +It is not a fork of yhub — it is a thin wrapper (`server.js`) that: + +- starts a yhub instance (websocket sync on port 3002, backed by Redis/Valkey + and PostgreSQL), +- plugs in an auth plugin that resolves users and per-document access rights + by calling the Docs Django backend (`/api/v1.0/users/me/` and + `/api/v1.0/documents/{id}/`), +- mirrors the environment conventions used elsewhere in this repository + (`*_FILE` secret indirection, `COLLABORATION_SERVER_ORIGIN` allowlist, …). + +The `Dockerfile` builds the container image used by the `yhub` service in +`compose.yml`. + +## ⚠️ License warning (AGPL) + +This directory depends on `@y/hub`, which is licensed under the +**GNU AGPL-3.0** (or a separate proprietary license from its author). Unlike +the rest of this repository (MIT), the code in this directory is loaded into +the same process as AGPL-licensed code. As a consequence: + +- **Any modification to the code in this directory (in particular + `server.js`) must be released under an AGPL-compatible license** if you run + or distribute the resulting server, including making it available to users + over a network (AGPL section 13). +- See the [LICENSE](./LICENSE) file in this directory for details. + +**The rest of La Suite Docs is not affected.** The Django backend and the +frontend never link against yhub; they communicate with it exclusively +through network requests (REST/HTTP and WebSocket). They remain under the +MIT license of the repository root.