Samenwerken: Fase 0.5 — WebDAV-async-transport (co-auteuren zonder nieuwe deps) #989

Closed
opened 2026-07-30 12:35:05 +00:00 by brenno · 2 comments
Owner

Uit de ketenkeuring #976: de matrix-SDK is NO-GO onder het huidige beleid (matrix + vodozemac zijn AGPL-3.0, en de crypto is native Rust). De aanbevolen volgende stap voor spoor B — vastgelegd in assurance/ketenkeuring-matrix-sdk.md.

Doel. Asynchroon co-auteuren van een deck over de Nextcloud/WebDAV die de gebruiker al heeft ingesteld: een WebdavAsyncTransport achter het bestaande CollabTransport-contract uit Fase 0 (#975).

Wat er nu mist. Fase 0 levert alleen LoopbackTransport (in-process, voor de tests). Er is nog geen transport dat twee echte machines verbindt. Dit is het eerste dat dat doet, zonder de netwerk-/toolchain-/licentiekosten van Matrix.

Vorm (waarom dit de aanbeveling is).

  • Nul nieuwe afhankelijkheden, geen AGPL, geen Rust, geen nieuwe vertrouwenspartij. Bouwt op lib/services/webdav_service.dart.
  • Asynchroon (poll/sync tegen de WebDAV-bron), niet realtime. Geen chat/presence — dat blijft Fase 1.

Bestandsformaat (P2). Raakt het .md niet: samenwerken blijft vergankelijk, het opgeslagen deck blijft de waarheid. Ops/snapshots leven in een sidecar op de WebDAV-bron, niet in het .md.

Referentie. COLLABORATION.md §10 (Fase 0.5), §5.6 (CollabTransport). Volgt op #975 (Fase 0); alternatief voor #977 (Fase 1 Matrix) zolang die op NO-GO staat.

Uit de ketenkeuring #976: de matrix-SDK is NO-GO onder het huidige beleid (matrix + vodozemac zijn AGPL-3.0, en de crypto is native Rust). De aanbevolen volgende stap voor spoor B — vastgelegd in assurance/ketenkeuring-matrix-sdk.md. **Doel.** Asynchroon co-auteuren van een deck over de Nextcloud/WebDAV die de gebruiker al heeft ingesteld: een `WebdavAsyncTransport` achter het bestaande `CollabTransport`-contract uit Fase 0 (#975). **Wat er nu mist.** Fase 0 levert alleen `LoopbackTransport` (in-process, voor de tests). Er is nog geen transport dat twee echte machines verbindt. Dit is het eerste dat dat doet, zonder de netwerk-/toolchain-/licentiekosten van Matrix. **Vorm (waarom dit de aanbeveling is).** - Nul nieuwe afhankelijkheden, geen AGPL, geen Rust, geen nieuwe vertrouwenspartij. Bouwt op `lib/services/webdav_service.dart`. - Asynchroon (poll/sync tegen de WebDAV-bron), niet realtime. Geen chat/presence — dat blijft Fase 1. **Bestandsformaat (P2).** Raakt het `.md` niet: samenwerken blijft vergankelijk, het opgeslagen deck blijft de waarheid. Ops/snapshots leven in een sidecar op de WebDAV-bron, niet in het `.md`. **Referentie.** COLLABORATION.md §10 (Fase 0.5), §5.6 (CollabTransport). Volgt op #975 (Fase 0); alternatief voor #977 (Fase 1 Matrix) zolang die op NO-GO staat.
Author
Owner

Opgepakt. Tak: collab/webdav-async-transport. Aanpak, in de korrel van Fase 0 (#988, een puur bouwblok: model + transport + sessie + test, geen UI): een WebdavAsyncTransport achter het bestaande CollabTransport-contract, plus de JSON-model-(de)serialiser die §5.2 vraagt (nadrukkelijk JSON, niet Markdown — re-parsen zou slide-id's hergenereren, §5.5/P5). De ops/locks landen in een append-only log-sidecar op de WebDAV-bron; volgordelijkheid via If-None-Match, inhaalslag via polling. Testbaar via een geïnjecteerde in-memory store-naad, zonder live server. Snapshot-rebaselining voor late joiners (§5.2) en de UI-bedrading (§5.7) blijven — net als in #988 — vervolg. Geen nieuwe deps, geen AGPL, geen Rust.

Opgepakt. Tak: collab/webdav-async-transport. Aanpak, in de korrel van Fase 0 (#988, een puur bouwblok: model + transport + sessie + test, geen UI): een WebdavAsyncTransport achter het bestaande CollabTransport-contract, plus de JSON-model-(de)serialiser die §5.2 vraagt (nadrukkelijk JSON, niet Markdown — re-parsen zou slide-id's hergenereren, §5.5/P5). De ops/locks landen in een append-only log-sidecar op de WebDAV-bron; volgordelijkheid via If-None-Match, inhaalslag via polling. Testbaar via een geïnjecteerde in-memory store-naad, zonder live server. Snapshot-rebaselining voor late joiners (§5.2) en de UI-bedrading (§5.7) blijven — net als in #988 — vervolg. Geen nieuwe deps, geen AGPL, geen Rust.
Author
Owner

Afgerond en geland in merge 65500b9f (PR #995). WebdavAsyncTransport achter het CollabTransport-contract van Fase 0: ops/locks in een append-only log-sidecar op de WebDAV-bron, volgordelijk via een voorwaardelijke PUT (If-None-Match:*), inhaalslag via polling, een deelnemer hoort zijn eigen verzending nooit. Plus de JSON-model-(de)serialiser die §5.2 vraagt (fail-closed, volledigheid geborgd). Geen nieuwe deps, geen AGPL, geen Rust; het .md blijft onaangeroerd (P2). make check groen (7553 tests, dekking 87,4%). Snapshot-herbaselijning (§5.2) en de interface-bedrading (§5.7) blijven vervolg, net als bij #988. Afgehandeld — sluiten.

Afgerond en geland in merge 65500b9f (PR #995). WebdavAsyncTransport achter het CollabTransport-contract van Fase 0: ops/locks in een append-only log-sidecar op de WebDAV-bron, volgordelijk via een voorwaardelijke PUT (If-None-Match:*), inhaalslag via polling, een deelnemer hoort zijn eigen verzending nooit. Plus de JSON-model-(de)serialiser die §5.2 vraagt (fail-closed, volledigheid geborgd). Geen nieuwe deps, geen AGPL, geen Rust; het .md blijft onaangeroerd (P2). make check groen (7553 tests, dekking 87,4%). Snapshot-herbaselijning (§5.2) en de interface-bedrading (§5.7) blijven vervolg, net als bij #988. Afgehandeld — sluiten.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
LibreKAT/Ocideck#989
No description provided.