Salut à Toi: a multi-frontends XMPP client

goffi 05/06/2011, 15:56 projet GNU-Linux technique jabber-xmpp-en Libre SàT

G'day all,

I have been working for a while on an XMPP client with a daemon/frontends architecture: the idea is that you have the main logic centralised in the daemon side, and you can make very different lightweight frontends for the view. The project is intended to be a modular, multi-platform, multi-frontend communication software. The frontends can be adapted to a particular use case, or platform.
Currently, there are a desktop frontend, a console frontend, a command-line frontend, and a web frontend. A Kde frontend is also planned.

The project is quite difficult to summarise, as it touch a lot of domains (it's not intended to be only an instant messaging software, but to explore deeply the power of XMPP): with it you have instant messaging, e-mail style heavy messaging, multi-user chat, microblogging, file sharing, games, etc.

Techical part

Salut à Toi (SàT) - which means « Hi to you » - is heavily based on the Twisted framework, and the XMPP library Wokkel, which is on top of it and should be integrated in Twisted in the future. The core backend concentrate only on the RFC, a couple of XEP, and the essential stuff to run. Most of the XEP and the advanced functionalities are put in plugins, that allow the code to be modular, and to choose which features you want (you can remove plugins to suppress features for e.g. a public station). SàT manage several profiles: you can use different profiles for different accounts on different servers.


The backend communicate with the frontends throught a "bridge", which is actually an IPC: so far, D-Bus is used, but it is possible to use an other one. All the frontends and the backend together make one client, that means that if you enter something in one frontend, it will appear in the other ones like if it was enterred there. It also means that the history of the conversations is shared, and that if you create one profile somewhere, it will be created globally.


As the backend is independent of the frontends, you can use SàT without graphical interface (i.d. without X running), or unplug a frontend while the backend is still running (e.g. to terminate a long file transfert).
As you can guess by seeing Twisted, SàT is made with Python, it is actually 100% Python, including browser side code (see below); but an other language can be used to make a frontend. Actually any language able to talk with D-Bus can work, and the planned Kde frontend will be made with C++.

Here is a global Diagram of the architecture:
Salut à Toi: Global view

The frontends

Wix: the desktop frontend

Wix is the reference frontend, it is used to test implementation of features. It is based on wxPython. It's intended to be a classical desktop frontend, which should work everywhere. In the future, it could be change its interface for a more experimental one.

Primitivus: the console interface

Primitivus is for console lovers. It is based on Urwid, and the interface is more worked. I had to make several widgets for this frontend, so I eventually put them in a separated library: urwid-satext (Urwid's SàT extensions), I hope they can be usefull for other projects.

primitivus_copie_fichier.png

JP: the command-line tool

JP is a swiss knife, it can be used in many ways. It can be use to easily send file: I spend most of my time in a shell, and it's often annoying to have to go in thousand dialogue boxes just to send a file, furthermore if I am already in the good directory. With jp, I can just type:
jp file mycontact@example.org
and I plan to use a more friendly interface like "jp file nickname".
In addition, jp can send a whole directory by compressing it, accept multiple files without having to accept each time, or send the output of an unix command. It can be used as a powerfull scripting tool, e.g. to notify you when something happen on your server.
In the future, it should gain lot of features like sending microblogs, or managing roster.

jp.png

Libervia: the web frontend

I have waited to make this frontend to start the communication about SàT. Libervia is close to what the fashion wants to name "social network", but with a big emphasis on privacy and user respect; it clearly wants to be an alternative to the massively centralised commercial services. It's entirely made in Python, thanks to pyjamas, with is a Python port of GWT.
There are many thing to say about pyjamas: group centred right management, clear interface, use of widgets, unique input box, visual indicator to show who will be able to read your message, etc.
All of this is shown in a video (in French, but I'm pretty sure it's understandable without the sound, any help to make subtitles welcome):

This video is under Creative Common BY-SA

In addition, a technical demo is online: http://www.libervia.org . Please don't pay any attention to the ugly appearance, we are working on it and it should be really nice looking soon.

Libervia, as the whole SàT project in linked to a social contract, see below.

libervia_prototype1.png

Some things you can do with SàT

Here are some stuff you can do with SàT:

  • Use your e-mail client (MUA) to read and send your messages: XMPP manage "normal" type message, which are heavy messages pretty similar to e-mails (with a subject and a body). This messages are often managed really basically by XMPP clients, but this job could be done by feature-full stable and well-known e-mail softwares like KMail, Thunderbird, Mutt, Roundcube, etc. So, 3 extensions have been made: one to manage a Maildir box, one to manage an IMAP server, and one to manage a SMTP server. Theses extensions allow to connect most of e-mails clients to SàT, and use them to send message to your XMPP contacts, receive messages from them, or even send message to standard e-mail network throught an SMTP gateway. I think XMPP is an excellent candidate to be used as an alternative to e-mail.
  • Microblogging: SàT manage microblogs (only in Libervia so far), not only in the popular classical public way, but also with access restriction through roster-based group access. For example, if you have all you family members in the group "family", you just have to enter "@family: Salut à toi la famille" in the input box, and only the member of your family will be able to read this message. If you want to publish this for everybody, just enter a double @, like this: "@@: my global public message". With this, not only all you contacts will be able to read your message, but even people you don't know as it is public (on the online demo, you can see them through http://www.libervia.org/blog/your_nick).
  • receive multiple files from one contact without having to individually accept them: jp, the command-line tool, allow (among other things) to automatically accepts files, or to send a full directory at once by making a tarball with it.*
  • Nothing to do with XMPP, but an extensions allow to send message to a Couchsurfing account. There is a way to make lightweight XML interfaces for plugins: that allow to make a plugin which will work with all frontends; the couchsurfing plugin was just an excuse to try it.
  • Play French Tarot: I have made a French Tarot game (a card game extremely popular in France), which is playable on the desktop with Wix, in text-mode with Primitivus, or in a browser with Libervia. It was a test in the idea to make a general card game XEP, any people interested in cards games for XMPP can contact me.

Games

Games are an important part of SàT. The following stuff are planned:

  • Generic card games engine: the Tarot Game was an implementation test of a card game. I'd like to take profit of this experience to make a generic XEP, wouldn't it be nice to play your favourite card game through your favourite XMPP client with your friends ? If you are too far to play on a real table of course :)
  • I'd like to do the same think for board games, and a Xiangqi game is planned (Chinese chess)
  • A quiz game is planned in the very short term, probably for next release
  • on the long term, everything can be made, even maybe real-time games

wix_tarot.pngprimitivus_tarot.png

Social contract

Maybe the most important point of all the project: a social contract has been made, and show the principles that SàT and people involved in it follow. It can be read here: http://www.libervia.org/contrat_social.html, but it's only available in French so far.

Licences

  • The SàT backend, Wix, Primitivus and jp are under GPL v3+
  • urwid-satex is under LGPL v3+
  • Libervia in under AGPL v3+

What's next ?

I have reached the point I wanted to build the foundations of the project, and make it credible. Now I need to stabilise everything, clean and re-factor several parts of the code, remove all the ugly Q&D hacks, finish half-made things, etc.
It's the perfect time to give a hand :)

But new features are planned on the short time, mainly picture sharing and quizz game.

You want to help ?

All the tools needed for contributions is here (wiki, bug tracker, mailing list, mercurial repository).
The project use many really interesting stuff like Twisted, Wokkel, Urwid, Pyjamas, etc. It can be a good way to discover them and improve you skill, and I hope give them some contributions.

The help I need:

  • developers ! The project begin to be too big for me alone. In particular, I need people to port SàT on other architectures (*BSD, Android, Mac OS X, Windows, etc.). Only portable technologies have been used, so it should ask a reasonable amount of work.
  • tester: SàT should work with most browsers, most platforms, most XMPP server, etc.
  • Graphic designers: many things to do: icons, design, etc. Somebody just started to help me on this point, that means that the aspect should improve quickly.
  • CSS designers, Libervia should offer different kind of presentations
  • translators
  • donations: if the project succeed, would you make some donation ? Should I take some time to have a donation system ?
  • ...

If you are interested, the first thing is to subscribe the mailing list: http://lists.goffi.org . I hope to have around 10 peoples to start to use it seriously.

Conclusion

This post is only an overview of Salut à Toi, and I think the potential is very big. I strongly believe in the community, and I hope I have interested you enough to have a hand :)

