Le navigateur Web NetSurf publie sa version 3.8

37
4
sept.
2018
Internet

NetSurf est un navigateur Web léger. Conçu au départ pour le système RISC OS, il fonctionne aujourd’hui sur GNU/Linux, Windows ou Haiku, mais aussi sur des plates‐formes plus exotiques comme AmigaOS ou MiNT (le descendant multitâche du système TOS des Atari ST).

Le projet a démarré en 2002, avec une version GTK/UNIX depuis 2004.

Sommaire

Pourquoi NetSurf ?

La question se pose, puisqu’il existe déjà plusieurs navigateurs libres, comme Firefox, Chromium, ou plusieurs autres basés sur le moteur WebKit.

Voyons les arguments affichés sur la page web de NetSurf :

Rapidité

Au cœur du moteur de NetSurf est l’efficience. Cela lui permet de prendre de vitesse les poids lourds des moteurs de rendu. L’équipe de NetSurf continue d’améliorer les performances dans chaque version.

Innovations sur l’interface

Simple et facile, NetSurf a remonté le niveau pour le design des interfaces des logiciels pour RISC OS, de façon significative. Pensé pour s’intégrer avec le bureau, NetSurf est la référence sur cette interface. Ce fut également le premier navigateur à proposer des miniatures de pages et un historique présentant les pages visitées sous la forme d’un arbre.

Prérequis légers

Que vous ayez un PC récent ou une machine avec un ARMv6 à 30 MHz et 16 Mio de mémoire vive, NetSurf pourra naviguer sur le Web. Écrit au départ pour du matériel habituel dans les PDA, set‐top‐boxes, téléphones portables et autres gadgets, NetSurf est compact et nécessite peu de maintenance.

Portabilité

NetSurf peut être compilé pour un certain nombre de plates‐formes « dès le déballage ». Écrit en C en pensant à la portabilité, par des développeurs avec un large spectre d’expérience dans l’informatique, cela le rend accessible à un maximum d’utilisateurs.

Conforme aux standards

Malgré le très grand nombre de standards à respecter, NetSurf fait tout pour les suivre au plus près et rend la navigation Web agréable. Le projet est actif et fait en sorte d’intégrer les technologies Web récentes et futures.

Qui développe NetSurf ?

L’équipe est principalement localisée au Royaume-Uni. Une partie des développeurs se retrouve pour un « developer week‐end » tous les deux ou trois mois pour faire le point et essayer d’avancer sur le développement. Certains des contributeurs sont sponsorisés par leurs employeurs (dont Codethink), pour contribuer au projet. C’est également via du sponsoring que NetSurf dispose de serveurs pour l’intégration continue et l’hébergement de son site Web.

Où en est NetSurf ?

Il est difficile de répondre en même temps à toutes ces contraintes. Un navigateur fonctionnant sur une machine à 30 MHz avec 16 Mio de mémoire ne pourra pas faire fonctionner les applications Web modernes, qui sont souvent largement trop grosses.

De plus, les standards du Web évoluent très vite, et NetSurf a du mal à suivre. Le plus simple est de regarder la feuille de route du projet. On peut y voir que si HTML 4 et CSS 2 sont bien pris en charge, le HTML 5, le CSS 3 et le JavaScript n’en sont encore qu’à leurs débuts. Pour JavaScript, les développeurs de NetSurf utilisent à présent le moteur Duktape. L’exécution du code est pleinement fonctionnelle, mais il faut maintenant y connecter toutes les API et en particulier la gestion du DOM, qui permet à JavaScript d’interagir avec le contenu HTML des pages. Sans cela, l’intérêt du JavaScript est très fortement réduit.

Une autre difficulté pour NetSurf est la maintenance du navigateur pour différents systèmes. Cela implique beaucoup de code (toute la partie interface graphique) maintenu indépendamment pour chaque système, mais aussi des difficultés pour l’intégration continue (avec de la compilation croisée ou native selon les cas). NetSurf doit par exemple maintenir sa propre version de la chaîne de compilation GCC pour la plupart des plates‐formes sur lesquelles il peut fonctionner, ainsi qu’un certain nombre de dépendances (cURL, OpenSSL, lipgng…).

D’autre part, certaines bibliothèques ont été développées spécialement pour NetSurf, car les options existantes n’étaient pas facilement portées vers les systèmes sur lesquels NetSurf fonctionne : libnsgif (pour les images au format GIF), libnsbmp (pour les images au format bitmap), libsvgtiny (pour le rendu SVG).

