lansarea serverului Matrix , care a marcat tranziția dezvoltării către etapa de testare beta. Dendrite este dezvoltat de echipa principală de dezvoltatori a platformei de comunicare descentralizate Matrix și este poziționat ca o implementare de a doua generație a componentelor serverului Matrix. Spre deosebire de serverul de referință , scris în limbajul Python, codul Dendrite este scris în limbajul Go. Ambele implementări oficiale sunt distribuite sub licența Apache 2.0. În cadrul proiectului , se dezvoltă separat o variantă a serverului Matrix în limbajul Rust, care sub licența MIT.
Noua server este destinat să atingă o eficiență ridicată, fiabilitate și scalabilitate. Dendrite depășește Synapse în ceea ce privește performanța, necesită pentru funcționare considerabil mai puțină memorie și poate fi scalat prin echilibrarea încărcării pe mai multe noduri. Arhitectura Dendrite susține scalarea orizontală și se bazează pe separarea procesării în microservicii, unde fiecare instanță de microserviciu are propriile tabele în baza de date. Gestionarea apelurilor către microservicii este realizată de un echilibrator de încărcare. Pentru paralelizarea operațiunilor în cod sunt folosite fire de execuție (go routines), care permit utilizarea resurselor tuturor nuclee CPU fără a le separa în procese distincte.
Dendrite suportă funcționarea în două moduri — monolitic și multi-component (polylith). În modul monolitic, toate microserviciile sunt grupate într-un singur fișier executabil, sunt executate într-un singur proces și interacționează direct între ele. În modul multi-component (cluster), microserviciile pot fi pornite separat, inclusiv fiind distribuite pe noduri diferite. Interacțiunea dintre componente în
modul multi-component se realizează prin intermediul API-ului HTTP intern și a platformei .
Dezvoltarea se desfășoară pe baza specificațiilor protocolului Matrix și folosind două suite de teste — cele comune cu testele Synapse și un nou set . La etapa actuală de dezvoltare, Dendrite trece cu succes 56% din testele Client-Server API și 77% din testele Federation API, iar acoperirea funcționalității reale este evaluată la 70% pentru Client-Server API și 95% pentru Federation API.
Faza de beta testare indică pregătirea Dendrite pentru implementarea inițială și trecerea la dezvoltarea cu formarea periodică a noilor versiuni. Între versiuni se va asigura acum actualizarea schemei de stocare a datelor în BD (spre deosebire de instalarea de instantanee din repository, după actualizare conținutul bazei nu se va pierde). Modificările care afectează compatibilitatea inversă, schimbă structura BD sau necesită modificarea configurației vor fi propuse doar în versiunile semnificative. Dendrite este în continuare recomandat pentru utilizare în modul monolitic împreună cu SGBD PostgreSQL pentru a crea servere de bază mici (homeserver) și noduri P2P. Utilizarea SQLite nu este recomandată deocamdată din cauza problemelor nerezolvate cu gestionarea operațiunilor simultane.
Printre funcționalitățile încă neimplementate în Dendrite se numără confirmarea primirii mesajelor, etichetele de citire, notificările push, OpenID, asocierea cu email, căutarea pe partea serverului, catalogul utilizatorilor, listele de ignorare a utilizatorilor, crearea de grupuri și comunități, evaluarea prezenței utilizatorului online, accesurile oaspete, interacțiunea cu rețele externe.
Sunt disponibile pentru utilizare funcționalitatea de bază pentru gestionarea camerelor de chat (creare, invitații, reguli de autentificare), instrumente de federație pentru participanți în camere, sincronizarea evenimentelor după revenirea din offline, conturi, profiluri, indicația de scriere, încărcarea și descărcarea fișierelor (Media API), editarea mesajelor, ACL, asocierea etichetelor și gestionarea listelor de dispozitive și chei pentru criptarea end-to-end.
Amintim că platforma pentru organizarea comunicațiilor descentralizate Matrix utilizează ca transport HTTPS+JSON cu posibilitatea utilizării WebSockets sau a unui protocol bazat pe +. Sistemul este format ca o asociație de servere care pot interacționa între ele și se unesc într-o rețea descentralizată comună. Mesajele sunt replicate pe toate serverele la care sunt conectați participanții la schimbul de mesaje. Mesajele se propagă pe servere similar cu modul în care se propagă commit-urile între repositoarele Git. În caz de deconectare temporară a unui server, mesajele nu se pierd, ci sunt transmise utilizatorilor după reluarea funcționării serverului. Sunt acceptate diverse variante de identificatori de utilizator, inclusiv email, număr de telefon, cont de Facebook și altele.
În rețea nu există un singur punct de eșec sau control al mesajelor. Toate serverele incluse în discuție sunt egale între ele.
Orice utilizator poate lansa propriul server și să îl conecteze la rețeaua comună. Este posibilă crearea pentru interacțiunea Matrix cu sisteme bazate pe alte protocoale, de exemplu, servicii pentru trimiterea de mesaje bidirecționale în IRC, Facebook, Telegram, Skype, Hangouts, Email, WhatsApp și Slack. Pe lângă schimbul instantaneu de mesaje text și organizarea de chat-uri, sistemul poate fi utilizat pentru transferul de fișiere, trimiterea de notificări,
organizarea de teleconferințe, realizarea de apeluri vocale și video. De asemenea, sunt acceptate funcții avansate precum notificarea de tastare, evaluarea prezenței utilizatorului online, confirmarea citirii, notificări push, căutarea pe partea serverului, sincronizarea istoricului și a stării clienților.
Sursa: opennet.ro
