SOLID or not SOLID

Utiliser un triplestore est compliqué parce que les différentes specs Solid prennent très peu en compte cette possibilité.

Oui car ce n’est pas utile : je le répète on n’a pas besoin d’un triplestore pour faire du Solid. La spec Solid n’a pas à définir les choix techniques sous-jacents, elle définit des règles de plus haut niveau.

Personnellement je ne regrette pas une seule seconde le choix du triplestore ! […] alors que ce qu’on a fonctionne également très bien (les performances d’ActivityPods sont excellentes grâce à la combinaison des choix qui ont été fait).

Peut-être mais ce n’est pas compatible avec Solid donc ça ne vaut rien sur le plan du standard ! Il y a plein d’autres solutions qui fonctionnent très bien mais ce n’est pas ce qui est demandé. Ce qui est demandé ce sont des solutions compatibles avec le standard, point.

Je constate également que le choix d’utiliser un storage en filesystem créent de grosses complications pour les autres serveurs Solid, comme on le voit en lisant le fameux article de Ruben. Donc au final chaque choix technologique implique des complications et aussi des simplications. C’est la beauté de la diversité :slight_smile:

Je ne sais pas exactement ce à quoi tu fais référence ici mais je ferais la même réponse que Tim B. Lee à Ruben : tu sembles ignorer complètement l’aspect standard client-à-client. La spécification client-serveur de Solid donne un cadre qui permet de faire tout ce qu’on veut à l’intérieur. C’est ensuite le rôle du standard client-à-client, réunissant un ensemble d’acteurs souhaitant fonctionner ensemble, de résoudre ces complications.

Mais tu n’as pas répondu à ma question: Quel serait l’intérêt de stocker chaque ressource dans un graph différent du triple store ? Et par extension: Quel serait l’intérêt d’avoir des documents dans lesquels on peut mettre n’importe quel type de triple ? Moi je trouve que le principe « une ressource = un URI » fonctionne très bien et je ne comprends pas ce qu’apporteraient des documents tels qu’on peut en avoir avec un storage en filesystem.

C’est plutôt Henry Story qui y a répondu notamment avec « The statement by a doctor that I should take some medication does not have the same value as someone in a bar telling me to ».

C’est vrai. Mais je ne suis pas d’accord que SemApps s’éloigne de Solid. Il y a deux ans, on avait pas de Pods. Maintenant on en a,

Non désolé, vous n’avez pas de PODs puisque vous n’êtes pas compatibles Solid ! Tu ne peux pas prendre le concept de POD, le sortir de son contexte, lui enlever ce qui ne te convient pas et appeler ça un POD. Un POD n’a de sens qui s’il est compatible avec d’autres PODs (Solid). Tu ne peux pas prendre uniquement ce qui t’arrange dans un standard. C’est le principe, c’est la définition d’un standard ! En plus de l’authentification, vous n’êtes pas en architecture documents (RDF) donc vous n’avez pas de POD. Vous avez quelque chose qui y ressemble mais ce n’est certainement pas un POD Solid.

on se rapproche du standard, du moins autant que cela est possible.

Même remarque que précédemment, tu ne peux pas prendre uniquement ce qui t’arrange dans un standard. Il faut implémenter le tout (ou au moins le minimum) pour être compatible avec l’écosystème.

Il est vrai que lorsqu’on a commencé SemApps en 2019, on hésitait à implémenter Solid-OIDC (qui s’appelait à l’époque WebID-OIDC) car les specs bougeaient encore trop.

C’est le jeu quand on construit un standard. Au Data Food Consortium c’est pareil, le standard évolue et des mises à jour doivent être faites continuellement. Cela n’a pas de sens de vouloir implémenter un standard tout en se plaignant des évolutions normales issues du processus de construction de ce standard. Oui implémenter un standard en construction est coûteux mais c’est annoncé dés le départ.

Maintenant Solid-OIDC semble plus stable, donc je ne vois pas de raison de ne pas l’implémenter, si ce n’est un manque de moyens (Mais j’avoue que ce n’est pas non plus une priorité pour ActivityPods car l’authentification par signature HTTP fonctionne bien et il y a d’autres problèmes plus graves qui mérite mon attention)

Le fait de ne pas faire une priorité de Solid-OIDC indique pour moi un manque de considération de l’aspect collectif et communautaire de Solid. Solid ce n’est pas uniquement une solution technique, c’est un projet collectif qui fonctionne si tout le monde (ou au moins ceux qui souhaitent contribuer) joue le jeu. Un projet collectif ne peut pas réussir si chacun fait les choses à sa manière dans son coin. On définit des règles ensemble et on les applique, c’est une condition sine qua non.

