<?xml version="1.0" encoding="utf-8"?><?xml-stylesheet title="XSL formatting" type="text/xsl" href="http://jeremie.patonnier.net/feed/rss2/xslt" ?><rss version="2.0"
  xmlns:dc="http://purl.org/dc/elements/1.1/"
  xmlns:wfw="http://wellformedweb.org/CommentAPI/"
  xmlns:content="http://purl.org/rss/1.0/modules/content/"
  xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
  <title>Chez Jérémie - Mot-clé - Mozilla</title>
  <link>http://jeremie.patonnier.net/</link>
  <atom:link href="http://jeremie.patonnier.net/feed/tag/Mozilla/rss2" rel="self" type="application/rss+xml"/>
  <description>Chez Jérémie, parfois c'est sérieux, parfois non !</description>
  <language>fr</language>
  <pubDate>Tue, 04 Jul 2017 19:32:17 +0200</pubDate>
  <copyright>Creative Commons BY-NC-SA 2.0 Fr</copyright>
  <docs>http://blogs.law.harvard.edu/tech/rss</docs>
  <generator>Dotclear</generator>

  
  <item>
    <title>MDN fait peau neuve</title>
    <link>http://jeremie.patonnier.net/post/2012/08/12/MDN-fait-peau-neuve</link>
    <guid isPermaLink="false">urn:md5:2207fd98e4a4015b7f11b73241bf63b4</guid>
    <pubDate>Sun, 12 Aug 2012 14:56:00 +0200</pubDate>
    <dc:creator>Jeremie</dc:creator>
        <category>Web</category>
        <category>documentation</category><category>Mozilla</category>
    <description>    &lt;p&gt;Après plusieurs mois de travail intense, la plateforme technique qui supporte &lt;a href=&quot;https://developer.mozilla.org&quot;&gt;MDN&lt;/a&gt; vient de changer. Originellement basée sur la solution DekiWiki de la société &lt;a href=&quot;http://www.mindtouch.com/&quot;&gt;MindTouch&lt;/a&gt;, la documentation de Mozilla vient de passer sous une solution 100% maison&amp;#160;: Kuma. Kuma est un projet codé à l&amp;#8217;aide de &lt;a href=&quot;https://www.djangoproject.com/&quot;&gt;Python/Django&lt;/a&gt; et est directement inspiré de la plateforme qui supporte déjà &lt;a href=&quot;http://support.mozilla.org&quot;&gt;SUMO&lt;/a&gt; (le support utilisateur de Firefox) connu sous le nom de &lt;a href=&quot;https://github.com/mozilla/kitsune/&quot;&gt;Kitsune&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Comme tous les projets Mozilla, Kuma est 100% open source. &lt;a href=&quot;https://github.com/mozilla/kuma/&quot;&gt;Le code est disponible sur GitHub&lt;/a&gt; et vous êtes largement invité à proposer patches et fixes si vous en avez envie &lt;img src=&quot;/themes/default/smilies/smile.png&quot; alt=&quot;:)&quot; class=&quot;smiley&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Le principal intérêt pour MDN de passer sur une plateforme ouverte et développée par Mozilla est simple&amp;#160;: Pouvoir maîtriser les évolutions à apporter à la plateforme pour garantir la meilleure expérience utilisateur possible sur MDN. En la matière, les besoins sont importants et Mozilla a de grandes ambitions pour MDN.&lt;/p&gt;