I finish with two videos showing the project (the third one is linked above), but they are in French. Any help to make subtitle for them welcome.

This video is under Creative Common BY-SA

This video is under Creative Common BY-SA

Z_God 07/06/2011, 11:57

I didn't read it very thorough, but isn't this very similar to Telepathy? Some of the examples (like a game) seem to be done with Telepathy as well.

Is this made on top of Telepathy?

Goffi 07/06/2011, 13:52

Hi,

Well I have thought about Telepathy when I started SàT, but I quickly discard it because I wanted to use Twisted (I like the architecture, and it's really powerful).

I haven't studied Telepathy in details, so maybe I'll say wrong things, but Telepathy is a framework to make communication software like XMPP client, while SàT *is* a XMPP client, and the backend and all the frontends make a whole unique client: that means, e.g., if you send a message in one frontend, it will appear in all others like if it was entered there. That also mean a common shared history.
The backend doesn't only manage all the XMPP stuff, it also manage stuff like progress bar or some UI parts.
I think that if you would want to put Telepathy in the SàT architecture, it would be instead of Twisted rather than instead of the backend.

In addition, you can use an other IPC than D-Bus with SàT, and it concentrate on XMPP.


author website

Z_God 10/06/2011, 01:16

Thank you for your response. I was indeed mainly wondering whether you had considered Telepathy :)

