Version 1.9 : Big speed improvement, command-line interface and book search

Even being quite, Meta-Press.es was an active project this year. Let’s announce some exciting features, such as the new command-line interface, considerable speed improvements a new result type : book, a rework of the design and the availability of a contributed Tamil translation !

1. Speed improvements

This new release of Meta-Press.es bring many speed improvements. First, the source definitions are now kept in the browser storage, this allows to avoid reading the 25 000 lines of the definitions at each new Meta-Press.es tab. Loading sources from the browser storage is 3x faster than reading them from my NVME drive (using Firefox Nightly ASAN, a slow version).

Then Meta-Press.es improved the way it performs the searches. The previous method was to query a source, wait for its answer and start over with the next source. The new method is to launch all queries at once (but no more than 500 per second to respect Quad9 recommandations) and only after that starting to study the responses. This allows to start waiting for the slowest sources right from the beginning, giving it more time to answer before actually delaying the request. On a french LTE connexion its 3x faster, with measured 620 sources fetched in 9s. This query scheduling improvement was achieve thanks to the microTask JavaScript API.

The last speed improvement is the multi-thread approach (thanks to the Wau Holland Foundation). You can turn it on from the settings, clicking the corresponding box. This allows to divide a search in batches, approximatively one by CPU core (minus a small percentage of spared cores), to get more CPU working on the search as JavaScript is otherwise single-threaded. This is done using different search tabs, automatically opened and closed. Results are gathered in the original tab. It might help in scenarios where the task is CPU-bound like on an old smartphones with good WiFi or an old computer with an optic fiber connexion. But usually, and with my LTE connexion for instance, the CPU is just waiting for the data to come from the network (so the option is not activated by default).

2. Meta-Press.es command line interface

As per NLnet and NGI0 support, Meta-Press.es searches can now be run out of web browser, from the command-line, via a Deno script.

This is the final stage of the code architecture rework initiated on NLnet impulse to introduce a clean separation between the core functions and the interface. This way, most of the Meta-Press.es core code is reused in this new command line interface.

This should allow to embed Meta-Press.es in more situations, even server-side.

Currently, this implementation is not faster than the regular in-browser web-interface. It’s due to the fact that all web page analysis (aka as DOM operations) are emulated via the jsdom [1] library, while the DOM is native on web-browsers. Deno, nor NodeJS are giving access to a compiled DOM. So searches are CPU-bound when started from the command-line and run for minutes when single-threaded. Fortunately, the multi-threaded searches (done via the WebWorker API here [2]) are improving things a lot, getting searches on par with the web-interface on a big (16 threads) machine.

For instructions about the Meta-Press.es command-line interface, please check the corresponding project README section.

3. Contributions

3.1. Book result type

Meta-Press.es v1.9 welcomes a new type of results : books. This have been made possible thanks to the work of Alexiane Senechaud, whom added a lot of new sources and electronic book libraries among them.

To keep things clear, the previous "text" result type covering press articles have been renamed "article", so we now have two text result types : books and articles.

You’re welcome to point us to more online libraries.

3.2. Better design

Alexiane also contributed a wide redesign of the Meta-Press.es WebExtension interface. Most of her ideas have been implemented in this new version :

  • new font

  • a popup menu instead of the previous header-bar

  • a better setup presentation

  • a redesign of the footer with direct donation links…

It was a great work from her and I did not implement all of her ideas yet.

3.3. Tamil from Weblate

A great (but currently anonymous to me) contributor did translate entirely Meta-Press.es into Tamil language via Weblate.org. This new version get it available. This have been possible thanks to Weblate a wonderful online translation management plateform, with high quality service and professional support.

3.4. Review by Korben.info

To finish, this release log comes a bit late after some hurry releases this summer. It’s because the french tech-blog Korben.info published an unexpected (but welcome) review of Meta-Press.es. It lead to an urgent release of the state of the art development version, to showcase improvements.

This review lead to 100+ downloads in a few days and raised our average daily users to nearly 900. This website was visited more than 11 000 times during the corresponding month.


1. jsdom is the only NodeJS / Deno DOM library supporting XPathEvaluator. Don’t hesitate to prove me wrong when something better will be available.
2. Regular in-browser WebWorkers are DOM-less also.