&lt;h2&gt;Quoi de neuf&amp;#160;?&lt;/h2&gt;
&lt;p&gt;Si la plateforme, très jeune, souffre encore de quelques bugs en cours de résolution, les premières améliorations sont déjà visibles. Les deux plus évidentes sont liées à la localisation et aux templates personnalisés.&lt;/p&gt;
&lt;p&gt;Concernant la localisation des contenus, disons-le clairement&amp;#160;: on ne pouvait pas faire pire que ce qu&amp;#8217;il y avait avant. Désormais, à chaque fois que vous voulez traduire une page, vous disposerez toujours de la version anglaise d&amp;#8217;un coté et de votre propre version de l&amp;#8217;autre, de même les liens entre les différentes versions localisées seront automatiques et vous avez même la possibilité de localiser l&amp;#8217;URL de chaque page comme bon vous semble. La fonctionnalité la plus intéressante est liée à la navigation&amp;#160;: lorsque vous naviguez sur une version locale de MDN (disons, le français par exemple) et qu&amp;#8217;un contenu n&amp;#8217;est pas disponible dans cette langue (souvent matérialisé par un lien rouge), vous accèderez automatiquement au contenu en anglais avec un bandeau vous proposant directement de traduire ce contenu.&lt;/p&gt;
&lt;p&gt;Concernant les templates personnalisés, l&amp;#8217;équipe de développement a créé un langage de script entièrement basé sur JavaScript (exécuté coté serveur) qui porte le nom de &lt;a href=&quot;https://developer.mozilla.org/fr/docs/Project:Introduction_to_KumaScript&quot;&gt;KumaScript&lt;/a&gt;. En clair, c&amp;#8217;est du JavaScript avec quelques extensions pour en faire un langage de gabarit autonome (précédemment, il s&amp;#8217;agissait d&amp;#8217;un langage basé sur Lua, peu ou pas extensible). Les API disponibles restent encore sommaires, n&amp;#8217;hésitez donc pas à &lt;a href=&quot;https://bugzilla.mozilla.org/enter_bug.cgi?product=Mozilla%20Developer%20Network&quot;&gt;ouvrir des bugs&lt;/a&gt; si vous avez des besoins particuliers. Ce système de template permet de créer des automatismes et des gabarits faciles à réutiliser d&amp;#8217;une page à l&amp;#8217;autre et il y a beaucoup à faire en la matière.&lt;/p&gt;
&lt;h2&gt;Et après&amp;#160;?&lt;/h2&gt;
&lt;p&gt;Dans les prochains mois, de nouvelles fonctionnalités vont faire leur apparition. La semaine dernière, toute l&amp;#8217;équipe MDN (rédacteurs et développeurs) ainsi que quelques contributeurs se sont réunis à Toronto pour planifier et prioriser ces améliorations, 3 jours intenses sous la direction d&amp;#8217;&lt;a href=&quot;https://twitter.com/alispivak&quot;&gt;Ali Spivak&lt;/a&gt;, la nouvelle «&amp;#160;Product Manager&amp;#160;» de MDN. La listes de toutes les idées que nous avons amenées est beaucoup trop longue pour tout vous mettre ici… disons simplement que l&amp;#8217;équipe de développement a du boulot pour plusieurs années si personne ne les aide &lt;img src=&quot;/themes/default/smilies/wink.png&quot; alt=&quot;;)&quot; class=&quot;smiley&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Parmi les principales priorités, les éléments suivant sont ressortis et vont faire l&amp;#8217;objet d&amp;#8217;un effort particulier dans les prochaines semaines/mois&amp;#160;:&lt;/p&gt;
&lt;h3&gt;1. Sécurité&lt;/h3&gt;
&lt;p&gt;La plateforme étant encore jeune, certaines fonctionnalités ont besoin d&amp;#8217;êtres sérieusement passées au crible des questions de sécurité. Ainsi, des filtres vont être appliqués ou améliorés pour rendre l&amp;#8217;édition à la fois plus souple et plus sur (en particulier pour lutter contre les attaques de type CSRF), la politique de sécurité actuelle étant de tout interdire par défaut (script, iframe, etc. ne sont pas permis, même pour des usages légitimes). De même, l&amp;#8217;envoi de fichiers n&amp;#8217;est pour l&amp;#8217;instant pas permis mais tout cela va rapidement changer.&lt;/p&gt;
&lt;h3&gt;2. Exemples de codes&lt;/h3&gt;
&lt;p&gt;Un travail de fond va être réalisé pour permettre aux utilisateurs d&amp;#8217;embarquer des exemples de code actifs et modifiables (à la &lt;a href=&quot;http://jsfiddle.net/&quot;&gt;jsFiddle&lt;/a&gt; ou &lt;a href=&quot;http://dabblet.com/&quot;&gt;dabblet&lt;/a&gt;), le tout dans des conditions garantissant la sécurité des utilisateurs et des contenus. C&amp;#8217;est sans doute le plus gros chantier des mois à venir (et celui que j’attends le plus impatiemment pour pouvoir déployer des exemples dans la doc SVG ;).&lt;/p&gt;
&lt;h3&gt;3. Localisation&lt;/h3&gt;
&lt;p&gt;Les outils pour la localisation vont être très largement améliorés (oui, c&amp;#8217;est possible). Il s&amp;#8217;agit d&amp;#8217;un travail qui va s&amp;#8217;étaler sur plusieurs mois (voire plusieurs années). Une des premières améliorations va être la possibilité de choisir la langue d&amp;#8217;origine pour réaliser une traduction (aujourd&amp;#8217;hui, c&amp;#8217;est forcément l&amp;#8217;anglais). Dans le même temps les bases d&amp;#8217;un tableau de bord vont être posées pour permettre de plus facilement prioriser et planifier les pages à traduire.&lt;/p&gt;
&lt;h3&gt;4. API d&amp;#8217;écriture&lt;/h3&gt;
&lt;p&gt;Pour le moment, Kuma n&amp;#8217;offre qu&amp;#8217;une API en lecture des contenus de MDN. Afin de rétablir le fonctionnement de certains outils et permettre le développement d&amp;#8217;outils de consultation et d&amp;#8217;édition tiers, une API permettant d&amp;#8217;écrire du contenu dans MDN va être mise en œuvre. L&amp;#8217;objectif est de permettre aux personnes voulant éditer du contenu avec leur éditeur de textes préféré de le faire ou bien de permettre à certains projets utilisant d&amp;#8217;autres systèmes de wiki (GitHub par exemple) de partager leurs contenus facilement sur MDN (c&amp;#8217;est typiquement &lt;a href=&quot;http://jeremie.patonnier.net/post/2012/08/12/%20https://github.com/mozilla/addon-sdk-sdocs&quot;&gt;le cas du projet&lt;/a&gt; &lt;a href=&quot;https://github.com/mozilla/addon-sdk&quot;&gt;JetPack&lt;/a&gt; pour Firefox).&lt;/p&gt;
&lt;h3&gt;5. Présence dans les moteurs de recherche&lt;/h3&gt;
&lt;p&gt;MDN souffre encore de certains manques qui grèvent son indexation par les moteurs de recherche. Les points les plus évidents vont être rapidement améliorés&amp;#160;: qualité des méta-données (titre et description) et ajout d&amp;#8217;un sitemap.&lt;/p&gt;
&lt;h3&gt;6. Recherche et tableau de bord&lt;/h3&gt;
&lt;p&gt;Un travail de fond va être engagé afin d&amp;#8217;améliorer sérieusement la qualité des recherches sur MDN (techniquement parlant, cela va passer par le déploiement d&amp;#8217;une base de données &lt;a href=&quot;http://www.elasticsearch.org/&quot;&gt;Elastic Search&lt;/a&gt;) et permettre de poser les bases techniques permettant de créer un véritable système de tableau de bord pour les éditeurs. Ce tableau de bord permettra dans un premier temps aux éditeurs de suivre et filtrer les contenus qui les intéressent pour, dans un second temps se transformer en un véritable système d&amp;#8217;échange, de communication et de coordination (mais tout ça va prendre du temps, il va falloir être patient).&lt;/p&gt;
&lt;h2&gt;Mais encore…&lt;/h2&gt;
&lt;p&gt;Tout cela n&amp;#8217;est que le début. Bien d&amp;#8217;autre demandes ont été émises, parmi lesquels ont été priorisées les suivantes&amp;#160;:&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;Localisation complète du système de tags&lt;/li&gt;
&lt;li&gt;Possibilité de déplacer des ensembles de pages en une fois&lt;/li&gt;
&lt;li&gt;Améliorer les liens croisés entre documentation et démos&lt;/li&gt;
&lt;li&gt;Mettre en base de données, automatiser et partager les tables de compatibilité navigateurs&lt;/li&gt;
&lt;li&gt;Améliorer le bandeau de localisation des articles non-traduit pour directement choisir la langue d&amp;#8217;affichage alternative&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Et bien plus encore… Si cela vous intéresse, vous trouverez toutes les notes de la semaine de travail sur ce Pad&amp;#160;: &lt;a href=&quot;https://etherpad.mozilla.org/MDN-Toronto-2012&quot;&gt;https://etherpad.mozilla.org/MDN-Toronto-2012&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Enfin, n&amp;#8217;hésitez pas à &lt;a href=&quot;https://bugzilla.mozilla.org/enter_bug.cgi?product=Mozilla%20Developer%20Network&quot;&gt;ouvrir des bugs&lt;/a&gt; si vous avez des besoins ou des fonctionnalités que vous souhaiteriez voir dans MDN. L&amp;#8217;équipe a profité de la réunion de la semaine dernière pour revoir son système de triage et de priorisation des bugs afin que leur traitement soit plus simple et plus compréhensible par tout le monde. L&amp;#8217;opportunité de travailler sur un redesign de MDN a également été évoqué, cela fera l&amp;#8217;objet d&amp;#8217;un projet à part entière dans les prochains mois.&lt;/p&gt;
&lt;p&gt;Ce n&amp;#8217;est certes que le début et nul ne sait comment tout ça va évoluer, mais les choses sont bien engagées et MDN est bien parti pour devenir la documentation de référence du Web ouvert en étant désormais lui-même ouvert et accessible à tous. Je profite de l&amp;#8217;occasion pour remercier chaleureusement toute l&amp;#8217;équipe de développement de Kuma&amp;#160;: Luke Crouch (&lt;a href=&quot;https://github.com/groovecoder&quot;&gt;groovecoder&lt;/a&gt;), Les Orchard (&lt;a href=&quot;https://github.com/lmorchard&quot;&gt;lmorchard&lt;/a&gt;), David Walsh (&lt;a href=&quot;https://github.com/darkwing&quot;&gt;darkwing&lt;/a&gt;) et James Bennett (&lt;a href=&quot;https://github.com/ubernostrum&quot;&gt;ubernostrum&lt;/a&gt;). Ils font un travail remarquable qui mérite d&amp;#8217;être souligné.&lt;/p&gt;
&lt;p&gt;Bonne documentation (^_^)&lt;/p&gt;</description>

    

      </item>
  
  <item>
    <title>Bien démarrer avec MDN</title>
    <link>http://jeremie.patonnier.net/post/2012/04/24/Bien-demarrer-avec-MDN</link>
    <guid isPermaLink="false">urn:md5:f15da5fb3a03b1de385c02359a36d16a</guid>
    <pubDate>Tue, 24 Apr 2012 21:12:00 +0200</pubDate>
    <dc:creator>Jeremie</dc:creator>
        <category>Web</category>
        <category>documentation</category><category>Mozilla</category>
    <description>&lt;p&gt;Depuis maintenant 2 ans environ, je contribue activement à &lt;a title=&quot;Mozilla Developer Network&quot; href=&quot;https://developer.mozilla.org/&quot;&gt;MDN&lt;/a&gt; (en particulier, j&amp;#8217;écris la doc de la partie dédiée à SVG&amp;#8230; en anglais pour l&amp;#8217;instant) et depuis le début de l&amp;#8217;année, &lt;a hreflang=&quot;fr&quot; href=&quot;https://mercredidoc.etherpad.mozilla.org/all&quot;&gt;j&amp;#8217;organise tous les mercredis une petite soirée&lt;/a&gt; pour ceux qui veulent découvrir et aider à compléter la documentation du web ouvert chez Mozilla. A cette occasion, il y a un certain nombre de questions qui me sont posées régulièrement. En voici la liste avec les réponses qui vont bien.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Update&amp;#160;: This article has been &lt;a hreflang=&quot;en&quot; href=&quot;http://hacks.mozilla.org/2012/05/mdn-first-steps/&quot;&gt;translate into English&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Update 2&amp;#160;: &lt;/em&gt;&lt;span id=&quot;result_box&quot; class=&quot;short_text&quot; lang=&quot;es&quot;&gt;&lt;span style=&quot;font-style: italic;&quot; class=&quot;hps&quot;&gt;Este&lt;/span&gt;&lt;span style=&quot;font-style: italic;&quot; class=&quot;hps&quot;&gt;artículo fue &lt;/span&gt;&lt;a style=&quot;font-style: italic;&quot; hreflang=&quot;es&quot; href=&quot;http://betoscopio.drupalgardens.com/blog/primeros-pasos-en-mdn&quot;&gt;&lt;span class=&quot;hps&quot;&gt;traducido al&lt;/span&gt; &lt;span class=&quot;hps&quot;&gt;castellano&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;    &lt;h2&gt;C&amp;#8217;est quoi MDN&amp;#160;?&lt;/h2&gt;
&lt;p&gt;Ne riez pas, vous n&amp;#8217;imaginez pas le nombre de fois où j&amp;#8217;ai entendu cette question.&lt;/p&gt;
&lt;p&gt;Alors pour faire simple, MDN, c&amp;#8217;est le &amp;#8220;Mozilla Developer Network&amp;#8221;. C&amp;#8217;est un site web qui regroupe la quasi totalité de la documentation liée aux produits Mozilla. On y trouve 3 grandes sortes de ressources&amp;#160;:&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;Des articles et des liens vers des ressources externes pour apprendre à utiliser les technologies du web&lt;/li&gt;
&lt;li&gt;Des démos des dernières technologies implémentées dans les navigateurs modernes (Ces démo sont issues d&amp;#8217;un concours mensuel, le &amp;#8220;&lt;a href=&quot;https://developer.mozilla.org/fr/demos/devderby&quot;&gt;Dev Derby&lt;/a&gt;&amp;#8221; organisé par John Karahalis)&lt;/li&gt;
&lt;li&gt;Une documentation de références (API, balises, attributs, propriétés) des technologies Mozilla mais aussi et surtout de toutes les technologies du Web ouvert (HTML, CSS, Javascript, SVG, WebGL, etc.)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Cette dernière partie, la documentation des technologies Web, est la plus importante (autant en volume qu&amp;#8217;en qualité) et celle sur laquelle, en ce moment, Mozilla porte ses plus gros efforts. Le point le plus notable de cette documentation c&amp;#8217;est qu&amp;#8217;elle est multi-navigateur avec des tables de compatibilité et des notes d&amp;#8217;implémentation pour d&amp;#8217;autres navigateurs que Firefox.&lt;/p&gt;
&lt;p&gt;Même si cette documentation est sans doute une des plus riches documentations généralistes qui soit sur le Web, elle est loin d&amp;#8217;être complète et c&amp;#8217;est là que vous pouvez intervenir pour aider à la compléter &lt;img src=&quot;/themes/default/smilies/wink.png&quot; alt=&quot;;)&quot; class=&quot;smiley&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;Est-ce que c&amp;#8217;est compliqué de participer&amp;#160;?&lt;/h2&gt;
&lt;p&gt;Pas du tout, au contraire, c&amp;#8217;est affreusement simple. C&amp;#8217;est même sans doute un des points d&amp;#8217;entrée les plus faciles pour contribuer chez Mozilla (vous n&amp;#8217;aurez pas besoin de vous confronter à Bugzilla :-P).&lt;/p&gt;
&lt;p&gt;En effet, pour contribuer à MDN vous n&amp;#8217;avez besoin que de 2 choses&amp;#160;:&lt;/p&gt;
&lt;ol&gt;&lt;li&gt;Avoir envie&lt;/li&gt;
&lt;li&gt;Avoir un compte utilisateur sur MDN&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Et c&amp;#8217;est tout.&lt;/p&gt;
&lt;p&gt;L’opération la plus difficile consiste à trouver le bouton &amp;#8220;Connexion&amp;#8221; dans la barre d&amp;#8217;en-tête, coincé entre le champ de recherche et l&amp;#8217;horrible onglet blanc &amp;#8220;Mozilla&amp;#8221;&amp;#8230; oui, au niveau ergonomie on a fait mieux. Cliquez sur ce bouton puis fournissez une adresse e-mail et un mot de passe (le système de connexion utilise le nouveau système &lt;a href=&quot;https://developer.mozilla.org/en/BrowserID&quot;&gt;Persona/BrowserID&lt;/a&gt;). Sur la page suivante, on vous demandera un &amp;#8220;Nom d&amp;#8217;utilisateur&amp;#8221; qui sera le nom affiché en face de vos contributions. Et voila, vous êtes prêt à contribuer.&lt;/p&gt;
&lt;p&gt;De son coté, la contribution est elle aussi très simple. Fondamentalement, MDN est à 80% un wiki. Sur toutes les pages du Wiki, une fois que vous êtes identifié, vous trouverez un bouton &amp;#8220;Editer&amp;#8221; (en haut à droite). Cliquez dessus, le contenu de la page se chargera dans un éditeur WYSIWYG (rassurez vous, si vous préférez vous la jouer hardcore, vous pouvez repasser en édition HTML). Faites-y les modifications que vous voulez, enregistrez (via le bouton &amp;#8220;Sauvegarder&amp;#8221; en haut à gauche) et voilà. Vous avez fait votre première contribution à MDN et au projet Mozilla en général&amp;#160;: pas de processus de validation à la mords-moi-le-nœud, pas de délai de publication, pas de modération à priori (mais il y en a tout de même une, assez light il est vrai, à posteriori)&amp;#8230; trop facile &lt;img src=&quot;/themes/default/smilies/smile.png&quot; alt=&quot;:)&quot; class=&quot;smiley&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;Qu&amp;#8217;est-ce que je peux faire, par où je commence&amp;#160;?&lt;/h2&gt;
&lt;p&gt;La réponse courte, c&amp;#8217;est &amp;#8220;par ce que vous voulez&amp;#8221;, malheureusement, l’expérience m&amp;#8217;a montré que cette réponse n&amp;#8217;était pas celle attendue par les nouveaux venus.&lt;/p&gt;
&lt;p&gt;Basiquement, sur MDN, vous pouvez faire 2 choses&amp;#160;:&lt;/p&gt;
&lt;ol&gt;&lt;li&gt;Proposer des démos via le &amp;#8220;&lt;a href=&quot;https://developer.mozilla.org/fr/demos/devderby&quot;&gt;Dev Derby&lt;/a&gt;&amp;#8221; mensuel, ce qui est une excellente façon de contribuer si vous êtes plutôt codeur.&lt;/li&gt;
&lt;li&gt;Enrichir la documentation si vous vous sentez plutôt une âme de rédacteur&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;La contribution à la documentation peut prendre plusieurs formes qui vont dépendre du temps que vous êtes prêt à y passer et/ou de votre degré de motivation&amp;#160;:&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Écrire de nouveaux articles&lt;/strong&gt;&lt;br /&gt;C&amp;#8217;est sans doute la contribution qui demande le plus de temps mais qui est aussi la plus utile au plus grand nombre. Notez que l&amp;#8217;écriture de nouveaux contenus peut parfaitement se faire dans une autre langue que l&amp;#8217;anglais &lt;img src=&quot;/themes/default/smilies/wink.png&quot; alt=&quot;;)&quot; class=&quot;smiley&quot; /&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Traduire des articles existants&lt;/strong&gt;&lt;br /&gt;Ce n&amp;#8217;est un secret pour personne, la partie anglaise de MDN est la plus fournie. Vous pouvez donc traduire ce que bon vous chante. Si vous avez envie mais ne savez pas quoi traduire, vous pouvez jeter un coup d’œil à &lt;a href=&quot;https://developer.mozilla.org/User%3AGoofy/Traductions_MDN&quot;&gt;la liste de l&amp;#8217;ami Goofy&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Écrire des exemples de code&lt;/strong&gt;&lt;br /&gt;La littérature, c&amp;#8217;est bien, des exemples concrets, c&amp;#8217;est mieux. En général, un bon exemple vaut mieux que dix paragraphes d&amp;#8217;explications complètement absconses. Écrire des exemples de code fait partie des contributions les plus utiles (et pas forcément les plus longues à produire) et &lt;a href=&quot;https://developer.mozilla.org/Special:Tags?tag=NeedsExample&quot;&gt;MDN en manque cruellement&lt;/a&gt; (en particulier sur la partie SVG&amp;#8230; je dis ça, je dis rien, hein).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Faire de la relecture&lt;/strong&gt;&lt;br /&gt;Comme MDN est faiblement modéré et comme l&amp;#8217;erreur est humaine, il est toujours bon d&amp;#8217;avoir des gens qui font de la relecture. Il peut s&amp;#8217;agir aussi bien de &lt;a href=&quot;https://developer.mozilla.org/Special:Tags?tag=NeedsEditorialReview&quot;&gt;relecture d&amp;#8217;orthographe&lt;/a&gt; que de &lt;a href=&quot;https://developer.mozilla.org/Special:Tags?tag=NeedsTechnicalReview&quot;&gt;relecture technique&lt;/a&gt;. N&amp;#8217;hésitez pas si vous avez peu de temps à consacrer car cela aidera beaucoup de monde (à titre d&amp;#8217;exemple si vous lisez cet article, vous constaterez à quel point c&amp;#8217;est désagréable de lire un texte bourré de fautes d&amp;#8217;orthographe :-P).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Compléter les tables de compatibilité&lt;/strong&gt;&lt;br /&gt;MDN se veut une documentation agnostique du point de vue des navigateurs. En conséquence, il existe des tables de compatibilité sur de nombreuse pages de MDN. Elles permettent de savoir pour quel navigateur, une API, une balise, un attribut ou une propriété est disponible. C&amp;#8217;est particulièrement utile et cela prend 5 minutes pour &lt;a href=&quot;https://developer.mozilla.org/Special:Tags?tag=NeedsBrowserCompatibility&quot;&gt;rajouter une information de compatibilité&lt;/a&gt;. C&amp;#8217;est sans doute la façon la plus facile et la plus rapide de contribuer à MDN.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Et surtout, un dernier conseil. La documentation est quelque chose d’immense, en conséquence vous n&amp;#8217;aurez jamais le temps de tout faire tout seul. Concentrez-vous donc sur les sujets qui vous intéressent vous personnellement. Dans mon cas, c&amp;#8217;est SVG, mais chacun aura son propre centre d’intérêt. S&amp;#8217;il y a un sujet en particulier qui vous intéresse, sachez que MDN dispose de &amp;#8220;&lt;a href=&quot;https://developer.mozilla.org/Project:en/Topic_drivers&quot;&gt;Topic Leaders&lt;/a&gt;&amp;#8221; qui peuvent vous aider (n&amp;#8217;hésitez pas à les contacter, ils sont là pour ça) &lt;/p&gt;
&lt;p&gt;Et si vous êtes francophone allergique à l&amp;#8217;anglais, sachez que vous avez de la chance. En effet, trois de ces &amp;#8220;responsables&amp;#8221; sont francophones&amp;#160;: Moi-même qui peut vous aider sur tous les sujets liés à SVG, David Bruant pour toutes les questions autour de Javascript et Jean-Yves Perrier pour CSS (Jean-Yves est aussi employé Mozilla sur MDN, n&amp;#8217;hésitez donc vraiment pas à le contacter)&amp;#8230; Vous noterez qu&amp;#8217;ils ne s&amp;#8217;occupent que de technologies au rabais :-P&lt;/p&gt;
&lt;p&gt;Sachez également qu&amp;#8217;il existe 2 pages sur MDN qui complètent très largement ce que je viens de résumer ici&amp;#160;:&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;La page &amp;#8220;&lt;a href=&quot;https://developer.mozilla.org/Project:fr/Pour_commencer&quot;&gt;Pour commencer&lt;/a&gt;&amp;#8221;&lt;/li&gt;
&lt;li&gt;La page &amp;#8220;&lt;a href=&quot;https://developer.mozilla.org/Project:en/To-do_list&quot;&gt;A faire&lt;/a&gt;&amp;#8221; (en)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Je veux traduire une page en français, comment je fais&amp;#160;?&lt;/h2&gt;
&lt;p&gt;Cette question est plus compliquée qu&amp;#8217;il n&amp;#8217;y paraît. En effet, l&amp;#8217;actuel moteur de Wiki qui fait tourner MDN n&amp;#8217;est pas très bien fichu sur la question de la localisation. Heureusement, d&amp;#8217;ici quelques semaines, la plateforme technique devrait changer (les travaux sont en cours, mais vous savez comme ça se passe chez Mozilla&amp;#160;: «&amp;#160;on livre quand c&amp;#8217;est prêt. — C&amp;#8217;est à dire&amp;#160;? — Quand c&amp;#8217;est prêt.&amp;#160;»).&lt;/p&gt;
&lt;p&gt;D&amp;#8217;ici là, voici les principaux points auxquels il faut prêter attention.&lt;/p&gt;
&lt;h3&gt;Localiser les URL&lt;/h3&gt;
&lt;p&gt;D&amp;#8217;abord un petit point sur la structure des URL de MDN. Elles sont de la forme&amp;#160;:&lt;/p&gt;
&lt;pre&gt;https://developer.mozilla.org/&lt;em&gt;locale&lt;/em&gt;/&lt;em&gt;page&lt;/em&gt;/&lt;em&gt;sous-page&lt;/em&gt;/&lt;em&gt;sous-sous-page&lt;/em&gt;&lt;/pre&gt;&lt;p&gt;Pour toutes les pages liées à une technologie, localiser l&amp;#8217;URL reviendra, dans 90% des cas, à changer la locale. Exemple&amp;#160;:&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;https://developer.mozilla.org/en/CSS/transform&quot;&gt;https://developer.mozilla.org/en/CSS/transform&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://developer.mozilla.org/fr/CSS/transform&quot;&gt;https://developer.mozilla.org/fr/CSS/transform&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Néanmoins, vous pouvez parfois vous retrouver face à ça&amp;#160;:&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;https://developer.mozilla.org/en/Apps/For_Web_developers&quot;&gt;https://developer.mozilla.org/en/Apps/For_Web_developers&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://developer.mozilla.org/fr/Applications/Pour_d%C3%A9veloppeurs_web&quot;&gt;https://developer.mozilla.org/fr/Applications/Pour_développeurs_web&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Dans ce cas il y a grosso modo 2 options&amp;#160;:&lt;/p&gt;
&lt;ol&gt;&lt;li&gt; Vous avez identifié une page manquante dans la partie française de MDN&lt;/li&gt;
&lt;li&gt;Vous avez identifié une page que vous aimeriez traduire dans une partie de MDN qui n&amp;#8217;est pas en français.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Dans le premiers cas, vous êtes le plus souvent tombé sur un lien qui mène vers une page qui n&amp;#8217;existe pas (ils sont stylés en rouge). Dans ce cas, le travail de localisation du lien a déjà été fait et il vous faut juste trouver la page équivalente en anglais (ou autre, selon ce que vous parlez comme langue). En général, en remontant les arborescences, vous trouverez facilement une page qui a été traduite et qui vous permettra d&amp;#8217;explorer l&amp;#8217;équivalent de ce que vous cherchez dans la langue de votre choix. Notez que pour passer d&amp;#8217;une langue à l&amp;#8217;autre, vous avez sur les pages, en haut à droite un menu &amp;#8220;Langues&amp;#8221; qui permet de passer d&amp;#8217;une version à l&amp;#8217;autre d&amp;#8217;une même page. J&amp;#8217;y reviens ci-après.&lt;/p&gt;
&lt;p&gt;Dans le deuxième cas, c&amp;#8217;est parfois un peu plus délicat car vous aller devoir faire des choix de traduction des termes de l&amp;#8217;URL. Ici, la difficulté va être de s&amp;#8217;assurer qu&amp;#8217;une traduction des termes n&amp;#8217;a pas déjà été faite sur une autre page. L&amp;#8217;idée c&amp;#8217;est d&amp;#8217;arriver à être cohérents d&amp;#8217;une traduction à l&amp;#8217;autre&amp;#8230; ce qui est particulièrement critique pour les URL. Ici, la meilleure façon de procéder, c&amp;#8217;est d&amp;#8217;aller poser la question aux localisateurs qui sont rompus à l’exercice. Pour le français, le meilleur point d&amp;#8217;entrée c&amp;#8217;est le canal IRC #frenchmoz sur irc.mozilla.org ou éventuellement la mailing liste de la communauté francophone des contributeurs Mozilla. Tous &lt;a hreflang=&quot;fr&quot; href=&quot;http://mozfr.org/contrib&quot;&gt;les détails sont disponibles sur mozfr.org&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;Faire des liens croisés entre les différentes localisations&lt;/h3&gt;
&lt;p&gt;La deuxième difficulté lorsqu&amp;#8217;on localise une page, c&amp;#8217;est de réaliser des liens croisés entre les différentes versions d&amp;#8217;une même page. Ces liens croisés apparaissent dans le menu &amp;#8220;Langues&amp;#8221; en haut à droite des pages.&lt;/p&gt;
&lt;p&gt;Le seul problème, c&amp;#8217;est que ces liens ne sont pas générés automatiquement. Concrètement, vous devez rajouter dans chacune des pages localisées les liens vers les autres localisations. Oui, ça veut dire que s&amp;#8217;il y a déjà 10 versions différentes d&amp;#8217;une page, vous aller devoir toutes les éditer une par une pour rajouter manuellement le lien vers la nouvelle version que vous venez de créer.&lt;/p&gt;
&lt;p&gt;Ce n&amp;#8217;est pas bien compliqué (c&amp;#8217;est un petit bout de code normalisé en bas de page), mais c&amp;#8217;est assez fastidieux &lt;img src=&quot;/themes/default/smilies/confused.png&quot; alt=&quot;:-/&quot; class=&quot;smiley&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Bref, vivement le changement de plateforme technique.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;Voilà, après ça, vous n&amp;#8217;avez aucune excuse pour ne pas contribuer. Les problèmes de localisation mis à part (j&amp;#8217;essayerai d&amp;#8217;écrire un article sur le sujet quand on aura changé de plateforme) c&amp;#8217;est facile et peu consommateur de temps. Si vous voulez en savoir plus, n&amp;#8217;hésitez pas à &lt;a href=&quot;https://mercredidoc.etherpad.mozilla.org/all&quot;&gt;passer dire bonjour le mercredi soir&lt;/a&gt; (je tiens une sorte de permanence dans les bureaux de Mozilla à Paris) ou à m&amp;#8217;écrire (faites gaffe quand même, je réponds assez lentement). Au-delà de ça, d&amp;#8217;autres peuvent vous aider si vous avez des questions sur la documentation&amp;#160;: j&amp;#8217;ai déjà cité les francophones &lt;a href=&quot;https://twitter.com/#%21/DavidBruant&quot;&gt;David&lt;/a&gt; et &lt;a href=&quot;https://twitter.com/#%21/Teoli2003&quot;&gt;Jean-Yves (aka Teoli)&lt;/a&gt;), mais chez les anglophones, vous pouvez facilement vous adresser à &lt;a href=&quot;https://twitter.com/#%21/sheppy&quot;&gt;Eric Shepherd (aka Sheppy)&lt;/a&gt; et &lt;a href=&quot;https://twitter.com/#%21/jmswisher&quot;&gt;Janet Swisher&lt;/a&gt;. Vous pouvez facilement retrouver tout ce petit monde sur irc.mozilla.org sur la canal #devmo ou sur &lt;a href=&quot;https://groups.google.com/forum/?fromgroups#%21forum/mozilla.dev.mdc&quot;&gt;la liste de diffusion dev-mdc&lt;/a&gt;. Á noter que Jean-Yves, Eric et Janet sont les 3 principaux employés Mozilla chargés de superviser MDN, n&amp;#8217;ayez donc aucun scrupule à vous adresser à eux (^_^) &lt;/p&gt;
&lt;p&gt;La documentation c&amp;#8217;est bon, mangez-en &lt;img src=&quot;/themes/default/smilies/smile.png&quot; alt=&quot;:)&quot; class=&quot;smiley&quot; /&gt;&lt;/p&gt;
&lt;p&gt;MAJ du 25/04: Merci à Goofy pour la relecture orthographique &lt;img src=&quot;/themes/default/smilies/smile.png&quot; alt=&quot;:)&quot; class=&quot;smiley&quot; /&gt;&lt;/p&gt;</description>

    

      </item>
  
  <item>
    <title>Documenter le Web ouvert, pourquoi et comment</title>
    <link>http://jeremie.patonnier.net/post/2012/01/02/Documenter-le-Web-ouvert%2C-pourquoi-et-comment</link>
    <guid isPermaLink="false">urn:md5:6ca6c11fd35d2d86b5c63a3809b939ca</guid>
    <pubDate>Mon, 02 Jan 2012 09:00:00 +0100</pubDate>
    <dc:creator>Jeremie</dc:creator>
        <category>Web</category>
        <category>documentation</category><category>Mozilla</category><category>Opera</category><category>W3C</category>
    <description>&lt;p&gt;Cela fait quelques temps que je m&amp;#8217;implique dans plusieurs projets visant
à documenter ou à fournir du matériel pédagogique concernant les
technologies du web dit ouvert (standards et technologies sous licences
open-source). De mon point de vue, cet effort de documentation est
nécessaire pour plusieurs raison que je vais vous détailler ici et
j&amp;#8217;espère bien convaincre quelques-uns d&amp;#8217;entre vous de me suivre sur ce
long chemin… un peu aride, il faut bien l&amp;#8217;admettre :-P&lt;/p&gt;    &lt;h2&gt;Pourquoi&amp;#160;?&lt;/h2&gt;
&lt;p&gt;En temps que «&amp;#160;vieux&amp;#160;» du Web (je créer des sites à titre personnel depuis 1997 et à titre professionnel depuis 2000), j&amp;#8217;ai appris le Web «&amp;#160;à la dure&amp;#160;» en lisant quelques livres de qualité inégale, en utilisant outrancièrement la fonction «&amp;#160;afficher la source&amp;#160;» de mes navigateurs et en fréquentant divers forums de discussion. J&amp;#8217;ai fait beaucoup d&amp;#8217;erreurs (et je continue à en faire) mais en rencontrant les bonnes personnes et en apprenant de ces erreurs j&amp;#8217;ai réussie à progresser pour arriver ou j&amp;#8217;en suis aujourd&amp;#8217;hui. Certes, je ne regrette rien, mais franchement ce n&amp;#8217;était pas simple tout les jours et s&amp;#8217;il est possible de se simplifier la vie, autant ne pas s&amp;#8217;en priver.&lt;/p&gt;
&lt;p&gt;Au delà de mes considérations personnelles et de mes propre besoins et envies, il y a tout de même quelques points notables qui militent en faveur d&amp;#8217;une documentation plus importante et plus «&amp;#160;normé&amp;#160;» des différentes technologies Web.&lt;/p&gt;
&lt;h3&gt;Place aux jeunes&lt;/h3&gt;
&lt;p&gt;Je vois actuellement arriver une nouvelle génération de développeurs et d&amp;#8217;intégrateurs Web. A mon grand désarrois, peu d&amp;#8217;entre eux sont vraiment doués. C&amp;#8217;est quelque chose d&amp;#8217;assez normal, tout le monde ne peut pas être un génie. Mais le problème ne se situe pas là. Le problème est souvent bien en amont au niveau de leur formation. Malheureusement, il existe encore peu de cycles d&amp;#8217;études qui forment vraiment aux technologies et problématiques propres au Web (en France, on est encore trop dans la dichotomie&amp;#160;: écoles d&amp;#8217;informatique d&amp;#8217;un coté qui ne font que survoler les technologies Web sans en voir les aspects fonctionnels&amp;#160;; écoles d&amp;#8217;art et de design de l&amp;#8217;autre coté qui survolent vaguement les aspects fonctionnels en faisant totalement l&amp;#8217;impasse sur les aspects techniques). Ainsi, la qualité de la formation dispensée dépend donc encore trop souvent de la qualité des professeurs et formateurs. La difficulté, c&amp;#8217;est qu&amp;#8217;eux même ont du mal à trouver des sources d&amp;#8217;informations leur permettant de rester à jour. L&amp;#8217;effort de veille à faire pour qu&amp;#8217;un formateur reste au niveau est énorme et parfois difficile si l&amp;#8217;on cherche du matériel pédagogique dans une langue autre que l&amp;#8217;anglais. Pire&amp;#160;! De trop nombreuses sources d&amp;#8217;informations sont parfois médiocres pour ne pas dire complètement fausse et le plus souvent peu ou pas mises à jour (le cas W3School, par exemple, a donné lieu à &lt;a hreflang=&quot;en&quot; href=&quot;http://w3fools.com/&quot;&gt;de vives réactions&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;Avec tout ça, on voit bien qu&amp;#8217;il est finalement, aujourd&amp;#8217;hui encore, assez difficile de se former correctement aux technologies et techniques de mise en œuvre des sites Web.&lt;/p&gt;
&lt;h3&gt;La complexification des technologies&lt;/h3&gt;
&lt;p&gt;Les standards du Web sont quelque chose qui évolue en permanence. Depuis plus de 20 ans, ces technologies gagnent en maturité, changent, s&amp;#8217;enrichissent et s&amp;#8217;affinent. Depuis environs 3 ans maintenant, les choses vont même en s&amp;#8217;accélérant. HTML5 change profondément la nature du langage HTML, CSS3 enrichie considérablement le nombre de propriétés disponibles, ECMAScript vient de passer en version 5 et la 6 est en préparation, etc. Le retour d&amp;#8217;un univers concurrentiel sur le marché des navigateurs, l&amp;#8217;émergence du Web mobile, tout cela contribue à rendre les technologies toujours plus complexes et à rendre leur implémentation parfois très hétérogène d&amp;#8217;un navigateur à l&amp;#8217;autre.&lt;/p&gt;
&lt;p&gt;Quelques chiffres bruts pour se rendre compte&amp;#160;:&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;HTML4&amp;#160;: &lt;a hreflang=&quot;en&quot; href=&quot;http://www.w3.org/TR/html4/index/elements.html&quot;&gt;91 balises&lt;/a&gt; et &lt;a hreflang=&quot;en&quot; href=&quot;http://www.w3.org/TR/html4/index/attributes.html&quot;&gt;119 attributs&lt;/a&gt; -&amp;gt; HTML5&amp;#160;: environ &lt;a hreflang=&quot;en&quot; href=&quot;http://dev.w3.org/html5/markup/&quot;&gt;107 balises&lt;/a&gt; et plus de &lt;a hreflang=&quot;en&quot; href=&quot;http://www.w3.org/TR/html5-diff/#new-attributes&quot;&gt;143 attributs&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;CSS2.1&amp;#160;: &lt;a hreflang=&quot;en&quot; href=&quot;http://www.w3.org/TR/CSS21/propidx.html&quot;&gt;115 propriété&lt;/a&gt; -&amp;gt; CSS3&amp;#160;: près de 250 propriétés (&lt;a hreflang=&quot;en&quot; href=&quot;http://meiert.com/en/indices/css-properties/&quot;&gt;C&amp;#8217;est une estimation&lt;/a&gt; car les travaux de spécification ont à peine commencé)&lt;/li&gt;
&lt;li&gt;SVG 1.1&amp;#160;: &lt;a hreflang=&quot;en&quot; href=&quot;http://www.w3.org/TR/SVG/eltindex.html&quot;&gt;80 balises&lt;/a&gt; et &lt;a hreflang=&quot;en&quot; href=&quot;http://www.w3.org/TR/SVG/attindex.html&quot;&gt;267 attributs&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Plusieurs centaines d&amp;#8217;interfaces DOM (je n&amp;#8217;ai pas eu le courage de compter)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Et encore, là, il ne s&amp;#8217;agit que du sommet de l&amp;#8217;iceberg des différentes technologies Web. Et puis, quid des implémentations&amp;#160;? Quel navigateur supporte quoi&amp;#160;? Et avec quel degré de précision/bugs&amp;#160;? Ou et comment trouver des informations pertinentes et à jour sur toutes ces technologies, leur fonctionnement et leurs interactions&amp;#160;?&lt;/p&gt;
&lt;p&gt;Et puis tant qu&amp;#8217;on en est à complexifier les choses, allons jusqu&amp;#8217;au bout. La fonctionnalité suprême des navigateurs, le fameux «&amp;#160;afficher la sources&amp;#160;» et en train d&amp;#8217;en prendre un petit coup dans l&amp;#8217;aile. En effet, les techniques d&amp;#8217;optimisation des performances (pour ne citer qu&amp;#8217;elles) ont un petit effets de bords, elles ont tendance à rendre les codes sources illisibles par les êtres humains. Mais même sans ça, examiner le code source d&amp;#8217;une bibliothèque Javascript de 200Ko est très loin d&amp;#8217;être une partie de plaisir. Aujourd&amp;#8217;hui, n&amp;#8217;espérez donc pas apprendre sérieusement Javascript simplement en lisant du code (ce que j&amp;#8217;ai pourtant fait il y a plus de 10&amp;nbsp;ans).&lt;/p&gt;
&lt;p&gt;Contrairement à une idée reçu, le Web ce n&amp;#8217;est pas simple. Je ne sais pas pour vous, mais s&amp;#8217;il existe des sources d&amp;#8217;informations fiables me permettant de m&amp;#8217;y retrouver, ce sera avec plaisir que je les accueillerai.&lt;/p&gt;
&lt;h2&gt;Comment&amp;#160;?&lt;/h2&gt;
&lt;p&gt;J&amp;#8217;en arrive donc à un constat simple&amp;#160;: ressources de qualité douteuse + complexification des technologies = il faut rentrer dans une logique de documentation un peu plus sérieuse que ce qui a été fait jusqu&amp;#8217;à présent.&lt;/p&gt;
&lt;h3&gt;L&amp;#8217;initiative individuel&lt;/h3&gt;
&lt;p&gt;Jusqu&amp;#8217;à une date très récente, l&amp;#8217;effort de documentation des technologies du Web ouvert passait par des initiatives individuelles. Chaque développeur web ayant son propre site ou blog sur lequel il note et documente ce qui l&amp;#8217;intéresse ou lui manque (c&amp;#8217;est typiquement ce que je fais sur ce site &lt;img src=&quot;/themes/default/smilies/wink.png&quot; alt=&quot;;)&quot; class=&quot;smiley&quot; /&gt; ). Les plus fameux à ma connaissance sont sans doute&amp;#160;:&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;&lt;a style=&quot;font-style: italic;&quot; hreflang=&quot;en&quot; href=&quot;http://www.positioniseverything.net/&quot;&gt;Position is everything&lt;/a&gt; qui documente tous les bugs de Internet Explorer 6 (et 7) en matière de CSS (je ne compte plus les fois ou ce site m&amp;#8217;a sauvé la vie)&lt;/li&gt;
&lt;li&gt;&lt;a style=&quot;font-style: italic;&quot; hreflang=&quot;en&quot; href=&quot;http://www.quirksmode.org/&quot;&gt;Quirks mode&lt;/a&gt; de Peter-Paul Koch qui détail la compatibilité des propriétés CSS d&amp;#8217;un navigateur à l&amp;#8217;autre (on notera en ce moment le boulot que fait PPK sur le support des navigateurs mobiles)&lt;/li&gt;
&lt;li&gt;&lt;a style=&quot;font-style: italic;&quot; hreflang=&quot;en&quot; href=&quot;http://www.alistapart.com/&quot;&gt;A list apart&lt;/a&gt; et ce que l&amp;#8217;on peut considérer comme son équivalent Français&amp;#160;: &lt;a style=&quot;font-style: italic;&quot; hreflang=&quot;fr&quot; href=&quot;http://openweb.eu.org/&quot;&gt;OpenWeb&lt;/a&gt; qui produisent des articles à la fois précis et accessible à tous.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Il en existe évidement bien d&amp;#8217;autre et il est impossible de les citer tous. Ceci étant, pour intéressant qu&amp;#8217;il soit, cet effort de documentation reste encore très dispersé, peu structuré et nécessite de prendre le temps de chercher ce dont on a besoin tout en requérant une bonne dose d&amp;#8217;esprits critique pour trier le bon grain de l&amp;#8217;ivraie.&lt;/p&gt;
&lt;h3&gt;W3C et consort.&lt;/h3&gt;
&lt;p&gt;Deuxième source historique de documentation&amp;#160;: le W3C et autre organisme de standardisation. C&amp;#8217;est bête à dire, mais lire les spécifications des technologies peut être une mine d&amp;#8217;or si l&amp;#8217;on cherche des informations techniques précises. Malheureusement, il faut bien se le dire, les spécifications ne sont pas écrite pour le commun des mortels… en tout cas pas pour les développeurs Web. En effet, les spécifications sont de la matière brute. Elles sont écrite avant tout pour les fabriquant de logiciel (navigateurs, éditeur de code, etc.) et surtout, elles ne permettent pas de savoir quelles sont les différences d&amp;#8217;implémentation d&amp;#8217;un logiciel à l&amp;#8217;autre. Leur lecture est donc rarement suffisante (et parfois même inutile… par exemple, essayer de lire la spécification d&amp;#8217;ECMAScript pour apprendre le Javascript, c&amp;#8217;est un peu comme regarder la formule chimique du beurre pour apprendre à faire un gâteau).&lt;/p&gt;
&lt;p&gt;Saluons tout de même l&amp;#8217;initiative du HTML Working Group qui, dans le cadre de HTML5, produit deux documents à destination des développeurs Web&amp;#160;:&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;&lt;a hreflang=&quot;en&quot; href=&quot;http://www.w3.org/TR/html5-author/&quot;&gt;http://www.w3.org/TR/html5-author/&lt;/a&gt; Version expurgé des spécificités purement techniques liées à l&amp;#8217;implémentation de HTML et qui se concentre sur ce qui est vraiment utile pour les créateurs de sites Web.&lt;/li&gt;
&lt;li&gt;&lt;a hreflang=&quot;en&quot; href=&quot;http://dev.w3.org/html5/markup/&quot;&gt;http://dev.w3.org/html5/markup/&lt;/a&gt; La liste détaillé de toutes les balises HTML5&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Les fabricants de navigateurs&lt;/h3&gt;
&lt;p&gt;Une autre source de documentation parfois méconnus mais très riche existe&amp;#160;: la documentation officiel des fabricants de navigateur. C&amp;#8217;est vraiment dommage qu&amp;#8217;elles ne soient pas plus connus car on y trouve parfois des perles&amp;#160;:&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;&lt;strong&gt;MSDN&lt;/strong&gt;&amp;#160;: &lt;a href=&quot;http://msdn.microsoft.com/&quot;&gt;http://msdn.microsoft.com/&lt;/a&gt;&lt;br /&gt;Documentation officiel de Microsoft, vous y trouverez absolument tout concernant les technologies implémentées dans Internet Explorer (et tout les autres produits Microsoft). Son seul vraie problème est d&amp;#8217;être extrêmement mal structuré quand on l&amp;#8217;aborde de l&amp;#8217;extérieur (comprendre, via un autre moyen que les pages d&amp;#8217;aide des produits Microsoft). Pour la petite histoire, les technologies Web, c&amp;#8217;est là&amp;#160;: &lt;a href=&quot;http://msdn.microsoft.com/en-us/library/aa155073.aspx&quot;&gt;http://msdn.microsoft.com/en-us/library/aa155073.aspx&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;MDN&lt;/strong&gt;&amp;#160;: &lt;a href=&quot;https://developer.mozilla.org/&quot;&gt;https://developer.mozilla.org/&lt;/a&gt;&lt;br /&gt;Site de documentation de Mozilla. Originellement fait pour documenter les technologies propres à Firefox, il est actuellement en train d&amp;#8217;évoluer pour proposer une documentation agnostique sur tous les standards Web. En particulier, on y trouve la documentation de référence pour Javascript. Sa principale caractéristique est d&amp;#8217;être un wiki éditable par tout le monde, c&amp;#8217;est donc le lieu idéal pour y trouver (et y créer) la documentation dont vous avez besoin&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Dev Opera&lt;/strong&gt;&amp;#160;: &lt;a href=&quot;http://dev.opera.com/&quot;&gt;http://dev.opera.com/&lt;/a&gt;&lt;br /&gt;On y trouve à la fois la documentation officiel des produits Opera, des articles des équipes d&amp;#8217;Opera (chaque employé y a un blog pro.) mais également des articles écrits par des développeurs web indépendants. En effet, n&amp;#8217;importe qui peut ouvrir un compte utilisateur et y écrire des articles.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;La seul ombre au tableau, c&amp;#8217;est le projet Webkit qui ne dispose pas d&amp;#8217;une documentation officielle (en tout cas, je ne l&amp;#8217;ai pas encore trouvée). On notera tout de même que depuis un peu plus de 1 an, les équipes de Google collabore avec Mozilla au sein de MDN pour que la documentation de référence soit la plus générique possible.&lt;/p&gt;
&lt;h3&gt;Le temps de l&amp;#8217;action&lt;/h3&gt;
&lt;p&gt;Le fait est qu&amp;#8217;on est encore loin d&amp;#8217;avoir des documentations dignes de ce nom et, soyons claire, on n&amp;#8217;est finalement jamais aussi bien servi que par soit même.&lt;/p&gt;
&lt;p&gt;Aussi, je vous invite à écrire ce que vous savez. Il n&amp;#8217;est pas nécessaire de faire de très long articles détaillés, mais simplement, mettre le résultat de vos expérimentations (à titre d&amp;#8217;exemple, regardez ce que font Raphael Goetter avec &lt;a style=&quot;font-style: italic;&quot; href=&quot;http://www.ie7nomore.com/&quot;&gt;IE7 no more&lt;/a&gt; ou la Web Agency Tympanus sur &lt;a hreflang=&quot;en&quot; href=&quot;http://tympanus.net/codrops/&quot;&gt;son blog&lt;/a&gt;). Quoi que vous en pensiez, ce sera toujours utile à quelqu&amp;#8217;un (ne serais-ce que pour vous). Ok, ce que vous découvrez à peut-être déjà été écris ailleurs… mais ça n&amp;#8217;a pas d&amp;#8217;importance car plus il y a d&amp;#8217;articles sur le même sujet, plus l&amp;#8217;information est facile à trouver. Ne soyez pas timide, écrivez &lt;img src=&quot;/themes/default/smilies/smile.png&quot; alt=&quot;:)&quot; class=&quot;smiley&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Mais ce n&amp;#8217;est qu&amp;#8217;un début. Pour aller plus loin, je vous invite à regarder de près l&amp;#8217;initiative &lt;a style=&quot;font-style: italic;&quot; hreflang=&quot;en&quot; href=&quot;http://movethewebforward.org/&quot;&gt;Move the web forward&lt;/a&gt; qui détaille tout ce qu&amp;#8217;il est possible de faire pour contribuer (au delà de la documentation) à améliorer le Web.&lt;/p&gt;
&lt;p&gt;Enfin, et c&amp;#8217;est là que les choses commence à se structurer, plusieurs organisations travaillent sur la documentation du Web ouvert. On notera en particulier deux acteurs majeurs de ce travail de documentation&amp;#160;:&lt;/p&gt;
&lt;h4&gt;Mozilla&lt;/h4&gt;
&lt;p&gt;Depuis 2 ans environ, Mozilla a entamé un travail de fond visant à transformer MDN pour en faire une source de documentation neutre. Ainsi, pour tout ce qui concerne les standards du Web, vous y trouverez une documentation de référence pour les principaux langages (HTML, CSS, SVG, MathML, Javascript, etc.). L&amp;#8217;objectif est, pour chaque balise, propriété, API, attribut, … de fournir une explication de comment ils s&amp;#8217;utilisent avec des exemples, des cas d&amp;#8217;usage, tout en documentant les spécificités liées aux implémentations de chaque navigateur.&lt;/p&gt;
&lt;p&gt;Réaliser une telle documentation prend du temps et toute les bonnes volontés sont appréciées. Si vous voulez participer, vous n&amp;#8217;avez rien d&amp;#8217;autre à faire que de vous créer un compte utilisateur sur MDN et à écrire (c&amp;#8217;est un Wiki rappelons-le). Si vous ne savez pas par quel bout commencer ou si vous pensez que vous n&amp;#8217;êtes pas à la auteur pour participer, j&amp;#8217;organise tous les mercredi une soirée de découverte de MDN dans &lt;a href=&quot;http://www.mozilla.org/en-US/about/contact.html#map-europe-paris&quot;&gt;les bureaux de Mozilla à Paris&lt;/a&gt;. N&amp;#8217;hésitez pas à venir, même si c&amp;#8217;est juste par curiosité, il y a à boire et à manger &lt;img src=&quot;/themes/default/smilies/wink.png&quot; alt=&quot;;)&quot; class=&quot;smiley&quot; /&gt; . Plus d&amp;#8217;information sur la soirée de mercredi prochain&amp;#160;: &lt;a href=&quot;https://mercredidoc.etherpad.mozilla.org/4&quot;&gt;https://mercredidoc.etherpad.mozilla.org/4&amp;#160;&lt;/a&gt;&lt;/p&gt;
&lt;h4&gt;W3C&lt;/h4&gt;
&lt;p&gt;L&amp;#8217;été dernier, le W3C à lancé les &lt;em&gt;Community Groups&lt;/em&gt; et un des premiers à avoir été créé fut le &lt;a style=&quot;font-style: italic;&quot; hreflang=&quot;en&quot; href=&quot;http://www.w3.org/community/webed/&quot;&gt;Web Education Community Group&lt;/a&gt;. Ce groupe a été créé à l&amp;#8217;initiative de Chris Mills de chez Opera. Chris a proposé de partager le Web Standards Curriculum d&amp;#8217;Opera sous licence libre. Il a donc été mis sur &lt;a hreflang=&quot;en&quot; href=&quot;http://www.w3.org/community/webed/wiki/Main_Page&quot;&gt;un Wiki dédié au W3C&lt;/a&gt; et désormais, tout le monde peu participer à son enrichissement. De manière plus général, ce &lt;em&gt;Community Group&lt;/em&gt; à pour vocation de créer et promouvoir du matériel pédagogique à destination des professeurs et formateurs qui enseignent la création de sites Web.&lt;/p&gt;
&lt;p&gt;Si vous êtes formateur ou enseignant vous devriez sérieusement envisager de participer à ce groupe. Contrairement aux groupes de travail sur les spécifications, la participation aux &lt;em&gt;Community Groups&lt;/em&gt; est gratuite. En ce qui me concerne, je prévois de participer à la traduction Française du Web Standards Curriculum. Si vous voulez aider à faire cette traduction, laisser un message sur &lt;a hreflang=&quot;en&quot; href=&quot;http://lists.w3.org/Archives/Public/public-webed/&quot;&gt;la mailing-list du groupe&lt;/a&gt;, je vous recontacterai alors pour qu&amp;#8217;on se coordonne &lt;img src=&quot;/themes/default/smilies/wink.png&quot; alt=&quot;;)&quot; class=&quot;smiley&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;La documentation du Web ouvert est un espace à défricher. Si vous voulez bénéficier d&amp;#8217;une documentation de qualité, pour vous ou pour les autres, c&amp;#8217;est à vous d&amp;#8217;agir. Soyons claire, documenter est un travail long et ingrat dont on ne retire les fruits que plusieurs mois ou année plus tard. Ceci étant, il n&amp;#8217;y a pas de secret, les projets qui marchent ce sont les projets qui bénéficient d&amp;#8217;une documentation de qualité. C&amp;#8217;est également vraie du Web et de la création de site. Retenez cependant 2 choses&amp;#160;: Quelque soit votre contribution, aussi petite soit-elle, il y aura toujours quelqu&amp;#8217;un pour vous en remercier un jour&amp;#160;; Si vous devez documenter quelque chose, documentez ce dont vous avez besoin pour vous-même, d&amp;#8217;autre auront un jour ou l&amp;#8217;autre le même problème que vous… la documentation est sans doute le seul domaine d&amp;#8217;activité ou une action purement égoïste est également totalement altruiste &lt;img src=&quot;/themes/default/smilies/smile.png&quot; alt=&quot;:)&quot; class=&quot;smiley&quot; /&gt;&lt;/p&gt;</description>

    

      </item>
  
  <item>
    <title>SVG et HTML5 font bon ménage avec Firefox</title>
    <link>http://jeremie.patonnier.net/post/2010/07/26/SVG-et-HTML5-font-bon-menage-avec-Firefox</link>
    <guid isPermaLink="false">urn:md5:c2f6de0769d7956db1c380cc1171e867</guid>
    <pubDate>Mon, 26 Jul 2010 15:00:00 +0200</pubDate>
    <dc:creator>Jeremie</dc:creator>
        <category>Web</category>
        <category>Firefox</category><category>HTML</category><category>Mozilla</category><category>SVG</category><category>webdesign</category>
    <description>&lt;p&gt;Pour faire suite à mon précédent article sur SVG, je vous propose de partir explorer la révolution technique que représente la possibilité d'inclure du SVG directement dans un document HTML. Cette possibilité fait partie du futur standard HTML 5. C'est une fonctionnalité qui sera disponible dans Firefox 4 et Internet Explorer 9 dès leur sortie. Alors comment ça marche et qu'est-ce qu'on peut en faire&amp;nbsp;?&lt;/p&gt;    &lt;h2&gt;Les premiers seront les derniers&lt;/h2&gt;
&lt;p&gt;Une fois n'est pas coutume, on va commencer par la fin. Dans cette article je vais vous détailler comment j'ai réalisé la démo suivante qui permet de transformer n'importe quelle image ou vidéo disponible en ligne en un Puzzle jouable&amp;nbsp;:&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://jeremie.patonnier.net/experiences/svg/inline/puzzle.html&quot; hreflang=&quot;fr&quot;&gt;http://jeremie.patonnier.net/experiences/svg/inline/puzzle.html&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Pour pouvoir voir et utiliser cette démonstration, vous avez besoin d'un navigateur qui supporte les fonctionnalités suivantes&amp;nbsp;:&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;Le support de SVG directement au sein des documents HTML5&lt;/li&gt;
&lt;li&gt;Le support de la balise &lt;code&gt;canvas&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Le support des filtres SVG&lt;/li&gt;
&lt;li&gt;Le support des balises &lt;code&gt;clipPath&lt;/code&gt; et &lt;code&gt;foreignObject&lt;/code&gt; de la norme SVG&lt;/li&gt;
&lt;li&gt;Le support de l'API localStorage et de JSON (ça, c'est un peu la cerise sur le gâteau)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Au moment où j'écris ces lignes, le seul navigateur qui réunisse ces conditions nativement est Firefox 4 beta 2. C'est avec lui que j'ai fait tous mes tests.&lt;/p&gt;
&lt;p&gt;Vous pouvez aussi tester cette démo avec Firefox 3.6. Néanmoins, pour cela, vous devez activer le support du parser HTML5. C'est possible en vous rendant à l'adresse &lt;code&gt;about:config&lt;/code&gt;, en y cherchant le paramètre &lt;code&gt;html5.enable&lt;/code&gt; et en lui donnant la valeur &lt;code&gt;true&lt;/code&gt;. Attention, il s'agit d'une version expérimentale du parser HTML5 qui n'est pas nécessairement très stable. Pensez à le désactiver une fois que vous aurez finit de jouer &lt;img src=&quot;/themes/default/smilies/wink.png&quot; alt=&quot;;)&quot; class=&quot;smiley&quot; /&gt; (Ceci dit, personnellement, je n'ai jamais eu de problème avec)&lt;/p&gt;
&lt;p&gt;A terme, IE9 supportera toutes ces fonctionnalités. Malheureusement, la Plateform Preview 3 ne supporte pas correctement les filtres et comme je n'ai pas de machine tournant sous Windows 7, je n'ai pas pu tester pour voir ce que ça donnait en l'état. &lt;/p&gt;
&lt;p&gt; Concernant &lt;a href=&quot;https://bugs.webkit.org/show_bug.cgi?id=30388&quot; hreflang=&quot;en&quot;&gt;Safari, Chrome&lt;/a&gt; et Opera, je n'ai pas entendu parler d'un support à court terme de SVG directement au sein des documents HTML5.&lt;/p&gt;
&lt;h2&gt;Mais pourquoi, John&amp;nbsp;? Pourquoi&amp;nbsp;?&lt;/h2&gt;
&lt;p&gt;Avant de détailler comment j'ai utilisé chacune des technologies mise en œuvre, voyons d'abord les raisons des choix techniques fait ici.&lt;/p&gt;
&lt;ol&gt;&lt;li&gt;&lt;strong&gt;SVG directement utilisé dans un document HTML5&lt;/strong&gt;&lt;br /&gt;D'un coté, SVG va permettre de dessiner assez facilement les formes tarabiscotées des pièces du puzzle. D'un autre coté, HTML est plus facile à manipuler dès qu'il s'agit de mettre en œuvre une interface utilisateur. Le plus simple est donc d'inclure l'un dans l'autre. Techniquement parlant, il est plus facile d'intégrer du SVG dans HTML que l'inverse car on n'a (presque) pas à se soucier de la gestion des espaces de nom XML de SVG et de XHTML, le parser HTML5 s'en occupe tout seul.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Le support de la balise &lt;code&gt;canvas&lt;/code&gt;&lt;/strong&gt;&lt;br /&gt;Prendre une source graphique pour en faire un puzzle requière de la manipuler, à minima pour la découper en morceau représentant les pièces. Dès lors qu'on parle de réaliser des opérations de cette nature, c'est &lt;code&gt;canvas&lt;/code&gt; qui est le plus indiqué. En outre, cela permet également de traiter n'importe quelle source graphique supportée par le navigateur en entrée et d'en obtenir une sortie unifiée et manipulable de la même façon, peut importe qu'il s'agisse d'une image ou d'une vidéo (ou même d'&lt;a href=&quot;https://developer.mozilla.org/en/Code_snippets/Canvas#section_2&quot; hreflang=&quot;en&quot;&gt;une page web quelconque&lt;/a&gt;... mais je ne suis pas allé aussi loin ici).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Les filtres SVG&lt;/strong&gt;&lt;br /&gt;Les filtres SVG permettent d'appliquer très simplement des effets spéciaux sur n'importe quel élément SVG, et, dans le cas de Firefox, sur n'importe quel élément HTML. En outre, les filtres étant déclaratifs (matérialisé sous forme de balises SVG) il est très facile de les modifier et de les ajuster sans avoir à recourir à de complexes artifices de programmation.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Les balises SVG &lt;code&gt;clipPath&lt;/code&gt; et &lt;/strong&gt;&lt;code&gt;&lt;strong&gt;foreignObject&lt;/strong&gt;&lt;/code&gt;&lt;br /&gt;La balise &lt;code&gt;clipPath&lt;/code&gt; permet de créer des formes de découpes applicables à un objet. Par exemple, si vous voulez &quot;percer un trou&quot; dans une image, c'est exactement ce qu'il vous faut. Si vous vouliez faire la même chose avec &lt;code&gt;canvas&lt;/code&gt;, ce serait possible, mais au prix d'un intense effort de programmation sans la souplesse de pouvoir changer simplement la forme de votre découpe. La balise &lt;code&gt;foreignObject&lt;/code&gt; permet quand à elle d'embarquer n'importe quoi dans du SVG. En effet, si au sein d'un document HTML5 il est possible de mettre des îlots de SVG, ça ne veux pas dire que vous pouvez mettre du HTML n'importe comment au milieu des balises SVG.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;L'API localStorage et JSON&lt;/strong&gt;&lt;br /&gt;Pas indispensable, mais c'est un moyen simple de pouvoir sauvegarder automatiquement la progression de votre Puzzle.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;Bouger ou ne pas bouger, tel est la question&lt;/h2&gt;
&lt;p&gt;La première chose que j'ai faite c'est de prendre la source graphique qui servira de puzzle et de la redessiner dans un élément &lt;code&gt;canvas&lt;/code&gt;. J'utilise cela comme une couche d'abstraction. En effet, une fois la source graphique convertis en un élément &lt;code&gt;canvas&lt;/code&gt;, je n'ai plus à m'en soucier et quelques soit les opérations que je ferais par la suite, je me contenterai de manipuler un &lt;code&gt;canvas&lt;/code&gt;. Accessoirement, l'opération est d'une trivialité absolue&amp;nbsp;:&lt;/p&gt;
&lt;pre class=&quot;sh_javascript&quot;&gt;monCanvas.getContext('2d').drawImage(maSourceGraphique, 0, 0, maSourceGraphique.width, maSourceGraphique.height);&lt;/pre&gt;
&lt;p&gt;Néanmoins, ce n'est pas tout à fait suffisant pour gérer les vidéos. En effet, pour que l'élément &lt;code&gt;canvas&lt;/code&gt; donne l'impression d'être animé comme la vidéo, il faut redessiner le &lt;code&gt;canvas&lt;/code&gt; à intervalle régulière au fur est à mesure de la lecture de la vidéo. Pour cela, il suffit d'utiliser la fonction &lt;code&gt;setInterval&lt;/code&gt; pour que la méthode &lt;code&gt;drawImage&lt;/code&gt; soit appelée régulièrement.&lt;/p&gt;
&lt;p&gt;Une fois que ce premier élément &lt;code&gt;canvas&lt;/code&gt; est réalisé, chaque pièce du puzzle comprendra son propre élément &lt;code&gt;canvas&lt;/code&gt; dans lequel on dessinera la portion du premier &lt;code&gt;canvas&lt;/code&gt; qui lui correspond. Cette double utilisation de l'élément &lt;code&gt;canvas&lt;/code&gt; est nécessaire pour 2 raisons&amp;nbsp;:&lt;/p&gt;
&lt;ol&gt;&lt;li&gt;Question de performance&amp;nbsp;: Sean Christmann a montré dans &lt;a href=&quot;http://www.craftymind.com/2010/04/20/blowing-up-html5-video-and-mapping-it-into-3d-space/&quot; hreflang=&quot;en&quot;&gt;un article sur l'utilisation des balises &lt;code&gt;video&lt;/code&gt; et &lt;code&gt;canvas&lt;/code&gt;&lt;/a&gt; que l'usage de deux &lt;code&gt;canvas&lt;/code&gt; successifs pour réaliser des effets spéciaux sur les vidéos apporte un gain non négligeable vis à vis des performances.&lt;/li&gt;
&lt;li&gt;Les limites de l'implémentation de SVG&amp;nbsp;: En théorie, il serait possible de définir un élément &lt;code&gt;canvas&lt;/code&gt; réutilisable au sein de SVG. Malheureusement les tests que j'ai pu réaliser mon montrés que &lt;a href=&quot;https://bugzilla.mozilla.org/show_bug.cgi?id=579853&quot; hreflang=&quot;en&quot;&gt;ce n'était pas possible&lt;/a&gt;. Il faut donc créer un élément &lt;code&gt;canvas&lt;/code&gt; distinct pour chacune des pièces.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 lang=&quot;en&quot;&gt;One piece to rule them all&lt;/h2&gt;
&lt;p&gt;Chaque pièce du puzzle sera un élément &lt;code&gt;svg&lt;/code&gt; à part entière créé sur le même modèle. Cela a plusieurs avantages&amp;nbsp;:&lt;/p&gt;
&lt;ol&gt;&lt;li&gt;Lors du déplacement des pièces, celles-ci pourront êtres déplacées sur l'intégralité de la surface du document HTML. Si elles avaient été une sous-partie d'un seul élément &lt;code&gt;svg&lt;/code&gt;, le déplacement aurait été contraint à la zone visible du document SVG correspondant.&lt;/li&gt;
&lt;li&gt;Toutes les pièces reposant sur la même arborescence DOM, il est possible de créer une arborescence générique qui sera clonée autant de fois que nécessaire pour créer toutes les pièces.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;L'arborescence DOM d'une pièce de puzzle ressemble à ça&amp;nbsp;:&lt;/p&gt;
&lt;pre class=&quot;sh_xml&quot;&gt;&amp;lt;svg class=&quot;piece&quot; width=&quot;155&quot; height=&quot;155&quot; x=&quot;0&quot; y=&quot;0&quot;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;defs&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;path id=&quot;p1_1&quot; d=&quot;M10 10 h100 v26 a23,23 0 1,0 0,48 v26 h-25 a25,25 0 1,1 -50,0 h-25 Z&quot;/&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/defs&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;clippath id=&quot;c1_1&quot;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;use xlink:href=&quot;http://jeremie.patonnier.net/post/2010/07/26/SVG-et-HTML5-font-bon-menage-avec-Firefox#p1_1&quot;/&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/clippath&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;g&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;g clip-path=&quot;url(#c1_1)&quot;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;foreignobject x=&quot;10&quot; y=&quot;10&quot; width=&quot;125&quot; height=&quot;125&quot;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;canvas width=&quot;125&quot; height=&quot;125&quot;&amp;gt;&amp;lt;/canvas&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/foreignobject&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;use xlink:href=&quot;http://jeremie.patonnier.net/post/2010/07/26/SVG-et-HTML5-font-bon-menage-avec-Firefox#p1_1&quot;/&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/g&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/g&amp;gt;&lt;br /&gt;&amp;lt;/svg&amp;gt;&lt;/pre&gt;
&lt;p&gt;Quelques explications sur cette arborescence&amp;nbsp;:&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;La balise &lt;code&gt;path&lt;/code&gt; est encapsulée dans une balise &lt;code&gt;defs&lt;/code&gt;. Grâce à cela la forme de la pièce est masquée et pourra être réutilisée à plusieurs endroit via la balise &lt;code&gt;use&lt;/code&gt;. Elle est utilisée une première fois dans la balise &lt;code&gt;clipPath&lt;/code&gt; pour définir la forme de découpe de la pièce qui sera appliquée à l'élément &lt;code&gt;canvas&lt;/code&gt;. Elle est utilisée une deuxième fois après la balise &lt;code&gt;foreignObject&lt;/code&gt; pour pouvoir dessiner un contour autour de la pièce tant que la pièce n'est pas à sa place définitive (pour donner un petit effet de lueur interne sans recourir à un filtre).&lt;/li&gt;
&lt;li&gt;La balise &lt;code&gt;foreignObject&lt;/code&gt; est entourée de deux balises &lt;code&gt;g&lt;/code&gt;. La première (le parent direct de la balise foreignObject) permet d'appliquer la forme de découpe en même temps à l'élément &lt;code&gt;canvas&lt;/code&gt; et à l'élément &lt;code&gt;use&lt;/code&gt;. La deuxième balise &lt;code&gt;g&lt;/code&gt; permet d'appliquer un éventuel filtre d'ombre porté. Si vous appliquez le filtre et la découpe sur le même élément &lt;code&gt;g&lt;/code&gt;, le filtre sera appliqué avant la découpe. Si comme ici, vous voulez que le filtre s'applique à la forme résultante de la découpe, vous êtes contraint de sur-baliser votre code SVG pour forcer l'ordre d'application des effets.&lt;/li&gt;
&lt;li&gt;Notez l'espace de nom &quot;&lt;em&gt;xlink&lt;/em&gt;&quot; sur l'attribut &lt;code&gt;href&lt;/code&gt; de la balise &lt;code&gt;use&lt;/code&gt;. L'inclusion direct de SVG dans un document HTML5 simplifie drastiquement l'usage des espaces de nom XML mais ne nous en dispense pas totalement. En effet, même dans ce cas d'utilisation, SVG reste du XML et SVG utilisant le langage XLINK pour définir cet attribut &lt;code&gt;href&lt;/code&gt;, il est obligatoire de bien spécifier cet espace de nom. Pour éviter d'avoir à faire des manipulations complexes à ce niveau, HTML5 fournis par défaut le raccourcis &quot;&lt;em&gt;xlink&lt;/em&gt;&quot; pour gérer cet espace de nom.&lt;/li&gt;
&lt;li&gt;Vous noterez que la taille de l'élément &lt;code&gt;svg&lt;/code&gt; est plus grande que celle de l'élément &lt;code&gt;canvas&lt;/code&gt;. C'est nécessaire car la zone visible de l'élément &lt;code&gt;svg&lt;/code&gt; correspond à la portion de la source graphique représentée par l'élément &lt;code&gt;canvas&lt;/code&gt; ET les éventuels filtres qui s'y appliqueront pour générer les ombres portées.&lt;/li&gt;
&lt;li&gt;La valeur de l'attribut &lt;code&gt;d&lt;/code&gt; de la balise &lt;code&gt;path&lt;/code&gt; peut faire peur. Je ne vais pas vous détailler ici le pourquoi du comment (ça mériterai un article à part entière) mais sachez juste que c'est cette simple ligne qui fait qu'on a un tracé de pièce de puzzle (ici le coin haut-gauche). Si vous regardez la source du puzzle, vous verrez que j'ai regroupé toute l'intelligence de la construction de ce chemin dans une fonction dédiée. N'hésitez pas à vous amuser à la décortiquer.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;T'as d'beaux yeux tu sais&amp;nbsp;!&lt;/h2&gt;
&lt;p&gt;
Pour rendre l'expérience de jeux un peu plus fun, on va rajouter quelques effet spéciaux et fonctionnalités qui vont permettre de lui donner un aspect un peu plus &quot;fini&quot;.&lt;/p&gt;
&lt;h3 lang=&quot;en&quot;&gt;Pimp my mouse&lt;/h3&gt;
&lt;p&gt;L'idée quand on créer des pièces de puzzle qu'on peut manipuler à la souris, c'est de pouvoir gérer la sélection de la pièce selon la forme de celle-ci. Le problème, c'est que si on ne fait rien, la souris régis à une zone rectangulaire, même sur les zones transparentes. Heureusement, de ce point de vue, SVG est bien fichue et sait gérer ça sans avoir à recourir à des dizaines de lignes de code. En fait, ça se résume à un peu de CSS&amp;nbsp;:&lt;/p&gt;
&lt;pre class=&quot;sh_css&quot;&gt;svg{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; pointer-events : none;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;svg canvas{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; pointer-events : auto;&lt;br /&gt;}&lt;/pre&gt;
&lt;p&gt;La propriété &lt;code&gt;pointer-events&lt;/code&gt; permet de définir comment la souris va réagir lors de ses interactions avec un élément. Ici on dit que la souris ne doit pas déclencher d'évènement lorsqu'elle interagit avec un élément &lt;code&gt;svg&lt;/code&gt; mais par contre elle doit réagir normalement avec les éléments &lt;code&gt;canvas&lt;/code&gt; présent dans nos éléments &lt;code&gt;svg&lt;/code&gt;. Comme les éléments canvas sont découpés par un &lt;code&gt;clipPath&lt;/code&gt;, seul les parties visibles de l'élément &lt;code&gt;canvas&lt;/code&gt; réagiront à la souris (ce comportement est sans doute la principale différence entre les balises &lt;code&gt;clipPath&lt;/code&gt; et &lt;code&gt;mask&lt;/code&gt; de SVG). Notez que d'un point de vu Javascript, même si la souris ne renvoie pas d'évènement lorsqu'elle interagit avec les éléments &lt;code&gt;svg&lt;/code&gt;, les évènements renvoyés par la souris sur l'élément &lt;code&gt;canvas&lt;/code&gt; remontent normalement vers l'élément &lt;code&gt;svg&lt;/code&gt; est peuvent être interceptés à ce niveau là. La propriété &lt;code&gt;pointer-event&lt;/code&gt; ne fait que bloquer l'émission des évènements, elle ne bloque pas leur diffusion ni leur exploitation dans le DOM.&lt;/p&gt;
&lt;h3&gt;Ombrage, ô désespoirs&amp;nbsp;!&lt;/h3&gt;
&lt;p&gt;Pour donner un peu de relief au puzzle, je me suis amusé à rajouter des ombres portés sur les pièces&amp;nbsp;: une petite ombre porté quand une pièce est posée n'importe où, une grande ombre porté quand la pièce est &quot;soulevée&quot; et transportée et enfin, pas d'ombre du tout une fois que la pièce est à sa place définitive. Chacune des ombres (la petite est la grande) est définie à l'aide d'un filtre SVG distinct pour chacune. Par exemple, la petite ombre est définie comme cela&amp;nbsp;:&lt;/p&gt;
&lt;pre class=&quot;sh_xml&quot;&gt;&amp;lt;filter id=&quot;smallShadow&quot; filterUnits=&quot;userSpaceOnUse&quot;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;feColorMatrix type=&quot;matrix&quot; in=&quot;SourceAlpha&quot; result=&quot;greySource&quot;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; values=&quot;0 0 0 0 0&amp;nbsp; 0 0 0 0 0&amp;nbsp; 0 0 0 0 0&amp;nbsp; .6 .6 .6 .6 0&quot;/&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;feGaussianBlur in=&quot;greySource&quot; stdDeviation=&quot;2&quot; result=&quot;flou&quot;/&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;feOffset in=&quot;flou&quot; dx=&quot;1&quot; dy=&quot;1&quot; result=&quot;Ombre&quot;/&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;feMerge&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;feMergeNode in=&quot;Ombre&quot;/&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;feMergeNode in=&quot;SourceGraphic&quot;/&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/feMerge&amp;gt;&lt;br /&gt;&amp;lt;/filter&amp;gt;&lt;/pre&gt;
&lt;p&gt;Pour faire simple, ce filtre prend la source alpha (la transparence) de l'élément auquel va s'appliquer le filtre, lui applique une matrice de couleur (&lt;code&gt;feColorMatrix&lt;/code&gt;) pour quelle soit noir et légèrement transparente, va la flouter (&lt;code&gt;feGaussianBlur&lt;/code&gt;), la décaler (&lt;code&gt;feOffset&lt;/code&gt;) vers le bas et la droite et va recombiner le tout (&lt;code&gt;feMerge&lt;/code&gt;, &lt;code&gt;feMergeNode&lt;/code&gt;) avec la source graphique de l'élément. Je ne vous détail pas plus précisément que ça l'usage des primitives de filtres car cela mériterai un article à lui seul, mais c'est tout ça qui fait qu'on a une ombre de forme arbitraire (contrairement à la propriété CSS &lt;code&gt;box-shadow&lt;/code&gt; qui ne produit que des ombres rectangulaires... éventuellement avec des coins arrondis, mais c'est tout).&lt;/p&gt;
&lt;p&gt;L'application des filtres se fait très facilement directement via CSS&lt;/p&gt;
&lt;pre class=&quot;sh_css&quot;&gt;.shadow &amp;gt; g{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; filter:url(#smallShadow);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;#drag.shadow &amp;gt; g{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; filter:url(#bigShadow);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;.lock.shadow &amp;gt; g{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; filter:none;&lt;br /&gt;}&lt;/pre&gt;
&lt;p&gt;Vous n'avez alors plus qu'à jouer sur les classes est les ID de vos éléments avec Javascript pour appliquer ou non un filtre. Notez que Firefox permet également d'appliquer un filtre SVG à n'importe quel élément HTML. C'est ce que j'utilise pour griser l'aide du puzzle qui n'est qu'un simple élément &lt;code&gt;canvas&lt;/code&gt; affiché sur l'aire de jeu auquel j'applique un filtre de matrice de couleur.&lt;/p&gt;
&lt;h3&gt;Allo&amp;nbsp;! Caroline&amp;nbsp;! C'est Roger.&lt;/h3&gt;
&lt;p&gt;Dernière fonctionnalité, la sauvegarde automatique du puzzle en arrière plan. A chaque fois que vous déplacez une pièce, il y a un appel à l'API localStorage de HTML5 pour enregistrer la position de la pièce. De cette manière, si pour une raison ou une autre vous devez interrompre votre partie, vous pouvez la reprendre plus tard exactement là ou vous vous étiez arrêté. &lt;/p&gt;
&lt;p&gt;Pour simplifier les traitements, je stocke toutes les données représentant l'état du puzzle dans un objet spécifique. L'API localStorage stocke les données sous la forme clé/valeur. La norme est assez flou sur le type de donnée qui peuvent être stockées mais Firefox n'accepte que les chaines de caractère comme valeur à stocker donc, pour enregistrer mon objet, je le transforme en chaine en utilisant le support natif de JSON tel que définie dans la norme ECMAScript 5&amp;nbsp;:&lt;/p&gt;
&lt;pre class=&quot;sh_javascript&quot;&gt;var data = JSON.stringify(this.savedData);&lt;br /&gt;&lt;br /&gt;window.localStorage.setItem('currentPuzzle', data);&lt;/pre&gt;&lt;p&gt;La récupération des données est tout aussi simple&amp;nbsp;:&lt;/p&gt;
&lt;pre class=&quot;sh_javascript&quot;&gt;var data = window.localStorage.getItem('currentPuzzle');&lt;br /&gt;&lt;br /&gt;data = JSON.parse(data);&lt;/pre&gt;
&lt;h2&gt;Parfois, c'est le vil coyote qui gagne&lt;/h2&gt;
&lt;p&gt;
Lorsqu'on manipule des technologies nouvellement implémentées dans des navigateurs qui en sont encore au stade des versions Alpha/Beta, il n'est pas rare que l'on soit confronté à des problèmes. Dans ce cas précis, j'ai travaillé avec Minefield qui est la version non-stable de Firefox (et qui représente au moment ou j'écris ces lignes la version de développement du future Firefox 4) et j'ai été confronté à trois types de problèmes différents.&lt;strong&gt;&lt;br /&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;h3 lang=&quot;en&quot;&gt;Is there a Road Runner over here?&lt;/h3&gt;
&lt;p&gt;Les développeurs de Firefox 4 travaillent actuellement comme des malades sur les performances du navigateur et si l'on peut déjà percevoir une amélioration globale des performances, le travail n'est pas terminé et de nombreuses améliorations sont encore attendues dans les semaines à venir. Malheureusement, tout n'est pas parfait...&lt;/p&gt;
&lt;p&gt;Dans le cas qui nous occupe ici, le principal problème de performance provient de l'usage des filtres SVG. Les filtres sont actuellement ultra consommateur de ressources pour pouvoir être calculés. Ils sont tellement gourmands que j'ai très vite mis la possibilité de désactiver les ombres portées sur les pièces. En effet, si vous activez les ombres portées et que vous construisez un puzzle basé sur une vidéo, la lecture de celle-ci sera saccadée et le déplacement des pièces ne sera pas fluide. Le problème sera d'autant plus perceptible si vous créez un puzzle avec de nombreuses pièces (plus de 50) car au problème des filtres vient s'ajouter l'augmentation du nombre de nœuds DOM à gérer ce qui peut très vite plomber l'utilisation du jeu (en particulier lorsque vous déplacez les pièces).&lt;/p&gt;
&lt;p&gt;Autre point qui peut vite affecter les performances, l'utilisation de l'API localStorage. L'accès en lecture et en écriture via cette API est prohibitif au niveau performance (un peu moins de 100 milliseconde pour une simple opération d'écriture de chaine de caractère sur ma machine... iiirk&amp;nbsp;!). Ainsi si j'avais voulut enregistrer séparément la position de chaque pièces, il aurait fallut près de 10 secondes pour enregistrer l'état d'un puzzle de 100 pièces&amp;nbsp;! Soyez donc très prudent si vous utilisez cette API car sinon cela peut vite se voir. Si vous prévoyez de faire beaucoup d'opération via celle-ci, je ne saurait trop vous conseiller soit de les traiter en tache de fond asynchrone via l'utilisation de l'&lt;a href=&quot;http://dev.w3.org/html5/workers/&quot; hreflang=&quot;en&quot;&gt;API Web Workers&lt;/a&gt;, soit de travailler avec un objet contenant vos données que &lt;a href=&quot;https://developer.mozilla.org/en/Using_JSON_in_Firefox&quot; hreflang=&quot;en&quot;&gt;vous transformerez en chaine JSON&lt;/a&gt; avant de l'enregistrer intégralement en une seule fois (c'est cette dernière stratégie que j'ai choisie). Si vous n'y faite pas attention, vous pouvez vous retrouver avec un gel complet de votre page&amp;nbsp;!&lt;/p&gt;
&lt;h3&gt;Robert&amp;nbsp;! Il y a un cafard dans la machine.&lt;/h3&gt;
&lt;p&gt;L'intérêt de réaliser ce genre de démo avec une version de développement d'un navigateur, c'est que ça permet de découvrir des bugs qu'il est possible de faire corriger avant la sortie de la version final du navigateur. Les bugs les plus faciles à corriger sont liés à l'implémentation de la balise SVG &lt;code&gt;foreignObject&lt;/code&gt;&amp;nbsp;:&lt;/p&gt;
&lt;ol&gt;&lt;li&gt;&lt;a href=&quot;https://bugzilla.mozilla.org/show_bug.cgi?id=576986&quot; hreflang=&quot;en&quot;&gt;Bug 576986&lt;/a&gt;&amp;nbsp;: la balise &lt;code&gt;foreignObject&lt;/code&gt; ne respectait pas les règles d'application des évènements de la souris lorsqu'on lui appliquait une forme de découpe. La correction a été apportée dans les heures qui ont suivit. Waow&amp;nbsp;!&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://bugzilla.mozilla.org/show_bug.cgi?id=578309&quot; hreflang=&quot;en&quot;&gt;Bug 578309&lt;/a&gt;&amp;nbsp;: La balise &lt;code&gt;foreignObject&lt;/code&gt; redéfinissait son propre espace de coordonnées, comme si on y avait appliquée une transformation. La encore, il n'aura fallut que quelques jours pour que ce soit corrigé. J'en profite ici pour adresser un grand merci à &lt;a href=&quot;http://longsonr.wordpress.com/&quot; hreflang=&quot;en&quot;&gt;Robert Longson&lt;/a&gt; qui a travaillé sur ces bugs en particulier et qui fait un énorme travail en ce qui concerne le support de SVG dans Firefox.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Mais il y a aussi quelques bugs plus durs qui vont sans doute être assez délicat à résoudre&amp;nbsp;:&lt;/p&gt;
&lt;ol&gt;&lt;li&gt;&lt;a href=&quot;https://bugzilla.mozilla.org/show_bug.cgi?id=577824&quot; hreflang=&quot;en&quot;&gt;Bug 577824&lt;/a&gt;&amp;nbsp;: Quand on attache un élément HTML à l'arbre DOM du document via Javascript et qu'un filtre s'applique sur cet élément, l'élément n'est pas affiché.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://bugzilla.mozilla.org/show_bug.cgi?id=577464&quot; hreflang=&quot;en&quot;&gt;Bug 577464&lt;/a&gt;&amp;nbsp;: Celui là, c'est le plus bizarre de tous, et sans doute le plus difficile à résoudre. Dans certain cas de figure, le rendu des éléments auquel est appliquée une forme de découpe n'est pas correctement réalisé. Il est tellement difficile de produire un cas d'utilisation unitaire que son simple diagnostique risque de prendre du temps. Une des pistes actuellement exploré serait un bug lié à la bibliothèque graphique Cairo qui est utilisée par Firefox pour rendre les éléments visuels.&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;Allo&amp;nbsp;! Tonton&amp;nbsp;? Pourquoi tu tousses&amp;nbsp;?&lt;/h3&gt;
&lt;p&gt;Après, au delà des éventuels problèmes d'implémentation, il y a aussi les problèmes liés aux spécifications elles-mêmes. Les spécifications qui tournent autour de HTML5 ne sont pas encore finalisées ou pas forcément adapté à certains cas d'utilisation et l'on tombe parfois sur des perles qui peuvent plonger un web designer dans des affres d'incompréhension. J'en ai découvert deux dans ce gout là. Une dans la spécification de l'API Canvas 2D et une dans la spécification de SVG 1.1.&lt;/p&gt;
&lt;h4&gt;Canvas pas aller ça monsieur.&lt;/h4&gt;
&lt;p&gt;En l'état de la spécification, avec la méthode &lt;code&gt;drawImage&lt;/code&gt; de &lt;code&gt;canvas&lt;/code&gt;, il est possible de dessiner soit une image, soit une vidéo. Quand vous dessinez une image, pas de problème, vous dessinez l'image elle-même. Quand vous dessinez une vidéo, ce qui est dessiné, c'est l'image qui est lut par le lecteur vidéo au moment ou on appel la fonction de dessin. Maintenant, que ce passe-t-il si vous voulez dessiner une image animé (aGIF, APNG, MNG, SVG, etc.)&amp;nbsp;? Moi, assez naïvement, je me suis dit que ça allait dessiner l'image courante de l'animation au moment ou on appel la fonction de dessin... bref que ça allait ce comporter comme avec une vidéo et c'est d'ailleurs comme cela que se comporte Firefox 3.6. Mais que nenni jeune Padawan&amp;nbsp;! La spécification dit que dans le cas d'une image animé, ce qui est dessiné, c'est la première image de l'animation et puis c'est tout&amp;nbsp;!&lt;/p&gt;
&lt;blockquote lang=&quot;en&quot;&gt;&lt;p&gt;&lt;a href=&quot;http://www.w3.org/TR/2dcontext/#images&quot; hreflang=&quot;en&quot;&gt;http://www.w3.org/TR/2dcontext/#images&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;q&gt;When the drawImage() method is passed an animated image as its image argument, the user agent must use the poster frame of the animation, or, if there is no poster frame, the first frame of the animation.&lt;/q&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Et chez Mozilla, ils se sont dit que ce serai une bonne idée de suivre la spécification dans Firefox 4. Résultat des courses, &lt;a href=&quot;https://bugzilla.mozilla.org/show_bug.cgi?id=578514&quot; hreflang=&quot;en&quot;&gt;j'ai ouvert un bug en pensant à une régression&lt;/a&gt;, mais non, c'est juste qu'ils on fait en sorte d'être respectueux de la spécification.&lt;/p&gt;
&lt;p&gt;Alors, là, j'ai envie de dire&amp;nbsp;: &quot;Bravo, c'est bien&quot;. Mais d'un autre coté, maintenant, on fait comment pour accéder aux autres images qui composent une image animée&amp;nbsp;? On est typiquement dans un cas ou la spécification est difficile à comprendre et elle reflète sans doute les capacités des fabriquant de navigateur à gérer ce cas d'utilisation. Mozilla sait comment gérer les images animées dans ce cas de figure, mais se bride du fait de la faiblesse de la spécification sur ce point. C'est dommage. &lt;/p&gt;
&lt;p&gt;La spécification n'est pas encore définitive et si vous pensez que ce cas d'utilisation est important, faite le savoir. Pour cela, vous pouvez soit faire du lobbying auprès du HTML Worging Group (bon courage&amp;nbsp;!) soit auprès des fabricants de navigateur qui sont directement parti prenante. &lt;a href=&quot;https://bugzilla.mozilla.org/show_bug.cgi?id=578514&quot; hreflang=&quot;en&quot;&gt;La discussion est ouverte chez Mozilla&lt;/a&gt; et si, par exemple, vous prenez simplement le temps de voter pour le bug que j'ai ouvert, peut-être que Mozilla considèrera qu'il y a matière à pousser le sujet.&lt;/p&gt;
&lt;h4&gt;SVG, ou l'art de Se Vautrer la Gueule&amp;nbsp;?&lt;/h4&gt;
&lt;p&gt;A la base, &lt;a href=&quot;https://bugzilla.mozilla.org/show_bug.cgi?id=579550&quot; hreflang=&quot;en&quot;&gt;j'ai fait une mauvaise interprétation de la spécification SVG&lt;/a&gt; alors que je voulais réutiliser un élément &lt;code&gt;foreigObject&lt;/code&gt; avec la balise &lt;code&gt;use&lt;/code&gt;. J'ai naïvement crus que n'importe quelle enfant légitime de la balise &lt;code&gt;g&lt;/code&gt; pouvait être réutilisé via la balise &lt;code&gt;use&lt;/code&gt;. Malheureusement, ce n'est pas le cas. La balise &lt;code&gt;use&lt;/code&gt; ne peut être utilisée que pour dupliquer des éléments explicitement graphique (ce qui n'est pas le cas de &lt;code&gt;foreignObject&lt;/code&gt;) ou certains conteneurs (&lt;code&gt;g&lt;/code&gt;, &lt;code&gt;symbol&lt;/code&gt; et &lt;code&gt;svg&lt;/code&gt;). Néanmoins, comme &lt;code&gt;g&lt;/code&gt; est un élément valide pour &lt;code&gt;use&lt;/code&gt;, il suffit d'envelopper un élément &lt;code&gt;foreignObject&lt;/code&gt; avec un élément &lt;code&gt;g&lt;/code&gt; est le tour et joué.&lt;/p&gt;
&lt;p&gt;Et là de se poser la question&amp;nbsp;: &quot;Mais pourquoi la norme ne permet pas d'utiliser directement tous les enfants légitimes de &lt;code&gt;g&lt;/code&gt;&amp;nbsp;? Pourquoi faut-il rajouter une balise supplémentaire qui a le gout et l'odeur de l'inutile&amp;nbsp;?&quot;. Bien évidement, il s'agit de questions de web designer, pas d'implémenteur. En effet, il y a fort à parier que lorsque la norme a commencé à être écrite (il y a plus de 10 ans, rappelons-le), les développeurs en charge de sa mise en œuvre ont du rencontrer un problème à ce niveau et faire un arbitrage dans ce sens. Ou bien il y a eu un débat philosophique quelconque a propos de ce qu'est la balise &lt;code&gt;use&lt;/code&gt; et personne n'a réussie à challenger cette vision. Franchement, je n'en sais rien mais avec le recul que l'on a désormais, la question aurait le mérite d'être à nouveau posée.&lt;/p&gt;
&lt;p&gt;De manière général, ce genre de collision malheureuse entre SVG et HTML5 risque de se représenter ailleurs (essayez de contrôler à l'aide de Javascript une balise HTML &lt;code&gt;video&lt;/code&gt; que vous avez cloné via la balise SVG &lt;code&gt;use&lt;/code&gt;... vous ne pouvez pas&amp;nbsp;!). En effet, on a d'un coté une norme vieillissante (SVG) et de l'autre une norme toute neuve en construction (HTML5). A bien des égards, SVG a été conçus pour vivre dans un univers statique. A l'inverse, HTML5 redéfinis énormément d'éléments dynamiques au travers de nouvelles API Javascript. De ce point de vue, je ne serais pas surpris que HTML5 redonne un coup de fouet à SVG et il n'est pas exclus que dans les années a venir on voit arriver une norme SVG 2 pour résoudre tous ces nouveaux cas d'utilisation... mais bon, ne soyez pas trop pressé. C'est aussi ça qui fait que Flash à encore de beau jours devant lui.&lt;/p&gt;
&lt;h2&gt;Le mot de la fin (des haricots)&lt;/h2&gt;
&lt;p&gt;Voila, je viens de vous arroser avec un article copieusement long et en même temps extrêmement raccourcis. Si vous voulez comprendre plus précisément comme marche quoi, je vous encourage à regarder le code source que j'ai essayé de commenter le plus possible. Ce qu'il faut retenir, c'est que le support de SVG dans HTML est encore quelque chose de très expérimental mais cela donne déjà une bonne idée de ce que peut faire chaque technologie respective et ce que l'on gagne à les mixer.&lt;/p&gt;
&lt;p&gt;Si vous voulez aller plus loin, n'hésitez pas à lire les spécifications. Elles peuvent parfois s'avérer très utile. La spécification SVG par exemple comporte de nombreux exemples de code très utile à la compréhension. D'autres ressources très utile également sont les documentations techniques des fabricants de navigateurs. En particulier dans le cas de cette démo, le &lt;a href=&quot;https://developer.mozilla.org/En&quot;&gt;Mozilla Developper Center&lt;/a&gt;, mais aussi &lt;a href=&quot;http://msdn.microsoft.com/en-us/ie/aa740473.aspx&quot; hreflang=&quot;en&quot;&gt;MSDN&lt;/a&gt;, &lt;a href=&quot;http://dev.opera.com/&quot; hreflang=&quot;en&quot;&gt;Opera Dev&lt;/a&gt; et &lt;a href=&quot;http://trac.webkit.org/wiki&quot; hreflang=&quot;en&quot;&gt;le wiki de Webkit&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Quoi qu'il en soit, expérimentez vous même et faite vous votre propre idée. Ces technologies sont toutes assez nouvelles, les implémentations évoluent constamment et le processus de standardisation n'est pas linéaire...mais amusez vous, c'est comme ça que vous apprendrez de nouvelles choses &lt;img src=&quot;/themes/default/smilies/wink.png&quot; alt=&quot;;)&quot; class=&quot;smiley&quot; /&gt;&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;La spécification SVG : &lt;a href=&quot;http://www.w3.org/TR/SVG/&quot; hreflang=&quot;en&quot;&gt;http://www.w3.org/TR/SVG/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;La spécification HTML 5 : &lt;a href=&quot;http://www.w3.org/TR/html5/&quot; hreflang=&quot;en&quot;&gt;http://www.w3.org/TR/html5/&lt;/a&gt;
&lt;ul&gt;&lt;li&gt;L'API Canvas 2D : &lt;a href=&quot;http://www.w3.org/TR/2dcontext/&quot; hreflang=&quot;en&quot;&gt;http://www.w3.org/TR/2dcontext/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;L'API Storage : &lt;a href=&quot;http://www.w3.org/TR/webstorage/&quot; hreflang=&quot;en&quot;&gt;http://www.w3.org/TR/webstorage/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;L'API Web Workers : &lt;a href=&quot;http://www.w3.org/TR/workers/&quot; hreflang=&quot;en&quot;&gt;http://www.w3.org/TR/workers/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;ECMAScript 5 (PDF) : &lt;a href=&quot;http://www.ecma-international.org/publications/files/ECMA-ST/ECMA-262.pdf&quot; hreflang=&quot;en&quot;&gt;http://www.ecma-international.org/publications/files/ECMA-ST/ECMA-262.pdf&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>

    

      </item>
  
  <item>
    <title>Devenir beta-testeur de Firefox sous Ubuntu/Linux</title>
    <link>http://jeremie.patonnier.net/post/2010/03/19/Devenir-beta-testeur-de-Firefox-sous-Ubuntu-Linux</link>
    <guid isPermaLink="false">urn:md5:a6fa5ab3f6c4431d9f5142cda07cc5fd</guid>
    <pubDate>Fri, 19 Mar 2010 09:30:00 +0100</pubDate>
    <dc:creator>Jeremie</dc:creator>
        <category>Élucubrations</category>
        <category>Firefox</category><category>linux</category><category>Mozilla</category><category>Navigateurs</category><category>ubuntu</category>
    <description>&lt;p&gt;Suite à &lt;a hreflang=&quot;fr&quot; href=&quot;http://www.chevrel.org/fr/carnet/?post/2010/01/09/Retour-sur-mes-bugs-en-cours-mes-2-nouveaux-bugs-de-d%C3%A9but-janvier&quot;&gt;un article de Pascal Chevrez&lt;/a&gt;, qui soulignait qu'il n'y avait paradoxalement pas assez de beta-testeur de Firefox pour Linux, j'ai eu envie de me pencher sur la question de l'installation des beta de Firefox sous Linux (enfin sous ma Ubuntu surtout &lt;img src=&quot;/themes/default/smilies/wink.png&quot; alt=&quot;;)&quot; class=&quot;smiley&quot; /&gt; ). En temps que noob de Linux, ça a été assez intéressant de voir ça. &lt;/p&gt;
&lt;p&gt;L'idée de cette article est de fournir un &quot;How-to&quot; pour devenir beta-testeur de Firefox sous Ubuntu (mais ça marche aussi pour les utilisateurs de Windows et Mac OSX, hein !) tout en étant volontairement orienté pour un public peu technique (j'assume le fait que vous sachiez tout de même ce qu'est un répertoire et que vous sachiez au moins ouvrir une fenêtre de ligne de commande, même si vous ne savez pas trop quoi en faire).&lt;/p&gt;    &lt;p&gt;Petit préambule technique à destination des utilisateurs non techniques : le raccourci &lt;code&gt;~/&lt;/code&gt; fait référence à votre répertoire de travail personnel. Le chemin d'accès &quot;long&quot; vers ce répertoire sous Ubuntu est &lt;code&gt;/home/&lt;em&gt;nom-d-utilisateur&lt;/em&gt;/&lt;/code&gt;.&lt;/p&gt;
&lt;h2&gt;Télécharger Firefox&lt;/h2&gt;
&lt;p&gt;La première chose à faire, c'est de télécharger la version de Firefox que vous voulez utiliser. Pour cela, vous trouverez tous ce qu'il vous faut sur les sites de Mozilla. Néanmoins, plusieurs choix s'offrent à vous selon ce à quoi vous vous intéressez :&lt;/p&gt;
&lt;ol&gt;&lt;li&gt;Vous voulez la dernière version stable de Firefox, rendez-vous ici :&lt;br /&gt;&lt;a hreflang=&quot;fr&quot; href=&quot;http://www.mozilla.com/en-US/firefox/all.html&quot;&gt;http://www.mozilla.com/en-US/firefox/all.html&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Vous voulez tester la dernière beta &quot;public&quot;, rendez-vous ici :&lt;br /&gt;&lt;a hreflang=&quot;en&quot; href=&quot;http://www.mozilla.com/en-US/firefox/all-beta.html&quot;&gt;http://www.mozilla.com/en-US/firefox/all-beta.html&lt;/a&gt; (actif uniquement en période de beta-test des versions majeurs, ce qui n'est pas le cas au moment ou j'écris ces lignes)&lt;/li&gt;
&lt;li&gt;Vous êtes un aventurier et vous voulez tester une &quot;nightly build&quot;, c'est ici que ça ce passe :&lt;br /&gt;&lt;a hreflang=&quot;en&quot; href=&quot;http://ftp.mozilla.org/pub/mozilla.org/firefox/nightly/latest-trunk/&quot;&gt;http://ftp.mozilla.org/pub/mozilla.org/firefox/nightly/latest-trunk/&lt;/a&gt; (notez qu'il s'agit de l'accès direct au &quot;trunk&quot;, mais si vous remontez l'arborescence d'un niveau, vous pouvez accéder à d'autres branches de développements... ah ben oui, là, vous êtes vraiment en mode aventure hein)&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Attention pour les utilisateur de Linux 64 bits. En effet, Mozilla ne fournis des versions compilées que pour les systèmes 32 bits. Ça ne vous empêchera pas d'utiliser Firefox, mais cela a deux conséquences : D'une part la stabilité de Firefox n'est pas garantis et d'autre part les plugins ne seront pas utilisables (en tout cas, pas facilement).&lt;/p&gt;
&lt;p&gt;Vous pouvez également utiliser les dépôts PPA pour faire l'installation (ce qui vous permettra de trouver des compilations 64 bits !)... je ne vais pas trop m'appesantir la dessus vu que je fait une allergie complète à ce système (j'y comprend rien et je n'ai pas envie d'y comprendre quoi que ce soit... je sais, c'est génial et je ne sais pas de quoi je me prive, mais ça me gonfle et je trouve ça beaucoup trop nerd pour moi)&lt;/p&gt;
&lt;h2&gt;Installer Firefox&lt;/h2&gt;
&lt;p&gt;L'installation en tant que tel est assez trivial : décompactez l'archive que vous avez téléchargée, et voila, c'est installé. Bon, ok, soyons un peu sérieux. La version de Firefox que vous avez téléchargée est effectivement directement exécutable (sous Ubuntu, vous n'avez aucune question de dépendance à gérer, c'est assez confortable mais je ne sais pas si c'est aussi simple avec d'autres distributions) mais elle est loin d'être intégré au système.&lt;/p&gt;
&lt;p&gt;Je ne vais pas vous harasser d'une explication fastidieuse alors que tout est extrêmement bien documenté en français ici : &lt;a hreflang=&quot;fr&quot; href=&quot;http://doc.ubuntu-fr.org/firefox&quot;&gt;http://doc.ubuntu-fr.org/firefox&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Ça y est ? Vous avez installé une autre version de Firefox ? Vous êtes près à double-cliquer sur l'icône de lancement ? Alors là, vous arrêtez tout, vous respirez un grand coup et vous vous posez la question de votre profil utilisateur !&lt;/p&gt;
&lt;p&gt;On ne le dira jamais assez, mais avant toute chose, &lt;strong&gt;sauvegardez votre profil Firefox habituel !&lt;/strong&gt; J'insiste, un accident malheureux est si vite arrivé. &lt;/p&gt;
&lt;p&gt;Sous Ubuntu 9.10, tous vos profils utilisateur se trouve dans &lt;code&gt;~/.mozilla/firefox&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;C'est particulièrement critique si vous voulez jouer le mode aventure extrême avec les nightly de Firefox. De manière général, je vous invite à vous créer plusieurs profils dédiés à vos tests. Pour créer de nouveau profil ou pour choisir un profil spécifique, il suffit de lacer Firefox avec l'option &lt;code&gt;-p&lt;/code&gt;. Vous pouvez rajouter cette options dans les lanceurs d'application d'Ubuntu (clique droit, &quot;propriété&quot;) ou bien lancer Firefox depuis la ligne de commande :&lt;/p&gt;
&lt;pre&gt;firefox -p&lt;/pre&gt;&lt;p&gt;Selon les tests que vous voulez réaliser, il peut aussi être utile de créer un profil temporaire pour la seul durée de ces tests. &lt;a hreflang=&quot;fr&quot; href=&quot;http://www.chevrel.org/fr/carnet/?post/2010/01/14/Tester-Firefox-avec-un-profil-klinex&quot;&gt;Pascal documente très bien la façon de faire cela sur son site&lt;/a&gt;. &lt;/p&gt;
&lt;p&gt;De même, vous pouvez avoir besoin de lancer plusieurs instances de Firefox en parallèle (par exemple si vous avez une version stable pour votre navigation quotidienne et que vous voulez réaliser un test sur une version instable). Pour cela, il vous suffit de lancer Firefox avec l'option &lt;code&gt;--no-remote&lt;/code&gt; :&lt;/p&gt;
&lt;pre&gt;firefox --no-remote&lt;/pre&gt;
&lt;h2&gt;La phase de tests&lt;/h2&gt;
&lt;p&gt;Voila vous êtes près, vous pouvez commencer vos tests. Soyons bien claire, vous êtes libre de tester ce que vous voulez : Le support des standards du Web, les performances du navigateur, la qualité de l'interface utilisateur, la gestion des extensions... c'est vous qui voyez ce qui vous intéresse. Personnellement, lors des phases de beta-test publique, je me contente de surfer &quot;comme d'habitude&quot; et de relever les éventuels problèmes que je rencontre.&lt;/p&gt;
&lt;h3&gt;Automatisez vos tests&lt;/h3&gt;
&lt;p&gt;Quoi qu'il en soit, dans une démarche de beta-tests (ou pire, d'alpha-tests), vous risquez d'être amener à reproduire plusieurs fois les mêmes actions. En effet, que ce soit pour vous assurer qu'il n'y a pas de régression d'une version à l'autre ou bien qu'une dysfonction a été corrigée, il va vous falloir refaire plusieurs fois les mêmes actions. En soit, c'est déjà quelque chose de fastidieux, mais en plus, il peut se passer plusieurs mois entre la réalisation de vos différents tests (ça peut prendre du temps de corriger un bug) et se souvenir de ce qu'on a fait il y a plusieurs jours/semaines/mois est loin d'être évident. Il est donc vivement conseillé d'automatiser vos tests pour éviter d'avoir à vous prendre la tête avec ça. Cette phase d'automatisation peut également vous faciliter la vie lorsque vous aurez des bugs à signaler (j'y reviens plus loin).&lt;/p&gt;
&lt;p&gt;Pour réaliser cette automatisation, vous avez le choix des armes. cela dépendra de vos connaissances techniques et de vos besoins de test. Ça peut aller de la réalisation d'une page HTML qui recouvre un certain nombre de cas de test à la réalisation d'un script bash complet. Il existe néanmoins une extensions de Firefox qui peut vous être utile : &lt;a hreflang=&quot;fr&quot; href=&quot;https://addons.mozilla.org/fr/firefox/addon/3863&quot;&gt;iMacros pour Firefox&lt;/a&gt;. Cette extension permet d'enregistrer et rejouer toutes les taches que vous pouvez faire avec Firefox (pas seulement ce que vous faite dans un page web mais vraiment tout, y compris les interactions avec l'interface utilisateur).&lt;/p&gt;
&lt;h3&gt; L'équipe Assurance Qualité de Mozilla&lt;/h3&gt;
&lt;p&gt;Si vous êtes vraiment motivé, vous pouvez également aider (pour ne pas dire rejoindre &lt;img src=&quot;/themes/default/smilies/wink.png&quot; alt=&quot;;)&quot; class=&quot;smiley&quot; /&gt; ) l'équipe d'assurance qualité de Mozilla. Elle fédère l'effort de test des produits Mozilla. Elle propose &lt;a hreflang=&quot;en&quot; href=&quot;http://quality.mozilla.org/tools&quot;&gt;un certains nombre d'outils&lt;/a&gt;, organise &lt;a hreflang=&quot;en&quot; href=&quot;http://quality.mozilla.org/events&quot;&gt;des évènements spécifiques&lt;/a&gt; et met en œuvre un catalogue de cas de tests. Vous trouverez plus d'informations sur &lt;a hreflang=&quot;en&quot; href=&quot;http://quality.mozilla.org/&quot;&gt;le site de Mozilla dédié à l'Assurance Qualité&lt;/a&gt; (en anglais).&lt;/p&gt;
&lt;p&gt;Cette équipe propose même une extension spécifique pour vous accompagner dans vos démarches de test : le &lt;a hreflang=&quot;fr&quot; href=&quot;https://addons.mozilla.org/fr/firefox/addon/5428&quot;&gt;Mozilla QA Companion&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;Signaler un bug&lt;/h2&gt;
&lt;p&gt;Ça y est, là vous êtes chaud. Vous utilisez votre Firefox tout nouveau tout beau, et là... Paf ! C'est le drame ! Vous êtes confronté à un bug. Comme vous êtes quelqu'un de bien, vous allez le signaler à Mozilla. Je ne vais pas vous le cacher, en général, c'est là que ça se corse. Ça se corse parce que le reporting de bug se fait exclusivement en anglais. Là, il n'y a pas vraiment le choix, l'anglais étant la langue partagée par quasiment tous les développeurs de la planète, c'est ce qui est le plus facile pour tout le monde... mais pas forcément pour vous. Détendez vous quand même, il n'y a pas besoin d'être bac+5 d'anglais. Au pire du pire, si vraiment c'est un obstacle insurmontable pour vous, vous pouvez gentiment aller en discuter avec les différentes communautés Mozilla françaises. Que ce soit les traducteurs de &lt;a hreflang=&quot;fr&quot; href=&quot;http://www.frenchmozilla.fr/&quot;&gt;FrenchMozilla&lt;/a&gt; (D'ailleurs, si votre bug est un bug de traduction, c'est eux qu'il faut aller voir) ou les administrateurs de &lt;a hreflang=&quot;fr&quot; href=&quot;http://www.geckozone.org/&quot;&gt;GeckoZone&lt;/a&gt;, si vous leur demandez poliment de l'aide, vous ne devriez pas être bombardé de cailloux, au contraire &lt;img src=&quot;/themes/default/smilies/wink.png&quot; alt=&quot;;)&quot; class=&quot;smiley&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Pour signaler un bug, ça se passe sur &lt;a hreflang=&quot;en&quot; href=&quot;https://bugzilla.mozilla.org/&quot;&gt;le site Bugzilla de Mozilla&lt;/a&gt;. Mais ne nous précipitons pas, faisons cela dans les règles de l'art (il sera bien temps de faire ça n'importe comment le moment venu &lt;img src=&quot;/themes/default/smilies/smile.png&quot; alt=&quot;:)&quot; class=&quot;smiley&quot; /&gt; ).&lt;/p&gt;
&lt;h3&gt;Vérifier si ce bug n'a pas déjà été signalé&lt;/h3&gt;
&lt;p&gt;Alors avant de s'énerver, la première chose à faire est de vérifier
si le bug que vous avez repéré n'a pas déjà été signalé par quelqu'un
d'autre. En effet, ce n'est pas la peine de signaler un bug qui a déjà été pris en charge par les développeurs et qui sera donc corrigé dans la prochaine version stable/beta/nightly. De même, il est plus constructif de compléter un bug existant que de faire un doublon.&lt;/p&gt;
&lt;p&gt;Bon, ne nous le cachons pas, l'interface de bugzilla est cauchemardesque d'un point de vue ergonomique. C'est un outils fait pour les développeurs de Mozilla. Si vous êtes un contributeur occasionnel, abandonnez ici tout espoirs ! Faire une recherche de bug si vous n'avez pas l'habitude des arcanes de l'organisation des développements chez mozilla, c'est l'horreur. Alors si malgré vos effort vous ouvrez un bug qui en doublonne un autre, ne vous inquiétez pas, Mozilla dispose d'une équipe de triage des bugs qui assure grave ! Ne soyez donc pas surpris si vous voyez que votre bug est marqué comme étant un doublon, ça vous arrivera régulièrement, surtout au début &lt;img src=&quot;/themes/default/smilies/wink.png&quot; alt=&quot;;)&quot; class=&quot;smiley&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;Qualifier votre bug&lt;/h3&gt;
&lt;p&gt;Maintenant que vous savez (ou croyez savoir, ou n'avez pas envie de savoir) que personne n'a déjà signalé votre bug, vous pouvez vous lancer dans votre rapport de bug. Oui, mais pas de précipitation. Avant de vous jeter sur Bugzilla, prenez le temps de préparer un rapport complet. En effet, il n'y a rien de plus inutile qu'un rapport de bug sous la forme de &quot;Y'a tel machin qui marche pas&quot;. En effet, les personnes qui vont traiter le bug ne sont pas à votre place, il faut donc leur donner un minimum de contexte pour qu'ils puissent travailler efficacement.&lt;/p&gt;
&lt;p&gt;Un rapport de bug exploitable contiens un certain nombre d'informations clés :&lt;/p&gt;
&lt;ol&gt;&lt;li&gt;Commencez par dire quel est la version de Firefox que vous utilisez et votre système d'exploitation. Le plus simple est de coller purement et simplement la &quot;User Agent String&quot; de votre navigateur dans votre rapport de bug. Vous la trouverez en vous rendant dans le menu : &lt;em&gt;Aide &amp;gt; A propos de Mozilla Firefox&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;Décrivez toutes les étapes qui permettent de reproduire le bug (idéalement sous forme d'une liste ordonnée). Si vous avez pensé à automatiser vos tests, vous pouvez en plus joindre le script d'automatisation, les développeurs pourront alors reproduire assez simplement le problème (et donc potentiellement traiter votre bug plus vite &lt;img src=&quot;/themes/default/smilies/wink.png&quot; alt=&quot;;)&quot; class=&quot;smiley&quot; /&gt; ). Si ce bug ne peut pas être reproduit systématiquement, précisez le bien et essayez de qualifier sa fréquence d'apparition.&lt;/li&gt;
&lt;li&gt;Précisez le résultat normalement attendu par votre test et le résultat réel constaté de votre test. Encore une fois plus vous serez précis sur ces deux points, plus le bug sera facile à identifier et à corriger.&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;Ouvrir un bug&lt;/h3&gt;
&lt;p&gt;Bon, ben nous y voila, c'est le grand moment. Si ce n'est déjà fait, commencez par vous &lt;a hreflang=&quot;en&quot; href=&quot;https://bugzilla.mozilla.org/createaccount.cgi&quot;&gt;ouvrir un compte sur Bugzilla&lt;/a&gt; et faites l'effort de survoler &lt;a hreflang=&quot;en&quot; href=&quot;https://bugzilla.mozilla.org/page.cgi?id=etiquette.html&quot;&gt;le guide de bonne conduite de Bugzilla&lt;/a&gt; (c'est court et pas prise de tête, mais on y retrouve quelque points important pour une bonne vie en communauté). Une fois identifié, vous n'avez plus qu'à &lt;a hreflang=&quot;en&quot; href=&quot;https://bugzilla.mozilla.org/enter_bug.cgi&quot;&gt;remplir votre rapport de bug&lt;/a&gt; et voila... vous faites désormais partis de la grande famille des contributeurs au projet Mozilla. Bravo &lt;img src=&quot;/themes/default/smilies/smile.png&quot; alt=&quot;:)&quot; class=&quot;smiley&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;Comme vous pouvez le voir, il n'y a rien de vraiment compliqué. Il n'est même pas nécessaire que vous ayez des connaissances techniques particulières. C'est tout l'intérêt du mode de développement ouvert de Mozilla : tout le monde peu participer dans la mesure de ses moyens, connaissances, disponibilités. En fait, le seul problème que j'ai avec Mozilla, c'est la difficulté à trouver comment participer. En effet, Mozilla communique assez mal sur comment il est possible de participer. Mozilla dispose de tout un tas d'outils et il est parfois difficile de savoir ou commencer dans la profusion des possibilité qui sont offerte. En dehors du développement, il existe des tas d'autres choses à faire avec Mozilla : du &lt;a hreflang=&quot;en&quot; href=&quot;http://www.spreadfirefox.com/&quot;&gt;marketing&lt;/a&gt;, de la &lt;a hreflang=&quot;en&quot; href=&quot;http://mozillalabs.com/&quot;&gt;R&amp;amp;D&lt;/a&gt;, de &lt;a hreflang=&quot;en&quot; href=&quot;http://design-challenge.mozillalabs.com/&quot;&gt;l'ergonomie&lt;/a&gt;, et &lt;a hreflang=&quot;en&quot; href=&quot;http://www.drumbeat.org/&quot;&gt;bien plus&lt;/a&gt;. C'est parce qu'il est difficile de savoir ou commencer que j'ai écris cet article. J'essayerai de vous parler de toutes ces autre opportunités pour les non-développeur au seins du projet Mozilla car ce n'est pas toujours claire pour s'y retrouver. N'hésitez pas à vous renseigner sur les forums de discutions francophone, les gens sont sympas et n'hésiteront pas à vous aider à démarrer. Bienvenu !&lt;/p&gt;</description>

    

      </item>
  
</channel>
</rss>