I'm also not very familiar with Telepathy, but I think it would be good to have a very thorough comparison of your framework and Telepathy, because currently at least on first sight they seem to have many similarities.

The bit that especially interested me was the command line example, that's something I would probably use a lot :)

Goffi 10/06/2011, 14:01

It's still unstable and early adoption, but don't hesitate to fill bugs reports or request features ( http://bugs.goffi.org ): it need more users to be more stable and usable anyway ;).


author website

(SàT 0.2) Salut à toi, le web !

goffi 31/05/2011, 20:40 GNU-Linux projet SàT jabber-xmpp Libre

Salut à vous,

ça faisait un moment que j'en parlais, voici la nouvelle interface web, qui se nomme Libervia, accompagnée de la sortie de la version 0.2 de SàT.
Je ne vais pas faire un trop long discours ici, mais juste évoquer les points les plus importants:

  • un service web va être associé à cette interface, et j'espère pouvoir le mettre sur pied très rapidement
  • les groupes vont être au centre de la gestion des droits, vous comprendrez en voyant la vidéo
  • oui parce qu'une nouvelle vidéo est disponible
  • et une version de démonstration aussi, elle est pas belle la vie ?
  • et le point le plus important: un contrat social à été rédigé, et indique les lignes suivies par tout le projet « Salut à Toi ». Vous pouvez le consulter ici: http://www.libervia.org/contrat_social.html, ou directement depuis Libervia
  • ça fait longtemps que je travaille seul sur ce projet, de manière assez confidentielle. Je voulais atteindre un certain point: pour apporter une crédibilité au projet, et pour en montrer les grandes lignes. Je considère ce point désormais atteint: même si le client n'est pas encore utilisable au quotidien, et qu'il manque certaines choses essentielles, je pense qu'il est maintenant véritablement lancé
  • Je vais avoir besoin d'aide !!! Les priorités actuelles sont la consolidation de l'existant, la traduction, la documentation. Si vous aimez Python (le projet est 100% en Python, y compris Libervia) ou même d'autres langages (on peut coder une interface dans n'importe quel langage qui peut parler à DBus), ou même si vous n'êtes pas développeur, je pense que ce projet est excitant, et touche à beaucoup de technologies et de domaines intéressants. N'hésitez pas à me contacter: goffi@goffi.org (courriel) ou goffi@jabber.fr (jid), et surtout à vous inscrire à une des 2 listes de diffusion, j'aimerais atteindre une dizaine d'inscriptions pour commencer à les utiliser.

Enfin, quelqu'un m'a récemment proposé de l'aide (Raiden) pour travailler l'aspect, et pour le prochain jeu (quizz) et à commencé des maquettes pour le site: c'est très bien parti :)

Pour tester la nouvelle interface: www.libervia.org mais je vous recommande très fortement de voir la vidéo avant
La nouvelle version de SàT se trouve sur le serveur ftp.

Comme d'habitude, pour lire la vidéo, vous devez utiliser un butineur récent (Firefox 4 ou le dernier Chromium par exemple).
Vous pouvez aussi utiliser VLC (version >=1.1 uniquement), en allant dans le menu « Média/Ouvrir un flux réseau » et en mettant cette URL: http://www.goffi.org/videos/pr%c3%a9sentation_S%c3%a0T_3.webm

Enfin, vous pouvez utiliser mplayer: mplayer "http://www.goffi.org/videos/pr%c3%a9sentation_S%c3%a0T_3.webm"

Cette vidéo est sous la licence Creative Common BY-SA

L'Espagne aujourd'hui

goffi 28/05/2011, 11:22 ici et maintenant

Un petit billet vous montrer une photo du « nettoyage » du camp de Barcelone d'hier: http://www.flickr.com/photos/acampadabcnfoto/5765018458/

Je pense qu'elle mérite d'être diffusée (ainsi que toute la galerie qui est superbe).

Pour situer le contexte: le mouvement (mouvement 15M car commencé le 15 mai) est un mouvement pacifique de protestation en Espagne. Il est parti d'un collectif et d'un site web, et a pris de l'ampleur via les réseaux sociaux.

Il consiste en l'occupation des places principales de la plupart des villes Espagnoles, avec campements et débats. Le plus gros campement est (était ?) à Madrid, à Puerta del Sol, et les images qu'on pouvait suivre en direct étaient impressionnantes (la diffusion semble arrêtée depuis plusieurs jours).

