Réflexions sur la fédération d'instances Panoramax

Maintenant qu’on a plusieurs instances opérationnelles (entre autres celles de l’IGN et d’OSM-FR), on peut commencer à réfléchir ensemble à la façon de fédérer les instances.

Je propose une réflexion en 3 temps:

  1. lister les fonctionnalités attendues par la fédération, celles minimales, celles de plus long terme
  2. lister les différentes options possibles en terme d’architecture
  3. voir ensuite quelle archi répond le mieux aux fonctionnalités attendues

Fonctionnalités

Pour les fonctionnalités minimales j’imagine que l’essentiel est la recherche d’images multi-instances (métadonnées) en un unique appel, plutôt que d’interroger N instances une à une

A plus long terme, une copie miroir des images pourrait être organisé au sein de la fédération pour garantir une disponibilité de court terme (instance temporairement indisponible) ou de long temps (sauvegarde, instance qui disparait).

Que voyez-vous d’autre ?

On passera aux architectures dans un second temps…

2 Likes

Tient pour des tests, j’ai un compte avec même identifiant sur les deux instances et j’ai envoyé deux séquence de photos identique sur les deux instances histoire de voir ce que cela peut produire.

Comment cela va être géré?

Ca y est, le projet a rencontré son 1er pirate ! :joy: :joy:

C’est pas du tout géré, les instances sont pour l’instant totalement indépendantes.

Aucune idée de comment gérer cela, voire même sis ça a besoin d’être géré. C’est par contre à éviter.

Hello
Plus qu’à inventer un ActivityPub pour la carto, genre GeoImageryPub qui s’ajoutera sur schema.org :stuck_out_tongue:

(I’m answering in English as my French is a bit poor - but don’t hold back to respond in French; I can read it enough or machine translate it)

First of all, I’m not much involved with Geovisio, so I might write wrong things. Please correct me if this happens.

I’m imagining that a server holds imagery, uploaded by contributors.

The first choice to make is: should every server hold all images? I.e. if picture ‘123’ is uploaded to server ‘A’, should server ‘A’ forward the picture to ‘B’, ‘C’ and ‘D’? The advantage is that all pictures will be preserved, even if a server topples. However, this means that every server should have a lot of resources.

The second choice is the opposite: server ‘A’ only holds pictures from it’s contributors, server ‘B’ holds a separate set of pictures. The client applications query all servers that they know of and mix the results.

At last, there are many mix-forms possible, e.g. if I ask server ‘A’ for pictures in a certain region, it might query server ‘B’ and ‘C’ as well. It might cache those pictures (temporarily or forever).

Another in-between form would be that servers can hold some pictures for other instances too - providing some redundancy. (E.g. servers ‘B’, ‘C’, ‘D’ and ‘E’ could all hold a quarter of the pictures of ‘A’, meaning there is a full backup). If this is wanted, then IPFS might be worth looking into.

That being said - I’m very fond of ActivityPub as well. This might be a second form of federation: namely to update other servers of the fact that Contributor X uploaded some pictures to server A. This might even draw an audience, as MapComplete (bot) (@mapcomplete@botsin.space) - botsin.space proves :wink:

Another aspect is indeed that of account management. Should I be able to login into server ‘B’ with ‘pietervdvn@serverA.fr’?

The problem of duplicate images can be fixed by hashing the (input) image. This hash will provide good duplicate-image detection.

As a first step, I imagine to have servers exchange their catalogs, not the images themselves because of limited resources !

Then, we may organise replication accros the federation, allowing an instance to ask for replication from other instances, not all of them.

We should really start by listing what features the federation should bring:

  • flexibility to browse images hosted by different instances from one “viewer”
  • global search of available images
  • redundancy
1 Like

Pour les fonctionnalités minimales j’imagine que l’essentiel est la recherche d’images multi-instances (métadonnées) en un unique appel, plutôt que d’interroger N instances une à une

Pour pouvoir interroger les instances plus facilement, j’avais pensé qu’elle pourraient déclarer une zone qu’elles couvrent en sélectionnant un rectangle sur une carte (ou une/des features OSM). Ça permettrais peut-être à de plus petites structures de lancer des instances à l’échelle locale (ville, région, pays) en maîtrisant un peu mieux le volume de donnée.

Par contre complique l’upload : quand l’instance ne permet pas d’uploader pour une région il faudrait proposer de les envoyer sur une autre.