Si la spec Solid était vraiment de si haut niveau, elle serait « storage-agnostic » et ne devrait pas proposer des choses qui ne fonctionnent qu’avec un filesystem. Or c’est bien le cas, je te le garanti.

ActivityPods est 100% compatible ActivityPub, LDP, WAC… on peut déjà reconnaître ça :wink: Si je m’en foutais des standards, j’aurai pu arriver au même résultat en 10x moins de temps.

On peut aussi faire des « statements » avec le principe « Une ressource = un URI ». Je ne vois pas ce que l’usage de « documents turtle » (comme tu les qualifies) change à cela ?

Pour moi il y a deux choses: le concept philosophique et architectural de « personal online datastore » (Pod), qui a été imaginé à un moment donné et qui n’est certainement pas la propriété d’une seule personne ou un seul groupe, et l’implémentation concrète de Solid via des standards sur lesquelles un grand nombre de personnes se mettent d’accord.

Pour le dernier, je ferai remarquer que le standard est très loin d’être finalisé (le working group au sein du W3C n’a été créé qu’il y a une année) et qu’il y a encore de la place pour des évolutions, si les groupes de travail sont ouverts. La réponse plutôt « énervée » de TBL à l’article de Ruben m’a créé des doutes sur ce point, mais je reste optimiste et je vais continuer à travailler ces prochains mois dans le sens d’une coopération, dans la mesure de mes petits moyens. :mouse:

Je pense que tu sous-estimes le temps que je passes à réfléchir à ces sujets…

Bon, je crois que ce sera ma dernière réponse car je ne constate pas de volonté de te part de te mettre à ma/notre place… Tu as la vérité et tu l’assène: tant mieux pour toi. Je te remercie quand même car cette discussion m’a permis de mieux prendre conscience de la spécificité des projets SemApps, Archipelago et ActivityPods, et je vais faire un article sur notre histoire et là où on pourrait aller (je l’ai écris cette nuit, mais cela va nécessiter un peu de mise en forme !)

En deux mots pour les impatients: le projet SemApps est parti de la volonté partagée d’aider les organisations de la Transition à coopérer, en créant des bases de données ouvertes en lecture et écriture. C’était une intention très différente de Solid, qui se focalise sur le respect de la vie privée et donc sur la protection des données. Mais avec ActivityPods, la jonction a été faite entre ces deux approches. Cela va permettre d’aller vers cette idéal de société que Guillaume résumait plus ou moins comme ça: « assurer un maximum d’autonomie tout en maintenant un maximum d’interopérabilité » (@guillaume.rouyer je serai preneur de ta formule exacte, que je pourrai reprendre dans mon article)

Je me sens très enthousiaste à cette perspective :slight_smile:

1 « J'aime »

Je ne sais pas si cela peu contribuer au débat, mais cette histoire de document m’a amener à une réflexion qui pourrait permettre aux néophytes d’y voir plus claire.

Il est tout a fait possible de stocker dans un dataset d’un triplestore des graphs nommés correspondant à la notion de document. Ces graphs nommés peuvent être requêtés cross-document par une requête SPARQL. Je rappelle que l’intérêt de SPARQL est principalement de réaliser des recherches multi-critères sur un ensemble de données. Actuellement, tous les documents sont stockés dans le même graph, mais une évolution « mineure » pourrait consister à créer des graphs nommés pour chaque document sans contredire l’architecture globlae.
Si ces documents sont stockés sur plusieurs fichiers, il faut charger les triplets RDF de ces fichiers dans un moteur qui pourra exécuter la requête SPARQL mais Il n’est pas possible de réaliser une requête SPARQL directement sur un ensemble de documents stocké sous forme de fichier. Avec Communica, une requête multi document doit se faire sur le navigateur et il me semble que ce n’est pas possible de faire cette requête (qui exploite des liens entre sujets de différents documents) actuellement dans communcia (@lecoqlibre je veux bien ton eclairage sur ce sujet).
Ce n’est pas pour rien que SPARQL ne fait pas parti de la norme Solid. Cela vient du fait que Solid a été pensé pour fonctionner en fichiers avec les limitations que cela induit.
A l’AV, nous avons considéré que les applications devaient pouvoir faire une requête SPARQL à un serveur et que celui-ci devait le faire sur la globalité des données qu’il possède et que les serveurs fédérés possèdent (actuellement grâce au miroir, mais on voudrait faire mieux.). Si nous nous étions limité à l’architecture induite par le stockage en fichier (je rejoins @srosset sur l’adhérence de Solid à celle-ci) cela imposait aux applications clientes de devoir agréger des données dans un moteur SPARQL sur le navigateur pour pouvoir faire des requetes cross-document et nous ne voulions pas cela, car nous avons considéré que c’était un frein majeur à l’adoption du web sémantique dans les écosystèmes de transition alors que c’est notre objectif principal.
Avec l’architecture proposée (et améliorable), des frameworks standards comme react-admin sont facilement exploitables et DP a pu réaliser des applications sur mesure en REACT, avec des développeurs traditionnels, qui ne maîtrise pas les concepts de web-semantique et ont simplement eu besoin de comprendre les containers, json-ld et SPARQL pour les recherches.

