Journal Un navigateur totalement personnalisable ? En Lisp ? Next-browser

Posté par  . Licence CC By‑SA.
23
26
oct.
2018

Le navigateur Next est un navigateur web qui expose toute sa machinerie interne à l'utilisateur, qui peut le configurer, écrire des "hooks", écrire des extensions, etc, avec un langage de programmation, en l’occurrence Common Lisp (<- ce site vient d'être refait \o/ ) Next, c'est comme Emacs mais pour un navigateur web !

Il paraît qu'il fonctionne bien sous MacOS, le port Gtk est buggé, mais il est en pleine ré-écriture depuis plusieurs mois. C'est un peu le premier objectif de la campagne participative pour laquelle il reste une semaine. Le créateur de Next souhaite payer un développeur C pour l'aider sur le changement d'architecture et au portage sur GNU/Linux.

Pour le tester, vous avez des exécutables à disposition.

Donc si cela vous botte, si vous connaissez Gtk, le C ou avez un kopek (même un 1/2, pour encourager), z'avez de quoi filer un coup de main !

  • # Pourquoi faire ?

    Posté par  . Évalué à 10.

    Emacs a déjà son navigateur web…

    • [^] # Re: Pourquoi faire ?

      Posté par  . Évalué à 9. Dernière modification le 26 octobre 2018 à 16:07.

      pour (entre autres) une vraie interface et pas un mode texte !

      sacripant

  • # Codeur C

    Posté par  . Évalué à 3.

    Hum… Pourquoi un codeur C pour un projet lisp ?

    Le but de l'embauche du développeur n'est pas clair, c'est pour améliorer le binding GTK ?

    • [^] # Re: Codeur C

      Posté par  . Évalué à 3.

      oui c'est pour bosser sur une archi client/serveur avec Gtk, le backend Gtk serait indépendant de l'appli lisp.

  • # en fait: pourquoi Lisp ?

    Posté par  . Évalué à 3.

    J'oubliais, mais c'est dit par John dans la page de campagne, pourquoi Lisp ? Parce que cela permet d'écrire un bout de code, de compiler la fonction, et de la tester de suite. Sans redémarrer le navigateur (ou, dans le cas de base, l'éditeur et son REPL associé).

    • [^] # Re: en fait: pourquoi Lisp ?

      Posté par  . Évalué à 1.

      Comme n'importe quel langage interprété non ?

      • [^] # Re: en fait: pourquoi Lisp ?

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

        Je ne suis pas sûr : "Parce que cela permet d'écrire un bout de code, de compiler la fonction, et de la tester de suite."

        Au passage merci à l'auteur pour le lien. Ce n'est pas encore hyper facile de le compiler mais le premier ressenti est vraiment sympa. Reste plus qu'à coder un adblock rapidement.

        • [^] # Re: en fait: pourquoi Lisp ?

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

          de compiler la fonction

          Les langages de script ayant un eval (comme Perl, Tcl ou Javascript) peuvent faire ça aussi. En Perl ou Tcl la table des symboles est, par exemple, librement modifiable et, en fait, lors du chargement d'autres modules, c'est un eval particulier qui se cache et qui va compiler et rajouter à la table des symboles les nouvelles fonctions (compilées vers une sorte de byte-code interne à la volée).

      • [^] # Re: en fait: pourquoi Lisp ?

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

        Comme n'importe quel langage interprété non ?

        Non c'est loin d'être le cas. En Lisp si je définis ma fonction nb-browse-to-url et que je l'appelle depuis nb-open-bookmarks-in-tabs et bien il me suffit d'envoyer la nouvelle définition de nb-browse-to-url à l'interpréteur pour que open-bookmarks-in-tabs utilise la nouvelle version. Dans la plupart des langages interprétés, la fonction nb-open-bookmarks-in-tabs se souviendrait de la vieille définition de nb-browse-to-url jusqu'à ce que nb-open-bookmarks-in-tabs soit elle-même redéfinie.

        Ce n'est pas parceque c'est possible que c'est toujours la bonne chose à faire mais en pratique cette possibilité permet de considérablement réduire la durée de la boucle de développement.

        • [^] # Re: en fait: pourquoi Lisp ?

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

          Dans la plupart des langages interprétés

          Je tente pas souvent ce genre de trucs, donc je saurais pas dire pour d'autres langages, mais en Perl et Tcl la vieille fonction utilise la nouvelle définition de nb-browser-to-url dans nb-open-bookmarks-in-tabs sans besoin de redéfinir cette dernière.

    • [^] # Re: en fait: pourquoi Lisp ?

      Posté par  . Évalué à 2.

      Pharo a été envisagé, dans le genre ? https://pharo.org/

  • # Quel moteur de rendu ?

    Posté par  . Évalué à 2.

    Au final, ça utilise du webkit derrière ou un autre moteur de rendu ?

    • [^] # Re: Quel moteur de rendu ?

      Posté par  . Évalué à 4.

      De la page du projet sur Github (premier lien du journal) :

      The GNU/Linux version requires some dependencies:

      sqlite
      webkitgtk, also known as webkit2gtk (make sure to use the most recent version for security reasons)
      glib-networking (for Webkit)
      gsettings-desktop-schemas (for Wekit)
      gstreamer, gst-plugins-* for HTML audio/video
      
  • # Et le nom au fait

    Posté par  . Évalué à 1.

    Une dernière question en passant : y-a-t-il un rapport entre ce projet et celui ci : NeXT ?

Suivre le flux des commentaires

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