PROJET AUTOBLOG


Planet-Libre

source: Planet-Libre

⇐ retour index

Goffi : centralisé, décentralisé, P2P, mais c'est quoi tout ça ?

mardi 10 novembre 2015 à 14:46

Une petite mise au point technique, parce que je vois qu'il y a beaucoup de confusion sur les termes « centralisé » (encore lui ça va), « décentralisé », « distribué », « fédéré », « pair à pair », etc.

Il faut dire que la confusion est assez normale, il n'y a pas vraiment de définition de ces termes, et ce que les gens entendent en les employant dépend de leurs lectures, leur compréhension, et leur sensibilité.

Commençons par le plus simple : centralisé. Un système centralisé c'est un système où tout le monde dépend d'une même autorité, un serveur a priori dans le cas informatique. Bien qu'un système centralisé soit beaucoup plus simple à faire sur le plan technique (facile de trouver des gens ou des informations quand ils sont tous au même endroit), il peut avoir ses propres problèmes : montée en charge en particulier ; il est plus difficile d'absorber des données quand il n'y a qu'un centre de traitement, les tuyaux peuvent rapidement se trouver trop petits, etc.

Un système de communication centralisé pose de nombreux problèmes : il est évident qu'il est plus facile d'espionner, censurer ou modifier des données quand elles sont dépendantes d'un seul point. Même sans intention malicieuse, on a un point unique de défaillance (ce que les anglophones appellent « single point of failure », c.-à-d. qu'une panne, une attaque, une catastrophe naturelle ou pas provoque l'arrêt du service voire la perte des archives.
Dans les cas les plus gros, on prend un hangar et on le remplit d'ordinateurs, ce sont les fameux centres de données ou « data centers ».

Là où ça se complique un peu, c'est qu'un système centralisé peut être physiquement en plusieurs endroits, ou utiliser des systèmes de répartition/répétition des données. Le principe est d'éviter l'engorgement ou les risques de pannes cités plus haut, mais même si ces machines sont séparées et communiquent entre elles à distance, elles sont a priori toujours sous la même autorité.


http://repos.goffi.org/sat_docs/raw-file/tip/schemas/decentralisation/centralised_simple.png


Passons maintenant aux systèmes décentralisés/distribués/fédérés. Certains vont pousser les haut-cris que je mette tout ça ensemble, parce qu'il n'y pas vraiment de définition et que chacun se fait plus ou moins la sienne.

« dé-centralisé » veut dire qui n'a pas de centre, ni plus ni moins. L'idée pour un système de communication, c'est que toute entité (individu, association, organisation, etc) puisse être une partie d'un réseau qui n'a pas d'autorité principale, et que ces autorités puissent parler entre elles.

On essaye ainsi d'éviter les problèmes de la centralisation, mais on se retrouve avec tout un tas de nouveaux problèmes, techniques pour la plupart : il est beaucoup plus difficile de retrouver des données ou des gens en plusieurs endroits, de se mettre d'accord sur la « langue » à utiliser pour communiquer (surtout quand on a des logiciels ou des versions d'un même logiciel différents), ou encore d'être sûr que la donnée qu'on a est à jour (est-ce que le message a été modifié ou supprimé ?).

« fédéré » est généralement employé pour parler de systèmes différents (noms de domaines différents par exemple, voire logiciels différents) qui peuvent communiquer entre eux. Un système décentralisé est fédéré par nature, sinon on a affaire à plusieurs systèmes centralisés indépendants. Disons que si on veut être pointilleux, on peut dire qu'un système décentralisé peut communiquer avec seulement certaines entités (je communique avec les serveurs de mon entreprise internationale, mais pas avec le reste du monde), et que la fédération implique l'idée que c'est ouvert à tous (ou presque, il y a souvent des gens qu'on ne veut pas, les spammeurs par exemple).