La seule grosse différence avec Solid et pour moi solid-OIDC et nous pourrions faire un pas dans ce sens si une personne motivée souhaite le faire et que des financements le permette.

Comme dit plus haut, ça ne serait pas possible avec Jena Fuseki.

Ok, j’avais lu trop vite. On fait plusieurs graph sur DFC mais on passe par la creation de graph par upload. Jamais essayé de créer des graph en dynamique. Je pense que ce n’est pas une limitation d’architecture et que cela pourrait être une évolution de Jena. En tout cas c’est une limitation actuelle technique et non pas conceptuelle ou fondamentale comme le stockage en fichier.

ActivityPods est 100% compatible ActivityPub, LDP, WAC… on peut déjà reconnaître ça :wink: Si je m’en foutais des standards, j’aurai pu arriver au même résultat en 10x moins de temps.

Oui c’est super :muscle: ! Mais là on parle du standard Solid. Si tu veux le respecter tu ne peux pas faire l’impasse sur certains éléments essentiels comme l’authentification par exemple.

On peut aussi faire des « statements » avec le principe « Une ressource = un URI ». Je ne vois pas ce que l’usage de « documents turtle » (comme tu les qualifies) change à cela ?

Le contexte ! Je répondrai plus en détails plus tard.

Pour moi il y a deux choses: le concept philosophique et architectural de « personal online datastore » (Pod), qui a été imaginé à un moment donné et qui n’est certainement pas la propriété d’une seule personne ou un seul groupe, et l’implémentation concrète de Solid via des standards sur lesquelles un grand nombre de personnes se mettent d’accord.

Tu peux reprendre l’idée du POD et l’arranger à ta sauce mais ce n’est plus un POD Solid. Tu proposes alors un standard technique alternatif ce qu’on cherche précisément à éviter.

Pour info le terme POD est en train de changer de nom et va probablement s’appeler « storage » car la communauté s’est rendue compte que le mot « Personal » dans POD induit trop de personnes en erreur sur le fait qu’un POD est uniquement personnel. Or un POD (storage) peut très bien être utilisé collectivement. Certains membres de l’AV utilisent le mot COD avec le C pour « Collective », mais un POD/storage a déjà cette fonctionnalité en lui-même.

Pour le dernier, je ferai remarquer que le standard est très loin d’être finalisé (le working group au sein du W3C n’a été créé qu’il y a une année) et qu’il y a encore de la place pour des évolutions, si les groupes de travail sont ouverts.

Le fait que le standard ne soit pas finalisé n’est à mon sens pas une raison pour ne pas l’implémenter convenablement. C’est normal dans un processus de construction. Au Data Food Consortium nous avons des gens qui nous disent qu’ils ne contribueront pas au projet car il n’est pas finalisé. Nous on leur dit qu’on a justement besoin de gens qui contribuent pour que la finalisation arrive plus vite !

Côté standardisation, je ferais remarquer tout de même que le projet Solid est bien plus proche de devenir une recommandation W3C qu’ActivityPods ou SemApps !

La réponse plutôt « énervée » de TBL à l’article de Ruben m’a créé des doutes sur ce point, mais je reste optimiste et je vais continuer à travailler ces prochains mois dans le sens d’une coopération, dans la mesure de mes petits moyens.

Je n’ai pas plus de détails sur cet échange. La réponse de Tim B. Lee a été dé-publiée peu de temps après. Je sais néanmoins qu’il existe des tensions entre les deux protagonistes. Même si c’est désagréable, c’est tout à fait habituel dans un projet collectif.

Je pense que tu sous-estimes le temps que je passes à réfléchir à ces sujets…

J’avoue que je n’en ai aucune idée.

Je ne peux que constater ton absence de réponse sur le sujet du standard client-à-client.

De plus nous avions commencé ensemble un travail d’intégration d’ActivityPub (AP) à Solid. Nous avions obtenus de très bons résultats qui montraient une faisabilité. Ce travail demande à être continué. Personnellement je n’ai pas encore de bande passante à consacrer à ça pour l’instant. Mon temps salarié reste dans le champ de l’indexation, j’ai d’ailleurs réalisé un agent indexeur lors d’un Hackathon Solid. Comme AP c’est ton sujet je trouve que cela aurait été bénéfique que tu continues ces travaux d’intégration d’AP à Solid. Je n’ai pas vu de tes nouvelles sur ce sujet donc j’ai plutôt l’impression que tu préfères développer ta solution non standard plutôt qu’une solution Solid ?