Ce mouvement est assez particulier car il n'y a pas de véritable revendication (si ce n'est « une démocratie réelle, maintenant »), et réuni toutes les générations. Ça semble être un raz-le-bol généralisé envers les politiques: beaucoup annoncent n'être ni de gauche ni de droite, mais vouloir du changements, en avoir marre du bipartisme et de la corruption. Il faut dire que l'Espagne est un des pays d'Europe les plus touchés par la crise, et qu'il y a un taux de chômage impressionnant (on peut lire 21,3% sur wikipedia), surtout chez les jeunes (50% d'après la même source).

Autre point important, il a été ignoré pendant longtemps par les médias de masse (du moins étranger, en Espagne je pense qu'il a été mentionné assez tôt).

Enfin, c'est assez impressionnant de voir comment il s'est auto-organisé, et comment les participants ont assuré la couverture médiatique eux-même (avec des diffusions en direct via Internet), bien que ce ne soit pas la première fois (Indymedia en est un exemple connu, mais il y a eu d'autres cas bien avant).

Présentation vidéo de Salut à Toi #2: jeu de tarot et client courriel

goffi 08/05/2011, 21:22 GNU-Linux projet SàT jabber-xmpp Libre

Une deuxième vidéo de présentation est disponible.
Cette fois on s'intéresse au jeu de tarot et à l'utilisation d'un client courriel avec SàT, expliquée dans un précédent billet.

Notez bien que les jeux vont être une composante importante dans SàT, et qu'il y aura aussi une volonté de standardisation: le jeu de tarot était un prototype dans le but de définir une XEP sur les jeux de cartes en général, n'hésitez pas à me contacter si vous êtes intéressés. Les cartes utilisées dans Wix viennent - comme indiqué dans le README - de Wikimedia Common, et j'ai fait un petit script pour les séparer, avis aux autres développeurs de jeux de tarot.

Tout n'est pas parfait: il y a quelques petits bugs, et tout n'est pas complètement fini; le jeu de tarot ne permet pour le moment de jouer qu'à 4 (les variantes sont prévues) et ne gère pas encore toutes les règles (pas de poignée par exemple), mais ça va s'améliorer avec le temps. Toute aide est la bienvenue :)

Ah et j'ai fait un lapsus, ce n'est pas SàT qui a toutes les qualités pour remplacer le courriel classique, mais XMPP bien sûr ;)

Encore une fois, pour lire la vidéo, vous devez utiliser un butineur récent (Firefox 4 ou le dernier Chromium par exemple).
Vous pouvez aussi utiliser VLC (version >=1.1 uniquement), en allant dans le menu « Média/Ouvrir un flux réseau » et en mettant cette URL: http://www.goffi.org/videos/pr%c3%a9sentation_S%c3%a0T_2.webm

Enfin, vous pouvez utiliser mplayer: mplayer "http://www.goffi.org/videos/pr%c3%a9sentation_S%c3%a0T_2.webm"

Cette vidéo est sous la licence Creative Common BY-SA

RaiDen 09/05/2011, 11:09

Du beau travail Goffi!

Merci pour cette vidéo explicative, je vais de ce pas tester sat.


author website

RMLL (LSM): Notice to XMPP projects development teams

goffi 03/05/2011, 10:12 GNU-Linux jabber-xmpp-en Libre

G'day everybody,

As you may know, Libre Software Meeting (Rencontres mondiales du logiciel libre or RMLL in french) will take place on next july (from 9 to 14) in Strasbourg. You can have a look at the official website: http://2011.rmll.info/

We are planning to have a common stand for various projects around XMPP/Jabber, and I'm taking inventory of people interested.
To make organization easy, if you want to join us, please send me an email ( goffi@goffi.org ) with the following template:

subject: [RMLL] Stand XMPP

Body:

First name *:

Last Name:

Nickname*:

email address:

Phone number:

Project*:

Project website*:

Availability*:

The * mean that the field will be public (put on the wiki).

The nickname is not mandatory, it's just to make link with you if you are on XMPP MUC or forums.

the [RMLL] in the subject is mandatory as messages are filtered.

I will add people as one goes along on the wiki: http://wiki.goffi.org/wiki/RMLL_2011

Please note that I will always send a confirmation email (within 3 days), so please send me again an email if you have no confirmation and your name is not on the wiki.

Last but not least, if you haven't any project but you are interested in XMPP and want to be present on the stand, you are welcome (if the stand is not already too full)

You can contact me for any question on the email given above.

Présentation vidéo de Salut à Toi

goffi 02/05/2011, 09:16 GNU-Linux projet SàT jabber-xmpp Libre

Salut à vous !

Comme ce n'est pas forcément évident d'installer pour tester, et que les concepts derrière « Salut à Toi » semblent encore flous pour pas mal de monde, j'ai décidé de faire une petite vidéo de présentation.

Cette vidéo explore vraiment la surface, d'autres devraient suivre (notamment assez rapidement pour montrer le jeu de Tarot et l'utilisation d'un client courriel avec SàT).

Quelques remarques:

  • Je n'ai pas parlé de deux idées importantes derrière SàT: il se veut aussi un outil de prototypage rapide (expérimenter rapidement des idées), et est destiné à être multi-plateforme (fonctionner sur plusieurs types de machines/environnement)
  • Il y a plusieurs « bogues » dans la vidéo (dont au moins 1 qui concerne SàT), je vous laisse les trouver dans les commentaires ;)
  • Ne prenez pas peur pour la console noire derrière et ce qui y est affiché, c'est juste des informations de débogage (bréf, surtout utiles pour le développement)
  • Désolé pour le vocabulaire parfois technique, n'hésitez pas à demander en commentaire pour expliquer au besoin
  • Je montre les interfaces console (en mode texte), mais d'autres interfaces graphiques sont également sur le feu (comme dit dans la vidéo d'ailleurs)

