Un chat dans diaspora* (miaou)

Cet article est la remise en ligne d’un ancien article paru sur le blog libre.

Bon, premièrement je tiens à présenter mes excuses pour la blague éculée du titre. C’est juste que… Je peux pas m’en empêcher…

Très clairement, un chat XMPP à la Facebook est une des fonctionnalités les plus demandés pour diaspora*. Le sujet est en fait discuté au sein de la communauté depuis 2013, donc depuis Mathusalem en temps Internet. D’aucuns se demandent alors pourquoi, depuis le temps que le sujet est discuté, le chat n’a pas pointé le bout de son museau.

C’est compliqué…

Au commencement

Il faut comprendre que diaspora* est développé par sa communauté sur son temps libre et dispose de fonds réduits, sans commune mesure avec les millards de Facebook. Cela peut se constater en regardant la liste des contributeurs depuis juillet 2012 — date à laquelle diaspora* est officiellement devenu un projet communautaire — sur github. En y jetant un rapide coup d’oeil, on peut voir un robot-contributeur — Jonne Haß, présent depuis presque le début du projet — qui détient de loin le record de contribution depuis cette période. Raven24 est également un très gros contributeur. Le nombre de ses contributions semble moins important au regard de celles de Jonne simplement parce que ce dernier fusionne les autres contributions plus souvent. En dessous, on retrouve une liste de power-contributeurs dont l’un — Flaburgan — est français (cocorico) et le tyran officiel du pod diaspora-fr.org. Si vous me cherchez dans cette liste, ne poussez pas plus avant vos investigations : je n’y suis pas. Je n’ai à mon actif que 3 malheureuses contributions. En fait, je n’a rejoint diaspora-fr.org qu’il y a 9 mois (vers janvier 2014) et ne contribue que depuis 3 mois environ.

Avec si peu de moyens, donc, il est assez compliqué d’implémenter de nouvelles fonctionnalités — d’autant plus aussi complexes qu’un chat XMPP. Quand l’organisation beugle à tue-tête qu’elle a besoin de contributeurs — même sans compétences en ruby — ce n’est pas une blague. Les power-contributeurs passent surtout leur temps à gérer leur projet dans sa globalité et à améliorer la qualité du code.

L’absence de chat XMPP à la Facebook (je mets cette expression en emphase car je n’assume pas mon passé d’utilisateur de Facebook, pardonnez-moi) est définitivement ce qui m’a poussé à contribuer au projet. Ça a commencé assez simplement : j’ai demandé à notre tyran ce qu’il se disait sur la question en haut-lieu. L’on ma répondu que les contributions étaient bienvenues et l’on m’a parlé d’un utilisateur de diaspora* qui aurait commencé à travailler sur la question. Ni une ni six, j’ai donc pris mon clavier pour proposer mes services au brave utilisateur. Le pauvre n’avait malheureusement pas le temps de travailler là-dessus mais m’a commmuniqué le fruit de ses recherches.

Le chat de diaspora* repose donc sur deux parties :

Je suis donc parti avec ma bite et mon couteau (pardonnez l’expression, elle me vient de mon pays natal, la Bretagne) pour développer cette fonctionnalité qui me manquait tant. Et puis très vite, un power-contributeur allemand, Zauberstuhl a appelé à contribution concernant ce sujet. Il avait commencé son travail sur Vines, qui fonctionnait très bien, mais galérait pour créer le front-end. Ayant une partie de la solution, je l’ai contacté pour lui proposer mes services. C’est comme ça que tout a commencé. Cette collaboration a donné naissance à une première version assez sexy.

chat01Illustration 1: Première version du chat

Afin de ne pas me couvrir de gloire non-méritée, il faut que je précise que ma contribution à cette fonctionnalité est pour l’instant assez minimale. Zauberstuhl abat le plus gros du travail étant donné que les plus grosses adaptations à faire le sont du côté du serveur écrit en ruby, langage que je ne maîtrise pas.

Et ça en est où, tout ça ?

Le chat, disais-je donc, est en deux parties : un serveur en ruby et un front-end basé initialsement sur Jappix Mini.

Je dis initialement car il y a une semaine, Zauberstuhl, qui teste le chat sur son propre pod a soulevé sur IRC des problèmes de performances dûes à Jappix Mini. L’un de ses développeurs a effectivement confirmé que leur front-end repose beaucoup sur leur serveur Jappix qui est aussi un réseau social développé en PHP.

Zauberstuhl propose donc de passer sur un autre front-end : JSXC. Ce changement nous enchante tous les deux parce que JSXC supporte aussi WebRTC, un nouveau protocole de communication développé par le W3C et l’IETF et qui permettra, pour les navigateurs compatibles (Opera, Chrome et Firefox pour le moment et dans leurs dernières versions) de faire des trucs assez kikoo comme de la visio-conférence façon Skype.

Nous en sommes là. Vines et JSXC ont été forkés par diaspora* sur github (Vines, JSXC) et sont tous les deux développés hors du projet lui-même comme des gems-dépendances.

chat02Illustration 2: Chat avec JSXC

Et c’est pour quand ?

Pour quand ce sera fini. Actuellement, Zauberstuhl travaille pratiquement seul. À cause de mes cours et de mes connaissances limitées du projet, je ne peux pas l’aider à loisir et plusieurs problèmes se posent sur l’implémentation d’un chat XMPP dans diaspora*. L’un des plus gros est celui des connexions asynchrones. À chaque rafraichissement de page, le front-end fait une reconnexion avec le serveur XMPP. Si l’on multiplie ça par le nombre de rafraichissement par seconde et le nombre d’utilisateurs sur un mega-pod type joindiaspora.com on peut vite faire péter le serveur. Le projet Jappix, de son propre aveux, butte lui-même sur ce problème depuis longtemps. Le projet a besoin de contributeurs.

Sur github, la fonctionnalité a quand-même été ajouté à la prochaine majeure, qui pourrait sortir au début de l’année prochaine. Dans les faits, pourtant, ce n’est pas garanti. La prochaine majeure contient des améliorations sur la fédération qui sont vitales pour certain mega-pods et sa sortie ne pourra pas être indéfiniement retardée pour le chat.

Et à l’avenir ?

Si le chat voit finalement le jour, les fonctionnalités WebRTC de JSXC pourraient permettre des choses plutôt sympas. Comme WebRTC est à la fois un protocole P2P et une API Javascript, il est théoriquement possible, par exemple, pour les bon navigateurs (IE n’est pas un bon navigateur, CQFD), de faire de l’échange de documents (non soumis au copyright, bien sûr ! :D). Mais on parle là de fonctionnalités à bien plus long terme, donc ne vous attendez pas à voir un projet sortir de terre dans les 6 mois qui viennent.

Les choses se présentent donc plutôt bien pour le chat.

Aucun avis pertinent dans Un chat dans diaspora* (miaou)

Laisser un commentaire

indique des champs obligatoire.