Seeks est un méta-moteur de recherche décentralisé qui s'appuie sur des moteurs existants (Google, Yahoo, Bing…). A partir des résultats qu'il tire de ces moteurs, sa mission consiste à les réorganiser, c'est à dire à en affecter le ranking, en fonction de l'usage qu'ont les utilisateurs de son réseau. Son but n'est donc pas de parcourir Internet en quête de nouveau contenu à indexer, ce que font les crawlers, qui lui sont donc complémentaires, mais il se pourrait qu'à terme Seeks puisse s'en dispenser. Détail essentiel, il s'agit d'un logiciel libre (licence AGPL).
Attention : Seeks a été supplanté par Searx, une réécriture qui recentre aussi partiellement les objectifs du projet. Si la dimension pair-à-pair était affichée pour le premier, ce n'est plus le cas du second. Searx est néanmoins un très bon projet non pair-à-pair La page ci-dessous décrit le projet Seeks tel qu'il l'était avant d'être abandonné.
Pour parvenir à son but, Seeks analyse les requêtes qui lui parviennent, et créé des groupements d'utilisateurs en fonction de la similarité des recherches qu'ils effectuent. En plus de les analyser, il les transmet aux autres pairs du réseau, c'est à dire aux autres instances de Seeks, qui a leur tour ont l'opportunité de les analyser. Les requêtes de recherches sont pour cela sous un format standardisé appellé OpenSearch.
Seeks s'utilise visiblement comme un portail de recherche, ce qui donne une portée collective à son utilisation: une instance de Seeks rend service à plusieurs utilisateurs. Mais il est aussi possible de le voir comme un outil personnel, comme on le fait avec n'importe quel logiciel peer-to-peer. Une autre possibilité est d'utiliser Seeks comme un proxy à renseigner dans son navigateur (il repose sur Privoxy).
L'une des préoccupations affirmée du projet est que les moteurs de recherche répandus ont des intérêts commerciaux incompatibles avec la raison pour laquelle on les sollicite. En outre, il est regretté que les sites des enseignes commerciales tendent à se retrouver sur le devant de la scène, tandis que les contenus produits par les internautes sont relégués en arrière-plan.
L'un des autres axes qui a motivé la création du projet est que, de l'avis des auteurs, déduire la pertinence des résultats de recherche essentiellement à l'aide d'algorithmes techniques a ses limites, et que faire intervenir un processus de sélection humain y apporte davantage de pertinence. Par rapport à Google qui, certes, tient certainement compte du comportement de ses utilisateurs pour reclasser ces résultats, Seeks s'assume davantage participatif, ce qui sous-entend que ses résultats sont en partie classés sur la base d'un volontariat.
En outre, toujours par rapport à un Google qui ne décentralise pas ses installations, Seeks permet à chacun de contrôler son propre noeud. Ce qui signifie qu'il est possible de l'adapter à son goût, d'éventuellement étendre ses fonctions. Si certains noeuds développent des spécificités de présentation ou de fonctionnalités, un utilisateur pourra utiliser celui qui lui convient.
Ces grandes lignes sont décrites dans le manifeste de Seeks (en) écrit par 2 de ses concepteurs, Emmanuel Benazera & Sylvio Drouin.
La question de la possible compromission de l'un des noeuds est récurrente dans les réseaux décentralisés, mais trouve sa réponse dans la nature même du type de rapport que proposent les solutions pair-à-pair. Il vaut en général mieux avoir un réseau vaste et varié, que de dépendre d'une relation de pouvoir avec un unique acteur. Cela fonctionne du fait que la masse d'utilisateurs représente une force toujours plus conséquente que celle représentée par les abus auxquels pourrait se livrer l'un des noeuds. Autrement dit, les intérêts d'un gourmand ne sont vraisemblablement pas supérieurs à ceux de la collectivité.
On avouera que le fonctionnement de Seeks n'est pas simple à expliquer, citons en complément son FAQ:
Qu'est-ce que Seeks ?
Seeks est un réseau pair à pair (p2p) de mise en relation des utilisateurs par similarité et qui se place au-dessus des moteurs de recherche conventionnels. Plus précisément, Seeks permet une recherche collaborative en regroupant automatiquement les utilisateurs selon les similarités de leurs requêtes. Ceux ci peuvent modifier, organiser et évaluer les résultats. Pour cela, Seeks utilise un proxy accompagné d'un plugin de recherche web, ainsi qu'une table de hachage distribuée.
Pardon ? Peut-on expliquer Seeks d'une façon plus simple ?
Seeks permet a ses utilisateurs de partager leur requêtes sur les moteurs de recherche classiques et d'être ainsi automatiquement connectés via un réseau p2p selon la similarité de leurs recherches. De tels regroupements sont appelés “groupes de recherche”. Les membres d'un groupe de recherche participent à améliorer passivement (click sur un lien) ou activement (vote, commentaire …) les résultats de leurs recherches. Ils peuvent aussi directement publier du contenu (page web, commentaire, tweet …) dans un groupe.
Pour commencer, un essai de leur démo depuis le site officiel a été plutôt décevant. Une recherche sur “p2p” n'a rien renvoyé. Un essai avec “seeks” donnait quelque chose, puis ensuite diverses erreurs (CURL ERROR: couldn't connect to host) pour d'autres recherches. Rectification: en clickant sur “Expand to” on pousse le moteur à tirer davantage de résultats.
Le site de Seeks publie une liste de noeuds publics, donc d'autres portails qui peuvent servir à effectuer des recherches. Parmi ceux-ci, seeks.fr s'impose à notre oeil, et semble fonctionner un peu mieux… D'après la liste de ces portails mis en place, Seeks semble plutôt plébiscité par les activistes francophones.
Hormis ces points, la présentation graphique de Seeks est elle-même plutôt réussie. Quelques options pratiques (comme le choix de la langue, ou la recherche d'un type de medias spécifique: images, ou videos…) sont directement accessibles, ainsi que d'autres propres au moteur de recherche (zone de couverture de la recherche).
Il faudrait l'essayer plus longtemps pour en tirer davantage de conclusions, mais la mauvaise expérience avec le site de démo de seeks-project fut peut-être un coup de la malchance (ou que la version qu'il utilise est expérimentale). Les résultats ne semblent pas beaucoup plus mauvais que ceux renvoyés par Google. Et il se pourrait qu'à l'usage, celui-ci soit même préférable à DuckDuckGo, une surcouche Google qui offrait déjà quelques avantages.
Il faut sans doute un certain oeil pour remarquer que l'hégémonique moteur de recherche Google part à la dérive au fil des ans, mais il semblerait que les craintes levées par les auteurs du manifeste de Seeks se font de plus en plus visibles. Le problème est large, mais Seeks tient plutôt la route et pourrait contribuer à en résoudre un bout, alors on ne peut que vous encourager à l'essayer vous-même…
Sous Firefox, c'est hyper simple. Présentez-vous sur l'un des portails de Seeks. Un peu au hasard, disons celui-ci: http://seeks.hydraze.org.
Dans Firefox, vous avez la barre d'adresse des sites web (URL), et le petit encart de recherche sur la droite, avec l'icône de votre moteur de recherche. Clickez sur l'icône (ce qui déroulera les moteurs de recherche déjà enregistrés), et selectionnez Ajouter «Seeks Search».
Bien qu'il existe de nombreux portails, il ne semble pas possible d'en ajouter plusieurs situés sur des hôtes différents par ce biais, mais ça n'est pas une limitation très gênante.
Nous avons configuré la barre de recherche, vous pourrez également vouloir changer le moteur de recherche utilisé par défaut lorsque vous entrez directement un mot clé dans la barre d'URL. Car les margoulins de chez Mozilla sont vicieux, et l'ajout de Seeks dans la barre de recherche comme on vient de le faire n'est pas automatiquement reflété sur cette autre façon d'effectuer une recherche. Vous devrez donc pour cela:
Voir aussi: Pour quelles raisons installer mon propre noeud ? (du FAQ en anglais)
Seeks n'est pas présent dans les dépots Debian, mais dans un dépot à part. La liste des dépendances n'est quand même pas très gentille pour un environnement serveur, parmi la liste ci-dessous seuls quelques paquets sont des «recommandations» dont on pourrait se dispenser: (sous Squeeze)
# apt-get install seeks-experimental Lecture des listes de paquets... Fait Construction de l'arbre des dépendances Lecture des informations d'état... Fait Les paquets supplémentaires suivants seront installés : dbus defoma fontconfig hicolor-icon-theme libatk1.0-0 libatk1.0-data libatlas3gf-base libavahi-client3 libavahi-common-data libavahi-common3 libavcodec52 libavformat52 libavutil49 libcups2 libcv2.1 libcvaux2.1 libdatrie1 libdbus-1-3 libdc1394-22 libdirac-encoder0 libfaad2 libfont-freetype-perl libgfortran3 libgtk2.0-0 libgtk2.0-bin libgtk2.0-common libhighgui2.1 libicu44 liblua5.1-0 libopenjpeg2 liborc-0.4-0 libpango1.0-0 libpango1.0-common libprotobuf6 libraw1394-11 libschroedinger-1.0-0 libspeex1 libswscale0 libthai-data libthai0 libtheora0 libtokyotyrant3 libusb-1.0-0 libxcomposite1 libxfont1 shared-mime-info x-ttcidfont-conf xfonts-encodings xfonts-utils Paquets suggérés : dbus-x11 defoma-doc psfontmgr dfontmgr libblas3gf liblapack3gf cups-common librsvg2-common gvfs ttf-japanese-gothic ttf-japanese-mincho ttf-thryomanes ttf-baekmuk ttf-arphic-gbsn00lp ttf-arphic-bsmi00lp ttf-arphic-gkai00mp ttf-arphic-bkai00mp libraw1394-doc speex Les NOUVEAUX paquets suivants seront installés : dbus defoma fontconfig hicolor-icon-theme libatk1.0-0 libatk1.0-data libatlas3gf-base libavahi-client3 libavahi-common-data libavahi-common3 libavcodec52 libavformat52 libavutil49 libcups2 libcv2.1 libcvaux2.1 libdatrie1 libdbus-1-3 libdc1394-22 libdirac-encoder0 libfaad2 libfont-freetype-perl libgfortran3 libgtk2.0-0 libgtk2.0-bin libgtk2.0-common libhighgui2.1 libicu44 liblua5.1-0 libopenjpeg2 liborc-0.4-0 libpango1.0-0 libpango1.0-common libprotobuf6 libraw1394-11 libschroedinger-1.0-0 libspeex1 libswscale0 libthai-data libthai0 libtheora0 libtokyotyrant3 libusb-1.0-0 libxcomposite1 libxfont1 seeks-experimental shared-mime-info x-ttcidfont-conf xfonts-encodings xfonts-utils 0 mis à jour, 50 nouvellement installés, 0 à enlever et 0 non mis à jour. Il est nécessaire de prendre 38,1 Mo dans les archives. Après cette opération, 108 Mo d'espace disque supplémentaires seront utilisés.
Mais se résume à bien moins sur un poste utilisateur plus classique avec environnement de bureau, sous Debian Wheezy:
# apt-get install seeks-experimental Lecture des listes de paquets... Fait Construction de l'arbre des dépendances Lecture des informations d'état... Fait Les paquets supplémentaires suivants seront installés : libtokyotyrant3 Les NOUVEAUX paquets suivants seront installés : libtokyotyrant3 seeks-experimental 0 mis à jour, 2 nouvellement installés, 0 à enlever et 0 non mis à jour. Il est nécessaire de prendre 2 577 ko dans les archives. Après cette opération, 8 689 ko d'espace disque supplémentaires seront utilisés. Souhaitez-vous continuer [O/n] ?
Voir aussi: http://www.isalo.org/wiki.debian-fr/Seeks, un petit guide pour installer Seeks sur votre Debian
Comme dit en introduction, Seeks utilise les moteurs de recherche existants pour s'alimenter. Autrement dit, il ne dispose pas lui-même des fonctions d'un «crawler», qui sont les logiciels spécialisés dans l'indexation de sites web à partir de l'analyse des pages web trouvées.
L'une des pistes envisagées pour pallier à cette absence est d'utiliser YaCy en complément. YaCy est un crawler écrit en JAVA qui fonctionne de manière décentralisée, en peer-to-peer. Votre oeil aguérri aura repéré un petit détail qui rebute légèrement à l'adopter. Pour autant, les deux projets peuvent être utilisés en complément, Seeks pouvant s'abreuver des résultats de YaCy, et ainsi, on a le ULTIMATE POWER SEARCH ENGINE QUI ROXOR.
Sur le sujet Seeks+YaCy, voir aussi: http://www.yacy-websuche.de/wiki/index.php/En:Seeks
Mais une autre approche est possible, bien qu'elle ne soit pas encore privilégiée. Seeks pourrait se dispenser d'un crawler, si les adresses des sites lui étaient directement soumises par les utilisateurs. Ça semble à peu près cohérent, quel webmaster ne ferait pas l'effort de soumettre son propre site (ou plutôt: quel visiteur ne recenserait pas le site qu'il aime) ? La question qui se pose ensuite, c'est comment ces résultats sont mis à jour. Par exemple, lorsqu'un nouvel article est rédigé sur un site, il faut bien le faire recenser spécifiquement. Google fait cela en envoyant ses bots, mais cela peut-il se faire d'une autre façon ? Le site pourrait lui-même contacter une instance Seeks (par PubSub ?).
Une explication en anglais de PubSub: http://www.isode.com/whitepapers/xmpp-pubsub.html
La situation a peut-être changé, mais Seeks pourrait être en rupture avec les conditions d'utilisation des moteurs de recherches qu'il utilise de façon sous-jacente. Source: http://www.seeks-project.info/site/2012/02/17/seeks-fr-va-sameliorer/ . Si l'on ne peut pas réordonner les résultats de Google, ça veut dire qu'il faut couper le cordon, et risquer d'avoir des résultats moins pertinents. D'un autre côté, si tout le monde s'y met, ce serait amusant de voir Google faire la chasse à chacun des noeuds Seeks. En attendant, il pourrait être intéressant que chacun s'accapare l'outil et puisse en faire tourner sa propre instance.
On n'a pas vraiment parlé de ces échanges des requêtes au format OpenSearch, et du profilage des utilisateurs. Leur FAQ traite le problème. Seeks n'est lui-même pas construit comme un réseau P2P anonyme. La question se pose uniquement losrque vous installez vous-même un noeud seeks, car dans l'autre cas vous pouvez aussi bien utiliser Tor, qui fournit un degré d'anonymat pour contacter n'importe quel site internet.
Dans un autre ordre d'idée, est-il pertinent de regrouper les utilisateurs ? A quoi rime cette mise en groupes, ne risque t-on pas de cloisonner plutôt que de pertinenter ? Cela demanderait un meilleur examen de la question et du projet de notre part.
Notons aussi que l'une des incidences liées à l'usage de Seeks est qu'il nous sert d'intermédiaire à Google. Google ne nous connaît donc pas directement, car derrière un noeud Seeks peuvent se cacher plusieurs utilisateurs. Cela n'empêche pas que la recherche est tout de même envoyée chez Google, mais a priori, sans divulguer notre IP ?
D'après un commentaire du développeur principal de Seeks laissé sur LinuxFR (Voir aussi: cet article), le projet est à l'abandon. Toutefois, un fork est également né et propose une réécriture du projet en python. Elle se nomme Searx, et son code peut se trouver sur ce GitHub. Des instances publiques de Searx sont également actives, voir cette liste.
Alors essayons Searx.
Permission denied (publickey). fatal: The remote end hung up unexpectedly
Arrêt de la séance d'essayage pour le moment, car il faut ouvrir le port 8888. Mais localement, ça semble fonctionner.
type:réseau-p2p type:client-p2p licence:libre réseau:searx statut:fermé propriété:moteur-de-recherche