COMPAX A MATRIX
Jeden rozdíl
a co z něj plyne
Matrix je vyzrálý federovaný messenger a většinu toho, co se o srovnání obou píše, píší lidé, kteří nepoužili ani jednu z těch kódových základen. To, co následuje, bylo přečteno v obou.
Změřeno 27. srpna 2026. Synapse: 246 976 řádků Pythonu — 71 349 jen v úložné vrstvě. Continuwuity, druhá implementace téže sítě, 95 220 řádků Rustu. Tento server: 17 041 řádků. Obě strany se hýbou a polovina toho, co je níže, se týká dneška, ne povahy věci; místa, která se týkají povahy věci, jsou označena.
ROZCESTÍ
Kdo je autorita nad tím,
co je místnost
- Místnost je DAG událostí, z nichž každá nese vlastní autorizační řetězec.
- Když se servery neshodnou, rozhodne state resolution v2.
- Odtud stavové skupiny, dopředné a zpětné extremity, outliery, backfill — a 71 349 řádků v samotné úložné vrstvě.
- Commit se přijme lokálně i tehdy, když se síť rozpadne, a slučuje se potom.
- Server je doručovací služba. Jedno pořadí, držené domovem místnosti.
- Porovnej epochu, připoj pod stejným zámkem. Není co by se rozešlo.
- Takže žádný DAG, žádná state resolution, žádný backfill.
- A commit potřebuje cestu domů a zpět a při závodu dostane
409.
Ten obchod je poctivý v obou směrech a MLS v tom nedává na výběr: použití commitu zničí tajemství předchozí epochy. Není kam se vrátit.
TVRZENÍ, KTERÉ STOJÍ ZA TO ŘÍCT PŘESNĚ
„Jejich server čte vaše zprávy“
je nepravda v obou směrech
V šifrované místnosti Matrixu je tělo zprávy šifrový text a server ho nečte — Megolm, přesně jako je tady MLS. To, co platí, je užší a pro většinu lidí horší.
- Šifrování je vypínač na místnosti. Veřejné místnosti ho obvykle nemají a tam je čitelné všechno.
- Stav místnosti není šifrovaný nikdy: název, téma, avatar, členství, pozvánky, power levels — v otevřeném textu i v šifrované místnosti.
- To není přehlédnutí. Server na události uplatňuje autorizační pravidla, takže je musí umět přečíst.
- Kdo je s kým v místnosti, kdo koho pozval a kdy — jejich serveru vždycky viditelné.
- Tady tohle žije ve stromu MLS. Server vidí
group_ida epochu. - A důsledek, který se snadno přehlédne: vyhledávání na straně serveru v šifrovaných místnostech jim nefunguje vůbec. Element hledá lokálně — takže ve vyhledávání tohle zaostává za Elementem, ne za Matrixem.
KAM KAŽDÝ VKLÁDÁ ÚSILÍ
Kam jde úsilí
- Přežít rozpad sítě, protože DAG se potom sloučí.
- Dvanáct verzí místnosti vydaných a zmigrovaných na běžící síti.
- Škála prokázaná v terénu: stream writery, mapy instancí, replikace Redisu.
- Moderace do hloubky — administrátorské API, ACL místnosti, karanténa médií, proces MSC.
- Implementace třetích stran prověřované jako černé skříňky nástrojem Complement.
- Obnova po ztrátě všech zařízení, přes zálohu klíčů na straně serveru.
- Odkryté jsou
group_ida epocha, a víc na pořadí není potřeba. - Identitu nevydává server: kořenový klíč podepíše potvrzení zařízení a každý si ho ověří lokálně.
- Pořadí stojí jeden řádek — compare-and-set, naměřeno 239 připojení za sekundu v jedné místnosti.
- Push nenese nic. Ten jejich nese
room_id, takže se místnost k poskytovateli pushů dostane stejně. - Hovor dědí svou místnost: klíč médií pochází z tajemství epochy, takže odebrání člena ho jako vedlejší účinek odebere i z médií.
- Boti jsou listy stromu, ne odbočka přes server — není místo, kde by pro bota ležel otevřený text.
- Stížnost je dokazatelná: důkaz zprávy ukáže autorství. Megolm je skupinový klíč a nedokazuje nic.
- Peníze, které skupina drží společně, což v Matrixu není vůbec.
DŮSLEDKY
Co který protokol
nedokáže
Není to tabulka skóre. Každý řádek je cenou volby nad ním a v obou sloupcích stojí věci, které by ta která strana raději neměla.
Matrix
Compax
Těla zpráv v šifrované místnosti
Šifrový text. Megolm — server je nečte.
Šifrový text. MLS — totéž.
Jestli je šifrování zapnuté
Vypínač na místnost, m.room.encryption. Veřejné obvykle zapnuté nejsou a tam server čte všechno.
Není to vypínač. Neexistuje nešifrovaná místnost, ve které by se dalo být.
Stav místnosti — název, téma, členství, pozvánky, power levels
V otevřeném textu, vždy, i v šifrované místnosti. Není to přehlédnutí: server uplatňuje autorizační pravidla, takže je musí číst.
Ve stromu MLS. Server vidí group_id a epochu.
Kdo je s kým v místnosti
Serveru viditelné, vždy.
Neviditelné. Tohle, a ne text zpráv, je ten skutečný rozdíl.
Vyhledávání na straně serveru v šifrované místnosti
Nefunguje vůbec — šifrovaná událost nemá content.body, který by šel zaindexovat. Element hledá lokálně.
Nefunguje také, a ze stejného důvodu. Cesta ven je táž, kterou zvolil Element: index v klientovi.
Commit přijatý během rozpadu sítě
Ano. Událost se přijme lokálně a potom ji sloučí state resolution.
Nemožné. Použití commitu zničí tajemství předchozí epochy — dva commity v jedné epoše jsou dva neslučitelné stavy klíčů.
Historie po ztrátě všech zařízení
Záloha klíčů na straně serveru pod obnovovacím klíčem — také koncová.
Pryč. Obal, který by otevřela samotná fráze, by byl trvalý přístup, který by nikdo nemohl odvolat; bylo to odmítnuto schválně.
Pravidla místnosti vymáhaná serverem
Ano — power levels, a server odmítne událost, která je poruší.
Ne. Politika běží ve stínu: počítá neshody a neodmítá nic, protože odmítnutý platný commit skupinu MLS nezkazí, on ji ukončí.
Náhledy odkazů, moderace podle obsahu, push nesoucí text
Možné všude, kde místnost není šifrovaná.
Nemožné. Tohle není „zatím ne“ — tohle je to, čím se zaplatilo za všechno ostatní.
Peníze držené skupinou
Není součástí protokolu.
Pět řetězců, klíč každého podepisujícího na jeho vlastním zařízení, platba přicházející jako zpráva.
A KDE SE POTKÁVAJÍ
Totéž na obou stranách
Postgres na to, co má vydržet, a Redis na to, co má být rychlé. Žetonové kbelíky na akci. Historie na druhém zařízení — u nich záloha klíčů, tady zapečetěná okna a přenos přes QR. Narůstající čekání při opakování na mrtvém protějšku. Sbalení mnoha záznamů do jednoho požadavku. Ohlášení verze přes HTTP. Blokování poskytovatele. Odstranění duplicit při příjmu. Přílohy mimo protokol událostí. Prometheus a pravidla pro alerty. A žádné vyhledávání na straně serveru v šifrované místnosti, na žádné z obou stran.
DÁL
Otázky,
které přijdou první
Šestnáct z nich, zodpovězených na rovinu — včetně těch dvou, kde odpověď není ta pohodlná.