Quoi de neuf dans cette version ?

Il y a peu d’évolutions fonctionnelles par rapport à la version 3.7 publiée l’an dernier. En ce moment les développeurs de NetSurf font plutôt un travail de fond pour corriger de nombreux bogues, nettoyer le code source, découper NetSurf en plusieurs bibliothèques réutilisables, et en simplifiant l’interfaçage entre les interfaces graphiques et le cœur du navigateur. Il y a également beaucoup de travail à fournir pour faire fonctionner CSS 3 (sélecteurs, media queries…) et JavaScript (qui demande une refonte de la gestion du DOM et de rendre dynamique des choses qui ne l’étaient pas, au niveau de la mise en page du HTML notamment).

Fuzzing

Le « fuzzing » consiste à envoyer des données modifiées aléatoirement en entrée d’un programme pour découvrir des bogues dans la gestion de cas inattendus. On mesure le taux de couverture du code (normalement, il doit être possible d’atteindre 100 % en donnant au programme toutes les données d’entrée possibles) et en surveillant qu’il n’y a pas de « plantage ».

Plusieurs des bibliothèques composant NetSurf ont eu droit à ce traitement en utilisant l’outil American Fuzzy Loop. Cela a permis de construire un jeu de test avec des fichiers BMP, GIF ou SVG déclenchant toutes sortes de bogues dans les bibliothèques correspondantes.

Sanitizers

Les sanitizers sont des vérifications effectuées pendant l’exécution d’un programme, qui sont automatiquement insérées par le compilateur. Elles permettent de détecter toute sorte de problème (accès hors limites à un tableau, dépendance à des comportements indéfinis du langage C, lecture de données non initialisées en mémoire…).

La chaîne d’intégration continue de NetSurf intègre maintenant dans ses tests unitaires un ensemble de tests générés par AFL, ainsi qu’une étape de vérification avec les sanitizers. Cela permet de détecter autant que possible les régressions de façon automatisée.

Nouvelles fonctionnalités

Cette version corrige également plusieurs soucis de rendu et apporte quelques nouvelles fonctionnalités :

  • la gestion de plus d’unités dans les CSS (vw, vh, vmin, vmax…) ;
  • l’affichage des fichiers JPEG encodés en quadrichromie (CJMN) ;
  • gestion de HSTS et des tickets de session TLS.