Pour lire la vidéo, vous devez utiliser un navigateur récent (Firefox 4 ou le dernier Chromium par exemple).
Vous pouvez aussi utiliser VLC (version >=1.1 uniquement), en allant dans le menu « Média/Ouvrir un flux réseau » et en mettant cette URL: http://www.goffi.org/videos/pr%c3%a9sentation_S%c3%a0T.webm

Enfin, vous pouvez aussi utiliser mplayer: mplayer "http://www.goffi.org/videos/pr%c3%a9sentation_S%c3%a0T.webm"

Cette vidéo est sous la licence Creative Common BY-SA

RMLL: Avis aux équipes de développement de projets XMPP (bis)

goffi 17/04/2011, 19:39 GNU-Linux jabber-xmpp Libre

Bonjour à tous,

je m'occupe de recenser les personnes qui veulent être présentes au stand commun XMPP que nous ferons aux RMLL 2011.

Afin de s'organiser un peu, toutes les personnes qui souhaitent êtres présentes doivent m'envoyer un courriel ( à goffi@goffi.org ) sous la forme suivante:

sujet: [RMLL] Stand XMPP

Corps du message:
Prénom *:
Nom:
Surnom*:
Courriel:
Téléphone:
Projet*:
Site du projet*:
Disponibilités*:

Les * indiquent les champs qui seront publics (mis sur le wiki).
Le surnom est facultatif, il permet de vous reconnaître si vous êtes sur les salons XMPP ou que vous postez sur le forum.
Le [RMLL] est indispensable dans le sujet: les messages sont filtrés.
J'ajouterai les participants au fur et à mesure sur le wiki: http://wiki.goffi.org/wiki/RMLL_2011

Notez que j'enverrai systématiquement une réponse pour confirmer la bonne réception de votre courriel (sous 2 à 3 jours au plus), aussi renvoyez moi un courriel si vous ne l'avez pas reçue et que votre nom n'apparaît pas dans le wiki.

Enfin, si vous n'avez pas de projet mais que vous souhaitez quand même participer au stand, vous êtes les bienvenus (enfin, à condition de ne pas être 50 au stand).

N'hésitez pas à me contacter pour toute question, ou à aller sur jabberfr@chat.jabberfr.org

RMLL: Avis aux équipes de dév XMPP

goffi 08/04/2011, 13:40 GNU-Linux projet SàT jabber-xmpp Libre

Petit message destiné aux équipes de dév de projets libres XMPP/Jabber: j'ai pris contact avec les organisateurs des Rencontres mondiales du logiciel libre (RMLL), qui auront lieu à Strasbourg du 9 au 14 juillet, pour tenir un stand commun XMPP, l'idée serait non seulement de présenter les différents projets, mais aussi d'avoir une occasion de rencontrer les autres membres de la communauté XMPP.

Pour le moment, l'auteur de Poezio et moi serons présents, n'hésitez pas à me contacter si ça vous intéresse. On peut également en discuter sur le salon jabberfr@chat.jabberfr.org

sonny 08/04/2011, 16:17

Salut
Je pense que ce serait une bonne idée d'en parler sur linuxfr et jabberfr.

Vanaryon 08/04/2011, 18:49

Julien, du projet Jappix, sera présent. Il donnera une conférence sur le projet.

Par contre je ne serai pas disponible normalement pour les RMLL.


author website

Goffi 08/04/2011, 18:55

sonny> En fait j'en ai déjà parlé sur jabberfr (forum et salon), mais j'attendais d'avoir un courriel de confirmation des organisateurs.

Vanaryon> ah dommage que tu ne sois pas là, mais c'est bien qu'il y ait quelqu'un de jappix. Julien peut également venir au stand avec nous ?


author website

Vanaryon 08/04/2011, 19:55

Oui, Julien devrait être avec vous sur le stand, je vais lui en parler.

Je crois qu'il aura déjà un stand, mais vous pouvez gérer pour vous mettre à côté ?


author website

Julien 17/04/2011, 16:32

Je serai en effet présent pour Jappix. Je viens avec Vidéoprojecteur, écran et affiches A3 pour le Stand, peut être une bannière Jappix si on a le temps de la faire. Je demande à l’orga de mutualiser le stand Jappix avec le stand XMPP du coup ;-)

Sinon, vous avez contacté la XSF pour qu’elle envoi Tshirts et tout le nécessaire ? Ça serait toujours un plus si on a ça ;-)