De plus, l’argument du temps passé ne fait pas autorité. C’est quelque chose de relatif, il y a des gens très rapides, d’autres très lents. Ce n’est pas parce qu’on étudie quelque chose depuis longtemps qu’on ne peut pas passer à côté de quelque chose. Ruben est par exemple passé à côté su standard client-à-client alors qu’il est expert sur le sujet sémantique/Solid !

Je te remercie quand même car cette discussion m’a permis de mieux prendre conscience de la spécificité des projets SemApps, Archipelago et ActivityPods, et je vais faire un article sur notre histoire et là où on pourrait aller

Génial, j’ai hâte de lire ça !

C’était une intention très différente de Solid, qui se focalise sur le respect de la vie privée et donc sur la protection des données.

La partie protection des données n’est qu’une partie de Solid. Solid est également un projet d’interopérabilité dans lequel tu peux très bien implémenter une solution pour « aider les organisations de la Transition à coopérer, en créant des bases de données ouvertes en lecture et écriture ».

Mais avec ActivityPods, la jonction a été faite entre ces deux approches.

Tu sous entends que ces deux approches ne sont pas jointes ce qui est pour moi faux. Solid permet justement de joindre ces deux approches, c’est dans son ADN. Mais pour ça il faut s’intéresser au standard client-a-client. ActivityPods réinvente la roue puisque l’impossibilité d’intégrer ActivityPub dans Solid n’est pas démontrée (nos premiers travaux montrent plutôt que c’est possible, comme dit précédemment).

assurer un maximum d’autonomie tout en maintenant un maximum d’interopérabilité

Yes, c’est exactement le projet Solid ! :smiley:

Il n’est pas possible de réaliser une requete SPARQL directement sur un enssemble de documents stoqués sous forme de fichier.

Ca fonctionne très bien avec Comunica ou LDflex !

Avec Communica, une requete multi document doit se faire sur le navigateur

Pour info c’est possible côté serveur également.

ce n’est pas possible de faire cette requete (qui exploite des liens entre sujets de différents documents) actuellement dans communcia

Si, tu as le link traversal pour ça ! Il y a même un link traversal spécial Solid qui exploite certaines caractéristiques des PODs ! On est en train de voir pour rajouter la prise en charge d’index dans ce moteur.

Mais même sans link traversal, tu peux parcourir toi même les liens et les ajouter comme sources, c’est très facile avec LDflex.

A l’AV nous avons considéré que les applications devaient pouvoir faire une requete SPARQL à un serveur et que celui-ci devait le faire sur la globalités des données qu’il possede et que les serveurs fédérés possedent (actuellement grace au miroir mais on voudrait faire mieux). Si nous nous étions limité à l’architecture induite par le stockage en fichier (je rejoinds @srosset sur l’adhérence de Solid à celle-ci) cela imposait aux applications clientes de devoir agréger des données dans un moteur SPARQL sur le navigateur pour pourvoir faire des requete cross-document

L’équipe de Comunica a démontré depuis bien longtemps qu’une requête SPARQL était faisable sur une architecture documents multi-serveurs (PODs). Et même très performante avec l’arrivée des streams !

Maintenant on est en train de d’étudier comment les index définies dans les standards client-à-client peuvent permettre d’obtenir de très bonnes performances sur les petits jeux de données comme sur les très gros. Nos premiers résultats sont très bons mais ce n’est pas encore publiable. C’est quelque chose qui aurait pu/dû être étudié avant si l’aspect client-à-client avait été pris en compte. Je crois savoir que l’équipe de Ruben est en train de s’y mettre aussi maintenant…

1 « J'aime »

Je t’ai écrit que j’étais disponible (et intéressé) pour continuer cette exploration avec toi. C’est toujours le cas. Mais je ne le ferais pas seul, désolé.

A+

J’aimerai que nous ayons une réunion technique en visio ou présentiel pour échanger sur tous ces sujets avec plus d’interaction humaines la possibilité d’interagir en direct afin de progresser mutuellement et pouvoir se contredire ou s’aligner plus rapidement. Je peux l’organiser si besoin. @srosset @lecoqlibre

Tu peux avancer sans moi, il me semble que je t’ai transmis les notes que j’ai prises quand on a commencé à travailler là-dessus. ActivityPods reste ton projet c’est toi le moteur ! On aurait aussi pu travailler en asynchrone. Et puis il y a d’autres contributeurs Solid qui peuvent t’aider si tu es bloqué. D’ailleurs j’ai vu passer des mails sur ActivityPub et Solid sur la mailing list Solid notamment ici et ici avec des gens qui semblent très intéressés par le sujet.

