La petite chronique du web #3
Le web a toujours été un média en constante évolution. Avec des navigateurs qui se mettent à jour toutes les six semaines et des standards qui évoluent en permanence, il faut rester à l’affût pour savoir quelles sont les nouveautés qui arrivent. Tous les trimestres, on se fait un petit tour d’horizon pour rester à jour. Alors, que s’est-il passé au troisième trimestre 2019 ?
Edge
On attend toujours Edge 19 qui sera sur une base Chromium, mais si vous êtes curieux vous pouvez vous tenir au courant via le site Microsoft Edge Insider. Pour les plus curieux, il est enfin possible de tester une version pour macOS.
Chrome
De son côté, Chrome a sorti deux versions assez modestes en ces mois d’été : Chrome 76 le 30 juillet et Chrome 77 le 10 septembre.
Les principaux ajouts de Chrome 76 sont le support des Dark Mode via la Media Query prefers-color-scheme et la possibilité de pouvoir facilement installer une PWA sur environnement de bureau. Mais surtout, grosse news, l’arrivée native du lazy loading des ressources HTML ! Enfin, plus besoin de bidouiller des trucs bizarres avec JavaScript, maintenant, c’est natif dans Chrome (et ça se polyfill très bien dans les autres navigateurs).
Chrome 77 propose l’API Largest Contentful Paint qui permet de mesurer plus finement à quel moment un élément significatif devient visible lors du chargement des pages. Encore un super outil de mesure de performance ! On notera également d’intéressantes améliorations dans le support des formulaires HTML (en particulier pour en créer facilement de nouveaux via Web Component)
Enfin, pensez à le noter dans vos agendas, le prochain Chrome Dev Summit aura lieu les 11 et 12 novembre prochains et sera disponible en live stream sur YouTube (ce qui est plutôt cool quand on ne peut pas être soi-même à San Francisco !)
Firefox
Firefox a aussi sorti deux versions au troisième trimestre : Firefox 68 le 7 juillet et Firefox 69 le 3 septembre.
La première chose à noter est que Firefox 68 est la nouvelle ESR pour les entreprises qui sera maintenue pendant environ un an. Pour rappel, les versions ESR (Extended Support Release) sont des versions de Firefox qui se verront appliquer les patchs de sécurité pendant environ un an, les versions ordinaires de Firefox n’étant maintenues que pendant environ six semaines, une nouvelle version chassant l’ancienne. Si votre entreprise ou votre client utilise Firefox ESR, c’est l’heure de la migration, la précédente ESR, Firefox 60 n’étant plus maintenue.
De son côté, Firefox 69 amène énormément d’évolutions sur ses outils de développement, à tel point qu’il devient de plus en plus difficile de dire qui de Chrome ou de Firefox propose les meilleurs outils. Cette fois-ci, on notera quelques améliorations sur les outils CSS et Accessibilité et l’arrivée des points d’arrêt d’événement mais surtout, enfin, une refonte en profondeur de leur système de débogage à distance (remote debugging). Allez jeter un coup d’œil à la page about:debugging
ça change la vie ! À noter que ce travail, entamé il y a plusieurs mois, a encouragé l’équipe de Puppeteer à travailler sur un connecteur pour Firefox. Ce n’est pas encore officiellement stable, mais ça s’en rapproche sérieusement. Et si comme moi vous utilisez VSCode, jetez un coup d’œil à cette petite extension.
Sinon pour le reste, on notera les points suivants :
- Ajout du support pour les BigInt de JavaScript et du support de la syntaxe des champs d’instance de classe publique en préparation du future ESNext (2020?).
- Afin de résoudre certains problèmes de compatibilité web, Firefox se permet parfois de changer son comportement vis-à-vis de certains sites web spécifiques. Vous pouvez désormais accéder à la liste complète de ces adaptations et les désactiver en cas de besoin via la page
about:compat
. - Ajout du support des API Resize Observer et Microtasks. (FF 69)
Enfin, il faut noter l’annonce de Mozilla qui vient de décider d’accélérer le cycle de sortie de Firefox à une version toutes les quatre semaines (une fois par mois). Ce changement de rythme se fera lors de la sortie de Firefox 71 en décembre prochain, on aura donc l’occasion d’en reparler.
Safari
Enfin le voilà, le nouveau Safari 13 est sorti le 20 septembre, avec une version par an il y a pas mal de trucs à dire, aussi on ne va se focaliser que sur les changements les plus importants pour les développeurs web.
Un des ajouts les plus attendus était peut-être le support de l’API Pointer Events. C’était le dernier navigateur à ne pas la supporter, mais c’est désormais chose faite. On peut enfin créer une gestion des pointeurs (Souris, tactile, stylet, etc.) unifiée entre tous les navigateurs sans nécessairement passer par une bibliothèque tierce. Attention tout de même à quelques petits glitches d’implémentation sur iOS.
Moins attendu, mais tout aussi important, l’ajout de l’API Visual Viewport. Le statut de ce standard est encore un peu ambigu, mais avec une double implémentation de Chrome et Safari plus Firefox qui travaille activement à son implémentation, ça ne devrait pas être un gros problème.
Plus anecdotiques, mais pas sans conséquences, quelques mises à jour ont été faites autour de l’Intelligent Tracking Prevention, le système de protection de la vie privée d’Apple. Le sujet est complexe, mais méfiez-vous si vous faites des appels croisés de ressources entre différents domaines.
Sinon, pour le fun, Safari est le deuxième navigateur à supporter les dégradés CSS coniques.
Côté expérimentation, l’ajout le plus notable de Safari 13 est l’arrivée de l’API experimental WebGPU. WebGPU a pour vocation d’offrir une nouvelle API pour interagir avec les processeurs graphiques, que ce soit pour faire du rendu 3D ou du calcul parallèle. Attention, cette API étant encore expérimentale, vous devrez l’activer via le menu « Développement » de Safari. On aura l’occasion d’en reparler, les autres constructeurs de navigateurs travaillant aussi sur leur implémentation de cette API.
Côté outils pour développeurs, au-delà d’un très bienvenu boost de performance, on voit arriver un nouvel onglet « Audit » qui permet d’importer, exécuter et exporter des suites de tests. C’est génial, super utile et… pas documenté du tout au moment où j’écris ces lignes ! Alors, ok, il suffit d’exporter une des suites de test présentent par défaut et d’observer le code 5 minutes pour comprendre comment en faire d’autres, mais c’est vraiment dommage de devoir en passer par là. Au-delà de ça, les changements sont moins évidents mais on remarque facilement qu’un gros travail de fond a été fait pour qu’il vaille la peine de redonner une chance à ces outils au quotidien.
Un point important pour les développeurs web, iOS13 offre désormais un support du standard WebDriver. On va enfin pouvoir piloter et automatiser des tests sur Safari pour iOS ! Attention, ça ne change rien au fait qu’on n’ait toujours pas le droit de virtualiser iOS sur autre chose qu’un Mac.
Enfin, côté suppression de fonctionnalité, on notera la disparition de l’API WebSQL qui était la proposition d’Apple en terme de base de données embarquée par le navigateur. Les choix de standardisation s’étant portés sur IndexedDB, la vieille API WebSQL était gardée uniquement à titre de rétrocompatibilité le temps pour les développeurs de faire la migration, ce qui devrait être le cas maintenant. Si vous avez encore du code non standard qui utilise WebSQL dans vos projets, vous devez en faire une priorité de migration dès maintenant.
Et pour ceux qui étaient concernés, ça avait été annoncé de longue date mais l’ancien système d’extension de Safari a été supprimé. Si vous maintenez une veille extension, Apple a fourni un guide de transition vers le nouveau système d’extension.
Standards et spécifications
Au-delà des implémentations spécifiques, des avancées plus globales sont faites sur le front des standards eux-mêmes.
Pour ceux qui n’auraient pas vu passer l’info, allez jeter un coup d’œil au projet Deno, un nouvel environnement d’exécution JavaScript créé par le papa de Node.js et qui corrige pas mal de problèmes de design et d’architecture de ce même Node.js. Ce n’est pas encore suffisamment mature pour être embarqué sur des projets de production, mais on sent bien que ça va vite prendre de l’envergure.
Du 16 au 20 septembre s’est déroulé le TPAC 2019 du W3C (Au Japon cette année). Le TPAC, c’est le gros raout du W3C où la plupart des groupes de travail se réunissent en présentiel pour discuter de leurs sujets les plus chauds. On notera que le plus petit groupe était celui sur l’internationalisation (6 personnes) et le plus important celui sur Web Payment (60 personnes, on sent qu’il y a un fort enjeu sur ce sujet).
Quelques autres news à noter côté W3C :
- Une petite mise à jour et appel à implémentation de la spécification CSS Display Module Level 3 (Une lecture assez hardcore mais qui permet de connaître vraiment l’impact des différentes valeurs de la propriété css display).
- Publication des premières Candidate Recommendation de WebAssembly 1.0 : WebAssembly Core Specification, WebAssembly JavaScript Interface, WebAssembly Web API. C’est juste une question de formalisme dans la mesure où WebAssembly est déjà très bien implémenté par tous les navigateurs du marché. Si vous voulez en savoir plus sur le futur de WebAssembly (et pourquoi pas, y participer), jetez un coup d’œil au GitHub du groupe de travail.
- Verifiable Credentials Data Model 1.0 vient de passer en Proposed Recommendation. C’est du solide si vous devez gérer des sujets de sécurité et vie privée.
- Accessibility Conformance Testing (ACT) Rules Format 1.0 vient de passer en Proposed Recommendation. Cette spécification définit un format standard pour écrire et partager des tests d’accessibilité. L’objectif est de faciliter le développement d’outils de tests automatisés de l’accessibilité. (❤️ A11Y)
- Publication du premier Working Draft de Publication Manifest, un format de manifeste pour les publications web, très inspiré par les travaux de schema.org, il s’agit de fournir un système de métadonnées normalisé au format JSON-LD pour les publications web. Si vos projets ont de fortes problématiques SEO ça vaut sans doute le coup de vous y intéresser.
- Publication des Working Drafts: Pronunciation User Scenarios, Pronunciation Use Cases, and Pronunciation Gap Analysis. Ces documents ont pour objectif de normer la manière de transformer du texte en voix (Text To Speech—TTS) afin de fournir le meilleur rendu vocal possible pour HTML. (❤️ A11Y)
- Publication de l’article Audio and Video Media Accessible par la WAI. À lire absolument si vos projets gèrent de l’audio ou de la vidéo. (❤️ A11Y)
- Publication du premier Working Draft pour un nouveau format d’application hybride: MiniApp Standardization White Paper. Sujet super intéressant à suivre de près 🔥.
C’est tout pour ce trimestre, on se retrouve dans 3 mois pour la suite des aventures.