Version 1.9 : Accélérations, interface en ligne de commande et recherche de livres

Bien que l’année fut calme en apparence, le projet Meta-Press.es a été très actif. Voici les principales fonctionnalités ajoutées cette année : une interface en ligne de commande, de grosses accélérations dans les traitements, un nouveau type de résultats (les livres), une refonte progressive de l’interface web et la contribution d’une traduction en tamoul de l’outil.

1. Accélérations

Cette nouvelle version de Meta-Press.es introduit plusieurs améliorations dans les délais de traitement. Tout d’abord, les définitions de source sont désormais gardées dans le stockage du navigateur, pour éviter d’avoir à relire les 25 000 lignes de définition à chaque ouverture d’un onglet Meta-Press.es. Lire la définition des sources depuis le stockage du navigateur s’avère 3x plus rapide que de lire cette information depuis le stockage NVME de ma machine (tests effectués avec Firefox Nightly ASAN, une version lente).

Ensuite c’est la façon dont les recherches sont effectuées qui a été améliorée. La précédente méthode consistait à interroger une source, attendre puis traiter sa réponse, et recommencer avec la source suivante. La nouvelle méthode consiste à lancer toutes les requêtes en même temps dès le début (en respectant le nombre maximum de requêtes DNS recommandé par Quad9, soit 500 par seconde) et de ne commencer à analyser les réponses qu’après. Ceci permet de masquer partiellement les temps d’attente des sources les plus lentes. Sur une connexion 4G en France c’est 3x plus rapide et 620 sources peuvent être interrogées en 9s. Cette amélioration de l’ordonnancement des requêtes s’appuie sur l’API JavaScript microTask.

La dernière amélioration concerne l’introduction d’une approche multi-tâches des recherches (grâces à la Wau Holland Foundation). Cette fonctionnalité est activable d’un clic dans les réglages. Cela permet de répartir les requêtes sur plusieurs tâches, environ une par noyau de CPU (moins quelques tâches conservées libres pour le système et rassembler les résultats), afin de mobiliser plus de ressources du micro-processeur alors que le JavaScript est lui mono-tâche. Pour ce faire, une recherche multi-tâches ouvre (puis referme automatiquement) plusieurs onglets dans le navigateur. Les résultats sont ensuite rassemblés dans l’onglet ayant lancé la recherche. Ce fonctionnement devrait permettre de gagner du temps dans les environnements d’exécution où c’est le CPU qui ralenti le traitement (comme avec un vieux smartphone sur une bonne connexion WiFi ou un vieil ordinateur connecté en fibre optique). Mais sur une connexion 4G, le CPU passe le plus clair de son temps à attendre les réponses, donc l’option n’est pas activée par défaut.

2. Meta-Press.es en ligne de commande

Grâce au soutien de la NLnet et du programme européen NGI0, il est désormais possible de réaliser des recherches Meta-Press.es hors d’un navigateur web, depuis la ligne de commande via un script Deno.

Cette nouvelle manière d’utiliser Meta-Press.es représente la dernière étape de la restructuration de code impulsée par la NLnet pour introduire une séparation claire entre moteur et interface, alors que ce dernier s’est considérablement compliqué ces dernières années. Aujourd’hui, la majeure partie du code de Meta-Press.es a pu être réutilisée pour le fonctionnement en ligne de commande, prouvant que tout a bien été rangé.

Cette nouvelle interface devrait permettre d’utiliser Meta-Press.es dans de nouvelles situations, par exemple sur un serveur.

Toutefois ce n’est pour l’instant pas plus rapide que d’utiliser Meta-Press.es dans un navigateur web. Ceci est dû au fait que l’analyse des pages web téléchargées par Meta-Press.es est lente dans ce contexte car elle passe par la bibliothèque de fonction jsdom [1] qui simule les parties manquantes du navigateur web. Un navigateur web propose ces fonctionnalités à partir de code compilé 100x plus rapide qu’une version singée en JavaScript. Une recherche Meta-Press.es en ligne de commande est donc limitée par le CPU de la machine et s’étalait sur plusieurs minutes dans la première version mono-tâche. Heureusement, il a été possible de proposer une exécution multi-tâches (en s’appuyant sur l’API WebWorker [2] cette fois), qui ramène le temps d’exécution à quelque chose de comparable au Meta-Press.es classique, du moins sur une machine avec 16 fils d’exécution.

Pour plus d’information sur comment utiliser Meta-Press.es en ligne de commande, reportez vous à la section correspondante du README du projet.

3. Contributions

3.1. Le type de résultat : livre

Meta-Press.es v1.9 se voit doté d’un nouveau type de résultat : les livres. Cela a été rendu possible grâce au travail d’Alexiane Sénéchaud, qui a ajouté plein de sources dont de nombreuses librairies électroniques en ligne.

Pour clarifier la situation, le précédent type de résultat "texte" (qui correspondait aux articles de presse) a été renommé : "article". Il y a donc désormais deux types de résultats majoritairement textuels : les articles et les livres numériques.

N’hésitez pas à nous indiquer d’autres bonne librairies en ligne.

3.2. Refonte de l’interface graphique

Alexiane a aussi travaillé à la conception des pages de Meta-Press.es en version WebExtension. La plupart de ses idées ont été implémentées dans cette nouvelle version :

  • nouvelle police de caractère

  • menu unique et simplifié à la place de la barre d’entête

  • meilleure présentation des réglages

  • refonte du pieds de page avec des liens directs pour faire des dons…

Elle a fait un travail formidable et je n’ai pas encore tout intégré de ses idées.

3.3. Traduction tamoul via Weblate

Un incroyable contributeur (encore anonyme à ce stade) a traduit toute l’interface de Meta-Press.es en tamoul. Cette nouvelle version de Meta-Press.es embarque son travail. Cette contribution a été rendue possible par Weblate.org, une très bonne plateforme de gestion en ligne des traductions d’un logiciel (avec un support professionnel et de nombreuses fonctionnalités de travail en équipe).

3.4. Revue par Korben.info

Pour finir, ces notes de version arrivent un peu tard après plusieurs versions intermédiaires sorties un peu précipitamment cet été. C’est parce que le blog technique français Korben.info a publié une revue inattendue (mais bienvenue) de Meta-Press.es. Cet évènement étant de nature à faire découvrir l’outil à plein de monde en peu de temps, il a semblé préférable de fournir une version à jour (notamment de la liste des sources) pour présenter l’outil sous son meilleur jour.

Cette revue a entrainé un peu plus de 100 téléchargements en quelques jours et remonté le nombre moyen d’utilisateurs quotidien à presque 900. Ce site a de son côté été visité plus de 11 000 fois en juillet cette année.


1. jsdom est la seule bibliothèque NodeJS / Deno qui propose la fonction XPathEvaluator. N’hésitez pas à me contredire dès que quelque chose de plus rapide sera disponible.
2. Il est à noter que l’API DOM est absente des WebWorker, même s’ils sont lancés depuis un navigateur web.