Logiciel : Empathy : l'avenir de la messagerie instantanée dans GNOME
Posté par Étienne Bersac (Jabber id, page perso, ). Modéré le 02 août 2007.
Certains d'entre-vous ont certainement déjà essayé la branche télépathy de Gossip, le client Jabber libre pour GNOME. Cette branche n'est plus maintenue et pour une bonne raison : elle a donné naissance à Empathy.
Empathy se propose d'être une ensemble de widgets réutilisables pour la messagerie instantanée. Pour cela, il se base sur Telepathy (framework unifié de communication temps-réel sur le bureau) et Mission Control (une abstraction de Telepathy). L'interface est reprise de Gossip et notamment de la branche TELEPATHY de Gossip.
Le but principal est de permettre une intégration inégalée de la messagerie instantanée dans le bureau GNOME, comme par exemple avec le carnet d'adresses. Le futur est bien évidemment la VoIP, en témoigne la branche gossip-telepathy-voip développée par Raphaël Slinckx.
Empathy se propose d'être une ensemble de widgets réutilisables pour la messagerie instantanée. Pour cela, il se base sur Telepathy (framework unifié de communication temps-réel sur le bureau) et Mission Control (une abstraction de Telepathy). L'interface est reprise de Gossip et notamment de la branche TELEPATHY de Gossip.
Le but principal est de permettre une intégration inégalée de la messagerie instantanée dans le bureau GNOME, comme par exemple avec le carnet d'adresses. Le futur est bien évidemment la VoIP, en témoigne la branche gossip-telepathy-voip développée par Raphaël Slinckx.
Empathy (2953 hits)
Mission Control (410 hits)
Telepathy (488 hits)
Gossip (345 hits)
Gossip-Telepathy (349 hits)
> Lire la suite (61 commentaires, moyenne: 3,9). [dépêche : 1579 caractères]
Vous avez demandé le commentaire #855740.



