3D

Vladimir Vukicevic est un pionnier de l'utilisation de Canvas pour afficher de la 3D dans le navigateur. Avant de travailler sur l'implémentation de WebGL dans Firefox, il expérimentait depuis longtemps le développement d'une API JavaScript compatible avec OpenGL ES. Celle-ci était disponible via l'extension Canvas 3D (dont le développement a je crois à présent été arrêté). En s'appuyant sur cette extension, Cathy Leung a initié le projet C3DL dont le but est de fournir une bibliothèque JavaScript de haut niveau pour faire de la 3D dans le navigateur. WebGL prenant la suite de l'extension, le projet C3DL est en train de porter la bibliothèque. On pourra donc bientôt l'utiliser pour réaliser relativement facilement des animations en 3D dans tous les navigateurs implémentant WebGL [1].

De son côté, David Humphrey, un collègue de Cathy, a décidé d'utiliser C3DL pour ajouter la gestion de la 3D à Processing.js. Processing.js permet d'utiliser le langage Processing dans un navigateur en se basant uniquement sur JavaScript et Canvas. Processing est un langage de programmation orienté vers la création de graphismes fixes ou animés, en 2D et 3D. Il a été initialement développé pour créer des œuvres artistiques, et de nombreux artistes s'en servent. Mais il peut avoir de nombreuses autres usages, pour visualiser des données, ou dans le domaine éducatif, par exemple comme initiation à la programmation (un nouveau Logo). Processing nécessite normalement Java, mais John Resig, le fameux Ninja JavaScript, a commencé il y a quelques temps à écrire un interpréteur en JavaScript pour exécuter des programmes Processing directement dans le navigateur, sans machine virtuelle Java. David Humphrey se propose donc d'enrichir le projet des fonctions 3D de Processing, en utilisant C3DL. Le projet Processing for the Web est porté par la branche Education de la MoFo. Le but est à la fois d'améliorer les performance de JavaScript et de Canvas dans le navigateur, en s'appliquant à faire tourner au mieux les très nombreux programmes Processing existant, améliorer également Bespin, qui sera bien sûr l'IDE de choix pour développer, et de renforcer le Web Libre en élargissant sans cesse l'horizon de ce qu'il est possible de faire directement dans un navigateur avec des technologies libres et ouvertes. J'ai hâte de voir les premiers résultats, car Processing permet réellement de faire de jolies choses. Surtout, avec son résultat visuel, il donne envie d'apprendre à coder. J'espère que le projet pourra amener de nouvelles générations à la programmation.

Vracs de lézard

