URL: https://linuxfr.org/news/next-v1-3-0-le-navigateur-web-entierement-programmable
Title: Next v1.3.0, le navigateur web entièrement programmable
Authors: dzecniv
Ysabeau 🧶 🧦, Davy Defaud, palm123, Benoît Sibaud et Pierre Jarillon
Date: 2019-08-06T17:53:34+02:00
License: CC By-SA
Tags: internet, productivité, lisp, common_lisp, emacs, vim et gestionnaire_de_mots_de_passe
Score: 67
Je suis heureux de vous présenter le navigateur Next, projet que j’ai rejoint il y a deux mois, et dont la version 1.3.0 livre son lot de fonctionnalités attendues pour un usage quotidien :
- blocage de publicités (par domaine) ;
- sélection approchée / _fuzzy_ améliorée ;
- raccourcis claviers à la Vim ;
- un gestionnaire de téléchargements ;
- un mode NoScript ;
- un « _back‐end_ » basé sur Blink, le moteur de rendu de Chrome (qui s’ajoute au _back‐end_ WebKit) ;
- prise en charge des serveurs mandataires (_proxies_), donc de Tor ;
- et plus encore.
Oui, le tester donne envie de ne plus s’en séparer. :)
Next est unique car il n’expose pas d’[API](https://fr.wikipedia.org/wiki/Interface_de_programmation), il est totalement ouvert et programmable, et qui plus est programmable à chaud, il n’y a pas besoin de le redémarrer pour tester ses changements. Et au contraire des projets similaires (Konqueror ou Vimperator qui sont morts, Qutebrowser…), il n’est pas lié à un moteur de rendu particulier.
Je vous propose de le découvrir, et de [nous soutenir pour voir une version 1.4](https://www.indiegogo.com/projects/next-browser-v1-4-0/x/13474269#/) !
----
[Dépot GitHub](https://github.com/atlas-engineer/next/)
[Campagne participative pour la suite](https://www.indiegogo.com/projects/next-browser-v1-4-0/x/13474269#/)
[Site Web](https://next.atlas.engineer/)
----
# Installation
L’installation est aisée pour GNU/Linux et macOS : on propose une archive Guix tout‐en‐un et il est dans les MacPorts. Notez qu’il fonctionne sûrement sous Windows, mais que nous n’avons pas pu essayer (il faudra s’assurer d’avoir [D-BUS](https://fr.wikipedia.org/wiki/D-Bus)). Voyez la page de [téléchargement](https://next.atlas.engineer/download). Il est également facile de l’installer depuis les sources, un `make` installe toutes les dépendances et produit un exécutable.
# Architecture
Next est architecturé autour de deux composants : le cœur et un portage par plate‐forme. Nous avons actuellement deux plates‐formes : GTK/WebKit et Qt/Blink. Le cœur est en Common Lisp, le portage GTK en C et le Qt en Python (PyQt, Webengine). Les deux composants communiquent par D-Bus. Nous utilisions d’ailleurs [XML-RPC](https://fr.wikipedia.org/wiki/XML-RPC) avant D-Bus, et le changement nous bénéficie grandement. On a gagné en introspection, en messages d’erreur, en sécurité, et surtout en performances. En effet, il ne fallait plus que la communication (toujours asynchrone, dans les deux sens) paraisse avoir un délai.
# Développement et introspection en direct
Common Lisp (, , ) est la clef qui permet le développement et la manipulation du navigateur en direct. On peut lancer Next, lui demander de lancer un serveur [Swank (le _back‐end_ de Slime)](https://en.wikipedia.org/wiki/SLIME), et hop, on est connecté au navigateur et l’on peut inspecter son état, définir de nouvelles commandes, corriger des fonctions et les tester immédiatement, etc. Ou habituellement, lorsqu’on développe en Lisp, on lance Next depuis son REPL Lisp (dans Emacs, [Atom](https://github.com/neil-lindquist/SLIMA/), Vim ou [d’autres éditeurs](https://lispcookbook.github.io/cl-cookbook/editor-support.html)).
# Autres fonctionnalités
En plus des fonctionnalités citées en introduction (la navigation *fuzzy* est vraiment cool), on peut citer comme fonctionnalités pratiques la navigation par titre (`C-.` liste l’ensemble des titres de la page (h1…h6), on *fuzzy*‐sélectionne pour se rendre à ladite section) et un historique représenté comme un arbre. Voyez les captures d’écran sur le site principal.
# Version 1.4
On a forcément plein d’idées et d’envies pour la suite, notamment :
- une isolation par onglet (dire que tel onglet ou telle fenêtre utilise Tor, rejette les _cookies_, etc.) ;
- une excellente intégration à un éditeur de texte, pour que Next devienne *vraiment* l’_Emacs_ des navigateurs » (notez que ce pourrait être plus facile que prévu grâce à l’éditeur existant [Lem](https://github.com/cxxxr/lem)) ;
- s’ensuit, un gestionnaire de fichiers ;
- un gestionnaire de mots de passe ;
- une recherche de texte inter‐onglet, idem pour la navigation par titre ;
- etc.
Et maintenant qu’on a les bases, on prévoit de s’amuser un petit peu et d’expérimenter avec le téléchargement de vidéos (on pourrait utiliser facilement `youtube-dl`, puisque nous ne sommes pas limités par la plate‐forme du navigateur), des commandes pour interagir avec GitHub, etc. Nous ne sommes plus limités que par notre imagination !
Si le projet vous botte, n’hésitez pas à [nous soutenir par un don](https://www.indiegogo.com/projects/next-browser-v1-4-0/x/13474269#/) (même symbolique :)) ; et une petite étoile sur GitHub aide aussi.