« distribué » ne devrait pas être employé pour les systèmes de communication. Le terme est normalement utilisé pour le calcul : si votre ordinateur a plusieurs processeurs, il distribue la charge de calcul entre eux, ou dans le cas de très grosses demandes (recherche par exemple), on peut demander à plusieurs machines distantes de faire chacun une partie d'une grosse opération mathématique. Dans ce cas, l'organisation de la répartition est souvent contrôlé par une même autorité (par exemple le laboratoire qui veut faire cette opération).
Par extension, le terme est aussi utilisé pour les systèmes de fichiers, et certains l'emploient pour les logiciels de communication, mais cela ne veut pas dire autre chose que décentralisé.


http://repos.goffi.org/sat_docs/raw-file/tip/schemas/decentralisation/decentralised_simple.png


Enfin, il y a le terme P2P ou « pair à pair » (« peer to peer » en anglais). En fait une connexion pair à pair n'est rien d'autre qu'une connexion directe entre 2 ordinateurs, mais on l'associe souvent aux technologies plus ou moins apparentées qui ont commencé à apparaître à la fin des années 90/au début des années 2000 et qui servaient (et servent toujours) principalement à partager des fichiers.

Après Napster (lancé mi 1999) qui était un bête système centralisé qui mettait en relation des machines pour une connexion directe, il y a eu beaucoup d'essais et d'évolutions pour trouver un système qui permet de se passer de serveurs, l'idée étant principalement de permettre au réseau de fonctionner même si on lui coupe l'accès à une partie de lui-même.

Je vous passe toutes les techniques qui sont utilisées : c'est un domaine très pointu, très intéressant, et qui demanderait facilement un livre pour être expliqué. Ça part des systèmes de répartition par propagation de proche en proche à la Usenet, jusqu'aux récentes chaînes de blocs (blockchain), en passant par les tables de hachage distribuée (Distributed Hash Table), etc.

Ce qui fait principalement la différence entre un système « décentralisé » et « entièrement P2P », c'est la place du serveur. Un serveur, dans les grandes lignes, c'est ce qui permet à votre logiciel (le « client ») de contacter d'autres clients via d'autres serveurs. Il est là pour tout un tas de raisons : identifier les gens, donner les bonnes données aux bonnes personnes, garder
les fichiers à donner à un client actuellement hors ligne quand il sera disponible, etc.
Si on supprime le serveur, inévitablement c'est votre client (ou un autre) qui va devoir se charger de ce travail, ce qui aura un impact sur votre bande passante, la charge de travail pour votre processeur (et donc la durée de vie de votre batterie le cas échéant), et compliquera la tâche de votre logiciel (plus difficile de savoir à qui parler et à qui faire confiance quand on n'a pas de serveur comme référence).

http://repos.goffi.org/sat_docs/raw-file/tip/schemas/decentralisation/fully_P2P_simple.png

Pour transformer un système décentralisé avec serveurs en système entièrement P2P (c.-à-d. sans serveur), je vais vous donner une recette : vous mettez un seul client sur votre serveur, et vous mettez le serveur et le client sur la même machine.
Bien sûr si vous voulez être vraiment indépendant, il va falloir supprimer le besoin de points de références, et en particulier le système de noms de domaine ou « Domain Name System ». C'est ce qui associe le nom de votre serveur (par exemple « libervia.org ») à l'adresse « IP » qui permet de vous retrouver sur Internet. Il va falloir aussi être capable de retrouver les données ou les gens un peu partout, et là on se retrouve avec les technologies intéressantes mais complexes évoquées plus haut (« D.H.T. », « Blockchain », « SuperPeer », etc).
 

Et XMPP dans tout ça ?

Je vais quand même parler un peu de XMPP. XMPP est un système dit « hybride », c'est à dire qu'il fonctionne normalement sur un modèle client/serveur, mais il peut faire du P2P à la demande (pour transférer un fichier ou faire de la visioconférence par exemple).
Il est même possible de fonctionner sans serveur sur un réseau local (comme expliqué ici), et il peut parfaitement devenir à terme un système entièrement P2P comme expliqué dans le paragraphe précédent.

