Coucou les agrumes ! Je n’étais plus très actif ces dernières semaines, pris par plusieurs projets dont certains auront leur topic ici je pense. Voici donc un des projets, qui est aussi ma job de tous les jours.
Jami c’est quoi ?
Jami (qui vient du mot Jamii, communauté en Swahili) est le nouveau nom de Ring. C’est une plateforme de communication, un skype-like, qui fonctionne sans dépendance à un service central quelconque (et pouvant fonctionner sur un réseau local sans accès internet), sous licence GPLv3. La majorité du code est écrite en C++ (14 ou supérieur). Avec des clients natifs sur pas mal de plateformes (GNU/Linux, Windows, MacOS, iOS, Android, Android TV). La technologie de base est un autre projet : https://opendht.net, une table de hashage distribuée.
La documentation demande un petit coup de nettoyage, mais il y a pas mal d’informations sur le wiki et ici.
Mais en gros, la plateforme est divisée en plusieurs couches:
- OpenDHT, la table de hashage distribuée, qui sert pour le stockage et la distribution de la communication. Un noeud peut aussi fonctionner en mode proxy, pour pouvoir se plugger à des services ou écouter le réseau quand l’application ne tourne pas.
- Le daemon, qui se charge de tout l’aspect gestion de comptes, gestion de la vidéo, etc.
- Des clients ou des bibliothèques clientes.
Fonctionnalités
- Création de comptes sans informations personnelles (mot de passe non obligatoire, pseudo optionel, pas de mail / téléphone)
- Communication texte/vidéo
- Vidéo conférences
- Streaming de fichiers
- Envoi de fichiers
- Support SIP
- Enregistrement des appels
- Auto nettoyage de l’historique, etc.
Non disponible pour le moment
- Conversations de groupes (cf roadmap plus bas)
- Messages hors ligne (cf plus bas)
- Récupération de compte (vu qu’il n’y a pas de serveur central, si quelqu’un perd son compte, le compte est perdu à jamais)
- Synchronisation des historiques à travers plusieurs appareils.
2019
Au moins pour ce que je souhaite faire.
- Les conversations de groupes (qui demandent un énorme travail), donc mise à jour de la crypto, utilisations de clés de groupes, transfert de fichiers pairs à pairs, synchronisation de l’historique
- Il faudra faire un client web un jour
- Des bridges vers d’autres technologies, et pourquoi pas du support d’activity pub pour des messages publics
- FOSS push pour remplacer les push notifications actuelles.
- Support de VP9, AV1 (je ne travaillerais pas sur ce point)
Liens
- https://jami.net
- https://mstdn.io/@Jami
- https://git.jami.net (le bugtracker)