## Formation Archipelago ## pour le Low-Tech Lab ### Session #1, le 8 janvier 2025 ### Session #2, le 22 janvier CC-BY-SA --- # Session #1 ## Contexte et Archipelago La documentation du projet est sur le [PAD du projet Archipelago LTL](https://pad.lescommuns.org/SemLowTech) --- ## Contexte :::info Le Low-tech Lab a **besoin d'une gare centrale** (ou **intranet**), basée sur des logicicels libres, pour recenser les acteurs, les organisations, les outils et les événement de sa communauté. ::: :::success Après une démonstration fin septembre, le Low-tech Lab souhaite **monter en compétence** pour **administrer lui-même un Archipelago**. ::: --- ## Formation L'assemblée virtuelle (AV) propose donc une formation sur SemApps et Archipelago à l'équipe du low-tech Lab en deux 1/2 journées: * 8/1/2025 : découverte globale, autour des concepts, web sémantique, SemApps, Archipelago * ??/2/2025 : on entrera dans le code, avec des exercices pratiques, jusqu'à mettre en production un changement sur l'interface. --- ## Assemblée Virtuelle (AV) Un regroupement d'organisations qui développent en commun des solutions **open-source**, **libres**, **décentralisées** et basées sur des **standards** (du W3C) pour répondre aux besoins d'**interopérabilité** et de respect des **données personnnelles** du Web. www.assemblee-virtuelle.org **Objectif :** Favoriser la mise en réseau des acteurs de la transition grâce à la mise en synergie de leurs systèmes d’information. --- ## Introduction sur ce PAD Ce PAD sera une sorte de référence pour toute personne souhaitant comprendre, ou monter en compétence sur **l'administration d'Archipelago**. Il expliquera **la philosophie** du produit Archipelago, et contiendra surtout **une série de liens** vers des ressources déjà existantes, permettant de **comprendre, prendre en main, maintenir, mettre à jour** cet outil. --- ## C'est quoi Archipelago ? ![](https://hot-objects.liiib.re/pad-lescommuns-org/uploads/8a83e4e0-0962-44f6-afed-af56c5e39468.png) --- ### Une page d'accueil customisable ![](https://hot-objects.liiib.re/pad-lescommuns-org/uploads/5a3b13b0-6948-4244-80f7-b8e7be6e34fa.png) --- ### Une liste d'organisations triable ![](https://hot-objects.liiib.re/pad-lescommuns-org/uploads/b21b5ca2-5367-492b-9772-e784a2356f7c.png) --- ### Avec une vue en carte géographique ![](https://hot-objects.liiib.re/pad-lescommuns-org/uploads/cf435521-2e7b-40d2-bd1a-97dbb4f5140a.png) --- ### Un calendrier avec différentes vues ![](https://hot-objects.liiib.re/pad-lescommuns-org/uploads/1a13659b-1169-47cf-9823-2f2c7caaf0ee.png) --- ### Détail des événements ![](https://hot-objects.liiib.re/pad-lescommuns-org/uploads/b5b9f310-3a9b-491a-ae2c-eafe85c42826.png) --- ## Chaque ressource est administrable ![](https://hot-objects.liiib.re/pad-lescommuns-org/uploads/baa5a8c5-bccc-44e0-9b74-4317bd2050f3.png) --- ### L'authentification donne accès à plus de ressources / admin ![](https://hot-objects.liiib.re/pad-lescommuns-org/uploads/6a645953-95ab-4507-8091-947f175b89a9.png) --- ## Proposition de définition **Archipelago** est un des produits de l'AV. Il sert à créer, mettre à jour et supprimer (CRUD*) des données sémantiques liées à une **ontologie** spécifique. Il est open-source, libre, et offre une solution à des problèmes d'**interopérabilité**. Voir [Définition sur le site de l'AV](https://assemblee-virtuelle.org/projets/applications/https%3A%2F%2Fdata.virtual-assembly.org%2Fprojects%2Farchipelago/) *Create Read Update Delete --- ## Interopérabilité C'est lorsque deux logiciels arrivent à communiquer entre eux. [Définition wikipedia](https://fr.wikipedia.org/wiki/Interop%C3%A9rabilit%C3%A9) L’interopérabilité est la capacité que possède un produit ou un système, dont les interfaces sont intégralement connues, à fonctionner avec d’autres produits ou systèmes existants ou futurs et ce sans restriction d’accès ou de mise en œuvre --- ## Présentation au Self Data Lab Au sujet de l'[interopérabilité et des données personnelles](https://pad.lescommuns.org/p/SlideAvActivityPubSolidPods#/) --- ## Utilisation d'une ontologie Pour l'interopérabilité, **deux solutions**. 1) Des **API spécifiques** (= traducteur) 2) Des **standards**. (= Espéranto). Archipelago utilise la deuxième option, en utilisant des standards comme [SOLID](https://pad.lescommuns.org/p/SlideSolid#/), ou [Activity Pub](https://activitypub.rocks/). Et pour la "forme" des données, l'AV utilise une sorte de "schéma" de base de donnée, appelée une **ontologie**. --- ## L'ontologie PAIR L’AV propose l’ontologie : **PAIR** (**P**rojets, **A**cteurs, **I**dées, **R**essources) Pour cartographier des écosystèmes. https://github.com/assemblee-virtuelle/pair Mais SemApps est compatible avec n’importe quelle ontologie du web sémantique (FOAF, Dublin Core, SKOS) --- ## Schéma de l'ontologie PAIR ![](https://hot-objects.liiib.re/pad-lescommuns-org/uploads/e07318c3-91e6-4394-a658-f45b8da2d529.png) --- ## Un peu d'histoire... Première version = Semantic Form + application en PHP Symfony. Cette version a servi pour la cartographie des grands voisins. Fin 2019, toute l'architecture a été revue : * back en **Node JS** (intégrant un triplestore) * front en **React** (intégrant le projet français **React-Admin**). --- ## Présentation de SemApps [Voir présentation effectuée pour le projet Carto4CH](https://pad.lescommuns.org/SlideSemapps) --- ## Architecture d'Archipelago ![](https://hot-objects.liiib.re/pad-lescommuns-org/uploads/b8f2301d-9aa5-4310-a0a7-fe89e51d22b9.png) --- ### Instance AV ![](https://hot-objects.liiib.re/pad-lescommuns-org/uploads/f810b00b-4c18-477c-8e46-8f4ed785d5bc.png) --- ![](https://hot-objects.liiib.re/pad-lescommuns-org/uploads/2495358f-e91b-4e9b-a1ef-65ffa8bbcd3d.png) --- ## Instance du Low-tech Lab ![](https://hot-objects.liiib.re/pad-lescommuns-org/uploads/bd357e6d-6221-4b4d-8e4c-80e2d534d3b1.png) --- ![](https://hot-objects.liiib.re/pad-lescommuns-org/uploads/e124b813-b601-40e1-96d4-b72656aafa6f.png) --- ## Maintenance des composants **Les composants réutilisables** de la boite à outil **SemApps** sont un **commun**. Ils sont en open-source, et gérés par une communauté composée de membres de l'Assemblée Virtuelle, mais potentiellement d'autres développeurs étrangers qui souhaitent contribuer à ce commun. Chaque mise à jour passe par **une PR (Pull Request)** et est acceptée ou non par les administrateurs sur le [Github de l'AV](https://github.com/assemblee-virtuelle/semapps) --- ## Co-responsabilité dans le projet LTL (1) Dans le projet Archipelago du Low-tech Lab, dans un premier temps, on pourrait imaginer que : * Le low-tech Lab soit responsable du frontend * L'Assemblée Virtuelle continue à être responsable des composants SemApps Si le Low-tech Lab souhaite une évolution des composants SemApps, soit il contribue, soit il passe par une prestation. --- ## Co-responsabilité dans le projet LTL (2) ![](https://hot-objects.liiib.re/pad-lescommuns-org/uploads/5c556659-eaec-43d1-82b0-e23d1fd7ba67.png) --- ## Formation SemApps Avant de commencer, il est important de consulter la [documentation sur SemApps](https://github.com/assemblee-virtuelle/semapps/wiki/Formation-SemApps-%28en-fran%C3%A7ais%29) sur le Github de l'AV. ![](https://hot-objects.liiib.re/pad-lescommuns-org/uploads/b8c2035b-d442-4d49-8825-f1e714ceab66.png) --- ## Prise en main du Frontend Pour maintenir le Frontend du Low-tech Lab, il faut savoir jouer au légos, et comprendre la notion de "surcharge/AddOn". ![](https://hot-objects.liiib.re/pad-lescommuns-org/uploads/444fbea1-21f0-46d7-9d2d-34688059ce52.png) --- ## Jouer avec des légos... En effet, en React JSX, on "empile" des balises les unes dans les autres et chaque balise est lié à un composant, qui a lui-même son code, et qui fait à son tour appel à d'autres composants. ![](https://hot-objects.liiib.re/pad-lescommuns-org/uploads/77a768d5-f349-45ea-b611-b95267c19892.png) --- ## Exemple avec ```<Admin>``` Le composant le plus important ici est celui de React-Admin, notre framework frontend principal. Plus d'informations : https://marmelab.com/react-admin/ ![](https://hot-objects.liiib.re/pad-lescommuns-org/uploads/5265613f-3819-4730-ac15-d94235093040.png) --- ## Passage de propriétés Le composant ```<Admin>```prend en paramètre des propriétés : le titre, les paramètres d'authentification, les données, les traductions, le layout (mise en page), le thème, le login... ![](https://hot-objects.liiib.re/pad-lescommuns-org/uploads/f88f7e1a-4560-4918-9422-8f0d40c6e30f.png) --- ## Exemple avec le login Ici, on voit qu'on utilise un composant SemApps qui va gérer tout ce qui concerne la page de login (utilisation du SSO...). ![](https://hot-objects.liiib.re/pad-lescommuns-org/uploads/c0de0752-96f4-4a1f-8ba5-8942809b00a7.png) --- ![](https://hot-objects.liiib.re/pad-lescommuns-org/uploads/b0f29b41-b06d-4d97-8680-6b460f87d9e5.png) --- ## Résumé sur React-Admin Et comme par magie, en un code très réduit, il permet d'obtenir des fonctionalités de CRUD assez rapidement. ![](https://hot-objects.liiib.re/pad-lescommuns-org/uploads/108faa20-3c13-4736-ae1f-c37ce64af843.png) --- ## Conclusion sur Archipelago Archipelago est donc : * Un **middleware**, contenant les données dans un triplestore * Des **données structurées** (ontologie PAIR) * Un **frontend** permettant du **CRUD** * Une mise à disposition de ces données de manière **standardisée**, soit en LDP, soit en SPARQL, ce qui lui permet d'être **interopérable**. --- ## Carto Flodio Voir documentation sur le site www.flod.io. ![](https://hot-objects.liiib.re/pad-lescommuns-org/uploads/922030ae-3a56-462b-8ca3-b4884d460d2c.png) --- ## Vision low-tech ![](https://hot-objects.liiib.re/pad-lescommuns-org/uploads/1c58b035-4623-47cc-837d-a8994a20660c.png) --- ## Vision Transition ![](https://hot-objects.liiib.re/pad-lescommuns-org/uploads/be250c87-9f08-427a-b181-4326cd014793.png) --- # Session #2 ## Le serveur Archipelago LTL Toutes les infos techniques sont décrites sur le [PAD d'installation du serveur](https://pad.lescommuns.org/InstallationServeurArchipelagoLowTechLab) --- ## Mise à jour du serveur ![](https://hot-objects.liiib.re/pad-lescommuns-org/uploads/ede09ca0-02cc-4453-b862-8b6faa59f134.png) --- ## lowtechlab-archipelago-prod ![](https://hot-objects.liiib.re/pad-lescommuns-org/uploads/576ac1f2-2c27-469f-9e07-c8b609fb7481.png) --- ## deploy-archipelago-lowtechlab ![](https://hot-objects.liiib.re/pad-lescommuns-org/uploads/545ba09c-5367-4395-ae4a-cfeb6b635bd0.png) --- ## DNS et Github ![](https://hot-objects.liiib.re/pad-lescommuns-org/uploads/abc619aa-dd70-4111-8038-77e75afafc00.png) --- #### Prise en main du serveur ![](https://hot-objects.liiib.re/pad-lescommuns-org/uploads/30151eb8-7e0d-47bd-9e58-347690092996.png) --- ## RDV sur le forum de l'AV Pour tout le reste : https://forums.assemblee-virtuelle.org/ Merci de votre attention :+1:
{"type":"slide","slideOptions":{"transition":"slide"},"title":"Formation Archipelago Low-Tech Lab","tags":"Archipelago, Assemblée Virtuelle, Sémantique, interopérabilité, ActivityPods, ActivityPub, Solid"}