Jappix, un réseau social ouvert

Posté le 2 juillet 2010 @ 22 h 55 min par Valérian Saliou

Étant proche du projet Movim et m'intéressant à OneSocialWeb, je me suis dit une chose concernant mon projet de web-client XMPP libre, Jappix : "on a déjà de solides bases, alors pourquoi stagner dans de la messagerie instantanée alors que Jappix peut faire bien plus ?".

Et voilà : maintenant Jappix est, en sa version de développement, un réseau social à part entière. À part entière, certes, mais il nous reste une masse de travail conséquente, notamment le partage de photos avec ses proches, voire de tout type de fichiers, l'organisation d'évènements, et plus et si affinités.

1. Chez les autres

Le projet Diaspora semble bien avancer, et je pensais fermement qu'il en aurait été le contraire jusqu'à ce que leur équipe publie un nouveau billet sur leur blog. Je pense que leur projet aboutira assez vite en quelque-chose de très complet. Après, il va falloir qu'ils travaillent avec les autres projets de la communauté pour faire quelque-chose de global. Ne serait-ce pas génial de pouvoir avoir un réseau décentralisé multi-plateformes ?

À côté de cela, d'autres projets similaires provenant aussi d'étudiants commencent à se concrétiser ! Je pense notamment à Movim (premiers mockups d'interface réalisés, et je peux vous dire que ça en jette, beau boulot Timothée !), mais aussi OneSocialWeb, développé par des ingénieurs de Vodafone (des spécifications XMPP ont été écrites, les clients Android, web et en console marchent et permettent déjà d'en tirer quelque-chose).

Maintenant, voyons voir avec Jappix, un projet qui se disait messagerie instantanée à ses débuts, mais qui va maintenant pouvoir se dire plateforme sociale.

2. Techniquement parlant...

Jappix se base en totalité sur le protocole XMPP, ce qui apporte une extensibilité énorme et une grande simplicité dans son développement : en effet, la partie la plus complexe du fonctionnement de XMPP est gérée par les serveurs eux-mêmes. Et des serveurs de qualité, on en a déjà quelques-uns (ejabberd notamment), voire de très légers (Prosody). Sans la lourdeur de la partie serveur, il est ainsi aisé d'améliorer Jappix et de maintenir son code.

Le principal avantage de XMPP est son ouverture et sa décentralisation. Ainsi, n'importe qui peut créer son instance Jappix pour offrir un réseau social à sa commune, son organisation ou à lui-même. De plus, la plateforme fraîchement déployée sera déjà mise en relation avec l'ensemble du réseau XMPP, ce qui vous permet de retrouver vos amis d'une autre commune, par exemple. Magique, n'est-ce pas ?

Bâtir une infrastructure mondiale distribuée, libre, et à l'abri de tout contrôle, voire d'une destruction entière (il faudrait d'abord détruire l'Internet lui-même pour détruire le réseau XMPP) est primordial pour nos libertés individuelles. Mais cette organisation qui nous est chère ne protège pas pour autant ses utilisateurs d'éventuel indiscrets s'intéressant (trop) à leur vie privée... À tout problème solution !

En effet, si vous utilisez quotidiennement ces réseaux, vous avez sûrement remarqué l'extrême contrôle qui vous est offert sur votre activité personnelle. En général, tout ce qui est privé dans XMPP se base sur les autorisations de présence. Ainsi, si vous donnez le droit à une personne de voir quand vous êtes en ligne, cette entité pourra aussi voir votre nœud PubSub (publication/abonnement) : PEP. Mais qu'est-ce donc ? PEP permet de partager tout type d'information structurée, telle que la musique que vous écoutez actuellement, votre humeur, votre activité, votre position géographique ou votre microblog. Jappix intègre déjà tout ça. Voilà pourquoi il est devenu une plateforme sociale.

C'est bien beau ce PEP, mais comment ça marche ? Comment tous mes contacts peuvent-ils recevoir en temps réel mon flux d'activité à travers ce réseau énorme, cette gigantesque fourmilière ? Comment je l'ai dit plus haut, la partie complexe est exclusivement réservée aux serveurs, qui, dans ce cas-ci, se contentent de notifier en temps réel le client (Jappix) par ce que l'on appelle des "push". Ainsi, votre serveur XMPP agit comme une sorte d'entonnoir qui vous envoie toute l'activité à laquelle vous vous intéressez. Jappix n'a plus qu'à afficher, devant vos yeux émerveillés, le résultat !