Comme je n’ai pas beaucoup de temps je vais remettre au propre les notes, les détailler et les publier sur le forum Solid. Ca pourrait faire avancer les choses.

Je peux être dispo. Pour l’organisation j’aimerais bien qu’on liste les sujets à aborder et les questions que je dois préparer pour être un maximum efficace (temps).

Salut tout le monde et merci pour ces échanges fort (voire un peu trop parfois) stimulants !

@lecoqlibre Il faudrait quoi en plus d’OIDC et du « concept de document » pour que SemApps soit une option susceptible d’être considérée pour le NSS ?

Solid OIDC, on l’avait mis dans le projet archipelago soumis à l’appel à communs mais on a pas été sélectionné … Mais dès qu’on a du budget R&D, je crois en effet que ca vaudrait le coup de l’implémenter, ne serait-ce que pour nous éviter de nous prendre la tête (ca consomme beaucoup d’énergie j’ai l’impression !).

Par ailleurs, tu mentionnes depuis de nombreux mois l’importance du « standard client à client » : Aucune idée si tout le monde est au fait, mais si même Ruben est passé à côté, j’imagine que son importance et la doc qui va avec ne doit pas être mise en valeur et que tu pourrais peut-être partager quelques liens appropriés ?

Haha @srosset de mon côté je résume d’habitude le truc avec une formule un peu pompeuse : Autonomie radicale, reliance maximale …

Par ailleurs @simon.louvet.zen & co je me permets de renommer le fil : SOLID or not SOLID et de le migrer dans la catégorie Standards et protocoles

Intéressantes ces citations, @lecoqlibre Maxime, en tout cas pour un nouvel entrant tel que moi : est ce que tu pourrais me donner les sources et emplacements d où cela aurait été extrait, stp ?

Je ne suis pas en capacité d’échanger avec les contributeur.trices du projet Solid, même si j’aimerais bien le faire, pour plusieurs raisons :

  • 1 : mon niveau d’anglais n’est pas suffisant : je peux lire et écrire, mais pas interagir de manière suffisante à l’orale
  • 2 : mon niveau de maitrise des outils/solutions existants n’est pas suffisant pour le moment, mais cela peut s’acquérir (voir raison 3)
  • 3 : le temps disponible pour expérimenter, se documenter, approfondir au-delà des docs, décortiquer les solutions (usage, architecture, dépendances, limites…) est trop important étant donné mon temps disponible actuel et le retour sur l’investissement de temps est trop loin pour ma vie privée actuelle.

Par exemple, @lecoqlibre explique que comunica peut faire des requêtes SPARQL à partir de plusieurs sources et renvoie vers la documentation associée et je le remercie grandement pour cela. J’aimerais le tester, faire une requête SPARQL qui passe à travers les relations entre plusieurs sources, voir si la résolution se fait sans avoir préchargé les datasets concernés (récupération dynamique des relations nécessaires à l’exécution SPARQL), comprendre quel moteur SPARQL est utilisé et comment il fait pour être léger et autonome dans un navigateur sans l’architecture des moteurs SPARQL habituel (comme Jena), comprendre pourquoi c’est mieux que des solutions comme FedX ou KGRAM-DQP, comprendre pourquoi des thèses consacrées au sujet ne parle pas de comunica, comprendre pourquoi @lecoqlibre fait une thèse sur la recherche multi-sources alors que comunica répond au besoin, etc…

Malheureusement, je n’ai pas la disponibilité pour faire les actions ci-dessus mais j’aimerais beaucoup avoir des temps d’échanges (visio ou irl) avec @lecoqlibre @srosset @niko.plp Ruben @fluidlog @sylvain et toute personne avancée sur ces sujets pour avoir accès à ces informations sans devoir y consacrer l’énergie que je n’ai pas et qui mettrait ma vie privée en danger si je le faisais.

Je peux mettre un peu d’énergie pour organiser des échanges sur ces questions qui vont au-delà de semapps (mais qui pourraient être intégrées) mais je ne le ferais pas si les personnes citées plus haut n’ont pas le souhait ou l’énergie pour ces échanges.

1 « J'aime »

Hello,

Je me permets un post juste pour participer.
Je trouve ces échanges très intéressants dans le contenu, même si je n’ai pas tout lu, il faut que je prenne le temps de le faire.

Ce qui m’étonne, c’est ta position depuis le début @lecoqlibre.
Je ne souhaite pas échanger plus sans comprendre comment tu te place, quelle est ton énergie par rapport à l’AV (qui, pour rappel, est un ensemble d’organisations et d’humains s’intéressant au web sémantique). Comprendre ton attitude, sans la critiquer, comprendre comment je dois lire tes posts, etc. et je ne souhaite pas que tu me réponde ici. Je pose la question ici pour partager mon questionnement aux autres lecteurs, cela ne regarde que moi.