Ceci dit, même si l'approche entièrement P2P est séduisante, je pense que l'architecture décentralisée sur un modèle client/serveur est un compromis bien plus efficace : elle limite le travail de votre client, permet une meilleure optimisation du trafic ou du calcul, et facilite l'échange asynchrone (quand deux personnes ne sont pas connectées en même temps). Bref, c'est tout sauf un modèle du passé comme on peut le lire parfois, et bien qu'il y ait plusieurs recherches et options intéressantes pour des systèmes entièrement P2P, il ne faudrait pas jeter le bébé avec l'eau du bain.

Gravatar de Goffi
Original post of Goffi.Votez pour ce billet sur Planet Libre.

La vache libre : Albert – Un lanceur rapide et original pour GNU/Linux

lundi 9 novembre 2015 à 19:47

Albert settings — Albert_001

À l’heure actuelle les environnements de bureau sont légion, et bien que ceux-ci soient tous différents aucun d’entre-eux n’est livré sans outil(s) de recherche et sans lanceur(s). Si dans la plupart des cas les applications embarquées suffisent largement, il se peut que vous soyez curieux (ou tout simplement chiants ;)) et que vous ayez envie de goûter à autre chose. Si c’est votre cas et que vous chercher un outil de recherche couplé à un lanceur rapide, Albert est peut-être fait pour vous. Celui-ci a été conçu dans le but de vous permettre d’effectuer tout un tas de trucs, comme des recherches d’applications ou de fichiers en local ou sur le Web. Il vous permettra aussi de lancer des applications, d’effectuer des opérations mathématiques et sans doute un tas de choses intéressantes.

Comme le montrent l’image d’illustration et l’image ci-dessous, l’interface du soft est assez basique et son utilisation est des plus simple. Celle-ci vous permettra entre autres de paramétrer la combinaison de touches servant à invoquer la barre de recherche, vous aurez accès à quelques plugins que vous pourrez activer ou désactiver en cochant les cases dédiées et au besoin, vous pourrez les éditer.

Vous aurez également le choix entre plusieurs thèmes, ce qui ne gâche rien.

Albert settings — Albert_002

Une fois que vous avez invoqué le menu à l’aide de la combinaison de touches dédiée, il ne vous reste plus qu’à y entrer les termes de votre choix et à choisir parmi les résultats qu’il vous propose.

Albert settings — Albert_006

Ce n’est pas sorcier, ça ne casse pas trois pattes à un canard, mais ça a le mérite d’exister et d’être potentiellement utile.

Si ça vous tente vous pouvez en savoir un peu plus sur la bête en vous rendant de ce pas sur la page GitHub du projet, et le tester sur Ubuntu et dérivés à l’aide du PPA suivant, et de ces quelques lignes de commande.

Installer Albert sur Ubuntu :

sudo add-apt-repository ppa:nilarimogard/webupd8
sudo apt-get update && sudo apt-get upgrade
sudo apt-get install albert

Désinstaller Albert :

sudo add-apt-repository -r ppa:nilarimogard/webupd8
sudo apt-get update && sudo apt-get upgrade
sudo apt-get remove albert

Si vous tournez sur Arch Linux ou Fedora vous pouvez jeter un œil sur cette page pour l’installation d’Albert.

Amusez-vous bien.

source

Gravatar de La vache libre
Original post of La vache libre.Votez pour ce billet sur Planet Libre.

Goffi : SàT: Comment ça marche ?

lundi 9 novembre 2015 à 13:40

Salut à vous,

En parallèle de la série d'articles sur XMPP, j'en commence une pour expliquer « Salut à Toi », notre logiciel à tout faire basé sur ce protocole. Il y a beaucoup de choses qui tournent autour de ce logiciel, sur son organisation technique, sa philosophie, et ce qu'on peut faire avec. Aussi je vais faire des articles plus ou moins techniques (plutôt moins), et je vais bientôt expliquer quelques cas concrets d'utilisation.


