## 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 ?

---
### Une page d'accueil customisable

---
### Une liste d'organisations triable

---
### Avec une vue en carte géographique

---
### Un calendrier avec différentes vues

---
### Détail des événements

---
## Chaque ressource est administrable

---
### L'authentification donne accès à plus de ressources / admin

---
## 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

---
## 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

---
### Instance AV

---

---
## Instance du Low-tech Lab

---

---
## 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)

---
## 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.

---
## 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".

---
## 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.

---
## 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/

---
## 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...

---
## 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...).

---

---
## 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.

---
## 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.

---
## Vision low-tech

---
## Vision Transition

---
# 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

---
## lowtechlab-archipelago-prod

---
## deploy-archipelago-lowtechlab

---
## DNS et Github

---
#### Prise en main du serveur

---
## 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"}