Vu que ce sujet humain n’a rien à voir avec le sujet cité, je vous propose d’en parler lors d’une réunion entre nous.

@lecoqlibre je te laisse m’appeler en fonction de tes dispos (sinon, je me note de le faire la semaine prochaine) et on lancera un framadate pour trouver une date. Ca vous va ?
Le but de cette réunion sera juste de trouver chacun notre place les uns par rapport aux autres. Ensuite, je serai ravi de reprendre des échanges techniques :slight_smile:

Sentez-vous libre de refuser ma demande et de continuer à échanger ici.

A bientôt,

Yannick

Les commentaires de Maxime m’ont bien éprouvées moralement. Etant donné la fixité des positions, je ne suis pas sûr que j’aie envie de continuer en visio…

En fait, ces « échanges » me donnent plutôt envie d’arrêter de passer du temps à me conformer au standard Solid et de me concentrer sur la communauté ActivityPub qui, je pense, comprend très bien la révolution que représente ActivityPods… Mais bon, je vais quand même garder le cap Solid, en espérant trouver dans cette communauté des oreilles plus compréhensives. Je suis en train d’écrire plusieurs articles de blog pour aider à comprendre la spécificité et la « raison d’être » du projet ActivityPods.

Il y a malheureusement toujours un énorme écart entre la théorie que présente Maxime et la réalité de la spécification Solid. Je viens de passer encore 2 jours la semaine dernière à me documenter sur le standard Solid en lien avec les standards LDP et WAC (je n’entrerai pas dans les détails) et le nombre de sujets qui font encore débat a de quoi faire perdre la tête. Cette spec est loin d’être achevée… et en attendant, moi je souhaite faire des applications qui tournent et qui sont utilisées par des êtres humains. Récrire « Bienvenue chez moi » avec un serveur Solid type filesystem et une surcouche ActvityPub prendrait au moins une année, et les résultats seraient très, très incertains.

En tout cas, SemApps reste une boîte à outil très extensible. Rien n’empêcherait de réaliser, en plus d’ActivityPods, un serveur 100% compatible Solid (et sans ActivityPub) qui s’appuierait sur SemApps: mes refactoring actuels aident dans cette direction (p.ex. la création dynamique de containers LDP). Je pourrai aider un développeur qui souhaiterait se lancer dans ce chantier, mais je ne le ferai pas moi-même.

3 « J'aime »

Je réponds quand même à @srosset car sa réponse me donne envie de partager ici comment je communique sur SemApps et Solid au sein du projet Carto4CH (depuis 1 an et demi…).

En effet, je pense que ce serait intéressant d’imaginer un serveur SemApps avec fileSystem, il pourrait s’appeler « SolidApps » :slight_smile:.
C’est bien l’objectif de l’AV de permettre à n’importe qui de proposer de nouveaux projets.

Dans mon projet Carto4CH, au début, je « surfais » sur ce terme SOLID car il parlait à certains techniciens qui avaient lu des articles à ce sujet et avaient une « vague idée » de ce que cela permettait, et me permettait une introduction plus simple pour les non initiés, en parlant aussi des PODs etc.

Depuis peu (avant cette discussion), j’ai mis à jour mes slides pour être plus précis et je fais attention à parler de « proposition du W3C ».
J’ai essayé à chaque fois dans mes présentations de ne pas dire que SemApps suivait le « standard » SOLID, j’ai souvent dit que SemApps s’inspire fortement de la proposition du W3C SOLID, et rappelé là où nous ne sommes pas SOLID (authentification, pods, filesystem).
Mais j’ai encore des MAJ à faire, et à chaque mise à jour de mon portail, je corrige des coquilles dans ce sens.

Quand je peux, j’essaye de supprimer le terme SOLID, car je préfère préciser les 5 autres qui sont vraiment des standards.
Par exemple, lorsque j’explique le mode distribué, je précise que chaque partenaire de la cartographie de compétence peut utiliser les technologies qu’il souhaite du moment qu’il respecte les standards proposés (Web sémantique, LDP, SPARQL, WAC, ActivityPub).

Lorsque je parle de SemApps, je dis même que c’est « plus qu’un serveur SOLID », car il permet d’avoir LDP + SPARQL, un frontend fonctionnel, une ontologie PAIR, des composants réutilisables, etc. Dois-je conserver ce discours ? (là, on est pour moi dans une sorte de marketting « il est frais mon poisson ! », et pourquoi pas…).

SOLID reste pour moi un CAP. Car c’est un terme qui commence à « buzer », et donc qui apporte une vision intéressante du web distribué qui invite tous les partenaires d’un projet distribué à aller dans le même sens. Cela ne signifie pas que chaque partenaire soit tout de suite 100 % conforme à SOLID, surtout lorsque ce n’est même pas une recommandation.

