rilascio del server Matrix , che segna il passaggio dello sviluppo alla fase di beta testing. Dendrite è sviluppato dal team principale dei programmatori della piattaforma di comunicazione decentralizzata Matrix e si posiziona come implementazione di seconda generazione dei componenti server di Matrix. A differenza del server di riferimento , scritto in Python, il codice di Dendrite è scritto in Go. Entrambe le implementazioni ufficiali sono distribuite sotto licenza Apache 2.0. Nell'ambito del progetto si sviluppa separatamente una variante del server Matrix in Rust, che sotto licenza MIT.
Il nuovo server è mirato a raggiungere elevati livelli di efficienza, affidabilità e scalabilità. Dendrite supera Synapse in prestazioni, richiede significativamente meno memoria e può scalare tramite bilanciamento del carico su più nodi. L'architettura di Dendrite supporta la scalabilità orizzontale ed è basata sulla separazione dei gestori in forma di microservizi, dove ogni istanza di microservizio ha le proprie tabelle nel database. La gestione delle richieste ai microservizi è curata da un bilanciatore di carico. Per la parallelizzazione delle operazioni nel codice vengono utilizzati i goroutine, che permettono di sfruttare le risorse di tutti i core CPU senza separare in processi distinti.
Dendrite supporta il funzionamento in due modalità: monolitica e multicomponente (polylith). In modalità monolitica, tutti i microservizi sono composti in un unico file eseguibile, vengono eseguiti in un unico processo e interagiscono direttamente tra loro. In modalità multicomponente (cluster), i microservizi possono essere avviati separatamente, incluso il loro dispiegamento su più nodi. L'interazione tra i componenti in
modalità multicomponente avviene tramite HTTP API interno e piattaforma .
Lo sviluppo è basato sulle specifiche del protocollo Matrix e utilizza due set di test: i test comuni con Synapse e un nuovo set . Nella fase attuale dello sviluppo, Dendrite supera con successo il 56% dei test Client-Server API e il 77% dei test Federation API, con una copertura funzionale attesa del 70% per le Client-Server API e del 95% per le Federation API.
La fase di beta testing indica che Dendrite è pronto per l'implementazione iniziale e il passaggio allo sviluppo con la creazione periodica di nuove versioni. Tra le versioni ora sarà garantito l'aggiornamento dello schema di archiviazione dei dati nel database (a differenza dell'installazione di snapshot dal repository, dopo l'aggiornamento il contenuto del database non andrà perso). Le modifiche che violano la retrocompatibilità, che cambiano la struttura del database o che richiedono modifiche alla configurazione, saranno proposte solo in versioni significative. Dendrite è attualmente raccomandato per un uso in modalità monolitica insieme al database PostgreSQL per la creazione di piccoli server di origine (homeserver) e nodi P2P. L'uso di SQLite non è ancora consigliato a causa di problemi irrisolti con la gestione delle operazioni simultanee.
Tra le funzionalità non ancora implementate in Dendrite si segnalano le conferme di ricezione dei messaggi, i segni di lettura, le notifiche push, OpenID, il collegamento all'email, la ricerca lato server, il catalogo degli utenti, le liste di ignoramento degli utenti, la creazione di gruppi e comunità, la valutazione della presenza dell'utente online, gli accessi ospiti e l'interazione con reti esterne.
Sono disponibili per l'uso le funzionalità di base per la gestione delle chat rooms (creazione, inviti, regole di autenticazione), strumenti per la federazione dei partecipanti nelle stanze, sincronizzazione degli eventi dopo il ritorno da offline, account, profili, indicazione di scrittura, caricamento e restituzione di file (Media API), editing dei messaggi, ACL, collegamento di tag e gestione delle liste di dispositivi e chiavi per la crittografia end-to-end.
Ricordiamo che la piattaforma per l'organizzazione di comunicazioni decentralizzate Matrix utilizza come trasporto HTTPS+JSON con possibilità di utilizzare WebSocket o protocolli basati su. +. Il sistema è costituito da un'associazione di server che possono interagire tra loro e unirsi in una rete decentralizzata comune. I messaggi vengono replicati su tutti i server a cui sono connessi i partecipanti alla messaggistica. I messaggi si diffondono tra i server in modo simile a come i commit si distribuiscono tra i repository Git. In caso di disconnessione temporanea di un server, i messaggi non vengono persi, ma vengono inviati agli utenti dopo il ripristino del server. Sono supportate diverse varianti di identificatori utente, tra cui email, numero di telefono, account Facebook, ecc.
Nella rete non esiste un singolo punto di guasto o controllo sui messaggi. Tutti i server coinvolti nella discussione sono paritari tra loro.
Qualsiasi utente può avviare il proprio server e collegarlo alla rete comune. È possibile creare per interagire con i sistemi basati su altri protocolli, ad esempio, servizi per l'invio bidirezionale di messaggi su IRC, Facebook, Telegram, Skype, Hangouts, Email, WhatsApp e Slack. Oltre allo scambio istantaneo di messaggi di testo e all'organizzazione di chat, il sistema può essere utilizzato per la trasmissione di file, l'invio di notifiche,
l'organizzazione di teleconferenze, effettuare chiamate vocali e video. Sono supportate anche funzionalità avanzate come la notifica della digitazione, la valutazione della presenza dell'utente online, la conferma di lettura, notifiche push, ricerca lato server, sincronizzazione della cronologia e stato dei client.
Fonte: opennet.ru
