Charte de développement du projet Nemo - Julien-Arlandis/NemoClient GitHub Wiki
Ambitions du projets Nemo
Le projet Nemo est un moyen d’échange standardisé et décentralisé, pour publier des articles sur les groupes de discussion. Nemo propose une interface opérationnelle pour assurer l’interopérabilité des différents réseaux et logiciels de discussion, dans toute leur diversité : webforums, newsgroups, réseaux sociaux, groupes JNTP, etc…
Aujourd’hui, les utilisateurs de forums doivent passer par la prise en main d’autant de sites, de réseaux ou de logiciels, que de thèmes qu’ils proposent. Si vous voulez discuter de cuisine, de voiture et de littérature vous avez probablement crée un compte sur trois sites différents, chacun dédié à l’une de ces trois thématiques. Ces sites proposent probablement une navigation différente et une utilisation spécifique. Par exemple certains webforums utilisent la balise [QUOTE=pseudonyme] pour gérer la citation. Sur les newsgroups, la convention est de faire précéder les lignes citées par un ou plusieurs chevrons : caractère [>].
La signature peut parfois être gérée au niveau de la base de données et ne pas apparaître directement dans le corps du message. Sur les newsgroups, la signature est déclarée après la séquence de caractères [— ] suivie d’un retour à la ligne.
Au niveau de la mise en forme, on rencontre une multitude de conventions à base de balises BBCode, wikitexte, HTML, … Un autre inconvénient des webforums, c’est qu’ils ne proposent aucun point d’accès alternatif en cas de panne ou de maintenance du service. Ceci est dû au caractère centralisé du mode de gestion de ces services. Il n’est pas rare que des webforums soient victimes d’un hack ou d’une perte irréversible des données. L’absence de standardisation et l’incroyable vitesse de mutation des technologies de l’internet, affaiblissent les mises à jour de ces sites. Ainsi, pratiquement plus aucun webforum qui existait au début des années 2000 n’est encore présent aujourd’hui sur la toile.
En 1979 est apparu le réseau Usenet, un réseau décentralisé de groupes de discussion qui offre un moyen standardisé de naviguer au sein de ce réseau, en utilisant le protocole NNTP. Malheureusement l’usage des newsgroups (c’est ainsi que l’on appelle les groupes de discussion sur le réseau Usenet) est devenu obsolète en comparaison avec les usages modernes de l’Internet. De plus, les moyens d’accès à ce réseau depuis un navigateur web, font aujourd’hui cruellement défaut.
Depuis Mars 2013, date de la mise en place du projet Nemo, il est possible d’accéder au réseau Usenet et à ses hiérarchies (ensembles de groupes de discussion) depuis Nemo. Grâce au projet Nemo, il devient possible d’interagir avec des réseaux différents à partir du même point d’accès, sans avoir besoin de changer ses habitudes d’utilisation. En cas de défaillance d’un point d’accès, il est possible de se rapprocher d’un autre point d’accès qui proposera les mêmes services.
Le protocole JNTP
Le projet Nemo s’articule autour d’un ensemble de technologies et de protocoles dont le protocole JNTP (Json News Transfer Protocol) . Le protocole JNTP définit les règles de distribution des articles au sein de ce réseau. JNTP est un protocole de diffusion qui permet de répartir rapidement sur un ensemble de serveurs, les informations qui transitent au sein de ce réseau. JNTP peut transporter des messages au format texte, mais il peut également transporter tous types de médias : sons, fichiers, images, vidéos, …
L’information qui transite sur le réseau JNTP est encapsulée dans des paquets au format JSON. Ces paquets sont signés et identifiés de façon unique par un Jid qui contient l’empreinte SHA1 de l’information transportée, ainsi que le host du serveur émetteur. Le Jid qui identifie un article est de la forme : [email protected].
Le protocole JNTP offre à ses utilisateurs une sécurité qui leur assure une protection contre la suppression clandestine des informations dont ils sont les propriétaires. Le protocole leur offre également un droit de rectification et de suppression de leurs données.
Le serveur PhpNemoServer
PhpNemoServer est un premier prototype écrit en langage PHP qui implémente les fonctionnalités du protocole JNTP. Il propose également une passerelle, pour s’interfacer avec des serveurs NNTP. Ainsi phpNemoServer offre la possibilité de lire et de publier sur les hiérarchies Usenet officielles, en plus des hiérarchies JNTP déjà fonctionnelles comme nemo.* .
phpNemoServer gère de nombreux services comme :
- l’intégration du Like décentralisé,
- la création de groupes à la volée via des hashtags = NemoTags,
- des fonctionnalités de recherche sur le serveur,
- la visualisation des articles par hiérarchie,
- la navigation par fil de discussion,
- la sélection des réponses reçues,
- la protection sécurisée contre les annulations illégitimes,
- l’autocomplétion pour la recherche des groupes.
Le client Nemo
Le client Nemo, accessible à cette adresse http://news2.nemoweb.net, est la première application qui permet de naviguer au sein du réseau JNTP.
Charte JNTP
Pour assurer une interopérabilité maximale entre les différents réseaux, le protocole JNTP repose sur quelques principes et conventions :
-
Principe d’homogénéité : les différences technologiques qui existent au sein des différents réseaux relayés par JNTP, ne doivent pas apparaître du point de vue des utilisateurs. Par exemple, l’utilisateur ne doit pas avoir à se soucier de la manière dont il va citer ou signer ses articles, en fonction de l’origine du groupe de discussion.
-
Principe de responsabilité : la compatibilité entre le réseau JNTP et les autres réseaux, doit être exclusivement assurée par ceux qui font transiter les articles à l’interface entre deux réseaux. Exemple : lorsqu’une passerelle relaie un article du réseau JNTP sur un autre réseau (ou l’inverse), elle doit opérer les transformations pour s’assurer de la mise en conformité avec les usages et les conventions techniques utilisées par ce réseau.
-
Principe de non retour : lorsqu’un article passe d’un réseau JNTP à un autre (ou l’inverse), l’article ne doit pas être réinjecté dans son réseau d’origine.
-
Séparation de la forme et du contenu : sur JNTP la forme et le contenu doivent être explicitement séparés par des balises standardisées.
-
Principe d’intégrité : l’information contenue dans les balises d’un article diffusé sur JNTP, est normalisée pour être interprétée par des logiciels spécifiques (format latex, abc, …). Il incombe aux passerelles qui relaient ces balises sur d’autres réseaux, de s’assurer que le contenu de ces balises ne sera pas altéré par les citations en usage sur ce réseau. Si cette règle ne peut être rigoureusement appliquée, il convient de supprimer les balises au moment de l’injection sur le nouveau réseau ou de ne pas procéder à l’injection de l’article le cas échéant.
Un acteur technique du réseau JNTP reconnaît les principes qui régissent le bon fonctionnement du réseau JNTP et s’engage à mettre en œuvre tous les moyens pour les appliquer.