Nest the ircd link under modules/protocol/

The protocol link is a different kind of module from the service
pseudo-clients, so give it its own home: modules/inspircd ->
modules/protocol/inspircd. A future ircd link is a new crate alongside
it. Workspace member, dependency path, the crate's own api path, and the
docs are updated to match. No code change.
This commit is contained in:
Jean Chevronnet 2026-07-14 14:28:18 +00:00
parent ad2a623120
commit a803177f8b
No known key found for this signature in database
5 changed files with 11 additions and 9 deletions

View file

@ -3,7 +3,7 @@
# pseudo-clients and the ircd protocol link — live under modules/. # pseudo-clients and the ircd protocol link — live under modules/.
members = [ members = [
"api", "api",
"modules/inspircd", "modules/protocol/inspircd",
"modules/chanserv", "modules/chanserv",
"modules/nickserv", "modules/nickserv",
"modules/example", "modules/example",
@ -28,7 +28,7 @@ description = "Federated IRC services daemon (protocol-agnostic core, InspIRCd l
[dependencies] [dependencies]
fedserv-api = { path = "api" } fedserv-api = { path = "api" }
fedserv-inspircd = { path = "modules/inspircd" } fedserv-inspircd = { path = "modules/protocol/inspircd" }
fedserv-chanserv = { path = "modules/chanserv" } fedserv-chanserv = { path = "modules/chanserv" }
fedserv-nickserv = { path = "modules/nickserv" } fedserv-nickserv = { path = "modules/nickserv" }
fedserv-example = { path = "modules/example" } fedserv-example = { path = "modules/example" }

View file

@ -12,7 +12,7 @@ There are two kinds of module.
- A **protocol** (an ircd link like InspIRCd) implements `Protocol`. - A **protocol** (an ircd link like InspIRCd) implements `Protocol`.
Both live in their own crate under `modules/`. `modules/example/` is a complete, Both live in their own crate under `modules/`. `modules/example/` is a complete,
minimal service to copy from; `modules/inspircd/` is the reference protocol. minimal service to copy from; `modules/protocol/inspircd/` is the reference protocol.
## A service, end to end ## A service, end to end
@ -107,8 +107,9 @@ ignored.
A protocol crate implements `Protocol`: it turns raw server-to-server lines into A protocol crate implements `Protocol`: it turns raw server-to-server lines into
the normalized `NetEvent`s the engine understands, and turns the engine's the normalized `NetEvent`s the engine understands, and turns the engine's
`NetAction`s back into raw lines. The engine never sees a raw line, so supporting `NetAction`s back into raw lines. The engine never sees a raw line, so supporting
another ircd is one new crate — see `modules/inspircd/`. Wire it in `src/main.rs` where another ircd is one new crate under `modules/protocol/` — see
`InspIrcd` is constructed. `modules/protocol/inspircd/`. Wire it in `src/main.rs` where `InspIrcd` is
constructed.
## What the SDK deliberately does not give you ## What the SDK deliberately does not give you

View file

@ -22,9 +22,10 @@ workspace, each depending only on the `fedserv-api` SDK crate.
- **`src/gossip.rs`** node-to-node replication over the logs. - **`src/gossip.rs`** node-to-node replication over the logs.
- **`modules/`** the loadable modules, each its own crate depending only on the - **`modules/`** the loadable modules, each its own crate depending only on the
`fedserv-api` SDK: `fedserv-api` SDK:
- **`modules/inspircd/`** (`fedserv-inspircd`) the ircd link layer. A `Protocol` - **`modules/protocol/inspircd/`** (`fedserv-inspircd`) the ircd link layer. A
impl maps raw server-to-server lines to and from the normalized model, so the `Protocol` impl maps raw server-to-server lines to and from the normalized
engine never touches a raw line and a new ircd is one new crate. model, so the engine never touches a raw line and a new ircd is one new crate
under `modules/protocol/`.
- **`modules/nickserv/`, `modules/chanserv/`, `modules/botserv/`, - **`modules/nickserv/`, `modules/chanserv/`, `modules/botserv/`,
`modules/memoserv/`, `modules/statserv/`, `modules/hostserv/`, `modules/operserv/`** `modules/memoserv/`, `modules/statserv/`, `modules/hostserv/`, `modules/operserv/`**
and diceserv, infoserv, reportserv, groupserv, chanfix, helpserv — the and diceserv, infoserv, reportserv, groupserv, chanfix, helpserv — the

View file

@ -5,4 +5,4 @@ edition = "2021"
description = "InspIRCd server-to-server protocol module for fedserv." description = "InspIRCd server-to-server protocol module for fedserv."
[dependencies] [dependencies]
fedserv-api = { path = "../../api" } fedserv-api = { path = "../../../api" }