author website

Songe d'une nuit de printemps

goffi 26/03/2011, 22:03 humeur

Voilà, je déguste ma bière belge, dans le Nord, en mangeant un riz frit, et écoutant de la musique hispano-française.
Je pense à l'avenir, j'y crois encore.
Je pense au passé, beaux souvenirs.
Je pense au présent... J'y suis, je l'espère.
Dans un monde parfait... dans un monde parfait mes amis sont là, ma famille aussi. Dans un monde parfait il y a des gens que je ne connais pas, des tas; des histoires ! Oh oui des histoires ! Et j'aime à leur parler.
Chacun travaille, un peu, ou plus s'il aime ça. À chacun sa tâche ingrate, mais surtout à chacun la joie de faire ce qu'il aime.
La culture est là, et tous peuvent y accéder à souhait, sans moquerie, sans ce satané élitisme.
Les voyages aussi sont là, pas comme un devoir, mais comme une envie; ainsi que le respect; non pas pour les traditions stupides, mais pour les gens, pour eux.
Et voilà l'individu, lui aussi respecté, sans pour autant oublier le collectif.
Dans un monde parfait, on profite de notre court passage, on fait ce qui nous fait vibrer, pas ce qu'on nous impose.
Ici on ne refuse pas, on cherche à comprendre. Toi tu ne penses pas comme moi, viens prendre une bière, on va en discuter.
Il est là, il a toujours existé, et il sera toujours là, ce même songe... Ça vaut le coup de se battre pour lui, pour les autres, pour nous... Ça vaut le coup de rêver, d'écouter cette petite musique persistante, de sentir encore et toujours ce désir...
Noir.

Recevez et envoyez vos messages XMPP/Jabber avec votre lecteur de courriel grâce à Salut à Toi !

goffi 18/01/2011, 14:41 projet technique SàT jabber-xmpp Libre

Le courriel est un outil extrêmement pratique, mais qui souffre de plusieurs défauts majeurs. Par exemple, il est très facile de faire de l'usurpation d'identité (e-mail spoofing): juste en changeant les paramètres de n'importe quel lecteur courriel, vous pouvez faire croire que le courriel que vous avez envoyé vient d'une autre personne, une banque, ou autre. C'est une technique très utilisée par les pirates du dimanche pour avoir un mot de passe (en se faisant passer par exemple pour une banque et en disant que le mot de passe a été perdu) ou les spammeurs (une technique courante est d'utiliser votre propre adresse pour tenter de berner les filtres anti-spam).

XMPP/Jabber ne souffre pas de ce problème: les serveurs sont chargés de vérifier que l'émetteur d'un message est bien celui qu'il prétend être.

Or, XMPP définit un type de message, "normal", qui est très proche du courriel classique: il dispose d'un sujet et attend une réponse. Ces messages sont gérés par les clients classiques (c'est dans la norme de base), mais souvent de manière relativement basique.

Voulant gérer correctement ces messages avec SàT, je me suis dit qu'il me faudrait beaucoup trop de travail pour arriver au niveau de fonctionnalités d'un client courriel (ou MUA) correct. Aussi, je me suis dit « Pourquoi ne pas tout simplement réutiliser ces clients ? ».

Et c'est ainsi que j'ai développé un petit serveur courriel qui permet de déléguer la charge des messages de type "normal" à votre client courrier usuel (KMail, Mutt, Thunderbird, Roundcube ou que sais-je d'autre). L'idée est que la messagerie instantanée (messages de type "chat", "groupchat" - salon de discussion -, etc) reste affichée via les interfaces usuelles (Wix/Primitivus), et les messages normaux soient stockées par SàT et gérés par votre client courriel. C'est un pas vers le remplacement du courriel vers un protocole qui a de nombreux atouts.

Quelques raisons qui me font penser que XMPP/Jabber peut remplacer avantageusement (et pratiquement de manière transparente) le courriel:

  • les identifiants jabber (JID) sont similaires aux adresses courriel
  • si une passerelle courriel est disponible côté serveur, on peut utiliser aussi le réseau courriel normal, la boucle est bouclée :)
  • l'usurpation d'identité (spoofing) n'est (théoriquement) pas possible avec XMPP (les serveurs se chargent de vérifier ça)
  • Jabber n'est (pour le moment) pas touché par les messages indésirables autant que le réseau de courriels traditionnel
  • les serveurs XMPP sont souvent plus stricts à l'inscription, et il est plus difficile d'envoyer un message anonymement, pas de relai ouvert: une bonne protection contre le pourriel
  • vous pouvez configurer un compte XMPP pour ne recevoir des messages que depuis quelqu'un de connu (dans votre liste de contacts - roster list- )
  • les connections entre les serveurs Jabber sont chiffrées
  • Toutes les fonctionnalités du courriel (accusé de réception, message HTML, etc) sont soit déjà disponibles sur XMPP, soit peuvent l'être avec une extension
  • ...

