Chez Jérémie

Chez Jérémie, parfois c'est sérieux, parfois non !

Documenter le Web ouvert, pourquoi et comment

- Web - Lien permanent

Cela fait quelques temps que je m’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’espère bien convaincre quelques-uns d’entre vous de me suivre sur ce long chemin… un peu aride, il faut bien l’admettre :-P

Pourquoi ?

En temps que « vieux » du Web (je créer des sites à titre personnel depuis 1997 et à titre professionnel depuis 2000), j’ai appris le Web « à la dure » en lisant quelques livres de qualité inégale, en utilisant outrancièrement la fonction « afficher la source » de mes navigateurs et en fréquentant divers forums de discussion. J’ai fait beaucoup d’erreurs (et je continue à en faire) mais en rencontrant les bonnes personnes et en apprenant de ces erreurs j’ai réussie à progresser pour arriver ou j’en suis aujourd’hui. Certes, je ne regrette rien, mais franchement ce n’était pas simple tout les jours et s’il est possible de se simplifier la vie, autant ne pas s’en priver.

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’une documentation plus importante et plus « normé » des différentes technologies Web.

Place aux jeunes

Je vois actuellement arriver une nouvelle génération de développeurs et d’intégrateurs Web. A mon grand désarrois, peu d’entre eux sont vraiment doués. C’est quelque chose d’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’études qui forment vraiment aux technologies et problématiques propres au Web (en France, on est encore trop dans la dichotomie : écoles d’informatique d’un coté qui ne font que survoler les technologies Web sans en voir les aspects fonctionnels ; écoles d’art et de design de l’autre coté qui survolent vaguement les aspects fonctionnels en faisant totalement l’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’est qu’eux même ont du mal à trouver des sources d’informations leur permettant de rester à jour. L’effort de veille à faire pour qu’un formateur reste au niveau est énorme et parfois difficile si l’on cherche du matériel pédagogique dans une langue autre que l’anglais. Pire ! De trop nombreuses sources d’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 à de vives réactions).

Avec tout ça, on voit bien qu’il est finalement, aujourd’hui encore, assez difficile de se former correctement aux technologies et techniques de mise en œuvre des sites Web.

La complexification des technologies

Les standards du Web sont quelque chose qui évolue en permanence. Depuis plus de 20 ans, ces technologies gagnent en maturité, changent, s’enrichissent et s’affinent. Depuis environs 3 ans maintenant, les choses vont même en s’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’un univers concurrentiel sur le marché des navigateurs, l’é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’un navigateur à l’autre.

Quelques chiffres bruts pour se rendre compte :

Et encore, là, il ne s’agit que du sommet de l’iceberg des différentes technologies Web. Et puis, quid des implémentations ? Quel navigateur supporte quoi ? Et avec quel degré de précision/bugs ? Ou et comment trouver des informations pertinentes et à jour sur toutes ces technologies, leur fonctionnement et leurs interactions ?

Et puis tant qu’on en est à complexifier les choses, allons jusqu’au bout. La fonctionnalité suprême des navigateurs, le fameux « afficher la sources » et en train d’en prendre un petit coup dans l’aile. En effet, les techniques d’optimisation des performances (pour ne citer qu’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’une bibliothèque Javascript de 200Ko est très loin d’être une partie de plaisir. Aujourd’hui, n’espérez donc pas apprendre sérieusement Javascript simplement en lisant du code (ce que j’ai pourtant fait il y a plus de 10 ans).

Contrairement à une idée reçu, le Web ce n’est pas simple. Je ne sais pas pour vous, mais s’il existe des sources d’informations fiables me permettant de m’y retrouver, ce sera avec plaisir que je les accueillerai.

Comment ?

J’en arrive donc à un constat simple : 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’à présent.

L’initiative individuel

Jusqu’à une date très récente, l’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’intéresse ou lui manque (c’est typiquement ce que je fais sur ce site ;) ). Les plus fameux à ma connaissance sont sans doute :

  • Position is everything 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’a sauvé la vie)
  • Quirks mode de Peter-Paul Koch qui détail la compatibilité des propriétés CSS d’un navigateur à l’autre (on notera en ce moment le boulot que fait PPK sur le support des navigateurs mobiles)
  • A list apart et ce que l’on peut considérer comme son équivalent Français : OpenWeb qui produisent des articles à la fois précis et accessible à tous.

Il en existe évidement bien d’autre et il est impossible de les citer tous. Ceci étant, pour intéressant qu’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’esprits critique pour trier le bon grain de l’ivraie.

W3C et consort.

Deuxième source historique de documentation : le W3C et autre organisme de standardisation. C’est bête à dire, mais lire les spécifications des technologies peut être une mine d’or si l’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’implémentation d’un logiciel à l’autre. Leur lecture est donc rarement suffisante (et parfois même inutile… par exemple, essayer de lire la spécification d’ECMAScript pour apprendre le Javascript, c’est un peu comme regarder la formule chimique du beurre pour apprendre à faire un gâteau).