XMPP / Empathy
J'ai un peu de mal. Si je comprend bien ce que je lis Empathy et MC permettent d'avoir une abstraction pour envoyer des messages, les recevoir, les gérer, voir les présences, gérer les contacts, etc. Les logiciels vont pouvoir s'interfacer sur cette couche pour dialoguer au lieu de tout gérer eux même.
Ca c'est bien, mais ça ne fait pas déjà un double emploi avec ? XMPP est pour moi déjà un protocole standardisé qui gère tout ça. Il aurait "suffit" de faire une sorte de proxy XMPP local qui forwarde aux différents serveurs (jabber, msn, autres). Les applications n'auront qu'à parler XMPP.
Là j'ai l'impression qu'on refait encore une couche d'abstraction sans qu'elle apporte rien de plus que XMPP. Au lieu de dialoguer en XML/XMPP les applis vont dialoguer avec des structures en C avant d'être retraduits en XML/MSN/autre. Je ne suis pas certain du gain là.
Quelqu'un pour m'éclairer ?
[^]Re: XMPP / Empathy
Il est plus simple de faire un "for m in client.message_queue:" que de devoir reparser le XML à la main.
Le XML garantie une interopérabilité entre systèmes, mais il reste plus simple d'utiliser des librairies bien conçues pour coder simplement, au sein d'un même système.
En plus, il n'est pas évident qu'un "proxy XMPP" soit la solution multi-usage, ceux qui utilisent les passerelles Jabber savent qu'il n'est pas évident que le plus petit dénominateur commun convienne à tout le monde...
[^]Re: XMPP / Empathy
> Il est plus simple de faire un "for m in client.message_queue:" que de
> devoir reparser le XML à la main.
Je le conçois, mais dans ce cas la solution peut être une libxmpp ou une libjabber, pas forcément un serveur complet avec son propre protocole.
> En plus, il n'est pas évident qu'un "proxy XMPP" soit la solution
> multi-usage, ceux qui utilisent les passerelles Jabber savent qu'il
> n'est pas évident que le plus petit dénominateur commun convienne à
> tout le monde...
Empathy n'a pas l'air de changer quoi que ce soit à cette problématique. Il y a une méthode d'accès par fonctionnalité si j'ai bien compris. Donc on parle toujours d'avoir un dénominateur commun unique.
[^]Re: XMPP / Empathy
Utiliser xmpp pour faire du msn, ça implique de passer par une passerelle, ce qui pose divers problémes :
1) il faut modifier le serveur, ou du moins, avoir un serveur qui fait tourner la passerelle, accesible depuis l'internet. En effet, tout passe par le serveur xmpp, il faut donc avoir un lien entre le serveur et la passerelle. Pas faisable si tu es derriére du nat.
Exemple : je veut parler à quelqu'un avec qq, protocole populaire en chine. Avec empathy/telepathy, j'ai que à rajouter le manager qui va bien, et je peut.
Avec l'approche passerelle, faut que je trouve une passerelle accessible, et si ça existe pas, je ne peut rien faire sur mon pc de simple pour la mettre en place. ( dans les 2 cas, pour le moment, ça n'existe pas )
2) Le passage par le serveur et une passerelle implique d'oublier tout espoir de connexion p2p qui contourne le tout. Par exemple, comment ton client jabber va négocier et utiliser le transfert de fichier avec un client msn sans passerelle ? Et passer par la passerelle serait extrement couteux au niveau réseau dans la plupart des cas. Il ne faut pas oublier que la video passe aussi en direct.
3) tout ne correspond pas directement aux concepts de jabber. par exemple, il suffit de voir les différences entre irc et les salons muc de jabber, notament la gestion du nickname ( 1 par salon sur jabber ), les avatars, les cctp, etc.
[^]Re: XMPP / Empathy
Pour le 1 je ne vois pas en quoi faire tourner une passerelle en local serait impossible ou même difficile. C'est à priori d'un niveau de difficulté équivalent à ce que font pidgin ou telepathy.
Pour le 3 c'est une question de dénominateur commun. Telepathy va forcément rencontrer à moyen terme des problèmes similaires. Quand on met une couche d'abstraction on a toujours le risque de perdre des détails.
Pour le 2, en considérant une passerelle locale (c'est à dire le même niveau d'abstraction/architecture que telepathy), je ne vois pas où est la difficulté en plus par rapport à ce que ferait telepathy.
[^]Re: XMPP / Empathy
Pour le 1, faut que le serveur puisse contacter la passerelle. donc il te faut une ip routable. Ou alors, tu te retrouves à avoir une techno différente de ce qui existe actuellement.
Pour le 2, soit tu passe par le serveur ( ie technologie actuelle des passerelles ), soit tu utilise un truc différent ( et dans ce cas, c'est autant une invantion différente de xmpp que telepathy est actuellement différent )
Pour le 3, la différence avec xmpp, c'est que c'est pris en compte dans la conception de telepathy, alors que jabber est pris de façon indépendante du reste du monde.
[^]Re: XMPP / Empathy
Pour le 1, faut que le serveur puisse contacter la passerelle. donc il te faut une ip routable.
Heu, si serveur et passerelle sont sur la même machine, 127.0.0.1 me semble parfaitement "routable"...
[^]Re: XMPP / Empathy
Logiquement, une passerelle doit pouvoir être joignable par deux éléments (sinon, ça fait difficilement passerelle).
L'un des éléments est certes le serveur local, mais l'autre doit être le serveur correspondant au protocole externe (par exemple, messenger.hotmail.com). Donc il faut bien que tu aies une IP routable ou de la redirection de ports.
[^]Re: XMPP / Empathy
Non, une passerelle ne doit être joignable que par le serveur jabber.
Et c'est la passerelle qui va joindre le serveur du service externe (messenger.hotmail.com) comme le ferait un client normal.
En conclusion, si le serveur est local, la passerelle peut être locale.
Maintenant, reste à discuter de l'interêt d'avoir un serveur local sur une IP non routable
[^]Re: XMPP / Empathy
Donc je récapitule : plutot que d'utiliser telepathy, on va
1) mettre en place un serveur xmpp en local
2) mettre en place des passeerelles local pour aller sur les réseaux fermés
3) mettre une passerelle jabber vers jabber pour aller vers le compte jabber principal
[^]Re: XMPP / Empathy
XMMP n'est pas la solution à tout (cfr les gateways).
De plus, Telepathy offre une abstraction via D-Bus [1] ce qui permet:
- un meilleur cloisonnement. Si ton connection manager MSN plante, ça fou pas en l'air tes autres connections (jabber, IRC, ...). C'est aussi un certain retour vers la philosophie Unix ("Do one job and do it well").
- un partage des connections entre les processus
- une indépendance de langage que ce soit coté client ou connection manager
- une indépendance de licence (pas de linkage)
[1] http://telepathy.freedesktop.org/spec.html
[^]Re: XMPP / Empathy
L'indépendance de licence et de langage elle existe justement déjà (et bien mieux) dans le principe d'échange xmpp.
Le partage des connexions n'y est pas, il est vrai, mais xmpp permettant de gérer plusieurs connexions sur le même compte, je ne sais pas si c'est vraiment indispensable de partager la connexion (surtout si on peut mettre un proxy xmpp au milieu pour ne pas surcharger le serveur distant).
Le cloisonnement, si je ne me trompe pas les passerelle jabber sont déjà indépendantes de ce côté là.
Mais qu'on soit d'accord, je ne dis pas que XMPP est la solution à tout où que Empathy a son rôle à jouer. C'est juste que je ne vois pas dans la news, dans le site ou dans ta réponse la fonctionnalité clé que couvre Empathy et que ne couvrait pas déjà XMPP à la base.
Mieux que ça même, je ne remettais pas en cause le bénéfice d'empathy, je demandais juste qu'on me le mette en lumière.
[^]Re: XMPP / Empathy
Si j'ai bien compris tes explications, tu voudrais que :
- telepathy soit un serveur XMPP "light" avec passerelles & co
- les applis soient clientes via empathy (qui correspondrait au libxmpp que tu cites ailleurs)
Tu oublies juste qu'il y a déjà un existant qui s'appelle d-bus pour faire ce genre de "messagerie" entre applis locales et qu'il serait dommage de ne pas en profiter ou de réinventer la roue.
A moins que tu proposes un "XMPP over DBus"...
"We all freezed on a bugged subroutine, bugged subroutine, bugged subroutine..." (nearly Beatles)
[^]Re: XMPP / Empathy
> Si j'ai bien compris tes explications
Oui, ça correspond à quelque chose du genre.
> Tu oublies juste qu'il y a déjà un existant qui s'appelle d-bus pour faire
> ce genre de "messagerie" entre applis locales et qu'il serait
> dommage de ne pas en profiter ou de réinventer la roue.
Certes, mais entre utiliser un socket tcp/ip là où on pourrait utiliser dbus (ce que j'imaginais) et avoir à réimplémenter entièrement un protocole pour la gestion de la présence, pour les messages instantannés, pour la gestion des comptes, pour la gestion des contacts (ce qui a été fait ou qui est fait dans telepathy si j'ai bien compris) ...
J'ai l'impression que la seconde option est bien plus proche du "réinventer la roue" que la première. Maintenant il est possible/probable qu'il y ait quelque chose que je n'ai pas vu qui inverse la balance.
[^]Re: XMPP / Empathy
Ca, c'est plutot Mission Control qui s'en occupe si j'ai bien suivi.
Comme par exemple le fait que tout ca se retrouve centralisé, et que ca devrait simplifier énormément la gestion de XMPP par des applis comme Abiword, Inkscape, Evolution ou Gnome-game,qui pourront simplement demander a Mission Control qui est disponible, d'ouvrir une connexion vers un des contacts, ou de récupérer la vcard de Machin qui vient de la mettre a jour ; au lieu de devoir chacun, individuellement, se gérer login/password/serveur, l'ouverture de connexion, et toutes les choses chiantes qui vont avec.
"While a monkey can be a manager, it takes a human to be an engineer" Erik Zapletal
[^]Re: XMPP / Empathy
Ah merci je commence enfin à entrevoir l'intérêt de ce truc. Perso j'ai rien compris à la dépêche. L'exemple du carnet d'adresse était pas super clair pour moi.
Le wiki de l'association culture libre : venez participer !
[^]Re: XMPP / Empathy
Dis moi si j'interprete mal, mais en gros, tu compares
1) devoir définir et mettre en place une spec dbus comme telepathy (implémentant les renseignements de présence, etc...)
2) implémenter une sorte de "XMPP over DBus" profitant du fait que XMPP soit fait pour gérer ce type d'infos.
Ta solution 2 m'a pas l'air très propre.
Sans compter qu'il y a les infos spécifiques à chaque protocole que tu auras du mal à faire passer (a p-ê moins de bidouiller le xmpp qui circulera en interne, là j'y connais pas grand chose...)
Et vu les modifs de comportements à faire par rapport à un serveur xmpp "classique", autant partir propre from scratch.
Rien que le transfert de fichier msn par exemple, tu dois modifier ton serveur pour que
-soit telepathy prenne le fichier direct (contrairement au XMPP "externe" donc)
-soit faire une passerelle entre XMPP (interne) et msn
+ faire passer d'éventuelles infos spécifiques à MSN d'une manière où d'une autre (mais comment ?)
Vu les modifs à faire + l'interpretation supplémentaire au niveau de l'appli cliente (en gros, une libxmpp pour le "over dbus") ca ne me parait pas plus simple au final.
"We all freezed on a bugged subroutine, bugged subroutine, bugged subroutine..." (nearly Beatles)
[^]Re: XMPP / Empathy
> - une indépendance de licence (pas de linkage)
Ce n'est pas la première fois que je vois cet argument cité en faveur d'un ou l'autre service D-Bus.
Je trouve ça complètement stupide. C'est un contournement stupide de la GPL.
Si ils veulent autoriser le propriétaire, ils n'ont qu'a coder une bibliothèque avec une licence adéquate (par exemple LGPL)