Zoom sur trois projets émergents portés par Mozilla : Fluent, Bugbug et BinaryAST

35
20
mai
2019
Mozilla

Si vous fréquentez LinuxFr.org, vous le savez déjà : Mozilla, ce n’est pas qu’un navigateur Web. Trois projets émergents portés par Mozilla viennent, si besoin était, nous le rappeler :
Fluent, Bugbug et BinaryAST.

Fluent, un nouveau système de traduction et de régionalisation de logiciels

Mozilla vient de lancer Fluent (sous licence libre Apache 2.0) comme un projet indépendant, ce qui n’empêche pas que Firefox soit en train d’être adapté pour s’appuyer dessus (cf. la page permettant de suivre les progrès en la matière : « Are We Fluent Yet? »). Environ 3 000 entrées sur les 13 000 à traduire chez mozilla-central sont déjà gérées via Fluent.

« Plutôt que d’exiger des développeurs qu’ils prédisent toutes les permutations possibles dans toutes les langues prises en charge, Fluent préserve la langue source aussi claire qu’elle peut l’être. En même temps, il permet de s’adapter à la grammaire et au style d’autres langues, indépendamment de la langue source. »

Le communiqué de presse accompagnant ce lancement est lisible en français.

Bugbug, une intelligence artificielle pour gérer les bogues

Mozilla vient d’annoncer la création de Bugbug, une IA pour la gestion automatique des bogues. Bugbug est déjà utilisé en production pour :

  • le déplacement automatique des bogues dans des composants plus appropriés ;
  • l’identification de métadonnées manquantes (p. ex. : regression) ;
  • le type de bogue (tâche, amélioration ou défaut).

Comme d’habitude chez Mozilla, le projet est libre — publié sous la licence MPL v2. Et il a été conçu pour être réutilisé par d’autres projets (p. ex. : Eclipse, Red Hat, etc.).

BinaryAST, un format de fichier structuré pour du code JavaScript

Mozilla s’associe à Bloomberg, Facebook et Cloudflare pour proposer BinaryAST : un format de fichier structuré pour du code JavaScript, afin d’accélérer le chargement de ce dernier par le navigateur (lire l’article technique en anglais sur le blogue de Cloudflare, voir la conférence en anglais de 30 minutes donnée au FOSDEM 2018 par David Teller de Mozilla, et son diaporama).

Pour bien comprendre à quoi répond ce projet initié début 2017 par Mozilla : JavaScript dans Google Sheets, Google Docs, Yahoo!, LinkedIn ou Facebook, c’est entre 3 Mio et 7 Mio de code compressé, mis à jour fréquemment (parfois toutes les cinq minutes). Pour prendre l’exemple de Facebook : sur Chrome ou Firefox, il faut entre 500 et 900 ms pour analyser le code JavaScript. Et la tendance risque d’aggraver ce phénomène.

BinaryAST propose un fichier :

  1. de taille réduite, pour être téléchargé plus rapidement ;
  2. structuré, pour être analysé beaucoup plus rapidement.

Pour tester ce nouveau format, il vous faut l’activer dans la version Nightly de Firefox en allant dans « about:config » et en modifiant les réglages comme suit :
Options d’activation de BinaryAST dans Firefox Nigthly

