Click to reduce…

Parmi les nombreuses nouveautés et évolutions de Salut à Toi pour la version 0.7 à venir, une a un particulièrement grand potentiel : Libervia (l'interface web) est devenu un cadriciel web (ou « framework web »).

« Mais il y en a déjà plein ! » vous entends-je dire… C'est vrai, mais celui-ci est décentralisé.

Construire sur du standard, avoir des outils pour créer décentralisé

Utiliser les comptes existants

Libervia s'appuie donc sur SàT et XMPP pour aider à construire voire reconstruire le web. Quel est l'intérêt ? Et bien déjà l'authentification, chose nécessaire sur la plupart des sites de nos jours, utilise le compte que vous avez déjà. Non je ne parle pas du compte sur le gros truc bleu ou l'oisillon piailleur, mais bien de votre compte XMPP, celui que vous utilisez avec SàT, Movim, Gajim, Conversations ou encore Pidgin, celui dont les données peuvent être chez vous dans votre salon, et avec lequel vous pouvez utiliser n’importe quel nom, celui avec lequel vos faits et gestes ne sont pas épiés.

Le ou la développeur/euse n'a donc pas besoin de gérer cela, et les utilisateurs n'ont pas à recréer un compte à chaque site ou à utiliser un compte centralisé (et ainsi dire aux aspirateurs à données du net où, quand et à quoi ils se connectent).

Autre avantage : on profite de l'existant ; si vous voulez intégrer d'autre moyens de vous authentifier (par exemple utiliser vos comptes GNU/Linux), vous n'avez qu'à activer ce qui va bien sur votre serveur (voir cette liste pour prosody, vous trouverez certainement une liste équivalente pour les autres serveurs.).

pubsub, la base de données décentralisée

XMPP n'est pas une technologie, mais un ensemble de technologies cohérentes, et pubsub est l'une d'elles. Pour mémoire, il s'agit d'enregistrer des données (ou « items ») dans des « nœuds » (qu'on peut voir comme des tables ou collections dans les bases de données), qui sont sur des services.

Un service pouvant être n'importe où sur le réseau, au même endroit que votre serveur web, à l'autre bout de la planète, sur l'intranet ou sur un .onion dans le réseau Tor. Bien sûr il est possible de garder des données localement si nécessaire, notamment pour le cache.

le cache parlons en justement, pubsub a une propriété très intéressante : on peut s'abonner à un nœud pour être prévenu des modifications sur celui ci (ajout/modification ou suppression de données). Ceci permet à Libervia d'avoir un système de cache automatique : une page peut être mise automatiquement en cache et celui-ci peut-être invalidé dès qu'une modification a lieu. Voilà encore de quoi simplifier la vie du développeur, et améliorer les performances côté utilisateur.

faciliter la vie

Libervia a été pensé pour faciliter la vie des développeurs.

changer l'apparence

Le système est entièrement basé sur un moteur de modèles (jinja2), qu'il est très facile d'étendre pour faire de nouveaux thèmes (du simple changement de CSS à la transformation de toute la structure des pages). Il suffit de créer un répertoire avec le nom du thème et de modifier ce que l'on souhaite, et uniquement ce que l'ont souhaite : les pages du thème par défaut vont être utilisées si nécessaire.

Intégration entre serveur et client

Un certain nombre d'outils sont présents pour faciliter l'intégration entre la partie cliente (dans le butineur) et la partie serveur (HTTP). Ainsi par exemple, il suffit de déclarer "dynamic = True" dans votre page Libervia (côté serveur), pour activer automatiquement un système de communication dynamique avec le navigateur (basé sur les websockets). Une méthode permet d'envoyer des données n'importe quand à la page, et une autre est appelée quand des données sont émises depuis le navigateur.

Ceci sera encore plus poussé dans la version 0.8, avec l'intégration prévue de transpileurs Python vers Javascript. Libervia utilise jusqu'ici Pyjamas, un projet qui n'est plus maintenu et qui se base sur un Python 2 obsolète. Pour éviter d'être bloqué sur une seule option, le choix sera laissé au développeur d'utiliser un transpileur Python vers Javascript (Brython et Transcrypt sont prévus), du Javascript simple (dit « vanilla »), ou s'il ou elle aime se faire du mal, un cadriciel Javascript à la mode.

Gérer les tâches communes

Un système de traduction est intégré nativement (utilisant Babel), ainsi que des filtres pour les dates, le rendu d'interfaces venant du backend, ou encore la création de formulaires.

Les modèles sont prévus pour êtres réutilisables, ainsi il est simple d'intégrer, par exemple, des commentaires dans une page.

Un écosystème en symbiose

