Steve Frécinaux

Structure d’un site : idées

Je suis donc en train de programmer, lentement et presque sûrement, mon propre système de gestion de publications (comme je l’ai dit sur le billet introductif). Les rares personnes qui passeront par ici se demanderont certainement pourquoi, étant donné qu’il existe des CMS “tout faits” et très performants, mais si je fais ça, c’est, davantage que de gaieté de coeur, parce que mes besoins sont assez… atypiques.

Détaillons donc ces quelques besoins et envies bizarres, pour que le lecteur se fasse une idée de leur spécificité, ou de mon niveau de folie (c’est selon) :

  • N’ayant pas d’accès quotidien au net, je veux pouvoir quand même poster quand j’en ai envie. Autrement dit, je voudrais pouvoir dupliquer les publications que j’ai “postées” en local “depuis la dernière fois” sur mon site internet, et ce de façon simple. De même j’aimerais pouvoir récupérer aisément les éventuels commentaires en localhost. Donc en gros, pouvoir synchroniser le site local et le site online en un tournemain.
  • Je voudrais conserver une trace des différentes modifications apportées aux fichiers, càd je voudrais que lorsque j’apporte une modification conséquente à une publication (une mise à jour technique par exemple), je puisse garder l’ancienne dans un coin, et avoir un lien entre les deux.
  • Je voudrais pouvoir gérer n’importe quel type de publication de façon unifiée. Par exemple, publier un album photo, un texte, un billet du journal, ou même les infos sur le site ou un CV, c’est toujours la même chose : une publication.
  • Je voudrais pouvoir créer des “reliures” arbitraires : Ainsi, si je poste cinq publications concernant un même sujet, ou, autre exemple, si d’aventure il me prenait l’envie de publier une nouvelle en trois partie (une par semaine), je voudrais pouvoir gérer cela de façon simple, en créant donc une reliure.
  • Une autre idée charmante serait de pouvoir poster “au sens propre”, par email depuis thunderbird, comme le suggère Olivier Meunier.

C’est tout ce qui me vient à l’esprit pour l’instant…

Pour mettre ceci en oeuvre, j’ai décidé de me passer le plus possible de base de donnée, pour une question de facilité d’utilisation (pas de programmation, je vous l’accorde). En fait, je compte me baser sur des fichiers : un répertoire par date, et dans ce répertoire, un répertoire par publication, contenant tous les fichiers (textes, images, etc.) requis. Ainsi, la synchronisation sera facile : il suffira de transférer via ftp les nouveaux dossiersn et hop! ce sera fait.

Dans mon idée actuelle, pour ordonner tout ça, un fichier RDF détaille l’arborescence et donne les chemins vers les différents fichiers. Voici un exemple de fichier d’arborescence et une DTD qui lui est associée. Dans ce fichier, uri: désigne l’uri du site (autrement dit, l’accès côté client) et archive: désigne le chemin du dossier des archives du côté serveur. Ainsi, on obtient facilement des uri sympas qui ne changent pas. A propos de ce fichier, pour les fichiers de publication, je stocke pour l’instant le type MIME du fichier et une chaîne ‘format’, ce qui me gêne assez, vu que cet attribut n’est nécessaire que pour les fichiers de type text/plain (qui peuvent être wiki ou texte brut) ou application/xml (qui peuvent être liens ou contenu, ou encore des fichiers mathml), et qu’il n’a aucun sens dans le cas d’application/xhtml+xml ou de fichiers d’image… Comment pourrais-je m’en passer ? Puis-je créer des types MIME arbitraires (genre application/vnd.sf.xml.machin et application/vnd.sf.xml.truc, ou encore text/wiki), ou devrais-je plutôt stocker ces détails dans une forme comme text/plain; format=wiki, ou encore me contenter, dans le cas des fichiers XML, de scruter les doctypes, les éléments racines ou les espaces de noms ?

Ensuite il faudra penser aux reliures : des listes de publications dans un ordre arbitraire. A priori je dirais que pour faire ce que je désire, il me faudrait des reliures ‘satiques’, comparables à un livre, et des reliures ‘dynamiques’, comparables à des magazines, et qui correspondront davantage aux différentes sections du site (journal, writings, etc.). Je pense que j’utiliserai là-aussi un système à base de XML et/ou de RDF. Mais je discuterai de cette partie du projet plus tard.

D’un autre côté, navigant pour ma part essentiellement avec des navigateurs de type gecko, je vais peut-être essayer de faire un volet d’administration en XUL, profitant ainsi d’interfaces plus complètes, et des facilités offertes par mozilla pour la gestion de fichiers RDF et XML. Mais ceci aussi, c’est encore une autre histoire…

Voilà, j’ai exposé les idées que j’ai pour l’instant, ça fait du bien, on se sent la tête légère ;). Non, mais sans blague, ô rare visiteur, que penses-tu de ces idées ? Dans quels points fais-je fausse-route ? Où pourrais-je apporter des modifications ?