Les flux de syndication sur ce blog | samedi 10 novembre 2007, 17h28

Mood: Goggle

Quelques changements en profondeur sont intervenus sur les différents moyens de syndications présents sur ce blog, voici en conséquence un petit billet sur ce qu'il s'est passé dans les coulisses, incluant notamment le pourquoi et le comment des différents changements ^^;

Des excuses

Tout d'abord, je m'excuse pour les différentes personnes qui suivaient éventuellement le flux RSS des posts de ce blog, cette dernière a disparu dans le courant de la semaine... J'ai fait en sorte que l'adresse du flux RSS retourne désormais le flux Atom, mais en conséquence, il est probable qu'il se produise l'une des deux choses suivantes:

J'aurais tendance à considérer que la deuxième solution reste la plus favorable, mais dans les deux cas, je suis désolé de l'inconvénient que cela a provoqué. Les lecteurs qui utilisaient le flux Atom n'ont, a priori, subi aucune perturbation lié au changement profond qui s'est opéré.

Ce qu'il s'est passé

Justement, que c'est-il-passé ? Je me suis tout simplement décidé à tester la flexibilité de ce que j'avais en place, en faisant en sorte que les flux de syndication présent sur ce blog soit généré avec exactement le même code que la version XHTML, en utilisant des fichiers de templates (donc, XML dans mon cas, les curieux peuvent aller jeter un coup d'oeil ). Ce mécanisme n'a pas posé de problème particulier pour pouvoir se conformer à la spécification Atom, grâce au large choix possibles pour le contenu des entrées: chacun de mes billets étant formé de XHTML valide, j'ai simplement choisi le type xhtml, et l'affaire était réglée. J'en ai profité pour ajouter la même possibilité aux pages de commentaires, permettant ainsi d'avoir un flux par billet...

L'affaire s'est corsée lorsque j'ai voulu migrer le flux RSS. Historiquement, j'avais souhaité implémenté les deux pour satisfaire le plus grand nombre, d'autant qu'Atom était encore un standard en cours de développement, mais aussi parce que dans la version précédente mélangeant logique et présentation, l'implémentation de l'un ou de l'autre était à peu près aussi triviale (une soixantaine de lignes en PHP...) J'ai commencé par gaiement reprendre les modèles d'Atom en les adaptant aux différentes spécifités de RSS (quelques changements de noms dans les balises, quelques champs en plus ou en moins), arrive rapidement à un résultat qui semble probant, et là, problème: le lecteur de flux détecte le titre, mais pas le contenu des billets.

Après un peu de recherche, je me rends compte que j'avais fait en sorte, dans la version précédente, d'entourer mes billets dans le flux RSS entre un <[CDATA[ et un ]]>, indiquant d'un point de vue conceptuel pour XML qu'il pouvait y avoir à peu près tout et n'importe quoi dans ces billets, valide ou non, voir du binaire du moment que les octets correspondant aux caractères ]]> n'y figurent pas. Je fronce alors les sourcils: avec un tel balisage, normalement l'ensemble des lecteurs de flux devraient en conséquence afficher les différents posts comme du texte brut... et ce n'est pourtant pas le cas.

Je décide alors de chercher un peu sur Internet pour voir ce que dit la norme, et je découvre dans l'article sur Wikipedia que ça ne va pas être aussi simple que cela, vu qu'il n'en existe pas une, mais plusieurs. Le résumé, cependant, est que le contenu de la balise <entry /> de RSS devrait contenir du texte ou du contenu HTML (mais pas XHTML). J'ai donc du récupérer "l'astuce" concernant le CDATA sur un des flux que j'avais visité. Cependant, si ajouter les balises correspondantes dans un modèle basé sur des echo ne présente pas de difficultés particulières, ce n'est pas exactement la même chose lorsque l'on sépare la logique de la présentation: pour faire simple, aller remplacer quelque chose située dans une balise CDATA à l'aide du DOM, de façon générique, ce n'est pas particulièrement amusant, et généralement pas très utile.

La décision

C'est alors que je me suis posé la question: pourquoi donc avais-je besoin d'Atom et de RSS, dans un monde où désormais tous les lecteurs de flux lisent les deux. N'ayant pas trouvé de réponse satisfaisante à cette question, j'ai pris la décision qui s'imposait: ne fournir un flux que d'un seul type sur ce blog... Je n'ai a priori pas vu de grands cris à la disparition du flux RSS, je suppose qu'en conséquence le raisonnement était fondé et qu'il s'agissait de la bonne décision ^^;

Et maintenant ?

Et bien, l'ensemble des pages de ce blog disposent d'un équivalent Atom. Je ne vois pourtant que le flux concernant les billets? me direz-vous, et vous aurez bien raison, pour une raison simple: je n'ai pas encore décidé de la façon dont je souhaitais présenter que soit construite l'url propre vers les flux atoms des différents billets... Inquiétude purement geek s'il en est, certes, mais que je prends à coeur ;-) Je pense que ce sera un /atom à la fin de l'adresse classique, mais ce n'est pas encore décidé... En attendant, si vous souhaitez sans plus attendre pouvoir accéder au flux Atom d'un billet ou d'un tag par exemple, il vous suffit d'ajouter ?outputType=atom à la fin de l'adresse.