A Prague

  • BeFox publie un long compte-rendu du Mozilla Camp Europe 2009 qui a réuni 160 chanceux (donc de rares chanceuses, l'égalité est un long chemin) à Prague le ouikende dernier. La principale annonce à mon sens est la confirmation par Mike Beltzner que Mozilla va essayer d'adopter un cycle de développement plus court, pour sortir de nouvelles versions tous les 6 mois. Sont ainsi prévus Firefox 3.6 et 3.7 en 2010, puis le 4.0 (qui devrait inclure Electrolysis) et le 4.1 en 2011. La feuille de route pour ces versions est déjà relativement définie, avec notamment l'intégration native à Firefox de bon nombre de projets des laboratoires, disponibles actuellement sous forme d'extension;
  • Jan Odvárko a profité du même Camp pour faire une alléchante présentation des nouveautés de la prochaine version de Firebug (la 1.5). Au menu, la possibilité de ne pas effacer la console lorsqu'on recharge une page, de mettre des points d'arrêt sur les modifications du DOM (par exemple lorsqu'un attribut est modifié) et des propriétés des objets JavaScript, de mettre également des points d'arrêt conditionnels sur les XHR (en fonction de la valeur des arguments par exemple), un meilleur affichage de toutes les données échangées (avec par exemple des explorateurs JSON et XML pour le contenu des XHR)... Mais, surtout, et j'attends cela depuis des années, à la demande des développeurs de Firebug Firefox pourrait bientôt enfin disposer d'une interface pour lister les évènements attachés à un élément (un manque incompréhensible de l'API Events du DOM). Et Firebug proposer dans la foulée un nouveau panel listant tous les évènements définis dans une page. Et là, \o/ !
  • toujours au même Camp, Matthew Gertner a fait une présentation de Prism. Bien qu'existant depuis de nombreuses années, Prism est encore assez peu connu. C'est une version allégée de Firefox permettant de faire fonctionner une application Web dans son propre navigateur, réduisant ainsi un peu plus la frontière entre applications en ligne et applications "classiques". Avec Prism, vous pouvez par exemple utiliser un Webmail pratiquement comme un client de messagerie "lourd". Cette présentation est une bonne occasion de découvrir Prism si vous n'en aviez pas encore entendu parler;
  • Mark Surman continue à mener la réflexion autour de Drumbeat. A prague, sept idées de mini-campagnes sont nées, allez donc y jeter un œil pour voir si elles vous inspirent et si vous pouvez les relayer auprès de non-geeks de votre connaissance. On y trouve par exemple des réflexions sur les droits sur les photos partagées en ligne, sur comment expliquer l'OpenWeb à un enfant de 6 ans, ou l'idée de fixer une date pour la mort d'IE 6 (je propose la semaine dernière)...

Ca arrive la nuit

La plupart des brèves suivantes concernent les versions de développement de Firefox.

  • les balises <video /> permettent à présent d'afficher les films en plein écran, la fonctionnalité est accessible via le menu contextuel. Des travaux sont en cours pour accélérer l'affichage en plein écran en utilisant OpenGL;
  • deux nouvelles url spéciales sont arrivées, avec des informations utiles pour les développeurs : about:memory renseigne sur la consommation mémoire[2] et about:support détaille la configuration : version exacte du navigateur, extensions installées, préférences modifiées par l'utilisateur... bref, toutes les informations utiles à joindre à un rapport d'anomalie;
  • à propos de mémoire, Atul Varma, dont je suis décidément fan, vient de créer une nouvelle version de l'outil d'inspection de la mémoire, sous la forme d'une extension. C'est joli, et nul doute que si vous développez une application Web ça pourra vous aider à détecter des fuites mémoires dans vos pages;
  • après Flash, Firefox 3.6 essaiera de vérifier que vous avez la dernière version de tous vos plugins. Cela utilisera un service Web, PFS2, installé sur les serveurs de Mozilla, capable de détecter la version de tous les plugins installés. Pour aider à le mettre au point, si vous utilisez des plugins peu communs, n'hésitez pas à visiter cette page[3] pour vérifier qu'ils sont correctement détectés;
  • certains se souviennent peut-être que Firefox supporte les profils de couleurs ICC qui peuvent être dans les méta-données des photos. Depuis le 3.5, cette fonctionnalité est activée par défaut. Jeff Muizelaar a annoncé en juin que les prochaines versions utiliseraient pour cela un nouveau mécanisme, QCMS, qui apportera des gains en terme de sécurité et de vitesse. De nouveaux gains de performance viennent encore d'être obtenus, et l'affichage des photos avec un profil ICC pourrait être plus de dix fois plus rapide qu'actuellement. Les amateurs de belles photos apprécieront probablement;
  • grâce à CSS 3, on peut indiquer dans une feuille de style des URL de fontes à utiliser. Les prochaines versions de Firefox supporteront un nouveau format de fichier de fontes, WOFF, vous pouvez voir une démonstration ici, avec une nightly;
  • Firefox a franchi dans la nuit de mercredi à jeudi la barre des 300 millions de téléchargements (au passage on voit le gain de succès du navigateur, puisque le nombre total de téléchargements, toutes version confondues, est d'un peu plus d'un milliard);

Ailleurs

Validité - la hshouma, je ne connaissais même pas le projet Unicorn du W3C, alors qu'il a fait ses premiers pas depuis 2006. Unicorn, c'est un validateur universel : vous lui donnez une URL ou un ficher et il effectue en une seule passe tous les tests possibles de conformité aux standards : (X)HTML, CSS... le tout affiché de façon synthétique. Cerise sur la chantilly, le code est libre, vous pouvez donc le déployer sur un serveur de test et l'utiliser par exemple dans le cadre d'un processus d'intégration continue.

Accessibilité - ARIA (Accessible Rich Interactive Applications) est une norme définie par le W3C visant à rendre les applications web accessibles. Cela passe entre autres par l'ajout d'un attribut aux éléments HTML décrivant leur rôle. On pourra ainsi préciser qu'un élément LI sert d'onglet en lui attribuant le rôle tab : <li aria:role="tab">. La spécification définit 59 rôles. Microsoft de son côté a développé sa propre technologie, Microsoft Active Accessibility (MSAA). Elle utilise elle aussi la notion de rôle. 47 rôles ont des correspondances entre ARIA et MSAA. Sous Windows, les navigateurs peuvent ainsi relier certains rôles ARIA à MSAA, rendant les applications Web plus accessibles aux périphériques qui supportent MSAA. Selon le groupe Paciello, qui fait des études sur l'accessibilité, ce sont Firefox 3.6 et IE 8 (pour une fois) qui ont poussé le plus loin l'intégration d'ARIA et de MSAA, puiqu'ils font la correspondance pour 44 et 43 rôles. Les autres navigateurs testé, Opera, Webkit et Chrome, sont loin derrière. Ce qui signifie qu'actuellement sous Windows, les deux navigateurs qui fonctionnent le mieux avec les technologies d'assistance sont FF et IE. Quelqu'un aurait des infos sur l'accessibilité sur Mac ou UNIX-like (je présume que ça dépend du bureau) ?

HTML5 - J'avais loupé ce billet d'Eric Meyer sur HTML 5, où il explique que la texte propremetn dit de la spécification n'est pas destiné aux développeurs Web. En effet, il essaie de définir de la manière la plus précise toutes les caractéristiques "internes" du format, afin que les implémentations soient les plus proches possibles les unes des autres (on sait par exemple que des vides dans CSS 2 ont conduit à des implémentations conformes à la norme mais incompatibles entre elles). Environ la moitié du document est composé de notes décrivant précisément la façon dont la norme doit être implémentée. Eric et ses commentateurs pointent donc vers deux documents plus lisibles : une version de la norme sans les notes d'implémentation (ça reste quant même énorme...) et un extrait reprenant juste le détail des éléments HTML, donc en faisant abstraction de tout le reste, comme le stockage local et les fonctions spécifiques aux applications Web. Si vous êtes intégrateur, je pense que c'est par ce document qu'il vaut mieux commencer votre lecture.

Notes

[1] on me souffle d'ailleurs dans l'oreillette qu'après Safari et Firefox Google Chrome viendrait lui aussi de rejoindre le club. Ne manque plus qu'Opera et tous les navigateurs modernes offriront de la 3D.

[2] ça ne fonctionne pas encore sous GNU/Linux pour des problèmes d'édition de lien, et c'est pour l'instant assez rudimentaire, mais les bases sont là, et ça servira je pense surtout au projet Electrolysis, lorsque Firefox utilisera plusieurs processus

[3] attention, ce n'est pas la page définitive et vous aurez un message d'avertissement à propos du certificat de sécurité