Udgivelsen af den eksperimentelle klient er gennemført Riot P2P.
Riot — oprindeligt en klient til et fødereret netværk Matrix. P2P-modifikationen tilføjer en serverimplementering og føderation uden brug af centraliseret DNS gennem integration libp2p, som også anvendes i IPFS. Dette er den første version af klienten, der bevarer sessionen efter genstart af siden, men i de følgende store opdateringer (f.eks. 0.2.0) vil data stadig blive slettet. Derfor anbefales det ikke at bruge klienten til noget vigtigt.
Klienten implementerer føderation, oprettelse af rum og display af en global (serverløs!) rumkatalog.
På nuværende tidspunkt kan det primære Matrix-netværk, som bruger DNS, og Matrix-netværket på libp2p ikke fødereres og interagere med hinanden.
For at bruge klienten skal du blot klikke på login-knappen, hvorefter du modtager et genereret ID i netværket. Dataeksport understøttes endnu ikke.
Da dette er en ustabil præsentation af en mulig koncept, kan du støde på problemer:
- Du vil ikke kunne logge ind på din konto eller interagere med andre klienter, hvis serveren, der kører som en Service Worker, bliver dræbt af browseren efter udløbet af timeout. Dette problem er observeret i Firefox, som gør dette efter 30 sekunders inaktivitet].
- På libp2p-netværksniveau er der begrænsninger for antallet af udførende handlinger over tid, hvilket kan skabe problemer med føderation.
Arbejdet med P2P-versionen af Matrix er drevet af udviklernes ønske om at give brugerne mere frihed. Afkoblingen fra en central server muliggør lettere kommunikation inden for lokale og mesh-netværk, samt i situationer, hvor adgangen til eksterne netværk er begrænset eller ikke eksisterer. Dette har også en positiv indvirkning på privatlivets fred, idet det minimerer de overførte metadata, som i et sådant scenario kun opbevares af deltagerne. I sidste ende får dette en til at overveje refaktoreringen af de nuværende Matrix-koncepter for at opnå større bærbarhed og sikkerhed.
Implementeringen af server-API'en opnås ved at kompilere serveren (Go). til WebAssembly-koden, der kører samtidig med klienten som en Service Worker, der bruger IndexedDB og SQLite til at gemme data lokalt i forbindelse med webversionen og Electron-wrapperen.
Dendrite er en udviklet "anden generations" Matrix-server skrevet i Go, der fokuserer på fuld modularitet og som også kan anvendes i et monolitisk design. I den modulære version bruges Apache Kafka til interaktion mellem mikrotjenester, mens det i den monolitiske version — Naffka. Dokumentationen til opbygning af den P2P-version af Dendrite kan findes på GitHub.
Dendrite blev oprindeligt tænkt som en generel server, som skulle erstatte Synapse, skrevet i Python, som havde problemer med ydeevne og skalerbarhed. Men på grund af behovet for støtte og omfattende refactoring af Synapse, blev udviklingen af Dendrite sat på pause. Udviklingen blev dog genoptaget, men det eksisterende kodegrundlag blev besluttet at udvikle ikke i en generel kontekst, men fokusere på tilpasning til integration i bærbare og lavstrøms enheder, som browsere og telefoner.
Den nuværende implementering af Dendrite er stadig i de tidlige udviklingsfaser, men er allerede tilstrækkelig til enkel federation:
Client-Server APIs: 34% (227/672 tests) — op fra 33%
Federation APIs: 34% (35/103 tests) — op fra 27%
Dette er ikke første gang, der er gjort forsøg på P2P-implementering. Tidligere har der været et initiativ til at skabe CoAP-proxy i Yggdrasil-netværket for Synapse.
Udviklerne af Matrix-protokollen fokuserer ikke kun på federation og eksperimenterer med værktøjer for endnu større decentralisering. For eksempel blev der udført et eksperiment for at reducere omkostningerne på transportniveauet. En daemon under udvikling Pantalaimon — en proxy, som enhver klient kan tilslutte sig uden støtte til kryptering og interagere med krypterede beskeder. Alle gennemførte initiativer sigter mod at fjerne bindingen af login til serveren, ved at afskaffe MXID og interagere med netværket ved hjælp af en offentlig nøgle, hvilket allerede delvist er implementeret i Riot P2P.
For mere detaljeret information om koncepterne for de planlagte implementeringer kan man finde i præsentationen fra FOSDEM 2020 på YouTube og i det nyligt udkomne blogindlæg.
Der findes også en version af Riot P2P til Android, baseret på koden fra den gamle applikation. Fremadskuende planlægges det at konvertere den til den aktuelle RiotX.
Derudover
-
Projektet er præsenteret TARDIS (Time Agnostic Room DAG Inspection Service) — en debugger af den lineære begivenhedsgraf (DAG) for Matrix-værelser baseret på Riot P2P.
-
I projektet Conduit (en server under udvikling af samfundet, skrevet i Rust) er nu der er implementeret kryptering og vedhæftninger.
-
Der er kommet en eksperimentel server på Scala — Mascarene.
Kilde: linux.org.ru
