Jappix : web-client Jabber libre

Posté le 6 mars 2010 @ 22 h 27 min par Valérian Saliou

Après une longue période de secret, je me suis enfin décidé de vous présenter le projet sur lequel je travaille depuis septembre 2009 : Jappix (visitez le site du projet). C'est un client Jabber qui a la particularité d'être sous forme d'application web accessible de n'importe où. Pour ceux qui ne savent pas, Jabber ou XMPP est un protocole de messagerie instantanée extensible et ouvert.

Dans cet article je vais vous parler de ce que je vise à accomplir, ce qui est déjà fait et du modèle que je veux créer pour la plateforme en accès public. Il est important de noter que Jappix sera distribué sous licence AGPL, afin d'assurer la pérennité de son développement futur, mais aussi de permettre à n'importe qui d'étudier, de modifier et de redistribuer le code de Jappix.

Je précise avant tout que Jappix n'est pas encore sorti, il vous faudra attendre courant août 2010 pour pouvoir l'utiliser (ou étudier son code, c'est vous qui voyez !). Ceci n'est qu'une introduction au projet.

1. Un constat

Jappix est parti d'un constat : à l'ère de la révolution des applications web et des percées du protocole XMPP dans le grand public ( et sont des bons exemples, malgré le triste fait que Facebook Chat n'utilise XMPP qu'en interne, c'est à dire qu'un utilisateur ne pourra pas communiquer avec le réseau XMPP global), comment se fait-il que le grand public ou tout geek qui se respecte ne puisse-t-il pas avoir à sa disponibilité une application web pour accéder à son Jabber qui allie esthétisme, prise en charge totale du protocole et code ouvert ? Oui, vous me direz qu'il y a JWChat, mais ce logiciel est-il vraiment proche de l'utilisateur ? Pas vraiment.

De plus, pour que Jabber se répande largement et assainisse un coup fatal au protocole propriétaire et restrictif qu'est MSNP (utilisé par MSN), il faut conquérir le grand public, c'est à dire monsieur et madame tout le monde, chose qui n'est pas si facile... C'est donc là qu'interviendra Jappix, un client Jabber sous forme d'application web qui pourrait être très utile sur un netbook de type Google Chrome OS. Le seul problème, c'est qu'il faut faire connaître Jappix.

2. Des idées

Les idées, ce n'est pas ce qui m'a manqué tout au long du projet : tout d'abord, revenons sur le nom de "Jappix". Pourquoi ce choix et pas un autre ? "Jappix" est en fait une manipulation du mot "Jabber" en inversant les "bb" en "pp" et en remplaçant "er" en "ix", le "pix" symbolisant l'aspect image et esthétisme du projet. En effet, Jappix a pour but d'être au plus proche possible de l'utilisateur, le web-design est ainsi une partie importante sur laquelle j'ai passé (et je passerai encore) énormément de temps.

J'ai une volonté très forte d'intégrer rapidement le support de la vidéo/audio de XMPP (Jingle). Cependant, je ne veux absolument pas utiliser de plugins navigateurs pour arriver à mes fins. C'est là donc un grand problème : il faudra développer quelque-chose en JavaScript qui puisse accéder à la webcam de l'utilisateur, encoder le flux sur l'ordinateur client, et le transmettre via HTTP, chose actuellement impossible ! Ceci aurait été réalisable avec Java ou Flash, mais développer une application ouverte et respectueuse des standards c'est aussi se priver de certaines choses. Peut-être que dans le futur, si les technologies n'évoluent pas suffisamment (sur ce point je suis confiant, regardez moi cette vidéo et testez le logiciel !), je serai contraint d'intégrer des plugins, mais pour le moment il vaut mieux ne pas supporter Jingle du tout.

Pour ce qui est du modèle que je souhaite utiliser, je calquerai celui de WordPress qui marche plutôt bien : une plateforme communautaire et une plateforme commerciale. Je trouve ce système plutôt intéressant car ceci permet dans le premier cas de meilleures interactions avec la communauté de développeurs et dans le second cas d'apporter un financement stable au projet ce qui permet à une petite équipe de travailler à plein temps sur le code, le design et la traduction du projet. Vous l'avez compris : Jappix disposera d'un site de projet du style project.jappix.com et d'un site commercial : www.jappix.com, accessible à tous et permettant d'utiliser directement la plateforme.

3. Le développement

Le développement, bien que non terminé à l'heure à laquelle j'écris ces lignes s'axe en 3 grandes parties :

  • la partie interface homme-machine (en xHTML et CSS)  ;
  • la partie communicative et actions (en JavaScript et PHP) ;
  • la partie optimisation (allégement du JavaScript, des images et des requêtes XMPP).

Premièrement, j'ai commencé par créer un mockup de l'interface, sans aucun élément dynamique ni aucune communication. Je posais les bases de code xHTML, CSS et des images nécessaires à l'interface. Durant cette partie, j'ai tenté de créer une interface la plus proche de l'utilisateur possible. Cependant, les technologies utilisées pour le CSS notamment rendent Jappix incompatible avec Internet Explorer (pour le moment).

Ensuite, je suis passé à la partie communication et actions (le dynamique entre autres), partie la plus complexe et laborieuse. J'ai commencé à intégrer les bibliothèques JQuery (pour la facilité et la rapidité à développer qu'elle apporte), et JSJaC (pour la partie communications XMPP).