Mais ce n'est pas tout : PEP ne se limite pas aux fonctionnalités énoncées plus haut, et permet à tout un chacun d'envoyer son propre modèle de données structurées. Ceci permet, en outre, de partager des choses non normalisées par la XSF (l'organisation en charge de XMPP), comme le partage de photos, d'évènements, de vidéos, de liens... On se rapproche des fonctionnalités que propose Facebook, non ? C'est pourtant simple de proposer une alternative avec un tel protocole.

Ainsi, quand vous utilisez Jappix, tout est privé par défaut, à part bien sûr les informations que vous soumettez volontairement sur votre profil public, mais qui ne révèlent en rien vos activités personnelles. Ce profil permet juste de vous retrouver dans les annuaires des serveurs. Nous avons exactement la même philosophie que le projet Movim, qui est de redonner aux utilisateur le contrôle sur tout ce qui les concerne.

Cerise sur le gâteau : vu que Jappix utilise XMPP, que OneSocialWeb fait de même et que Movim y bosse, les utilisateurs auront aussi le choix de la plateforme. Si c'est pas beau la liberté !

3. Et l'utilisateur ?

Nous le savons tous, le grand public n'aime pas le changement. Après tout, si Facebook et MySpace conviennent à Mme Michu, pourquoi aller perdre son temps à se créer un compte autre part et à tout réapprendre ?

Ce qu'il faut, c'est que ces projets de plateformes sociales ouvertes soient des viviers et des vecteurs d'innovations. Ainsi, dans le développement de la future version de Jappix (la 0.2), nous avons porté un très grand intérêt à l'interface utilisateur, afin de simplifier l'usage de Jappix au maximum et de le rendre le plus agréable possible.

Un utilisateur qui arrive sur un nœud Jappix est guidé pour son inscription, un serveur lui est proposé, et il n'a qu'à remplir les champs correspondant à son identifiant et à son mot de passe. Puis, il n'a plus qu'à se connecter et retrouver ses amis sur le réseau. Je pense qu'il serait difficile de faire plus simple (en tout cas dans la version 0.2, pour le futur nous attendons vos propositions !). Je vous ai préparé un bref aperçu ci-dessous :

En ce qui concerne la vie privée, nous voulons aider les gens à comprendre combien elle est importante et doit être protégée. Ainsi, lorsque celui-ci modifie son profil, un cadre jaune à titre informatif lui prévient de faire très attention aux informations qu'il soumet, telles que son vrai nom, ses coordonnées, sa date de naissance, sa photo... Je trouve qu'il est est du devoir des futures plateformes sociales libres d'informer et de mettre en garde les utilisateurs sur des quelconques dangers à leur sujet (nous l'avons beaucoup évoqué lors des réunions Movim et nous avons appliqué cette manière de penser à Jappix).

D'ailleurs, nous mettons à disposition de quiconque voulant se mettre à XMPP un serveur (jappix.com) avec un module de salons de discussions (muc.jappix.com) et une passerelle MSN (msn.jappix.com). Nous fournissons aussi d'autres modules, utilisez l'outil de découverte de services de Jappix ou de Gajim pour les connaître.

4. Perspectives

À l'avenir, nous souhaitons que Jappix devienne une des multiples futures plateformes sociales formant un ensemble, un réseau unifié, libre et décentralisé.

En ce qui concerne le développement, nous espérons que le W3C publiera rapidement ses standards sur la webcam en HTML5 et que les navigateurs web l'intègreront rapidement. J'ai moi-même hâte de pouvoir faire des vidéoconférences depuis Jappix !

Aussi, et afin d'éviter de passer par un relai HTTP (le serveur BOSH), nous pensons abandonner la librairie JS JSJaC et passer à Strophe, qui, à ce que j'ai entendu, se penchera prochainement sur l'intégration de websockets.

Nous espérons que Jappix permettra à un bon nombre de personnes de découvrir XMPP et de rejoindre la communauté d'utilisateurs et de contributeurs !

5. Aidez-nous !

Il y a de multiples moyens d'aider le projet Jappix, et à tous les niveaux d'ailleurs.

La première chose à faire serait de rejoindre notre liste de diffusion, en utilisant le formulaire d'inscription situé sur le site du projet, rubrique "mailing list" (ou "contact" sur la future version).

Si vous êtes un développeur (JS, PHP, HTML, CSS, Java), rejoignez-nous sur notre salon de discussion XMPP, ou sur notre espace de développement. Notez que le Java servirait uniquement à améliorer Palladium, le servlet Tomcat permettant un accès BOSH indépendant à tout serveur XMPP, nous aurions besoin d'aide sur le TLS/SSL notamment, qui ne marche pas très bien.