De plus, il me semble peu probable qu'une adresse jabber ( ex.: errico@caserte.it ) et une adresse courriel similaire appartiennent à 2 personnes différentes. Il me semble tout à fait possible par la suite que SàT envoie automatiquement le message à la bonne adresse: d'abord tester si l'adresse XMPP existe, et dans le cas contraire envoyer via une passerelle courriel. Quitte à faire une petite bidouille syntaxique pour spécifier si on veut envoyer à une adresse Jabber ou à un serveur de courriel. L'avantage le plus évident d'une adresse courriel est sont côté standard: tout le monde ou presque en a une. Avec XMPP et ses passerelles, la transition entre messagerie courriel et Jabber est possible et quasi-transparente.

Les considérations techniques maintenant

Les serveurs utilisés sont IMAP v4 et SMTP: ce sont des protocoles que pratiquement tous les lecteurs de courriels connaissent. IMAP a l'avantage de permettre une synchronisation avec SàT (y compris l'état du message: est-ce qu-il est lu ? Est-ce qu'on y a répondu ?), et permet d'envoyer des notifications en temps réel de l'arrivée de nouveaux messages. SMTP est utilisé pour l'envoi de messages, c'est tout simplement le protocole le plus utilisé, et ça fonctionne bien. Les identifiants et mots de passes utilisés sont ceux du profil SàT à utiliser (identifiant: nom du profil, mot de passe: mot de passe du compte jabber). Les ports par défaut sont le port 10143 pour IMAP, et 10125 pour SMTP, j'ai pris soin de prendre des ports utilisables sans les droits root, et qui n'ont pas d'utilisation connue.

Les messages sont sauvés dans une boite de type Maildir , idéal pour l'archivage et l'utilisation avec IMAP. De plus, de très nombreux outils existent pour faire à peu près ce que vous voulez avec ces messages. La boîte se trouve dans votre répertoire SàT personnel: ~/.sat/[nom_du_profil]/Maildir

Pourquoi faire ça côté client (SàT) et non côté serveur XMPP ? Déjà au niveau sécurité c'est clairement un plus: le serveur IMAP est local, pas besoin d'ouvrir un nouveau port et donc une brèche éventuelle sur un serveur public plus sujet aux attaques, et une simple règle iptable (pare-feu) interdira les connexions en dehors de votre machine. Ensuite, il faudrait élaborer une XEP, et attendre qu'elle soit implémentée et répandue dans les serveurs. Et puis, j'ai pu faire ça rapidement (merci Twisted), et SàT permet de choisir d'utiliser ou pas cette fonctionnalité (grâce aux extensions), pourquoi s'en priver ? Un des buts de SàT est justement le prototypage rapide d'idées de ce genre...

L'installation

Si vous voulez essayer ça, installez la dernière version de développement, les détails sont sur le wiki.
Sur une *buntu, vous pouvez faire (en console):
sudo apt-get install python-pip python-dev mercurial
sudo pip install "hg+http://repos.goffi.org/sat/"

Évidemment, tout ceci est en développement: il n'est pas encore possible de créer un dossier avec IMAP par exemple, et y'a des tas de petites bricoles du genre qui vont s'améliorer avec le temps. Mais ça permet déjà de se donner une idée.

PS: petite précision: j'utilise parfois XMPP, parfois Jabber. XMPP est le nom du protocole utilisé par SàT (ce qui lui permet de communiquer avec d'autres logiciels similaires), et Jabber est le nom du réseau global qui utilise ce protocole.

xma 20/01/2011, 22:38

Salut,

je viens de tester et je pense ne pas avoir tout compris. J'ai bien tout suivi, fait le sat, crée le profil mais rien ne se passe. Mon compte reste desesperement a 'offline' alors même que les informations sont correctes.

Quelle est l'astuce ?

Goffi 21/01/2011, 00:17

Tu utilises quel frontend ? Primitivus ou Wix ?
Essaye de cliquer explicitement sur « connect » si tu ne l'as pas déjà fait.
As tu quelque chose de suspect dans ~/.sat/sat.log ?


author website

xma 22/01/2011, 23:39

Salut

merci pour l'astuce du fichier de log que je n'avais pas trouvé...

C'est tombé en marche après bidouille immonde dans le /etc/hosts

Il faut que je regarde ça de plus près.

Je vais pouvoir tester un peu plus maintenant car l'idée du projet me séduit.

xma 22/01/2011, 23:51

J'ai parlé un peu vite. La connexion s'effectue mais point de message dans le répertoire mentionné probablement dû à cette erreur:

2011-01-22 23:49:12+0100 [XmlStream,client] Unhandled Error
Traceback (most recent call last):
File "/builddir/build/BUILD/Python-2.6.4/Modules/pyexpat.c", line 656, in EndElement