Puis, viendra la partie optimisation permettant de réduire au maximum le nombre de requêtes HTTP nécessaires au chargement de Jappix ainsi que le poids total de l'application (300 Kio actuellement, ce qui est beaucoup trop élevé : et les pays en voie de développement qui n'ont que le 56K, comment font-ils ?). Les images seront donc enregistrées sous forme de sprites en 256 couleurs PNG afin de réduire le poids total des icônes, illustrations et autres logos. De plus, il y a une réelle optimisation à faire sur les requêtes XMPP que Jappix réalise par l'exploitation d'un cache d'informations (stockage dans des inputs de type hidden du HTML) au lieu de redemander à chaque fois la récupération de données déjà transmises dans la session.

4. La comm' !

Comme tout projet qui se respecte ne peut être connu sans comm' (ou communication) auprès des autres internautes, j'ai dédié quelques heures de mon temps à créer un site de pré-lancement permettant à n'importe qui de s'inscrire aux notifications d'avant-sortie de Jappix. Je trouve cette manière de procéder intéressante étant donné que ça me permet de tenir au courant les personnes le souhaitant. Ceci permet de fidéliser avant même la sortie de Jappix quelques personnes !

Vous pouvez d'ores et déjà visiter le site officiel du projet, afin de vous inscrire aux alertes, d'obtenir plus d'informations ou d'entrer en contact avec nous. J'ai aussi lancé le projet sur CodingTeam.net, rejoignez-nous (le code source arrivera bientôt) !

Les rétroliens

  1. Ping : le 13 mars 2010
  2. Ping : Jappix : appel à donations | Le weblog de Vanaryon le 16 avril 2010
  3. Ping : Tweets that mention Jappix : web-client Jabber libre | Le weblog de Vanaryon -- Topsy.com le 18 avril 2010
  4. Ping : Jappix : il arrive ! | Le weblog de Vanaryon le 19 avril 2010
  5. Ping : Jappix v0.2 se confirme | Le weblog de Vanaryon le 21 mai 2010
  6. Ping : Galacticnova a maintenant un salon Jabber – Le weblog de Hl2612 le 31 octobre 2010
  7. Ping : Jappix, un client web Jabber français sur XMPP - Influence PC le 18 mai 2011