I imagine to have servers exchange their catalogs,

Est-ce que les photos seront liées à des chemins (ou des features OSM) ? Pour l’instant j’ai l’impression que ce n’est pas le cas en regardant juste la carte mais c’est peut-être le cas dans la manière dont c’est stocké ?
Ce serait peut-être une manière de réduire le catalogue : au lieu de stocker des points, on stocke une liste de features, et au moment où on clique sur un point dans un chemin ça fait une requête sur les instances qui l’ont.

J’imagine difficilement des instances de collectivités permettre l’upload public.
Il y a beaucoup de frilosité pour ce genre de choses.

Il est possible de fixer des règles de contribution par instance, sans forcément avoir un mécanisme technique qui les rend rigides.

On serait plus dans de la modération locale à une instance… pas vraiment un sujet fédération de mon point de vue.

Cela fait partie des métadonnées sémantiques qu’on pourrait attacher à des images.
Il n’y a aucune raison de limiter ça à des objets OSM… et n’oublions pas qu’on est dans le champ de la donnée géographique, qui possède des liens implicites qu’on n’a pas besoin d’expliciter.

Des “tags” pour indiquer qu’un objet OSM, BDTopo, wikidata ou autre figure dans l’image.

Rien de tel pour l’instant car on n’a de toute façon pas l’info lors du versement donc il faut faire un rapprochement géo que tout le monde peut faire si il en a besoin au moins à ce stade.

Je ne comprend pas trop la réduction du catalogue. On a besoin quelque part d’un catalogue exhaustif de toutes les photos pour chercher dedans selon de nombreux critères.

Une fonction que j’ai en tête c’est la recherche de photos qui potentiellement montre une coordonnée géographique, c’est à dire assez proche et dont le champs de prise de vue couvre la position fournie… mais cela n’a pas de lien direct avec la fédération à part de permettre une telle recherche de façon globale, d’où l’idée du méta-catalogue plutôt que d’interroger N instances.

Le meta-catalogue serait finalement vu comme un moteur de recherche global… ce qui n’empêche pas les recherches locales par instance exactement comme un site web propose une fonction recherche mais qu’on a aussi des moteurs globaux (Google, etc).

J’imagine difficilement des instances de collectivités permettre l’upload public.
Il y a beaucoup de frilosité pour ce genre de choses.

Je pensais plutôt à des associations locales/régionales. Et ça permettrait de plus facilement proposer aux utilisateurs des instances. L’idée est aussi que si on est sur une instance locale un peu connue la recherche est plus rapide car on a moins besoin d’aller interroger ailleurs, c’est probablement sur l’instance ou en cache/miroir.

Mais si il y a un (des) catalogue exhaustif de toutes les photos ça n’a pas d’intérêt, effectivement. Pareil pour la réduction du catalogue. Je pensais que chaque instance devait pouvoir aller piocher les métadonnées à droite à gauche en ayant un catalogue partiel (pour éviter d’échanger des métadonnées entre toutes les instances à chaque upload) et pas dans un catalogue global toujours à jour.

Une fonction que j’ai en tête c’est la recherche de photos qui potentiellement montre une coordonnée géographique, c’est à dire assez proche et dont le champs de prise de vue couvre la position fournie…

Oui, quand je disais ça je pensais d’une part à réduire la quantité de métadonnée à stocker et échanger (pas besoin avec un catalogue global), mais aussi à l’affichage utilisateur.

Au-delà de pouvoir chercher les photos sur une coordonnée, je pensais à pouvoir suivre les voies (comme sur google maps) au lieu d’avoir plein de traces superposées (comme sur l’illustration). Mais ça ce n’est pas trop lié à la fédération, effectivement. Désolé pour le hors-sujet. :confused:

Par contre ce qui pourrait faire partie de la fédération c’est un système de mise en avant des “meilleures” images : quand il y a plusieurs photos/traces sur une même voie, comment choisir celle à afficher en premier ? Un système de favoris ou de vote pourrait donner une indication, non ?

Je signale un nouveau sujet pour comparer deux approches possibles pour la mise en place de la fédération:

Voici une petite capture d’un test en cours de fédération à l’aide d’un proxy se basant uniquement sur STAC :

+

=

Ce ne sera sûrement pas le moyen qui sera utilisé pour créer un méta-catalogue car les temps de réponses sont dépendants de ceux de l’ensemble des instances agrégées !