Je m'arrête là pour les fonctionnalités, même si la liste n'est pas finie (il est par exemple possible de générer des sites statiques à la manière d'un Pelican ou d'un Hugo).

Ce nouvel outil a déjà été mis en pratique dans certaines des nouveautés de la version à venir, notamment avec le gestionnaire de tickets et de demande d'intégration de patch (« merge requests ») mentionnés précédemment.

La prochaine version de Salut à Toi est un aboutissement, c'est la première version prévue pour être utilisée en production, et constitue désormais tout un écosystème de communication, de création et de travail collaboratif, compatible avec le reste de la famille XMPP.

Si vous voulez vous tenir à jour vous pouvez consulter mon blog (qui est fait avec Libervia) ou nous rejoindre sur le salon sat@chat.jabberfr.org.

Si vous voulez nous soutenir, vous pouvez soit adhérer à l'association, soit nous aider sur Liberapay.

Click to expand… Click to reduce…

Click to reduce…

Among many novelties of Salut à Toi in the next release (0.7), one has specially big potential: Libervia (the web frontend) is now a web framework.
"Yeah but there already so many of them!" I 've heard you saying… That is true, but this one is decentralized.

Building on standards, having tools for decentralization

Using existing accounts

So, Libervia is based on SàT and XMPP in order to help you to build or rebuild the web. But why? Well, first the authentication, which is used on most websites nowadays, use the account you alread have. No, I'm not talking about the account on the big blue stuff or the noisy bird, but about your XMPP account, the one you are using with SàT, Movim, Gajim, Conversations or Pidgin, the one, in which your data can be located in your living room, and the one in which you can use any name you choose; the one that does not tract your activity.

The developer doesn't have to worry about this, and the users don't have to create yet another account on each website, or to use an account from a big central website (and then tell to web data hoovers where, when and to what you did connect).

Other advantage: we take profit for existing software. If you want to integrate other authentication ways (for instance if you want to use your GNU/Linux accounts), you just have to activate the suitable thing on your server (check this prosody list for instance, you'll surely find similar lists for other servers).

Pubsub, the decentralized database

XMPP is not a single technology, but rather a basis for a variety of coherent technologies, and pubsub is one of them. As a reminder, with it you can store data (or "items") in "nodes" (which can been seen as tables or collections in other databases), on "services".

A service can be anywhere on the network : in the same location as your web server, on the other side of the Earth, on the intranet or on a .onion in Tor network. Of course it's possible to keep data locally if needed, in particular for caching.

Let’s talk about cache, pubsub has a really nice property: we can subscribe to a node to be notified when there are changes on it (new data, data update or deletion). Taking benefit from this gives Libervia an automatic cache system: a page can be automatically put in cache, and later can be invalidated as soon as a modification happen. That is an other thing to simplify developer's life, and to improve the speed for the user.

Simplify life

Libervia has been thought to make things easy :

Appearance change

The framework is entirely based on template engine (jinja2). It is really straightforward to create new themes (from doing simple CSS change to major changes in pages structure). You just have to create a new directory with theme name, and to modify what you want, and only what you want: pages from default theme will be used if needed.

Integration between server and client

A bunch of tools are there to facilitate integration between client (in the browser) and the HTTP server. For instance, you just have to set "dynamic = True" in your Libervia page on server side to automatically activate a bidirectionnal dynamic communication system with the browser (based on websockets). A method can be used to send data at any time to the page, and an other one is called when data are emited from the browser.

This will go deeper in the 0.8 release, with the planed integration of Python to Javascript transpileur/interpreters. Libervia is using so far Pyjamas, a project which is not maintained anymore and which is transpiling an obsolete Python 2. To avoid future blocking on a single option, developers will have the choice to use a Python transpiler/interpreter (Brython and Transcript are planed), Simple Javascript ("vanilla"), or if they really like pain, any currenly popular Javascript framework.

Handling common tasks

A translation system is natively integrated (using Babel), and also filters for dates, backend UI templates rendering, or forms creation.

Templates are built to be reusables, so it's easy to include, for instance, comments in page.

A symbiotic ecosystem

I'll stop here for features, though the list is not finished (it's for instance possible to generate static website à la Pelican or Hugo).

This new tool has already been used in severals features in the incoming release, notably with the tickets or merge requests handlers that I have announced recently.

Next release of Salut à Toi will be an achievement, the first version ready for production, and is now a whole ecosystem to communicate, create, or do collaborative work, compatible with the rest of XMPP family.

If you want to stay up to date, follow my blog (which is using Libervia), or join us on our room sat@chat.jabberfr.org.

If you want to support us, you can either join the association, or help us on Liberapay.

Other news to come soon…

Click to expand… Click to reduce…

Click to reduce…

Click to expand… Click to reduce…