Saluons tout de même l’initiative du HTML Working Group qui, dans le cadre de HTML5, produit deux documents à destination des développeurs Web :

Les fabricants de navigateurs

Une autre source de documentation parfois méconnus mais très riche existe : la documentation officiel des fabricants de navigateur. C’est vraiment dommage qu’elles ne soient pas plus connus car on y trouve parfois des perles :

  • MSDN : http://msdn.microsoft.com/
    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’être extrêmement mal structuré quand on l’aborde de l’extérieur (comprendre, via un autre moyen que les pages d’aide des produits Microsoft). Pour la petite histoire, les technologies Web, c’est là : http://msdn.microsoft.com/en-us/library/aa155073.aspx
  • MDN : https://developer.mozilla.org/
    Site de documentation de Mozilla. Originellement fait pour documenter les technologies propres à Firefox, il est actuellement en train d’é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’être un wiki éditable par tout le monde, c’est donc le lieu idéal pour y trouver (et y créer) la documentation dont vous avez besoin
  • Dev Opera : http://dev.opera.com/
    On y trouve à la fois la documentation officiel des produits Opera, des articles des équipes d’Opera (chaque employé y a un blog pro.) mais également des articles écrits par des développeurs web indépendants. En effet, n’importe qui peut ouvrir un compte utilisateur et y écrire des articles.

La seul ombre au tableau, c’est le projet Webkit qui ne dispose pas d’une documentation officielle (en tout cas, je ne l’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.

Le temps de l’action

Le fait est qu’on est encore loin d’avoir des documentations dignes de ce nom et, soyons claire, on n’est finalement jamais aussi bien servi que par soit même.

Aussi, je vous invite à écrire ce que vous savez. Il n’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’exemple, regardez ce que font Raphael Goetter avec IE7 no more ou la Web Agency Tympanus sur son blog). Quoi que vous en pensiez, ce sera toujours utile à quelqu’un (ne serais-ce que pour vous). Ok, ce que vous découvrez à peut-être déjà été écris ailleurs… mais ça n’a pas d’importance car plus il y a d’articles sur le même sujet, plus l’information est facile à trouver. Ne soyez pas timide, écrivez :)

Mais ce n’est qu’un début. Pour aller plus loin, je vous invite à regarder de près l’initiative Move the web forward qui détaille tout ce qu’il est possible de faire pour contribuer (au delà de la documentation) à améliorer le Web.

Enfin, et c’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 :

Mozilla

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’objectif est, pour chaque balise, propriété, API, attribut, … de fournir une explication de comment ils s’utilisent avec des exemples, des cas d’usage, tout en documentant les spécificités liées aux implémentations de chaque navigateur.

Réaliser une telle documentation prend du temps et toute les bonnes volontés sont appréciées. Si vous voulez participer, vous n’avez rien d’autre à faire que de vous créer un compte utilisateur sur MDN et à écrire (c’est un Wiki rappelons-le). Si vous ne savez pas par quel bout commencer ou si vous pensez que vous n’êtes pas à la auteur pour participer, j’organise tous les mercredi une soirée de découverte de MDN dans les bureaux de Mozilla à Paris. N’hésitez pas à venir, même si c’est juste par curiosité, il y a à boire et à manger ;) . Plus d’information sur la soirée de mercredi prochain : https://mercredidoc.etherpad.mozilla.org/4 

W3C

L’été dernier, le W3C à lancé les Community Groups et un des premiers à avoir été créé fut le Web Education Community Group. Ce groupe a été créé à l’initiative de Chris Mills de chez Opera. Chris a proposé de partager le Web Standards Curriculum d’Opera sous licence libre. Il a donc été mis sur un Wiki dédié au W3C et désormais, tout le monde peu participer à son enrichissement. De manière plus général, ce Community Group à 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.

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 Community Groups 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 la mailing-list du groupe, je vous recontacterai alors pour qu’on se coordonne ;)

Conclusion

La documentation du Web ouvert est un espace à défricher. Si vous voulez bénéficier d’une documentation de qualité, pour vous ou pour les autres, c’est à vous d’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’y a pas de secret, les projets qui marchent ce sont les projets qui bénéficient d’une documentation de qualité. C’est également vraie du Web et de la création de site. Retenez cependant 2 choses : Quelque soit votre contribution, aussi petite soit-elle, il y aura toujours quelqu’un pour vous en remercier un jour ; Si vous devez documenter quelque chose, documentez ce dont vous avez besoin pour vous-même, d’autre auront un jour ou l’autre le même problème que vous… la documentation est sans doute le seul domaine d’activité ou une action purement égoïste est également totalement altruiste :)