Les commentaires

  1. Samaelh
    7 mars 2010 à 01:01

    Puisqu'il s'agit d'un client web, la licence AGLP ne serait-elle pas plus appropriée ?

    http://fr.wikipedia.org/wiki/GNU_Affero_General_Public_License

    Bonne continuation pour ce projet :)

  2. zippy
    7 mars 2010 à 01:31

    En gros, tu veux juste renverser le grand méchant MSN (et autres), mais sans support webcam (enfin au début), c'est pas super au point, on ne peut pas tester, on n'a même pas une capture, on aura aucun code avant 6 mois et tu espère qu'on te prenne au sérieux?
    Ton projet a l'air intéressant, tu semble avoir peur de rien et être super motivé. Mais où peut-on aider le projet? Moi par exemple ça m'intéresserai de travailler sur l'interface, mais en l'état il n'y a rien de concret.

  3. Vanaryon
    7 mars 2010 à 10:11

    : pour la licence je vais voir, ça m'a l'air plus approprié ce que tu me proposes, merci ! ;)

    : en gros, non je ne veux pas renverser MSN avec Jappix, mais j'aimerai bien que XMPP le fasse un jour (pas Jappix, XMPP !). Au niveau des captures, c'est vrai, je n'ai rien mis en ligne, mais c'est pour une raison de "surprise" on va dire.

    Ce que je préfère faire pour le moment, c'est développer seul Jappix jusqu'à août prochain afin d'arriver à la Beta et là, et seulement là, je libèrerai le code, lancerai une plateforme de développement du genre Redmine et la plateforme Jappix "officielle" sera en ligne. Désolé si je ne fais pas les choses tout de suite, mais je préfère opérer comme ceci.

  4. o.LF
    7 mars 2010 à 14:16

    Bonjour,

    Projet intéressant, mais il semble que tu ne sois pas le premier sur ce créneau:
    http://www.ijab.im/
    http://afflux-project.org/
    http://blog.jwchat.org/jwchat/
    ...

  5. Vanaryon
    7 mars 2010 à 14:24

    @o.LF : justement, mais pour moi, les clients actuels ne vont pas assez loin, c'est bien pour cela que je lance Jappix. Je connaissais déjà les 3, iJab est vraiment pas mal mais copie trop certaines choses à mon goût et n'est pas très ergonomique.

  6. Edouard
    7 mars 2010 à 18:49

    Ca a l'air bien sympa ! Si veux bien faire beta testeur si tu as besoin !

  7. Edouard
    7 mars 2010 à 18:51

    Comprendre: Je veux bien faire beta testeur

  8. Vanaryon
    7 mars 2010 à 19:24

    Edouard : pour les beta tests, ce sera au lancement, vu que ça sera la BETA qui sera lancée cet été !

  9. Edouard
    7 mars 2010 à 21:01

    hum ok, chui con en fait :)

  10. louiz’
    8 mars 2010 à 01:02

    Euh, mais POURQUOI attendre d'avoir un truc qui fonctionne avant de montrer le code ?
    On demande pas de nous faire une interface de test hébergée sur ton serveur, ou un truc du genre, si t'as la flemme.
    Mais, le code… Qu'on puisse tester, te reporter des bugs, te donner des idées pour orienter un peu le truc vers ce que les gens aiment…
    Le coup du « j'attends que ce soit stable avant de le sortir » ça fait que ralentir le développement, à mon avis.

  11. Psykoh
    8 mars 2010 à 11:45

    J'étais justement à la recherche d'un client xmpp de ce type ! Cela peut être très utile en cas de proxy par exemple (non non je ne veux pas glander au boulot).
    Si tu cherches à faire connaître ton projet fais de la pub sur linuxfr.org par exemple et le plus possible de site de ce type. En échangeant avec la communauté le plus tôt possible cela t'évitera de partir dans une mauvaise direction.
    Par contre, sans avoir l'esprit mal tourné, change la favicon du site; on dirai une belle paire de fesses :-/

  12. Vanaryon
    9 mars 2010 à 19:08

    ' : eh bien, je ne sais pas trop. Je me suis fixé des objectifs, et je compte les remplir. En fait, je fais ça uniquement pour éviter que ce soit le bordel au début. Je vais y réfléchir ;) Mais en tout cas, si tu veux tester, je peux te filer un lien pour en privé (contacte moi avec le formulaire de la barre de droite du blog).

    : bonne idée, je le ferai quand j'aurais du temps ! Et pour la favicon, on m'a déjà fait la remarque, je vais songer à une nouvelle prochainement !

  13. Edouard
    13 mars 2010 à 14:46

    : en tout cas pour développer ton logiciel le jour ou tu le rendra public, je te conseille chaudement la forge codingteam.net que j'ai découvert il y a peu.
    C'est super bien fichu, et très convivial vu que c'est une "petite" forge à coté des géants sourceforge et autres.
    Depuis que je l'utilise j'ai énormément gagné en rapidité et qualité de développement.
    peut être à bientôt sur codingteam ;)

  14. Vanaryon
    13 mars 2010 à 15:21

    Je connaissais ;) Faut que j'y jette un coup d'œil, merci !

  15. MCMic
    22 mars 2010 à 11:27

    Et quels sont tes objectifs aux niveaux des normes? Valide W3C XHTML? CSS aussi? Accessibilité handicapé? C'est à prendre en compte assez tôt dans le développement.

    Du SVG ça ne te ferai pas gagner en poids?

  16. Vanaryon
    23 mars 2010 à 20:06

    Alors pour les normes, oui, il faut que ça soit valide xHTML absolument (xHTML + HTML5 mélangés).

    Pour ce qui est du CSS c'est totalement différent : le code devra être valide syntaxiquement, et ne pas utiliser de propriétés spécifiques IE. Par contre, il ne pourra être validé tout de suite en raison de l'utilisation des moz-border-radius et moz-box-shadow ou autres (webkit a ses propriétés aussi).

    Et oui, l'accessibilité handicapé c'est prévu, et puis ce sera relativement simple à mettre en place : il suffit d'un petit script JS qui modifie la feuille de style si on le lance. Pour celà, une modif' du CSS sera nécessaire, c'est tout.

    Le SVG ? J'y ai pensé, mais actuellement les navigateurs sont trop lents à "dessiner" le SVG. Et puis, après tout, les sources seront fournies dans un tarball spécifique pour les images (en format XCF de Gimp). Mais à l'avenir ce serait une bonne idée (pour le moment, je bosse à fond le JS).

  17. Pfff
    29 mars 2010 à 07:28

    Au taf j'ai mis en place un serveur Jabber avec OpenFire avec SparkWeb que vous pouvez trouver ici:
    http://www.igniterealtime.org/projects/sparkweb/index.jsp

    je trouve l'interface tres bonne!

  18. Vanaryon
    31 mars 2010 à 13:00

    Mouais... J'ai testé, c'est du Flash, et niveau fonctionnalité il n'y a presque rien !

  19. Lincoln Rado
    13 octobre 2010 à 17:37

    Bonjour,
    Est ce que le service ouvreture de compte sur l'appli (jappix.com)est payant? Je n'ai pas vraiment compris.
    Merci

  20. Vanaryon
    13 octobre 2010 à 20:31

    Salut,

    En aucun cas il n'est payant. La communauté fourni le matériel nécessaire pour le service, et tout cela bénévolement et "gratuitement" pour les utilisateurs.

  21. projeta618
    28 janvier 2011 à 19:12

    Bonjour je suis intéresser par ton projet !!
    J'ai actuellement un équipe de développeur !!
    Qui plies le dos , sur le code d'un réseaux social , nouvelle génération !!

    L'intégration de Jappix , sera un plus !!

    Le projet sera open source !!

    Seulement que seul la communication via les serveurs Jabber en XMPP sera réutiliser , nous développons notre système en python !!

    Pour le code Xhtml/css/javascript , il est développer par une autre équipes !!

    PS: Nous avions déjà penser à intégrer ce système , au début néanmoins vue que tu as déjà développer un système de ce genre le mieux est que tu te lie à nous pour développer cette partit !!

  22. projeta618
    28 janvier 2011 à 19:14

    Ne répond pas sur ce fil !!

    Contact moi directement à l'adresse suivante

  23. Vanaryon
    29 janvier 2011 à 09:22

    Après quelques recherches, j'ai envie de dire : tu te fous de ma gueule ?

    Nan mais tu crois que tu vas réussir à embrigader autant de monde dans ton projet pour te faire un max de blé ? Tu croyais aussi que j'allais accepter ?!

    Vous/tu n'irez/n'iras pas loin, surtout avec un français aussi approximatif, en étant, apparemment, français.

    Joignez-vous à des projets existants, c'est déjà trop tard pour créer le sien, en espérant que vous parlez mieux le Ruby (Diaspora) que le français...

Laisser un commentaire