Vous souhaitez aider à la traduction ? Nous avons une interface web permettant à quiconque de contribuer. Si une langue que vous parlez n'est pas encore référencée, dites-le nous et nous l'ajouterons afin que vous puissiez aider à sa traduction.

Puis, si vous préférez documenter le projet, ou en parler autour de vous, nous sommes aussi ouverts ! Enfin, vous pouvez suivre, en instantané, l'actualité de notre projet en rejoignant notre groupe sur Identi.ca.

Les rétroliens

  1. Ping : Tweets that mention Jappix, un réseau social ouvert | Le weblog de Vanaryon -- Topsy.com le 3 juillet 2010
  2. Ping : Découvrir XMPP/Jabber avec Jappix – Le weblog de Hl2612 le 2 novembre 2010
  3. Ping : Jappix a besoin de vous ! - Le weblog de Vanaryon le 16 novembre 2010
  4. Ping : Jappix Lupo est là ! - Le weblog de Vanaryon le 20 mars 2011

Les commentaires

  1. jp.fox
    3 juillet 2010 à 09:58

    Très intéressant ce billet ^^

    J'ai quelques questions pour mieux comprendre le fonctionnement :

    - Où sont stocké les données de type photos, statuts... (mes propres données et celles de mes contacts que je peux visualiser) au niveau du client Jappix, au niveau du serveur XMPP ?

    - Que se passe t'il si un de mes contacts publie quelque chose alors que je ne suis pas connecté ? je vais trouver les données en attente à ma prochaine connexion ?

  2. Vanaryon
    3 juillet 2010 à 10:22

    @jp.fox : les données de type textuel sont stockées sur le serveur XMPP. Cependant, tout ce qui est binaire (photos, vidéos, fichiers plus généralement), sont stockées côté serveur hébergeant Jappix (malheureusement, oui, mais on ne peut pas faire autrement : les serveurs XMPP ne stockent que du textuel).

    À la limite, les photos auraient pu être stockées en base64 comme les serveurs XMPP le font pour les avatars, mais serait-ce vraiment utile quand on sait qu'une image en base64 pèse 30% de plus que son original binaire ?

    Ce qu'il se passe lorsque quelqu'un publie quelque-chose, c'est que tu retrouveras sa dernière publication dans ton canal de nouvelles "mixées" à la connexion. Ensuite, si tu veux voir toute son activité que tu n'as pas vu, il suffit d'ouvrir son canal à lui. ;)

    Voilà voilà :) Par contre pour les photos ça n'est pas encore prêt, je prévois de bosser dessus dans les jours qui viennent, avec la mise en cache locale des avatars.

  3. xapantu
    3 juillet 2010 à 10:33

    Juste une idée pour promouvoir Jappix : vous devriez rapidement faire le même système que Facebook au niveau des groupes pour pouvoir avoir des bannières "rejoignez-nous sur Jappix" par exemple... si tous les sites sur le libre avaient ça, ça fer

  4. xapantu
    3 juillet 2010 à 10:35

    (arf, faute de frappe... (clavier pourri) je continue)

    si tous les sites sur le libre avaient ça, ça ferai beaucoup de pub et ça vous amènerai plein d'utilisateurs.

    Bonne continuation !

  5. Vanaryon
    3 juillet 2010 à 10:51

    Salut xapantu,

    Le soucis de ces bannières, c'est que ça serait difficile de permettre à l'utilisateur de joindre directement son Jappix (quelque-part, pas forcément sur jappix.com).

    Ou alors, il faudrait emmener les gens vers une page expliquant comment rejoindre le groupe et s'inscrire, c'est plutôt ça que tu entendais ?

  6. xapantu
    3 juillet 2010 à 12:17

    Oui, c'est vrai que j'avais pas vraiment réfléchit... mais dans l'absolu, il faudra tôt ou tard trouver un moyen desavoir quel utilisateur utilise quel serveur ? peut-être une bdd commune à tous les serveurs ? mais on perd le côté complètement décentralisé...

    Eninf, je ne ne sais pas, c'était une idée qui m'était venu comme ça, je n'avais pas réfléchit au côté technique.

  7. Vanaryon
    3 juillet 2010 à 12:42

    Ça ne servirait à rien une BDD commune ?! Pourquoi en avoir une ? Explique-moi, je ne comprend pas bien là :)

  8. Julien
    3 juillet 2010 à 12:46

    Vous pourrez admirer la version 0.2 sur le stand PostPro aux RMLL de Bordeaux dès mardi !

  9. Vanaryon
    3 juillet 2010 à 12:49

    ...ou vous pouvez la tester chez vous en installant la version de développement :

    svn checkout http://svn.codingteam.net/jappix/

    Puis en consultant notre documentation à http://codingteam.net/project/jappix/doc

  10. xapantu
    3 juillet 2010 à 12:56

    : ce que je voulais dire, c'est d'avoir une BDD qui permette de rediriger l'utilisateur sur son serveur. (genre on arrive sur une page, on met son adresse, ça regarde dans la BDD sur quel serveur on est et ça redirige vers le bon serveur). Mais c'est pas terrible, je suis d'accord.

    Par contre, tous les serveurs Jappix pourrait mettre un cookie sur l'ordinateur qui permette de savoir sur quel serveur on est, c'est un peu bancale comme solution mais ça doit pas être trop dur à mettre en place (sauf que je connaîs pas bien le fonctionnement de ce genre de truc et je ne me souviens plus si on peut accéder aux cookies d'un autre site...).
    Après, par javascript, on regarde le serveur de l'utilisateur et le site mets un lien vers le bon serveur.

    Bon, je dois pas être très clair.... laisse tomber si tu comprends pas, c'était juste une idée comme ça et je ne dois pas très bien m'exprimer...

  11. Vanaryon
    3 juillet 2010 à 13:01

    Non, j'ai compris : permettre de rediriger vers le "bon" Jappix l'utilisateur s'il tombe sur une instance qu'il n'utilise pas.

    Arf, je ne crois pas que ce soit top comme méthode. L'utilisateur connaît l'adresse de l'instance de Jappix qu'il utilise, je ne vois pas pourquoi il faudrait le rediriger. Surtout que certaines instances de Jappix utilisant un BOSH externe permettraient l'accès à n'importe quel serveur XMPP. Après, les photos peuvent toujours être récupérées, elles sont juste stockées sur l'instance utilisée lors de l'envoi.

    C'est ça un réseau : ne pas spécialement tout héberger à un seul endroit ;)

  12. Ano
    3 juillet 2010 à 14:58

    Bonjour,

    Question vie privée, si j'ai bien compris, les informations ne sont visibles que par les personnes autorisées. Sont-elles visibles par défaut par TOUTES ces personnes autorisées?

    Y a-t-il la possibilité de sélectionner qui peut voir quoi? Par exemple, si je veux laisser un message visible uniquement par mes amis du lycée mais pas ma famille, est-ce possible?

    C'est une fonction très importante dans Facebook pour éviter que tous ses amis aient accès à toutes les données, je pense qu'il faut que les plateformes libres permettent au moins ce filtrage.

  13. Vanaryon
    3 juillet 2010 à 15:52

    @Ano : pour le moment, on ne peut pas. Toutes les personnes du roster verront tout ton canal personnel.

    Cependant, OneSocialWeb est en train d'écrire des brouillons d'extensions XMPP avec des autorisations se basant sur les groupes du roster (liste de contacts).

    Dès que leurs specs sont prêtes, on les intègre. Donc dans l'immédiat, ça ne sera pas possible. À l'avenir, oui !

  14. Umcisou
    6 juillet 2010 à 10:10

    Bonjour,

    Très intéressant. J'ai une question sur le principe de réseau social décentralisé.

    Si j'ai bien compris les informations sont stockées soit sur le serveur XMPP (texte), soit sur le serveur hébergeant Jappix (binaire).

    Les instances de Jappix (et les autres réseaux sociaux utilisant XMPP) sont interconnectées, c'est l'idée de décentralisation.

    Mais si un jour je souhaite changer de serveur (XMPP ou Jappix) existe-t-il un moyen simple de transférer mes informations stockées vers un autre serveur ?

  15. Vanaryon
    6 juillet 2010 à 11:03

    : c'est là qu'il y a un petit problème. Tu pourras transférer une partie des informations, mais pas tout, à moins d'avoir accès en lecture/écriture à la BDD complète des deux serveurs afin de transférer en "bidouillant".

    Gajim propose une chose permettant de synchroniser sa liste de contact entre deux comptes, mais ça ne va pas plus loin.

  16. Photos lunettes
    14 juillet 2010 à 08:12

    Bonjour,j'utilise Jappix beta et il est tres interessant a sen servir vu qu'il offre le moyen de gérer les autres messenger aussi.

Laisser un commentaire