Mardi en Commun 6

#1

Continuing the discussion from Mardi en Commun 5:

Mardi en Commun

Horaire

07:00 :arrow_right: 11:00

Lieu

Participant·e·s

Merci d’utiliser le bouton à côté de la date de l’événement en haut de ce sujet si vous désirez indiquer votre présence.

Objectifs

Compatibilité GoGoCarto


#2

1. Licences

  • GoGoCarto est AGPLv3 et GoGoCartoJS est GPLv3, pourquoi ?

Étant donné que la GPLv3 et l’AGPLv3 sont incompatibles, on ne peut pas distribuer un frontend en AGPLv3 avec GoGoCartoJS. Par ailleurs, il semble plus approprié à GoGoCartoJS d’utiliser l’AGPLv3 puisque le code est délivré par le réseau.

Le point de la licence a été réglé dans la minute par @Sebastian qui a remplacé le fichier de licence GPL par AGPL dans le commit e0f85ab5.

2. Intégration

Les différentes fonctionnalités de GoGoCartoJS semblent en faire un monolithe plutôt qu’un système modulaire qui peut être composé. On peut distinguer :

  • le système d’affichage de cartes
  • le système de validation des données
  • le système des catégories
  • le système des filtres
  • le système des pages
  • le système des logs

Dans le cadre d’IN COMMON, on utiliserait notamment le premier, mais certainement pas le deuxième qui ne correspond pas à l’approche des Agents. En fait, il serait utile de pouvoir développer notre propre module de validation de données et le rendre compatible avec GoGoCartoJS, ou bien faire évoluer ce module au sein de GGC pour faciliter la maintenance collective des données au-delà du modèle simpliste des votes et administrateurs de données qui est très vulnérable aux attaques groupées (spam ou DoS).

Il s’agit en fait de pouvoir découpler le frontend de la logique applicative (ou dans ce cas : des logiques applicatives).

3. Modèles

  • faire un comparatif précis des approches de GoGoCarto et d’IN COMMON.
#3

Modèles

La première remarque qui saute aux yeux lorsqu’on voit le fichier exemple pour elements.js, c’est la différence de granularité avec le modèle d’IN COMMON et l’absence de norme stricte; on imagine que cela répond à l’injonction d’«être libéral avec ce qui entre, et strict avec ce qui sort». Cela donne cependant une bonne idée de l’apport d’IN COMMON sur la qualité des informations transmises : ce qui sort d’IN COMMON peut entrer dans GoGoCarto avec une perte d’information qui heureusement n’est pas rédhibitoire.

Prenons l’exemple suivant :

var elements = {
  "ontology":"gogofull",
  "data":[
    {
      "id":"10kw",
      "status":1,
      "moderationState":0,
      "name":"La Ruche de Chenay",
      "geo":{
        "latitude":46.3252,
        "longitude":-0.0339
      },
      "address":{
        "streetAddress":"5 rue Edmond Proust",
        "addressLocality":"Chenay",
        "postalCode":"79120",
        "addressCountry":"FR"
      },
      "commitment":"",
      "description":"<a href='coucou'>Tous produits alimentaires locaux</a>",
      "descriptionMore":null,
      "telephone":"967556221",
      "website":"https://laruchequiditoui.fr/fr/assemblies/8148/collections",
      "openHoursMoreInfos":"Distribution chaque jeudi de 18h à 19h",
      "sourceKey":"Colibris",
      "email":"hidden",
      "image" : "https://images.duckduckgo.com/iu/?u=https%3A%2F%2Fwww.italyguides.it%2Fimages%2Fgridfolio%2Ftaormina%2Ftaormina.02.jpg&f=1",
      "optionValues":[
        "10429",
        "10427"
      ]
    },
    {
      "id":"zw9",
      "status":1,
      "moderationState":0,
      "name":"Cuisines du monde",
      "geo":{
        "latitude":45.64803,
        "longitude":0.11614
      },
      "address":{
        "streetAddress":"Rue Saint-Vincent-de-Paul Bâtiment Le Corsaire",
        "addressLocality":"Angoulême",
        "postalCode":"16000",
        "addressCountry":"FR"
      },
      "commitment":"Une entreprise d'insertion par l'activité professionnelle.",
      "description":"Un traiteur.",
      "descriptionMore":"Préparation de cocktails, repas, plateaux et buffets.",
      "telephone":"05 45 25 05 30",
      "website":"http://www.cuisinesdumonde.com/",
      "openHoursMoreInfos":"",
      "sourceKey":"LMC",
      "email":"hidden",
      "optionValues":[
        10496,
        10498,
        10495,
        10430,
        10427
      ]
    },
   ...
  • id : ce champ semble accepter une chaîne alphanumérique arbitraire. Dans IN COMMON, l’id d’une ressource est nécessairement une UUIDv4 (random) afin d’assurer la compatibilité des ressources et leur usage hors-ligne.
  • status semble correspondre au champ booléen visible dans IN COMMON, qui indique si la ressource en question est disponible au public en-dehors de l’Agent qui la porte ou de l’utilisateur à qui cet Agent a autorisé l’accès (temporairement ou pas).
  • commitment, description, descriptionMore: ces champs correspondent à des description de la ressource envisagée. Dans IN COMMON, une ressource ne présente que les champs summary pour une description courte, limitée à du texte simple, ainsi qu’une description qui elle peut être plus longue et comporter du Markdown ; en aucun cas du HTML peut être présent dans un de ces champs, afin de ne pas risquer une attaque quelconque.