File "/usr/lib/python2.6/site-packages/twisted/words/xish/domish.py", line 797, in _onEndElement
self.ElementEvent(self.currElem)
File "/usr/lib/python2.6/site-packages/twisted/words/xish/xmlstream.py", line 107, in onElement
self.dispatch(element)
File "/usr/lib/python2.6/site-packages/twisted/words/xish/utility.py", line 317, in dispatch
callbacklist.callback(obj)
--- <exception caught here> ---
File "/usr/lib/python2.6/site-packages/twisted/words/xish/utility.py", line 107, in callback
methodwrapper(*args, **kwargs)
File "/usr/lib/python2.6/site-packages/twisted/words/xish/utility.py", line 27, in __call__
self.method(*nargs, **nkwargs)
File "/usr/lib/python2.6/site-packages/wokkel-0.6.3-py2.6.egg/wokkel/xmppim.py", line 724, in _onMessage
self.onMessage(message)
File "/usr/lib/python2.6/site-packages/sat/sat.tac", line 130, in onMessage
if not self.host.trigger.point("MessageReceived",message, profile=self.parent.profile):
File "/usr/lib/python2.6/site-packages/sat/tools/misc.py", line 63, in point
if not trigger(*args, **kwargs):
File "/usr/lib/python2.6/site-packages/sat/plugins/plugin_misc_maildir.py", line 88, in messageReceivedTrigger
if message['type'] != 'normal':
File "/usr/lib/python2.6/site-packages/twisted/words/xish/domish.py", line 426, in __getitem__
return self.attributes[self._dqa(key)]
exceptions.KeyError: 'type'

P.S: peut-être serait-il plus simple de communiquer via IM ou e-mail ;) Mon jid est mon mail.

xma 22/01/2011, 23:51

J'ai parlé un peu vite. La connexion s'effectue mais point de message dans le répertoire mentionné probablement dû à cette erreur:

2011-01-22 23:49:12+0100 [XmlStream,client] Unhandled Error
Traceback (most recent call last):
File "/builddir/build/BUILD/Python-2.6.4/Modules/pyexpat.c", line 656, in EndElement

File "/usr/lib/python2.6/site-packages/twisted/words/xish/domish.py", line 797, in _onEndElement
self.ElementEvent(self.currElem)
File "/usr/lib/python2.6/site-packages/twisted/words/xish/xmlstream.py", line 107, in onElement
self.dispatch(element)
File "/usr/lib/python2.6/site-packages/twisted/words/xish/utility.py", line 317, in dispatch
callbacklist.callback(obj)
--- <exception caught here> ---
File "/usr/lib/python2.6/site-packages/twisted/words/xish/utility.py", line 107, in callback
methodwrapper(*args, **kwargs)
File "/usr/lib/python2.6/site-packages/twisted/words/xish/utility.py", line 27, in __call__
self.method(*nargs, **nkwargs)
File "/usr/lib/python2.6/site-packages/wokkel-0.6.3-py2.6.egg/wokkel/xmppim.py", line 724, in _onMessage
self.onMessage(message)
File "/usr/lib/python2.6/site-packages/sat/sat.tac", line 130, in onMessage
if not self.host.trigger.point("MessageReceived",message, profile=self.parent.profile):
File "/usr/lib/python2.6/site-packages/sat/tools/misc.py", line 63, in point
if not trigger(*args, **kwargs):
File "/usr/lib/python2.6/site-packages/sat/plugins/plugin_misc_maildir.py", line 88, in messageReceivedTrigger
if message['type'] != 'normal':
File "/usr/lib/python2.6/site-packages/twisted/words/xish/domish.py", line 426, in __getitem__
return self.attributes[self._dqa(key)]
exceptions.KeyError: 'type'

P.S: peut-être serait-il plus simple de communiquer via IM ou e-mail ;) Mon jid est mon mail.

xma 23/01/2011, 00:28

J'ai parlé un peu vite. La connexion s'effectue mais point de message dans le répertoire mentionné probablement dû à cette erreur

P.S: peut-être serait-il plus simple de communiquer via IM ou e-mail ;) Mon jid est mon mail.

Goffi 23/01/2011, 12:49

Ah oui un petit soucis en effet, mais facile à corriger

Je t'ajoute cette après midi et on voit ça dès que t'es dispo ;)


author website

Yag 24/01/2011, 22:27

Salut, existe il un salon jabber pour discuter autour de "salut a toi" ? Si non, ce serais pratique d'en créer un =) Je suis moi même en train d'étudier l'implémentation d'un lecteur de flux rss utilisant xmpp/pubsub et je me demandais s'il j'avais un avantage a le créer en tant qu'extension a salut a toi.

Goffi 24/01/2011, 23:49

@Yag: Salut, non pas encore, mais vu que il commence à y avoir plusieurs personnes qui me posent des questions, je pense en créer un rapidement (demain si je trouve le temps ;) ). Je pense pouvoir commencer aussi la mailing list, ça permettra de garder trace des questions/réponses.


author website