Les échanges ci-dessus montrent les écarts qu’il y a entre SemApps et SOLID, et c’est super, peut-être qu’on en restera là, je ne vois personnellement pas en quoi c’est dérangeant si on est clair dans la communication. Peut-être qu’il y aura un projet SolidApps à l’AV l’année prochaine, mais l’important est d’adapter l’outil avec le besoin. Lorsqu’on a besoin d’un triplestore (peu importe les raisons), on utilise SemApps, sinon, soit on développe son propre serveur, soit on utilise les projets de serveurs SOLID déjà existants.

Parfois, je me dis que si j’installe 100 serveurs SemApps pour y cartographier des compétences dans 100 organisations, ça me parait un peu lourd de faire tourner 100 triplestores au niveau de la consommation. J’aimerais être plus sobre à l’avenir.

Lorsqu’un partenaire (Carto4CH) souhaite faire son propre serveur SOLID (autre que SemApps), pour publier ses compétences, je préfère lui conseiller de prendre directement un CSS (Comunity Solid Server), et donc je serais très curieux d’avoir une estimation du temps à passer pour faire tourner le frontend Archipelago sur un CSS.

Car c’est possible que ce soit un des chantier de 2024 (avec le projet européen ECHOES) si on trouve des partenaires intéressés, mais qui ne souhaitent pas utiliser le serveur SemApps (certains veulent faire du Django par exemple…).

Pour info, vous trouverez ici ma présentation de SemApps :

et ici ma présentation de SOLID :

2 « J'aime »

Complément sur cette discussion : Are there some Linked data websites use distributed sparql Endpoints and provide cross-domain data search services? - #5 by chenkun - Linked Data - Solid Community Forum.
autre ressource utile : https://rdfjs.vercel.app/ (merci @srosset )

1 « J'aime »

Tu peux regarder du côté de Solid Chat. J’en ai aussi commencé un pour le DFC (très instable).

Je vais voir pour proposer un work item à la communauté Solid sur le standard client à client. Il y a aussi l’idée de faire un Primer Solid (document officiel qui explique de manière simplifiée comment faire une appli Solid).

Yes, la réponse de Tim B. Lee à Ruben a été retirée mais tu peux la retrouver dans les archives du net en parcourant les archives de la liste public Solid.

La réponse de Henry Story est dispo sur cette même liste ici.

En fait tu peux regarder tous les messages du fil Detailed response to Ruben’s blog.

L’anglais oral n’est pas forcément un problème puisque la majorité des échanges se passent par écrit. La communauté Solid est particulièrement active sur GitHub et sur Gitter.

Attention, je ne fait pas une thèse mais un projet de recherche sur l’indexation et la découverte de données. Comunica est effectivement un outil et à ce titre il ne répond pas en lui-même au besoin. Nous étudions comment on peut indexer et découvrir des données dans un écosystème Solid (stratégies d’indexation, standard client à client, sélection de sources, passage à l’échelle…).

Oui vu tes réponses je me suis dit que tu voulais peut-être être challengé.

En attendant le challenge semble avoir été relevé par quelqu’un d’autre puisque le gagnant du dernier Hackathon Solid for Social Networks Hackathon a présenté un travail sur Solid et le fediverse :

Vincent, who wanted to build an app that’s part of the fediverse, yet stores the data in a Solid Pod. And Vincent succeeded brilliantly, demonstrating how Solid can be seamlessly integrated with Mastodon.

Comme promis, il a reçu une récompense de 2500 $ ! J’essaie d’avoir accès à son travail.

Dans ce fil, je t’avais invité à participer @srosset car je sentais que le sujet Solid + ActivityPub était très prometteur. Avec tes connaissances de la spec AP via ton travail sur ActivityPods, tu avais probablement de quoi faire quelque chose de très convainquant. Sans compter que le Hackathon se fait par équipe donc il y avait peut être moyen de faire quelque chose avec ce fameux Vincent. J’aurais bien aimé y participer mais ce n’est pas mon sujet du moment et mes supérieurs ne m’ont pas laissé y participer (on est sur l’indexation et la découverte de données).

De mon côté je réfléchis à proposer un work item Solid + AP plutôt qu’un article. Cela permettra de travailler à plusieurs sur le sujet et d’être plus bénéfique à la communauté. Pas sûr que ca passe du côté de mes employeurs sauf peut être si c’est à moindre investissement.

Super ! Sais-tu quand tu vas pouvoir publier ? Peut-être déjà un article ?

Une preuve de concept serait déjà top ! Tu peux utiliser le Community Solid Server et implémenter directement AP dans ton client.

