CMS - Gestion d'objets éditoriaux ?
Je poste cette sorte de "demande d'évolution" ici, c'est surtout une bouteille à la mer... Je ne veux pas parler de la partie publique de SPIP, que je trouve super !
Je veux faire un retour sur la partie privée seulement et l'architecture. Je suis un utilisateur de SPIP à titre personnel, essentiellement sur quelques projets persos. et j'ai déjà été amené à développer plusieurs plugins pour étendre SPIP. Notamment, j'ai été amené à développer de nouveaux objets éditoriaux. 2 pour être précis :
- un "evenement" avec le plugin "simple calendrier" que j'ai mis sur spip contrib très récemment.
- une "sortie" pour le site altituderando.com. qui gère des "Topos" de randonnée (les articles spip) et des sorties qui y sont raccrochés (qui à la couleur d'un article, l'odeur d'un article mais qui n'en est pas un)...
Et ça a été une grosse aventure, le développement d'un nouvel objet éditorial, pour que ça s'intègre correctement au niveau de l'espace privé (ergonomie spip, + infos à faire remonter en page d'accueil, sur la page de l'auteur, etc. etc, des dizaines de pipelines renseignés lorsqu'ils existaient, ou que j'ai du rajouter.) Avec la version 2.1 de SPIP, je me suis vite retrouvé coincé sur des détails liés au manque de généricité de l'API. SPIP 3 semble améliorer ce point... Bref, c'est très long, un peu laborieux, mais on finit par y arriver...
S'il y a un retour que je souhaite faire, ça concerne SPIP en tant que "Système de gestion de contenu"... Aujourd'hui, quand je regarde certaines contributions, ou certains commentaires dans les forums, tout tourne autour des articles et des brèves... Un évènement, c'est un article sur laquelle on se sert de la date de rédaction antérieure... Le plugin "Agenda 2" se base sur un article (choix assumé et indiqué dans sa doc) auquel on raccroche un nouvel objet "évènement"... Ce sont les 2 exemples que j'ai en tête. Pour la notion d'évènement, j'en ai eu marre, et c'est pourquoi j'ai tenté mon "simple-calendrier". Ce qui m'a d'ailleurs permis de comprendre les motivations qu'on eu les concepteurs d' "Agenda 2" en s'appuyant sur l'article... Et en effet, la compatibilité de mon plugin est bien limité au final, en plus.
SPIP 3 fait l'effort de simplifier le core et d'externaliser tout un tas de chose en extensions. Je suis ravi en pensant que ça va contribuer à rendre l'API plus générique, et que ça prépare le futur...
Du coup, ma bouteille à la mer concernera plutôt SPIP 6 !! ou SPIP 5, allez SPIP 4, c'est une bouteille à la mer après tout :-) Pour moi, la notion d'article et de rubrique devrait aussi être externaliser en extension !! Avec un core qui ne manipule plus des rubriques ou des articles, mais des "contenus". C'est la clé !
D'un point de vue CMS, je viens du monde de Plone, dans le cadre de mon boulot. Et quand dans le cadre d'un projet, le site à besoin de notions comme par exemples : d'itinéraire, de sorties, de topo, de fiche bibliographique, de prière, de résumé, de CV, de régions, de provinces, de recettes de cuisine, et j'en passe, chaque client à son domaine. On ne commence pas par se dire qu'est ce qui est un article et qu'est-ce qui est une rubrique. Puis de dire au client : "pour votre recette de cuisine, vous créez un article et pour le temps de cuisson, c'est la date de rédaction antérieure" bon j'abuse un peu, il y a les champs extra... On commence par créer les types de contenu "objets éditoriaux" nécessaires. Et ça peut même être bouclé rapidement (<1h). Il existe en effet des outils de modélisation et de génération...
Et Plone, de base, fournit les types de contenus suivants (désactivable au cas par cas) :
- La Rubrique
- Le Document (= article)
- l'Actualité (= la brève)
- L'Evènement
- Le Lien
- Le Fichier
- L'Image
Alors évidemment, on est en Programmation objet, ce qui change bcp la donne, c'est sûr... Tous ces types de contenus dérivent d'un contenu primitif. Il y en a même 2 principaux.
- Conteneur (pour les rubriques par exemple, ou si je crée un type de contenu "Région" qui contiendra des "Départements"
- Base (pour les articles par exemple)
Et ces classes de base vont fournir les champs minimums vitals au fonctionnement du "core"
- un identifiant
- (un titre)
d'autres classes pourront fournir à nos nouveaux objets des services tels
- l'indexation des champs
- la possibilité de lier d'autres contenus (le fameux "voir aussi" ou "contenu en relation")
- la possibilité d'attribuer des mots clés
- la possibilité de gérer les dates de création/modification, etc.
Plone a été un système de gestion de "contenus" dès ces 1eres versions.
Alors bien sûr :
- SPIP n'a pas du tout le même historique.
- SPIP n'est pas fait en POO.
Mais SPIP a commencé à s'ouvrir, avec la notion de Plugins. Et là, la nouvelle étape SPIP 3 avec le changement d'architecture côté privé. Et je lis ici et là, qu'un prototype de compilateur SPIP pour une syntaxe de squelettes XML a été fait dans le cadre d'un test de faisabilité... bref, SPIP ne semble pas si figé que ça.
Et donc, on est sur SPIP Trac, c'est un ticket de demande d'évolution...
Donc ce serait profitable à SPIP, je trouve, si son core changeait pour ne gérer que des notions de conteneur et de contenant. avec certaines notions comme les "mots clés" pouvant être liés à un conteneur ou un contenant. Et de base, il serait livré avec rubriques, articles, brèves, etc. Ce qui permettrait de titrer une fois de plus : SPIP 654 : Tout change et rien ne change. et puis SPIP 655 (la version d'après) serait livré avec un modélisateur/générateur... Je lisais dans une papillote l'hiver dernier qu'il faut "avoir des rêves suffisamment grands pour ne pas les perdre de vue lorsqu'on les poursuit" ! Je ne sais plus si c'est de Révillon ou d'Oscar Wilde... Mais ça concernait la sagesse. Sagesse, tendresse, il n'y a qu'un pas !
Bref bref bref, il faut que SPIP permette de gérer de nouveaux objets éditoriaux simplement (sans 3 mois de dev). Il faudrait que le futur de l'architecture de SPIP soit orienté sur la possibilité de nouveaux "objets éditoriaux". ça me parait centrale comme question.
Mais peut être que tout ceci a déjà été évoqué sur les listes de diffusions depuis longtemps, que je ne suis pas du tout :-( Mais si c'est le cas, alors tant mieux et je résumerai simplement tout ce que je viens de dire en un "+1" !!!
Longue vie à SPIP !