[Proposition] Moteur de recherche libre

Bonjour,
Cet avis / questionnement peut sembler prématuré, mais ces questions m’ont l’air importantes, tant pour le logiciel lui-même que pour la communication autour.

Des avantages de Yacy

C’est un peu le même raisonnement que celui d’@agecanonix qui me donne envie de contribuer à Yacy :
Les géants américains qui indexent Internet ne respectent pas la vie privée. S’il existe des méta-moteurs de recherche ayant ce but de respecter la vie privée, ils sont encore dépendants des GAFAM. Yacy permettrait que les données d’indexation soient libres de droits et partagées, permettant un référencement d’Internet indépendant des GAFAM, et cette indépendance en termes de puissance de calcul n’est permise que grâce au P2P.

Cependant, il ne s’agit pas là de donner des gouttes à des projets humanitaires, cela est vrai. C’est un objectif différent.
(J’avoue que jusque là j’utilise plutôt Lilo que Qwant sur mon ordinateur.)

Quant à Qwant, qui est un cas à part, il suffit de lire la presse récente pour voir qu’ils font finalement appel à Microsoft pour avoir une puissance de calcul répondant à leurs attentes et ne sont donc pas totalement indépendants. Dommage…

Du changement de langage

J’espère que le C/C++ permettra de rassembler un plus grand nombre de développeurs parce que moi non plus, le Java, même en y ayant touché, je n’aime pas ça. (C’était un moyen simple et rapide d’utiliser un port CDC, d’avoir une interface graphique et de faire des émulations clavier.)
En plus, les versions de Java, je trouve que c’est la galère.

Donc si Java a des avantages incontestables pour développer rapidement, il ne me plaît pas du tout sur du long terme.

Des modifications

@agecanonix, tu parles de modifications en t’excusant de t’avancer, mais je pense que tu as raison d’en parler, parce qu’une traduction ne suffirait pas à mon sens à attirer des utilisateurs (mais des contributeurs, peut-être).
Il y a là un profond travail sur ce que l’on veut faire, et c’est fortement lié à la communication. (Merci @pouhiou pour tes éclairements)

Pour ce qui est de l’ordre des choses, pour l’instant rien n’a commencé au niveau du développement à ma connaissance.
Si je comprends bien, deux options s’offrent à nous :

  • Soit on traduit tout avant de modifier, auquel cas on peut faire un travail de réflexion et un travail de traduction en parallèle. À la fin de cette première étape Yacy est fonctionnel comme une exacte duplication de la version Java. Les modifications commencent après cette première étape.
  • Soit on réfléchit à ce que l’on veut apporter à Yacy avant de traduire, on économiserait alors la traduction de quelques fichiers (je pense notamment à l’interface de recherche), mais ce cas me semble plus dangereux à cause du risque de se fixer des objectifs trop hauts bloquant le projet en retardant une première version utilisable. Ce risque n’existe peut-être pas : seuls des développeurs, ce que je ne suis pas, pourront en juger.

En ce qui concerne la proposision de @agecanonix sur ActivityPub, ça serait génial, d’autant plus qu’il manque probablement un moteur de recherche au Fediverse (il faudra bien respecter la volonté de Mastodon (ici par exemple) de ne faire une recherche que sur les hashtag), mais chaque chose en son temps, je suis d’accord.
En restant dans le domaine de l’amélioration des résultats, je pense il ne faut pas rêver pour ce qui est des recherches généralistes. Cependant, il ne faut pas oublier que la décentralisation permet la spécialisation : un groupe de fans ou de professionnels d’un domaine pourrait travailler au référencement des sites spécialisés dans ce domaine de manière approfondie.

Alors un enjeu considérable, et qui m’inquiète un peu, est la séparation des tâches.

De la séparation des tâches

Il y a déjà des questionnements sur la consommation de bande passante. De ce que j’ai compris, il y a toujours une architecture avec des clients et des serveurs, et ce sont les serveurs qui communiquent entre eux via P2P. Donc pour le client, la consommation de réseau ne serait pas supérieure à celle de Searx par exemple.

Ensuite, pour le travail du moteur de recherche, il y a plusieurs rôles si je comprends bien :

  • Le travail de fond : crawl, index ;
  • Le stockage de la base de données ;
  • L’interface utilisateur.
Le stockage

Je m’interroge notamment sur la question environnementale :

  • Si tout le monde stocke tout, il y a d’énormes redondances, ça occupe une place immense sur les serveurs, donc ça consomme.
  • Si chaque instance stocke une partie de la base, il faut que chaque instance appelle toutes les autres à chaque recheche. Non seulement c’est lent, comme l’écrit @mindiell, mais en plus ça consomme beaucoup.

Il serait probablement intéressant pour la communication :

  1. d’abord, de travailler sur la répartition des tâches entre les instances, notamment pour le stockage, pour la rendre le moins gourmande en énergie possible, et ensuite
  2. d’établir des iconographies pour expliquer la répartition des tâches (parce que je ne suis sûrement pas le seul à ne rien y comprendre) et en quoi les choix effectués limitent la consommation d’énergie.

Pour la répartition, toujours dans l’idée de spécialisation des instances, si on arrive à regrouper les données par catégories, on pourrait essayer de limiter les appels aux instances susceptibles d’avoir le résultat ? Je pense qu’il y a tout un travail de réflexion à faire ici.

Aurait-il du sens de faire un parallèle avec la méthode qu’emploie OSM pour stocker et livrer ses bases de données et ses tuiles ?

Les performances

Pour ce qui est des performances, pourrait-on envisager une option pour séparer (pas totalement, bien sûr) l’interface de recherche et le crawl/index ? C’est-à-dire avoir plus de machines qui font le travail de fond que d’instances qui offrent une interface de recherche ? Une machine pourrait alors travailler “au service” d’une – ou plusieurs – instance. (Il y a encore la question du stockage des bases de données permettant cela.)

Idées de moindre importance qui peuvent bien attendre

Pour la sémantique latente (j’ai lu que ça servait aux moteurs de recherche sur Wikipédia), est-ce qu’il serait envisageable de se baser sur le Wiktionnaire ou une autre base de données ouverte pour avoir des synonymes ?

Pourrait-on suivre les modifications de Wikipédia par exemple (ou de tout autre site ayant son propre moteur de recherche interne) pour avoir une copie à jour de son index de recherche et ainsi éviter d’avoir à recréer son index sans pour autant l’appeler à chaque fois qu’une recherche est effectuée comme le ferait un méta-moteur de recherche ?

1 « J'aime »