Aller plus loin

  • # Code source propre

    Posté par . Évalué à 10.

    Il y a quelque temps, je m'étais retrouvé à lire le code source de NetSurf (j'étais intéressé par la libcss si mes souvenirs sont bons). C'est beau, c'est propre, c'est simple et les différentes bibliothèques sont bien séparées du reste (et effectivement utilisables en dehors du projet en principe) et ont une interface claire.

    Je recommanderais bien à qui souhaiterait lire du code un peu complexe, pour s'améliorer ou par curiosité.

    La fonctionnalité de l'historique en arbre est très sympathique, ce serait chouette d'avoir ça dans Firefox.

    • [^] # Re: Code source propre

      Posté par . Évalué à 1. Dernière modification le 07/09/18 à 16:54.

      L'historique en arbre existe chez Firefox en addons depuis longtemps : https://addons.mozilla.org/en-US/firefox/addon/tree-style-tab/

      Malheureusement, depuis leur n-ième re-fondation des droits et devoirs des addons (pour être compatible avec Chrome), il est devenu impossible de modifier trop de choses, donc l'addon marche bel et bien, mais il est impossible de ne pas afficher la barre des onglets : on se retrouve donc avec la liste des fenêtres affichée deux fois, ce qui déplaît fortement.

  • # Retour vers le futur

    Posté par (page perso) . Évalué à 3. Dernière modification le 04/09/18 à 20:44.

    Le site web me rappelle les bon vieux débuts d'internet, nostalgie…

  • # Errata

    Posté par (page perso) . Évalué à 2.

    On m'informe que l'entreprise qui a sponsorisé NetSurf s'appelle Codethink, sans T majuscule. Si quelqu'un peut corriger, ça serait super.

  • # Commentaire supprimé

    Posté par . Évalué à 0. Dernière modification le 05/09/18 à 12:04.

    Ce commentaire a été supprimé par l'équipe de modération.

  • # Impressionnant

    Posté par . Évalué à 6.

    Rien que la liste des OS supportés en jette, avec les contraintes que ça a sur la chaîne de compilation et le reste!
    C'est un navigateur, et en même temps, quand on lit la description, c'est tellement plus de choses aussi!

    J'ai quelques questions:

    Est-ce que NetSurf est utilisé au quotidien comme navigateur exclusif par un nombre significatif? Il est mentionné qu'il n'est pas encore à niveau en ce qui concerne HTML5, CSS3 ou Javascript, à quel point est-ce pénalisant?
    J'ai du mal à me rendre compte de la quantité d'utilisateurs potentiels d'un tel projet. D'un côté, on est clairement sur des niches, de l'autre, on est sur quasiment toutes les niches d'OS alternatifs en même temps (je suis un habitué de ce site et je n'avais jamais entendu parler de MINT!!)

    Quand on parle de rapidité comparé aux "poids lourds", on parle du temps de démarrage et de l'interface, ou est-ce que NetSurf bat réellement les "gros" navigateurs sur les rendus? (hors dernières technos JS).

    Avec l'avènement des applis web, énormément de ressources ont été investies dans les moteurs JS derniers cri et les technos web sont devenues de plus en plus gourmandes. Est-ce que vous pensez pouvoir suivre, même quelques pas derrière, ou est-ce que vous voyez déjà un mur arriver au-delà duquel NetSurf n'ira pas? (ce ne serait pas un mal, c'est juste que le web "moderne" ne tient pas compte des ARM 30MHz avec 16Mo de RAM dans ses évolutions, et donc à un moment, il faudra choisir entre le support des derniers standards et le support du matériel modeste).

    Les bibliothèques sont décrites comme propres et indépendantes du navigateur lui-même, connaissez-vous d'autres projets qui les réutilisent?

    Question subsidiaire piège: qui dans l'équipe utilise régulièrement un ARM 30MHz avec 16Mo de RAM pour naviguer sur le web?

    • [^] # Re: Impressionnant

      Posté par (page perso) . Évalué à 5.

      Bonjour, je vais essayer de répondre même si je ne suis responsable que d'un petit morceau du port pour Haiku et que j'ai peu touché au coeur de NetSurf.

      NetSurf est le seul choix raisonable pour certaines des plateformes ciblées: MiNT, RiscOS, KolibriOS ou AmigaOS 3 par exemple. Avoir un navigateur qui sait prendre en charge les CSS sur ces systèmes est déjà très bien. Cependant, je pense que peu de monde utilise ces systèmes comme principale machine.

      Sous Haiku, on dispose de navigateurs basés sur WebKit, autrement plus compliqués, et NetSurf est un bon complément quand on tombe sur un site web un peu récalcitrant.

      Il trouve également une utilisation dans les systèmes embarqués, et ira peut être plus loin de ce côté quand il disposera d'un moteur Javascript. Il existe une version de NetSurf qui a juste besoin d'un framebuffer pour faire le rendu, donc très facile à porter même sur un système très minimaliste. On pourrait donc imaginer écrire une application embarquée en HTML, CSS et JavaScript, ou même, grâce à la modularité de NetSurf, remplacer le JavaScript et écrire une application C avec un rendu en HTML/CSS.

      NetSurf est rapide pour le rendu sur les machines ciblées. La plupart des autres navigateurs vont s'attendre à disposer d'accélération 3D pour réaliser certains effets graphiques, et tenter de faire tout le rendu en logiciel peut être un gros problème (j'en sais quelque chose, puisque la version de WebKit pour Haiku fonctionne ainsi). Je ne sais pas dans quelle mesure l'intégration de Javascript changera les choses pour NetSurf, car actuellement le DOM (le modèle de la page) est statique et donc le rendu peut être fait en une seule fois. Avec Javascript, la page peut être modifiée à tout moment et cela a de nombreuses conséquences.

      Je n'ai pas branché mon Amiga depuis bien longtemps, et il a plus de RAM que ça (poussé à 128Mo mais avec un vénérable 68040 à 40MHz). Ilfaudra que je voie ce que ça donne. Si j'ai le temps un jour je me lancerai peut être à faire fonctionner NetSurf sous Windows 3.11 avec Win32S, par curiosité archéologique :)

      • [^] # Re: Impressionnant

        Posté par (page perso) . Évalué à 3.

        "NetSurf sous Windows 3.11"
        J'ai essayé sous Windows 2000, mais j'ai dû prendre la 3.7 pour que ça se lance, et encore,j'ai beaucoup de sites qui ne fonctionnent pas : erreur 400 dont Linuxfr d'ailleurs.

Suivre le flux des commentaires

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