Retours sur la conférence de Kévin Dunglas « Développer une application web décentralisée avec Symfony et API Plateforme ».
J’ai eu la chance et le plaisir d’assister le 8 avril à une journée du Symfony Live 2022, événement francophone de Symfony. Webnet, sponsor de l’événement, a pris en charge mon inscription et celles de mes collègues.
C’est un événement organisé pour les développeurs PHP Symfony ainsi que pour les professionnels des I.T. Il permet de rencontrer et d’échanger avec les membres de la communauté PHP Symfony et de connaitre les dernières nouveautés.
La journée s’est très bien passée, j’ai pu échanger avec plusieurs développeurs, et assister aux 7 conférences programmées durant la journée, parmi lesquelles celle présentée par Kévin Dunglas, créateur d’API Plateform, sur le thème « Développer une application web décentralisée avec Symfony et API Plateform. »
Dans les lignes qui vont suivre, je vais résumer la conférence en m’appuyant sur ce qui a été présenté par Kévin Dunglas.
web centralisé
Jack Dorsey, créateur de Twitter, a envoyé un Tweet début avril 2022, où il écrit :
« Les temps d’Usenet, IRC, du web… même de l’email chiffré, étaient incroyables. La centralisation de la découverte et de l’identité dans les entreprises a vraiment endommagé Internet. Je me rends compte que je suis en partie responsable et je le regrette ».
Aujourd’hui quelques multinationales, dont les GAFAM (Google [Alphabet], Apple, Facebook [Meta], Amazon et Microsoft), contrôlent une grande partie du trafic Internet mondial, ce qui présente deux grands soucis :
- D’une part, ces multinationales possèdent et contrôlent la majorité des données personnelles d’une grosse partie de l’humanité, y compris les communications. Ces entreprises ont, en plus, des partenariats avec les États, notamment les U.S.A, pour la surveillance des utilisateurs et l’accès à leurs données privées.
- D’autre part, il y a un problème spécifique aux réseaux sociaux. Le web, lorsqu’il a été créé par Tim Berners-Lee, a eu comme objectif de « donner une voix aux personnes marginalisées », apportant un contrepoids aux médias nationaux, extrêmement contrôlés par les États. Le web est venu casser tout cela et a permis à tous ceux qui ont quelque chose à dire de le faire (les débuts du Web1.0).
Mais, avec le temps et la centralisation du web, les grands réseaux sociaux ont acquis l’autorité et le pouvoir de censurer énormément de propos, apportant ainsi un autre problème : celui de donner de la visibilité à certaines informations selon des objectifs économiques ou politiques. C’est le cas, par exemple, des algorithmes de Facebook et Twitter qui ont très souvent été accusés d’orienter les élections, voire de nuire à la démocratie.
Web3 (Blockchain) vs web3.0 (Project Solid)
Plusieurs solutions ont émergé pour casser cette centralisation du web. Mais avant d’en parler, un peu d’histoire…
web 1.0
Le web 1.0 a été créé par Tim Berners-Lee en 1990 et existe toujours avec le stack utilisé jusqu’à aujourd’hui pour accéder au web (HTML, HTTP, URI).
Dans ses débuts, le web1.0 a permis à n’importe qui capable de connecter un ordinateur à Internet de publier des ressources avec le slogan « Share Knowledge », « Partagez les connaissances ».
N’importe qui peut alors publier des ressources sur un serveur, que ce soient des informations, du texte, des images et sans qu’il y ait une autorité centrale. Ensuite des clients, via des navigateurs, peuvent demander à utiliser et à télécharger les ressources.
Le web 1.0 était donc décentralisé puisqu’il n’y a pas d’autorité centrale et que les données appartiennent aux utilisateurs.
web 2.0
Le web 2.0 désigne l’évolution du web à partir des années 2000. L’utilisateur devient contributeur et participatif, publie des vidéos, des articles de blogs, crée des posts sur les réseaux sociaux, utilise des flux RSS. On voit également apparaître XML, des API web ainsi que la montée en puissance de JavaScript.
Les entreprises se rendent compte que les données qui circulent rapportent énormément d’argent. Elles s’orientent donc vers un business model basé sur la vente et l’exploitation des données des utilisateurs. Le web en arrive alors à la situation d’aujourd’hui, où 57 % du trafic réseau est contrôlé par une poignée d’entreprises.
web 3
Le web 3, terme à la mode, constitue la promesse d’une décentralisation. Il permet de casser le pouvoir de surveillance massive et de censure des États et des multinationales mais aussi de protéger les données personnelles des utilisateurs.
Pour cela, le web 3 s’appuie sur les blockchains, particulièrement la blockchain Ethereum qui permet de stocker des données et du code à exécuter de manière éparpillée sur l’ensemble des ordinateurs du réseau.
Ainsi, la distribution de petites applications dans la blockchain Ethereum permet de créer des sites web complètement décentralisés, dans lesquels il n’y a pas d’autorité prédominante. Ce système constitue notamment un avantage pour les applications comme Trust wallet, par exemple, où le transfert d’argent peut se faire directement sans l’aide d’un tiers de confiance (ex. banques).
Mais cette approche du web 3 reste problématique, sachant que l’utilisation de la blockchain pour une décentralisation du web est confrontée à plusieurs obstacles :
- La blockchain est favorable aux transactions en cryptomonnaie et aux utilisateurs qui ont une grande quantité de cryptomonnaie. Malgré la publicité, le but principal de la blockchain reste la monétisation et le financement de tous les aspects de la vie quotidienne.
- Développer, stocker du code et de la donnée en blockchain, notamment pour des raisons non liées à la cryptomonnaie a un coût très élevé.
- La blockchain jusqu’à aujourd’hui a un coût énergétique extrêmement important, pour le calcul, l’extraction de la monnaie et pour la confirmation des transactions.
Autre solution web 3.0 (Project Solid)
Tim Berners-Lee, inventeur du web, a exprimé ses critiques sur ce qu’est devenu le web aujourd’hui, précisant qu’il n’est plus une force de bien et a été perverti par des business models basés sur l’argent, la publicité et la monétisation des données.
Il a proposé une solution, le projet Solid, pour un web éthique et une société interconnectée, équitable et informée.
L’écosystème Solid se base sur les normes web existantes pour réaliser un espace où les utilisateurs peuvent conserver leur autonomie, contrôler leurs données et leur vie privée et choisir les applications et services qui répondent à leurs besoins.
Solid
Le projet Solid (Social linked data), réalisé par Tim Berners-Lee avec l’université américaine MIT, est un ensemble de conventions et d’outils pour créer des applications sociales décentralisées basées sur les principes des données liées. Solid est modulaire, extensible et s’appuie autant que possible sur les normes et protocoles W3C existants.
Le principe est de donner aux utilisateurs le contrôle de leurs données.
Liens du projet
https://solid.mit.edu/
https://solidproject.org/
https://solidproject.org/TR/protocol
Pod
Le pod est au cœur de Solid. C’est une sorte de mélange entre un Google Drive dans lequel les utilisateurs peuvent stocker leurs données, et une base de données utilisable de manière beaucoup plus programmatique, pour brancher des applications capables d’accéder aux données.
Les pods sont comme des serveurs que les utilisateurs peuvent installer chez eux s’ils sont technophiles ou chez des tiers de confiance, et ainsi, choisir qui peut accéder à leurs données.
Solid s’adapte à plusieurs aspects qui peuvent le rendre plus populaire :
- L’identité et l’authentification ;
- Gestion des ressources dans les pods ;
- Le web social qui concerne la thématique des réseaux sociaux. Ce projet n’est pas encore achevé.
Stack technologique Solid
Solid Spec
Un ensemble de spécifications qui décrivent comment les serveurs et les clients Solid peuvent être interopérables en utilisant des protocoles de communication web, des identifiants globaux, des mécanismes d’authentification et d’autorisation, des formats et des formes de données et des interfaces de requête.
LDP, WebID and OpenID Connect : pour lire et écrire les données liées, et pour l’authentification.
RDF : (Ressource Description Framework) modèle de représentation et description des ressources.
HTTPS : protocole de transfert hypertexte sécurisé.
URI : identifiant uniforme d’une ressource.
Standards SOLID
WebID : moyen d’identifier de manière unique une personne, une entreprise, une organisation ou un autre agent à l’aide d’un URI, utilisé comme identifiant principal pour les utilisateurs et les applications
Open ID Connect (Solid OIDC) : une couche d’authentification basée sur le protocole OAuth 2.0 qui définit la manière dont les serveurs de ressources vérifient l’identité des parties utilisatrices et des utilisateurs finaux en fonction de l’authentification effectuée par un fournisseur OpenID.
LDP (Linked Data Platform) : un standard qui permet de fournir une architecture pour les données liées en lecture-écriture.
WAC : (Web Access Control) un vocabulaire RDF qui permet de gérer les contrôles d’accès.
Choix de pod
Première étape pour développer une application Solid, choisir un pod pour stocker les données. Le choix est diversifié entre les pods open source, communautaire ou payants.
Solid est déjà utilisé en Angleterre. Le ministère de la santé anglais est en train d’expérimenter l’utilisation de Solid pour le stockage des dossiers médicaux des personnes.
solid-client-PHP
En fin de conférence, Kevin Dunglas a présenté une bibliothèque Solid qu’il a récemment créée : Solid Client PHP. Il s’agit d’une bibliothèque PHP autonome, pour accéder et gérer les autorisations sur les données stockées dans un Solid Pod, et intègre également un bundle Symfony pour créer facilement des applications Solid avec le Framework Symfony et API Platform.
Le lien GitHub vers la bibliothèque : https://github.com/dunglas/solid-client-php