Je ne vois pas pourquoi ce serveur 100% compatible Solid ne pourrait pas être compatible AP.

Oui la communication est un point qui me semble très important. Nous avions déjà discuté il y a quelques mois et le positionnement d’ActivityPods n’est toujours pas correct pour moi.

Par exemple, sur le site d’ActivityPods, dans le paragraphe "What is the main shortcoming of Solid Pods ? " on peut toujours lire « Despite its name, Solid includes few features for social networking. For example, when you share a resource, the recipient will not know about it, unless you write to him. In their current implementation, Pods are personal databases with little connection to the outside world » :

  • Déjà je trouve que la première phrase qu’on peut traduire par « malgré son nom, Solid n’inclut que quelques fonctionnalités pour les réseaux sociaux » laisse sous entendre que le projet Solid ne sait pas vraiment ce qu’il fait. D’autant plus qu’il n’y a aucune preuve de ce qui est avancé et aucune prise en compte de la partie client-à-client. De mémoire je crois que @srosset tu as juste remplacé « no » par « few » (avant c’était carrément « Solid n’inclut pas de fonctionnalité… ».
  • La seconde phrase « Par exemple, lorsque l’on partage une ressource, le destinataire ne sera pas informé, à moins qu’on lui écrive » n’est pas vraie puisqu’elle ne prend pas du tout en compte la dimension standard client-à-client ni la partie notifications de Solid. Avec Solid on peut tout faire, la partie métier dépend du standard client-à-client. La spec serveur ne se concentre à juste titre que sur la partie serveur.
  • La dernière phrase « Dans leur implémentation actuelle, les PODs sont des bases de données personnelles avec une faible connexion au monde extérieur » présentes plusieurs points problématiques :
    • Si « Dans leur implémentation actuelle » fait référence aux différentes implémentations serveur actuelles et bien je ne dirais pas de CSS qu’il permet une faible connexion au monde extérieur puisqu’il permet différentes méthodes de notifications. Et encore une fois cette phrase ne prend pas en compte la dimension client-à-client.
    • « les PODs sont des bases de données personnelles » n’est pas tout à fait correcte puisqu’on parle plutôt de magasin de données (data store) et ce n’est pas uniquement personnel (un POD peut être utilisé pour une organisation). De plus, l’aspect base de données est réducteur puisque l’architecture document fournit plus qu’une simple base de données.

J’approuve puisque pour Mycelium/DFC, les producteurs ont tous des petits jeux de données (produits, clients, commandes, etc). Le file system est particulièrement adapté. Je ne désapprouve pas le TripleStore pour autant.

Ca me semble délicat compte tenu de l’état actuel de SemApps.

Si SemApps était compatible Solid je ne verrais aucun inconvénient à dire ça ! C’est à mon sens le genre d’argument qu’on va voir fleurir dans le futur quand d’autres serveurs Solid vont arriver sur le marché. Ils vont probablement chercher à se démarquer les uns des autres en mettant en avant différents services.

Pour SemApps, personnellement ça me gênerait d’entendre ce discours tant qu’il n’est pas compatible. Tu peux dire qu’il respecte en partie Solid et propose des services complémentaires.

Pour moi il faudrait arriver à trouver des formulations justes qui n’invisibilisent pas Solid pour autant. Il me semble que Solid est un point important pour l’AV et c’est bien qu’il soit visibilisé car il doit faire face aux concurrents industriels de « data space » qui sont en train d’émerger (GaiX, IDSA).

1 « J'aime »

Pourquoi avoir créé une nouvelle spécification alors que activitypub le fait très bien?

J’aimerais que tu nous expliques cela d’une manière ou d’une autre. J’ai toujours compris que un POD était lié à un utilisateur et son authentification Solid-OIDC.

J’ai discuté avec @lecoqlibre sur les dataspace (COD) de Solid et le fait qu’un POD doit être lié à un webId/user. Il m’a précisé que ce user est un agent et qu’un agent n’est pas obligatoirement une personne physique, mais peut être l’application elle-même.
Le WebId de l’agent permet d’obtenir son profil et le profil d’une application peut fournir des informations utiles aux autres applications comme les adresses des containers ou autre api utile pour l’interopérabilité (que nous aurions mis dans une url « well-known » dans semapps) et le protocole client-to-client.
J’en ai déduit que ces urls peuvent également être les inBox et outBox de l’application (vs celles des users) pour la synchronisation entre applications avec activityPub.

Ces précisions sont peut-être des portes ouvertes, mais elles m’ont permis de mieux comprendre le protocole client to client de Solid et je trouve cela pertinent pour semapps et activityPod.

Je ne sais pas si les travaux de @srosset vont dans ce sens et je serais ravi d’en apprendre plus.