Ce premier article est un peu technique, puisque je vais expliquer l'organisation générale du logiciel, et ce qu'elle a de particulier.

Donc pour vous donner une idée, SàT c'est dans les grandes lignes ça:

http://ftp.goffi.org/media/pictures/schemas/sat_simplified_overview.png

C'est un client XMPP. Si vous avez lu mes articles, vous savez que XMPP ne signifie pas que « messagerie instantanée », mais beaucoup, beaucoup plus de choses. Le projet SàT essaye non seulement de faire le maximum de ces choses, mais aussi d'expérimenter de nouvelles.

La partie centrale  est la partie « d'arrière-plan » ou « backend » en anglais. C'est elle qui gère le plus gros du logiciel. La partie à droite  sont les « frontaux » (« frontends » en anglais) ou encore les interfaces homme/machine. C'est elles qui gèrent tout l'affichage des informations, ou la réception des commandes et autres messages.

Ce qui fait la force de cette architecture, c'est qu'il est très facile de faire un nouveau frontal, et que le tout représente un seul client. Autrement dit : si vous créez un profil (voir plus bas) sur un frontal, il sera disponible sur tous les autres, si vous envoyez un message d'un côté, il sera visible sur tous les frontaux connectés, l'historique est commun, les fonctionnalités aussi.
En effet, quand on ajoute une fonctionnalité (les messages de groupe par exemple, la copie de fichier, les blogs), c'est dans le « backend » que nous le faisons, et elle se retrouve ainsi disponible partout. Évidemment dans certains cas ça demande du développement particulier pour les interfaces : nous avons un jeu de Tarot par exemple, et on ne dessine pas les cartes de la même manière dans l'interface console (appelée Primitivus) et dans l'interface web (appelée Libervia).

