Next v1.3.0, le navigateur web entièrement programmable

67
6
août
2019
Internet

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, 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 !

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). Voyez la page de téléchargement. 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 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 (http://lisp-lang.org/, http://common-lisp.net/, https://github.com/CodyReichert/awesome-cl) 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), 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, Vim ou d’autres éditeurs).

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) ;
  • 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 (même symbolique :)) ; et une petite étoile sur GitHub aide aussi.

Aller plus loin

  • # Intéressant

    Posté par  (site web personnel) . Évalué à 3.

    Projet extrêmement intéressant ; merci

    Concernant l'installation, avec à la fois l'utilisation de lzip et des user namespaces, j'avais un peu peur ; mais en fait c'est supporté sur une distribution moyennement récente (Ubuntu 18.04).

    L'interface, genre d'Emacs avec menus contextuels (possiblement apportés par le moteur de rendu) est originale.

    Je vais compiler le code source pour un meilleur aperçu des technos.

    Petite question pratique concernant le moteur de rendu. La version téléchargeable fournit WebKit. Est-il prévu de le rendre remplaçable à chaud, c'est-à-dire de garder le navigateur et remplacer juste les binaires du moteur, un peu comme un plugin ?

    • [^] # Re: Intéressant

      Posté par  . Évalué à 3.

      Merci. J'espère qu'il va t'inspirer et développer ta créativité :)

      On n'a encore jamais parlé de remplacer un moteur de rendu à chaud. C et Python ne me semblent pas les meilleures technos pour faire ça. As-tu des exemples existants en tête ? En tout cas ce n'est pas possible en l'état, car la vue doit garder des informations synchrones avec le cœur: liste des fenêtres et onglets, liste de callbacks, etc.

      • [^] # Re: Intéressant

        Posté par  (site web personnel) . Évalué à 3. Dernière modification le 09 août 2019 à 16:06.

        As-tu des exemples existants en tête ?

        En legacy: Le plugin Chrome Frame pour IE (obsolète), permettait de switcher la vue d'Internet Explorer, du moteur Microsoft Trident vers Blink.

        En actuel: non, absolument pas. C'est justement pour ça qu'il y a une carte à jouer pour vous ;-).

      • [^] # Re: Intéressant

        Posté par  (site web personnel) . Évalué à 2. Dernière modification le 10 août 2019 à 17:06.

        Je viens de mettre l'image, ça mérite bien sûr un nouveau commentaire ;) .
        Titre de l'image

        • [^] # Re: Intéressant

          Posté par  (site web personnel) . Évalué à 6.

          Ça me fait penser à IE Tab, une extension pour Firefox qui permettait d’ouvrir une page avec le moteur d’Internet Explorer dans Firefox. Ça a beaucoup certaines personnes à sauter le pas de Firefox car elles étaient assurées de toujours pouvoir charger un site web sans devoir relancer IE pour ce site et jongler avec plusieurs navigateurs… Alors que certains sites ne fonctionnaient pas sous Firefox, les utilisateurs n’avaient pas besoin de quitter Firefox !

          IE Tabs

          ce commentaire est sous licence cc by 4 et précédentes

          • [^] # Re: Intéressant

            Posté par  (site web personnel) . Évalué à 3.

            Intéressant.
            Je viens d'essayer la dernière version, présentée comme étant compatible FF56 ; mais les menus déroulants restent désespérement vides (testé avec Win7+IE8, Win7+IE10).
            Tu sais quelle version de FF il faut ?

            • [^] # Re: Intéressant

              Posté par  (site web personnel) . Évalué à 3.

              (Mal)heureusement j’ai cessé d’en avoir besoin (et donc de l’utiliser) en 2008… Il faudra donc probablement un très vieux Firefox pour retrouver un environnement fonctionnel, et peut-être même un vieux Windows, à l’époque j’étais contraint d’utiliser Windows XP !

              ce commentaire est sous licence cc by 4 et précédentes

      • [^] # Re: Intéressant

        Posté par  (site web personnel) . Évalué à 2.

        Le langage Erlang a été fait pour cela au travers de sa machine virtuelle. L'objectif initial était de mettre à jour le code sur un routeur à chaud, sans interruption.

  • # Hors sujet (le nom)

    Posté par  . Évalué à 10.

    Félicitations pour le projet. Ça a l'air bien.

    Mais mon commentaire concerne juste le nom (et le logo) : Next. En général quand j'ai une nouvelle idée, je cherche un nom original. Un nom que personne n'utilise déjà sauf si ça n'a rien à voir avec le sujet. Pas que ça me réussisse particulièrement vu que mes projets s'arrêtent généralement à l'étape "acheter le nom de domaine" (et j'en ai une bonne dizaine…), mais je garde l'impression que si ça veut grandir, je ne peux pas utiliser un nom qui renverra tjrs autre chose que mon projet dans un moteur de recherche.

    Side project

    Et vous, vous démarrez un truc énorme, qui fonctionne, qui est utilisé, avec un nom très commun mais qui en plus a déjà utilisé par qqun très connu et dans la même branche. Vu les similarités entre votre logo et le sien je dirais que c'est voulu. Mais je ne comprends pas pourquoi.
    Donc ma question, simple, est "Pourquoi ce nom/logo ?"

    NeXT Computer : Next Computer
    Next Browser : Next Browser

    • [^] # Re: Hors sujet (le nom)

      Posté par  . Évalué à -1.

      bonsoir, je me pose la même question

    • [^] # Re: Hors sujet (le nom)

      Posté par  . Évalué à 4.

      Pour le nom unique, ici ça passe vu qu'on cherchera "next browser". Il y a un projet du même nom pour Androïd, mais il est abandonné.

      Dans "next", à part l'évidente connotation positive, il y a "n-ext", l'idée d'avoir "n" extensions, bref un navigateur programmable. Il n'y pas que je sache de référence explicite à Apple, mais j'ai demandé pour le logo…

      • [^] # Re: Hors sujet (le nom)

        Posté par  . Évalué à 1.

        Je te remercie pour ta réponse, je n'avais pas compris la subtilité "n-ext". Il reste malgré tout (et amho) une référence explicite à Apple (acquéreur de Next), avec ce logo.
        Cela dit, j'ai l'impression de titiller pour pas grand chose, certaines fonctionnalités de ce projet (comme la représentation de l'historique) me semblent très prometteuses.

  • # sécurité, vie privée?

    Posté par  . Évalué à -4. Dernière modification le 13 septembre 2019 à 14:34.

    Qu'est-ce qui est fait à ce niveau?

    D'ailleurs, quel est l'état de l'art de ce point de vue?
    Mozilla est souvent critiqué pour ne pas en faire assez voire faire pire (dns cloudfare) mais quelles sont les références?

  • # dychotomie

    Posté par  (site web personnel) . Évalué à 5.

    Next est unique car il n’expose pas d’API, il est totalement ouvert et programmable, et qui plus est programmable à chaud

    Comment est-ce que le projet peut être ouvert et programmable sans exposer d'interface de programmation de l'application (Application Programming Interface) ??

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.