Aller plus loin

  • # Encore un nouveau standard?

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

    BinaryAST : un format de fichier structuré pour du code JavaScript, afin d’accélérer le chargement de ce dernier par le navigateur […] BinaryAST propose 1°) un fichier de taille réduite (pour être téléchargé plus rapidement) 2°) structuré (pour être parsé beaucoup plus rapidement).

    Pas compris la différence pratique avec WebAssembly (" Il est conçu pour compléter JavaScript avec des performances supérieures. Le standard consiste en un bytecode, sa représentation textuelle et un environnement d'exécution dans une sandbox compatible avec JavaScript.")

    • [^] # Re: Encore un nouveau standard?

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

      Je pense que la réponse est dans "structuré".

      ⚓ À g'Auch TOUTE! http://afdgauch.online.fr

    • [^] # Re: Encore un nouveau standard?

      Posté par . Évalué à 3.

      Je suppose: BinaryAST est pour charger du JavaScript (utile pour les applications existantes), et WebAssembly n'a plus grand chose à voir avec du JS, étant un format binaire.

    • [^] # Re: Encore un nouveau standard?

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

      (idée) Là ou l'AST conserve les infos issues du source, et permet aux moteurs javascript de mettre en place leurs optimisations, WebAssembly arrive avec du code déjà "final" ciblant une VM type "plus petit dénominateur commun", qui sera moins facile a optimiser pour chaque moteur.

      Python 3 - Apprendre à programmer en Python avec PyZo et Jupyter Notebook → https://www.dunod.com/sciences-techniques/python-3

      • [^] # Re: Encore un nouveau standard?

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

        Un extension comme Decentraleyes met en cache certain javascript.

        Ne faudrait-il pas mettre un checksum dans l'URL qu'un javascript dans un champs type checksum en plus de src pour que le navigateur ne recharge pas 50 fois le même javascript selon les sites ?

        Le navigateur stocke ensuite le javascript sous le format qu'il veut avec une date de péremption, par exemple 1 mois ou 3 mois !

        • [^] # Re: Encore un nouveau standard?

          Posté par . Évalué à 2.

          Peut-être, mais ça résout un problème différent :)

          Ah, et l'approche que tu décris ouvre de grosses fuite d'informations, puisqu'on peut aisément s'en servir pour détecter si quelqu'un a déjà visité un site.

          • [^] # Re: Encore un nouveau standard?

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

            Ok, ce visiteur a déjà visité mon site… La fuite me semble faible devant le gain en terme de bande passanet (bilan carbone…). Combien de visiteur visite une et une seule fois un site ?

            Bref, cela me semble vraiment très faible comme risque !

      • [^] # Re: Encore un nouveau standard?

        Posté par . Évalué à 8. Dernière modification le 21/05/19 à 15:02.

        À chaque fois que cette expression est employée, plus petit dénominateur commun, mes dents se mettent à grincer. Je suis loin d'être une référence en mathématiques, mais je pense que tu veux parler au contraire du plus grand dénominateur commun, ou plus grand facteur commun, et là ça fait sens. Aucune attaque personnelle ici, c'est juste une expression qui a été adoptée par le plus grand nombre, qui ne veut rien dire, et qui survit parce que peu de monde réfléchit à son sens réel.

        • [^] # Re: Encore un nouveau standard?

          Posté par . Évalué à 0. Dernière modification le 22/05/19 à 09:29.

          https://fr.wikipedia.org/wiki/D%C3%A9nominateur

          Dans une fraction, le dénominateur est le nombre en dessous de la barre de fraction

          Visiblement le plus petit dénominateur commun c'est le PPCM, je vois pas ce que serait le plus grand dénominateur commun, en mathématique

          (ce n'est pas pour défendre l'expression, mais dire qu'il faudrait dire "le plus grand dénominateur commun" ça me paraît vraiment bizarre, si on veut garder un lien avec les maths en tout cas)

          • [^] # Re: Encore un nouveau standard?

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

            Visiblement le plus petit dénominateur commun c'est le PPCM, je vois pas ce que serait le plus grand dénominateur commun, en mathématique.

            PGCD ?

            Toolkit Atlas : pour facilement ajouter une interface graphique à vos programmes (voir page perso) !

            • [^] # Re: Encore un nouveau standard?

              Posté par . Évalué à 2.

              si le plus petit dénominateur commun c'est le PPCM je vois pas comment le plus grand serait le PGCD…

              sinon l'expression "dénominateur commun" ça veut dire au figuré "Élément commun à des choses, des personnes différentes", il me semble que ça marche sans rajouter ni plus petit, ni plus grand, si on veut revenir au maths en gros c'est une intersection, non ?

              • [^] # Re: Encore un nouveau standard?

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

                Si on ne précise pas que c'est le plus grand, alors on peut prendre une caractéristique commune ridicule.
                Exemple : un dénominateur commun entre les patrons du CAC 40 est qu'ils ont un un pancréas.

                Pas super utile comme info :-)

        • [^] # Re: Encore un nouveau standard?

          Posté par (page perso) . Évalué à 1. Dernière modification le 22/05/19 à 22:59.

          Tu peux relâcher la mâchoire. L'expression dénominateur commun a aussi le sens Élément commun à plusieurs choses ou personnes. Quand on parle de "plus petit dénominateur commun" hors mathématiques, c'est dans ce sens.

          Python 3 - Apprendre à programmer en Python avec PyZo et Jupyter Notebook → https://www.dunod.com/sciences-techniques/python-3

          • [^] # Re: Encore un nouveau standard?

            Posté par . Évalué à 3. Dernière modification le 24/05/19 à 16:26.

            Pourquoi ne pas parler de point commun, alors ? C'est nettement moins compromettant. Tu aurais dit dénominateur commun sans préciser si c'est le plus grand ou le plus petit que ça ne m'aurait pas fait réagir. C'est l'introduction d'un excès de précision qui est gênante. Stricto sensu le plus petit dénominateur commun de deux entier est 1 quelque soient ces entiers, et ça n'avance pas à grand chose.

            En fait on peut parler du plus petit dénominateur commun de deux fractions irréductibles, et dans ce cas c'est le plus petit commun multiple de leur dénominateur. Mais là il ne s'agit pas de leur trouver une part commune mais de les comparer, ce qui n'est pas la même chose.

        • [^] # Re: Encore un nouveau standard?

          Posté par . Évalué à 3.

          Ah oui, bien vu! Le plus petit dénominateur commun c'est toujours 1, pas très utile comme information ;-)

    • [^] # Re: Encore un nouveau standard?

      Posté par . Évalué à 4.

      Pour résumer, WebAssembly est un format de compilation, alors que BinaryAST est un format (très, très, très spécialisé) de compression.

      À l'heure actuelle, on ne sait pas en général compiler un programme JavaScript vers du WebAssembly, mais on peut sans difficultés compiler du C ou du Rust. De mémoire, les fichiers wasm ont aussi tendance à être assez gros.

      À l'inverse, BinAST ne s'intéresse ni au C, ni au Rust, mais permet d'encoder JavaScript (et uniquement JavaScript) sous une forme optimisée. Au moins sur les versions prototypes, un fichier BinAST non minifié est typiquement plus petit qu'un fichier source + minifié + compressé avec gzip mais peut être décompressé vers du JavaScript non minifié (moins les commentaires).

  • # Javascript

    Posté par (page perso) . Évalué à 2. Dernière modification le 21/05/19 à 16:04.

    BinaryAST : un format de fichier structuré pour du code JavaScript, afin d’accélérer le chargement de ce dernier par le navigateur

    Ça me fait rire à quel point le web est dégueulasse, remplit de JS et d’animation (la plupart du temps inutile), de pubs, etc., mais « oh putain, il faut absolument minifier le JS sinon il va prendre 2 dixièmes de seconde à charger ».

    • [^] # Re: Javascript

      Posté par . Évalué à 2.

      Tu te plantes de cible. En minimisant Google et ci. ne cherchent pas à diminuer le temps pour l'utilisateur, mais la charge sur leurs serveurs.

  • # BinAST FLASH le retour.

    Posté par . Évalué à -1.

    Plus ça change.

  • # Ça me laisse perplexe...

    Posté par . Évalué à -4.

    Une IA pour corriger les bugs dans des programmes… Il y a quelque chose qui me… comment dire… («ça vous chatouille? ou ça vous grattouille?»)

    C'est moi ou on va un peu loin, là? Pourquoi pas inventer une IA qui agirait génétiquement sur les humains pour qu'ils soient capables d'écrire des programmes sans bug? Ah ouais, mais alors on n'aurait plus besoin des IA. C'est con. Y a plus qu'à faire écrire des programmes par des IA. Ah ouais, ça se fait déjà…

    Bon, ça va -->[]

    • [^] # Re: Ça me laisse perplexe...

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

      L'outil fait du triage de bugs. Pas (encore) les corriger.

      • [^] # Re: Ça me laisse perplexe...

        Posté par . Évalué à 0.

        L'outil fait du triage de bugs. Pas (encore) les corriger.

        Et ça change quoi au raisonnement?

        • [^] # Re: Ça me laisse perplexe...

          Posté par . Évalué à 2.

          Ton raisonnement qui est « c'est pas bien de faire du tris automatique de bug » ? Tu as déjà fait du tris de bug ?

          • [^] # Re: Ça me laisse perplexe...

            Posté par . Évalué à -3. Dernière modification le 24/05/19 à 16:09.

            Ton raisonnement qui est « c'est pas bien de faire du tris automatique de bug » ?

            Raté, ce n'est pas mon raisonnement.

            Le raisonnement est: arriver à un point (ou volume de bugs) tel qu'on ait besoin d'une intelligence artificielle pour les gérer est probablement symptomatique. Je te laisse deviner de quoi. Pas envie de m'étendre là dessus.

            • [^] # Re: Ça me laisse perplexe...

              Posté par . Évalué à 4. Dernière modification le 24/05/19 à 16:13.

              Qu'il y a trop d'utilisateurs?

            • [^] # Re: Ça me laisse perplexe...

              Posté par . Évalué à 4.

              Raté, ce n'est pas mon raisonnement.

              Il faut qu'on devine ton raisonnement puis qu'on devine ce en quoi ce que dis la personne qui essaie de te répondre ne réponds pas à ce que tu voulais dire ?

              Donc qu'est-ce qui t'indique que ce sont des bugs et pas des demandes de fonctionnalités ou des questions ? Quel est le taux de doublon ?

              • [^] # Re: Ça me laisse perplexe...

                Posté par . Évalué à -2.

                Il faut qu'on devine ton raisonnement puis qu'on devine ce en quoi ce que dis la personne qui essaie de te répondre ne réponds pas à ce que tu voulais dire ?

                Quand tu ne comprends pas un message et que tu le sais, tu ne penses pas à demander des explications avant de juger? Genre: «que veux-tu dire exactement?»

                • [^] # Re: Ça me laisse perplexe...

                  Posté par . Évalué à 1.

                  Avant que tu le dise je ne le savais pas. Donc je te propose la prochaine fois d'être soit compréhensible directement soit suffisamment peu compréhensible pour que tes lecteurs sachent qu'ils ne te comprennent pas ;)

                  Après toi tu juge leurs outils avant de comprendre à quoi ils servent, est-ce vraiment mieux ?

                  • [^] # Re: Ça me laisse perplexe...

                    Posté par . Évalué à -4. Dernière modification le 24/05/19 à 17:47.

                    Avant que tu le dise je ne le savais pas. Donc je te propose la prochaine fois d'être soit compréhensible directement soit suffisamment peu compréhensible pour que tes lecteurs sachent qu'ils ne te comprennent pas ;)

                    Non. Je n'endosserai pas la responsabilité de "mes lecteurs" à faire preuve d'esprit critique et à [se] questionner avant de juger à la hâte…

                    Après toi tu juge leurs outils avant de comprendre à quoi ils servent, est-ce vraiment mieux ?

                    … d'autant que, après avoir clairement expliqué mon message, tu viens une fois de plus de montrer que tu n'as toujours pas compris que ce n'est pas l'outil que je juge mais la situation qui a donné naissance à cet outil.

                    Visiblement la clarification de ma part, même a posteriori, n'a servi à rien et tu préfères me faire des suggestions afin de faciliter la tâche de ceux qui ne comprennent pas la subtilité sans s'en rendre compte. Je ne vois donc pas le moindre intérêt à satisfaire ta demande ni à continuer cette discussion stérile.

                    • [^] # Re: Ça me laisse perplexe...

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

                      après avoir clairement expliqué mon message

                      Tu n'as pas expliqué de manière claire pour les autres, sinon j'aurais pigé même en lisant vite fait :-)

        • [^] # Re: Ça me laisse perplexe...

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

          Que c'est pas un jeu à somme nulle. Ca permet de libérer du temps pour faire autre chose que déplacer un bug dans un composant ou d'ajouter un mot clé (qui est un boulot peu intéressant et que les machines peuvent faire maintenant).
          A la place, ce temps libéré nous permet d'améliorer les méta données (dans quelle version de firefox le bug a été introduit, par quel changement, etc) du bugs pour faciliter la vie des développeurs et des release managers. Automatiser le triage permet aussi d'être beaucoup plus réactif: les bugs sont devant bonnes personnes beaucoup plus rapidement (quelques minutes au lieu de quelques jours).

          Firefox est un projet tellement énorme (presque 20M de lignes de code) qu'il devient critique d'améliorer tous les outils de qualité pour pouvoir tenir le rythme et la qualité…

Suivre le flux des commentaires

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