Les interfaces (ou frontaux) disponibles aujourd'hui sont:
 
  • Libervia : interface web 
  • Primivus : interface de console (avec des fenêtres de type ncurses
  • jp: ligne de commande, permet d'automatiser des tâches facilement, d'envoyer un fichier dans parcourir des menus, d'écrire depuis Vim, etc 


Nous avions une autre interface pour le bureau, appelée « Wix », mais nous l'avons abandonnée, car elle était peu pratique et peu utilisée. Notre campagne de financement en cours permettra de remplacer cette interface et par la même occasion de porter le projet sur Android.

Cette architecture a un autre avantage : il est facile d'intégrer SàT dans des logiciels existants, et avec n'importe quel langage de programmation, mais laissons cela de côté pour le moment.

SàT a également une architecture modulaire via l'utilisation de greffons (ou « plugins » en anglais) au niveau du  sur le schéma : le cœur ne gère que l'essentiel (messages simples, liste de contacts, système de logs, gestion des profils, etc), et toutes les fonctionnalités avancées sont disponibles sous forme de greffons (messages de groupe, blog/microblogs, syntaxes avancées, etc). L'idée est d'une part de pouvoir désactiver les fonctionnalités qu'on ne veut pas, et d'autres part de permettre d'étendre facilement le logiciel : un greffon sera d'autant plus intéressant qu'il sera disponible pour toutes les interfaces. Ainsi un de nos greffons gère les marque-pages (c.-à-d. une liste de salons de discussions) : ils sont utilisables à la fois avec Primitivus (en texte), avec Libervia (graphiquement via le web) ou encore avec jp (en ligne de commande). À terme nous comptons faire un système de téléchargement automatisé de greffons, un peu comme les dépôts de logiciels.

Nous avons besoin de travailler un peu côté serveur, pour notre composant PubSub ou notre annuaire par exemple, nous avons donc aussi quelques travaux de ce côté.

 
Enfin les profils dont je parlais plus haut sont des comptes locaux associés à un compte XMPP. Ainsi j'ai un profil pour mon compte sur le serveur jabber.fr et un autre pour celui sur libervia.org, je peux utiliser l'un ou l'autre ou les 2 en même temps.
 
Voilà pour une première introduction, un peu technique parce que je voulais expliquer l'originalité de l'architecture. La prochaine fois je pense parler un plus spécifiquement de Libervia, et du système de blogs/microblogs décentralisé.

N'oubliez pas que nous avons une campagne de financement en cours, et nous avons grand besoin de soutien ! Merci.
 

Gravatar de Goffi
Original post of Goffi.Votez pour ce billet sur Planet Libre.

Nÿco : Des news de debian.org, jabberd2, Zombie Hack, converse.js

lundi 9 novembre 2015 à 12:30

Léger rafraîchissement de l’univers XMPP…

XMPP et SIP main dans la main sur debian.org !

Dans un article intitulé: « debian.org RTC: announcing XMPP, SIP presence and more », Daniel Pocock nous dit :

The Debian Project now has an XMPP service available to all Debian Developers. Your Debian.org email identity can be used as your XMPP address.

C’est basé sur Prosody.im ! Félicitations !

Debian Debian

jabberd2 est vivant !

Tomasz Sterna nous gratifie d’une toute nouvelle version (mineure) de jabberd2, le serveur XMPP écrit en C sous licence GPL !

Les changements :

  • Rewrite TLS ephemeral key + cipher handling
  • Recover Berkeley DB before opening it
  • bcrypt support for PostgreSQL
  • Option to set authreg module per realm
  • AuthReg ANONYMOUS does not offer password check
  • Answer to disco#info queries to user JID
  • WebSocket C2S SX plugin

Le réveil de la force ? Euh… hum… pardon.

Zombie Hack, des services pas bêtes

Le site Zombie Hack offre des services de collaborations ouverts, standards et open source :

converse.js en version 0.10.0

Le client XMPP web libre et open source converse.js est livré en version 0.10.0, sous sa licence MPL :

This release drops CSS support for IE8 and IE9.

  • #459 Wrong datatype passed to converse.chatboxes.getChatBox. [hobblegobber, jcbrand]
  • #493 Roster push fix [jcbrand]
  • #403 emit an event rosterPush when a roster push happens [teseo]
  • #502. Chat room not opened in non_amd version. [rjanbiah]
  • #505 Typo caused [object Object] in room info [gromiak]
  • #508 « Is typing » doesn’t automatically disappear [jcbrand]
  • #509 Updated Polish translations [ser]
  • #510 MUC room memberlist is being cleared with page reload when keepalive option is set. [jcbrand]
  • Add the ability to also drag-resize chat boxes horizontally. [jcbrand]
  • Updated Sass files and created a new style. [jcbrand]

Merci JC Brand !

XMPP est bien vivant !

XMPP n’est plus à la mode, on est dans le creu :

Mais ça va remonter, et ça va être efficace !


Gravatar de Nÿco
Original post of Nÿco.Votez pour ce billet sur Planet Libre.

Articles similaires

Carl Chenet : Liens intéressants Journal du hacker semaine #45

lundi 9 novembre 2015 à 12:03

logo-journal-du-hacker

Voici  5 liens intéressants que vous avez peut-être ratés durant la 45ème semaine de 2015, liens relayés par le Journal du hacker, votre source d’informations pour le Logiciel Libre francophone !

android

cozy-logo

raspberrypi

firefox-logo

Pour ne plus rater aucun article de la communauté francophone, voici :

logo-twitter

De plus le site web du Journal du hacker est « adaptatif (responsive) ». N’hésitez pas à le consulter depuis votre smartphone ou votre tablette !

Le Journal du hacker fonctionne de manière collaborative, grâce à la participation de ses membres. Rejoignez-nous pour proposer vos contenus à partager avec la communauté du Logiciel Libre francophone et faire connaître vos projets.

Et vous ? Qu’avez-vous pensé de ces articles ? N’hésitez pas à réagir directement dans les commentaires de l’article sur le Journal du hacker ou bien dans les commentaires de ce billet :)


Gravatar de Carl Chenet
Original post of Carl Chenet.Votez pour ce billet sur Planet Libre.