Je pourrais vous la faire courte, mais je suis d'humeur joueuse et donc... pénible.

Posons d'abord le contexte

Profitant des mois d'été pour doter Turbinagaz.com d'un vrai site, j'ai mis à plat l'existant et pris le temps de tranquillement mettre sur papier ce que je voulais en faire et comment j'envisageais de faire évoluer la chose.

L'observation a rapidement abouti sur quelques faits indiscutables :

  1. Le premier constat était le plus évident et le moins flatteur. Il peut d'ailleurs se résumer dans la réaction suivante : Rha la vache ! C'est le bordel, là dedans !
  2. Rapidement, après une première séance de tri pourtant assez sommaire, j'en arrivais à : Pourtant, il n'y a pas grand chose...
  3. Et pour compléter le tableau, une séance de fouilles archéologiques et une analyse des soubresauts m'ont amené à cette conclusion sans appel : C'est clair que ça ne bougera pas beaucoup, ni souvent. Et que ça se fera par périodes, de toute façon.

Ce n'est donc qu'un secret de Polichinelle : le Turbinagaz.com de la rentrée ressemblera plus à un site conventionnel qu'à un blog pur et dur. Le peu d'actualité des lieux étant lié à l'actualité des plugins développés, elle-même souvent liée à l'actualité de Dotclear, il ne faut pas s'attendre à de la publication hebdomadaire[1]

Je vais plutôt me retrouver à devoir maintenir plusieurs sections très proches du statique : les fiches de plugins et les éventuelles documentations de ces derniers, quelques articles de fond au gré de mes pérégrinations au sein du code de Dotclear, et autres choses du même acabit.

En y réfléchissant bien : même si tout ce petit monde pourrait s'accommoder des fonctionnalités de Dotclear (sous-catégories, pages, voire pages related), ce ne serait pas sans une bonne dose de gymnastique.

C'est au moment que je m'y résignais et je commençais à pleurer de ne pas le faire avec Django[2] que le déclic s'est produit...

L'idée saugrenue

Pour ceux qui ont un peu approché Django, je pense que le nom flatpages parlera à beaucoup. Précisons tout de même un peu pour les autres : flatpages est une application Django, fournie d'origine avec le framework, permettant de créer très facilement des pages statiques tout en profitant de la mécanique sous-jacente (cache, langage de template, etc.).

Son utilisation et sa mise en œuvre sont des plus simples : depuis l'interface d'administration, on demande la création d'une nouvelle flatpage, on précise l'URL qu'on souhaite lui associer et - cerise sur le gâteau - on peut, si on le souhaite, indiquer qu'on utilisera un template spécifique pour cette page-là. Et le tour est joué ! Pas de gestionnaire à définir, pas de code ou de redirection à écrire, tout se fait naturellement en coulisses.

Ah, mais... dites-moi... Ça ne vous rappelle pas un peu quelque chose cela ?
Si, si. Réfléchissez bien.

Une page hors flux chronologique, dans Dotclear ? Au choix : Pages ou Related[3]. Ok. Avec un template différent pour chaque page si on le désire ? Mouaip. Partiellement avec les récentes versions de Related[4]. Il reste encore cette histoire d'URL. Dans l'absolu, ce qui serait sympa, c'est une URL sans préfixe. Ça, par défaut, ce n'est pas le fort de Dotclear. Il faut souvent se résoudre à mettre les mains dans le cambouis et/ou installer le plugin supplémentaire Alias. Avouons-le: ce n'est pas bien méchant et surmontable. C'est juste un peu moins pratique et intuitif.

En tout cas, on sait déjà une chose : on a quasiment tous les éléments en main avec Dotclear et quelques plugins pour reproduire les flatpages de Django. Ajoutons donc dans les ingrédients les changements bienvenus de la version 2.2 de Dotclear : un gain de contrôle sur ce qu'il est possible de faire en terme de gestion des erreurs.

Cette fois, on a tout le nécessaire[5], non ? Tout le reste, c'est du détail, de la glu et de l'huile de coude.

Le croisement génétique

Si vous avez lu jusque là, vous savez maintenant où je veux en venir. Il est donc temps pour moi de cracher ma Valda et d'annoncer la venue au monde d'un nouveau plugin pour Dotclear 2.2. Il s'agit donc d'un plugin hybride reprenant des gènes à Pages, à Related et bénéficiant des nouveautés de Dotclear 2.2 pour se passer du recours à Alias.

Pour le nom, pas la peine de se casser la tête, dites simplement bonjour à flatPages. :)

Pour l'heure, soyez indulgent avec cette petite bête :

  1. Elle est issue d'assemblages réalisés à la va-vite, plus dans l'idée d'un Proof of Concept que d'un plugin rôdé pour la production.
  2. Ce n'est donc que toute la première version alpha et je propose très tôt en téléchargement[6]
  3. Le gros du mode de fonctionnement semble opérationnel, mais il manque de sérieuses séances de polissage et finition, tant au niveau de l'interface que du code source.

Néanmoins, le plugin devrait rapidement se diriger vers un stade beta puisque je compte bien l'utiliser comme (quasi) clé de voute pour la prochaine mouture de turbinagaz.com. En l'état, il fait déjà ce qu'on attend de lui, mais il sait également cohabiter avec quelques proches : il se signale donc auprès de Sitemaps[7].

Comme on parle bien ici de version alpha, n'attendez pas la moindre documentation avant un moment.

Pour les plus curieux et/ou téméraires d'entre vous :

  1. N'hésitez pas à télécharger le plugin, à l'installer et à l'essayer.
  2. Si vous avez des questions ou des idées, posez les en commentaires de ce billet.
  3. Si vous rencontrez des problèmes, signalez les sur GitHub.

Et puis... si vous pensez réellement que l'idée est débile et inutile, faites m'en part également.
:)

EDIT 29/07/2010 : le lien de téléchargement pointe désormais sur le package d'une version alpha2.

Notes

[1] Et encore moins quotidienne... Z'êtes pas un peu fou, non ?!

[2] Ben oui, devinez ce qui m'a occupé et passionné ces derniers mois ? :)

[3] Il y a sans doute d'autres plugins fournissant ce type de fonctionnalités.

[4] En fait, on peut choisir un template personnalisé qui viendra s'insérer au sein d'un template de base, sur lequel on n'a guère de contrôle au final. Enfin, disons que ça manque de souplesse et de finesse de grain.

[5] Ou presque : le moteur de templates de Django gère l'héritage entre templates, ce qui manque cruellement à Dotclear, surtout une fois que l'on a gouté à cette puissance-là.

[6] Ça change...

[7] Afin de faire figurer ses URLs dans la liste soumise à Google.