A avut loc lansarea clientului experimental Riot P2P.
Riot — inițial un client pentru o rețea federată Matrix. Modificarea P2P adaugă în client implementarea unui server și federarea fără utilizarea DNS-ului centralizat prin integrarea libp2p, care este folosită de asemenea în IPFS. Aceasta este prima versiune a clientului care păstrează sesiunea după reîncărcarea paginii, dar în următoarele actualizări majore (de exemplu, 0.2.0) datele vor fi totuși șterse. Prin urmare, nu se recomandă utilizarea clientului pentru ceva important.
Clientul realizează federarea, crearea camerelor și afișarea unui catalog global (fără server!) de camere.
Cu toate acestea, rețeaua principală Matrix care utilizează DNS și rețeaua Matrix pe libp2p nu pot, deocamdată, să se federizeze și să interacționeze una cu cealaltă.
Pentru a utiliza clientul, este suficient să apăsați butonul de conectare, după care veți primi un ID generat în rețea. Exportul de date nu este deocamdată suportat.
Deoarece aceasta este o prezentare instabilă a unei concepte posibile, s-ar putea să întâlniți neplăceri:
- Nu veți putea să vă conectați la contul dvs. sau să interacționați cu alte clienți dacă serverul, care rulează sub formă de Service Worker, este oprit de browser din cauza depășirii timpului de așteptare. Această problemă a fost observată la Firefox, care face acest lucru după 30 de secunde de inactivitate].
- La nivelul rețelei libp2p există restricții privind numărul de acțiuni efectuate în timp, ceea ce poate cauza probleme cu federarea.
Începerea lucrului la versiunea P2P a Matrix se datorează dorinței dezvoltatorilor de a oferi mai multă libertate utilizatorilor lor. Deconectarea de serverul central permite facilitarea comunicației în rețelele locale și mesh și, în general, în condițiile în care accesul la rețeaua externă este limitat sau inexistent. De asemenea, acest lucru are un impact pozitiv asupra intimității, având în vedere minimizarea metadatelor transmise, care în acest scenariu sunt stocate doar de participanții la conversație. În cele din urmă, acest lucru face ca refactorizarea conceptelor actuale din Matrix să fie o preocupare pentru o mai mare portabilitate și securitate.
Implementarea API-ului serverului se realizează prin compilarea serverului Dendrite în cod WebAssembly, care rulează simultan cu clientul sub forma de Service Worker, utilizând IndexedDB și SQLite pentru a stoca datele local, în cazul versiunii web și a ambalajului Electron.
Dendrite este un „server de generație a doua” Matrix dezvoltat în limbajul Go, orientat spre modularitate completă, care poate fi folosit și într-o formă monolitică. În forma sa modulară, pentru interacțiunea microserviciilor, se utilizează Apache Kafka, iar în varianta monolitică — Naffka. Documentația pentru construirea versiunii P2P a Dendrite poate fi găsită de pe GitHub.
Dendrite a fost conceput inițial ca un server de uz general, care ar trebui să fie un substitut direct pentru Synapse, scris în Python, care avea probleme de performanță și scalabilitate. Însă, din cauza necesității de suport și a refactorizării extinse a Synapse, dezvoltarea Dendrite a fost întârziată. În cele din urmă, dezvoltarea a fost reluată, însă s-a decis că baza de cod existentă nu va fi dezvoltată în contextul uzului general, ci va fi adaptată pentru a fi integrată în dispozitive client de dimensiuni mici și cu putere redusă, precum browserele și telefoanele.
Implementarea actuală a Dendrite este încă în stadiu incipient de dezvoltare, dar este suficientă pentru o federare simplă:
APIs Client-Server: 34% (227/672 teste) — în creștere față de 33%
APIs de Federație: 34% (35/103 teste) — în creștere față de 27%
Aceasta nu este prima încercare de implementare a P2P. Anterior, a existat o inițiativă de creare a unui proxy CoAP în rețeaua Yggdrasil pentru Synapse.
Dezvoltatorii protocolului Matrix nu se concentrează doar pe federație și experimentează cu instrumente pentru o și mai mare descentralizare. De exemplu, a fost realizat un experiment pentru reducerea costurilor la nivel de transport.Se dezvoltă demonul Pantalaimon — un proxy la care poate să se conecteze orice client fără suport pentru criptare și să interacționeze cu mesaje criptate. Toate inițiativele desfășurate au scopul de a elimina legătura dintre autentificator și server,abrogând MXID-ul și interacționând cu rețeaua printr-o cheie publică, ceea ce este deja parțial implementat în Riot P2P.
Mai multe informații despre conceptele de implementări planificate pot fi găsite în prezentarea FOSDEM 2020 de pe YouTube și într-un blog recent.
Există, de asemenea, o variantă Riot P2P pentru Android, bazată pe codul vechiului aplicații. În viitor, este planificat să fie transformat în actualul RiotX.
În plus,
-
A fost prezentat proiectul TARDIS (Time Agnostic Room DAG Inspection Service) — un depanator de grafuri de evenimente liniare (DAG) pentru camere Matrix bazate pe Riot P2P.
-
În proiectul Conduit (server dezvoltat de comunitate în limbajul Rust) acum sunt implementate criptarea și atașamentele.
-
A apărut un server experimental pe Scala — Mascarene.
Sursa: linux.org.ru
