Alors, voici mes réactions à tout ceci. Toutes les citations viennent du premier post.
D'abord, bravo et merci pour l'impressionnant travail effectué.
il a notamment été discuté de l'intérêt ou pas d'avoir un slug qui était unique sur le contenu lui-même ou dans le conteneur parent uniquement. Actuelement, a part des arguments d'ordre estétique, je ne vois pas pourquoi une url du type "http://zestedesavoir.com/tutoriel/un-contenu/un-contenu/un-contenu" serait bloquant en quoique ce soit, puisqu'on sait qui est quoi (mais j'y réfléchi toujours).
Je ne vois aucun problème à avoir une URL du type "http://zestedesavoir.com/tutoriel/un-contenu/un-contenu/un-contenu".
Par contre, ça implique que les fichiers .md correspondants soient dans des dossiers différents, et que l'arborescence soit implicite.
Pourquoi ne pourrait-on pas avoir plusieurs extraits dans un article, qui équivaudrait à un mini-tuto, mais avec un but différent ? Il me semble par contre évident qu'un article ne peut pas contenir des chapitres.
Avoir droit aux extraits multiples dans un article me semble pratique pour tous les articles un peu longs.
Le déplacement d'un conteneur ou d'un extrait reviendrait simplement à donner un nouveau slug à ce dernier, en accord avec ce qui est déjà présent !!
Je ne comprends pas où est le point à discuter ici ?
On distingue actuelement deux types de métadonnées (metadata) : celles qui sont versionnées (et donc reprises dans le manifest.json) et celle qui ne le sont pas. La liste exhaustive de ces dernière (à l'heure actuelle) est la suivante :
Là pour moi on a un problème : toutes les méta-données devraient être versionnées, sauf si évidemment ça n'a pas de sens. Subséquemment :
- Les hash des différentes versions devraient être des branches Git (on a un outil, autant l'utiliser).
- Les auteurs, les catégories, l'URL de la miniature, la source, la présence de JSFiddle devraient être dans le
JSFiddle
- La date de création est naturellement connue dans Git
- Les dates de publication et de dernière modification ne sont pas versionnables et donc doivent rester en BDD.
À noter que je parle des informations sources ici : on peut avoir besoin de dénormaliser le modèle et donc d'ajouter une copie de ces informations ailleurs (en BDD par exemple) pour des raisons de performance.
Pour des raisons de facilité, certaines des métadonnées versionnées sont également stockée en base de donnée : le titre, le type de contenu, la licence et la description. En ce qui concerne la version de celle-ci, c'est TOUJOURS celle correspondant à la version brouillon qui sont stockées, il ne faut donc en aucun cas les employer pour résoudre une URL ou à travers une template correspondant à la version publiée.
À mon sens c'est une erreur.
Si on a quatre versions utilisables sur le site (brouillon, bêta, validation et publique) on devrait avoir 4 objets avec ces informations en base.
Talus propose de mettre ce champ à "2.0"
Quel serait l'intérêt d'avoir "2.0" et non "2" ?
Si rien n'est indiqué, ZdS tentera d'présumer le type en fonction de ce que le contexte lui indique.
Cette règle est floue, et je n'aime pas les règles floues. Je propose : "Si rien n'est indiquée, le contenu est géré comme un tutoriel".
Si on a pas de problèmes d'incompatibilités, on peut le rendre obligatoire. Ou au moins définir une règle claire pour deviner le type de contenu en cas d'absence de ce champ.
Si ce champ n'est pas indiqué, ZdS tentera de deviner le type […] Il est préférable de l'indiquer pour éviter les surprises.
Bien qu'ici on ait une règle un peu plus claire, il faudrait la rendre certaine (donc sans "tenter de…" et synonymes dans la formulation). Voire rendre ce champ obligatoire.
[Le passage sur l'intro et la conclusion]
Il existe des cas où le conteneur n'a pas d'intro ou de conclusion (plus fréquent).
Pour moi, on devrait avoir 2 champs introduction
et conclusion
(facultatifs) qui contiennent des chemins relatifs à la racine du contenu vers un fichier formaté en markdown. Le nom du fichier étant libre, il ne bloque aucun slug.
Les versions alternatives ne me semblent pas vraiment résoudre de problème tout en étant plus compliquées et moins souples (les champs sont toujours présents, obligation d'utiliser des caractères inutilisés ailleurs, moins de souplesse si on veut manipuler le dépôt à la main).
text
Ce champ est obligatoire, car il est employé par le système pour déterminer le type d'objet en cas d'absence de celui-ci.
C'est une très mauvaise raison de rendre un champ obligatoire. Un champ peut être obligatoire parce que sans lui le fonctionnement n'a pas de sens, ça OK. Mais pas pour palier un champ mis en facultatif ailleurs.
Cela dit, un extrait sans texte n'a pas de sens, donc ce champ est bel et bien obligatoire.
Ce que je propose est bien que TOUT les contenus (article et tutos) soient stockés au même endroit dans ZDS_APP['content']['repo_path'], qui équivaudrait probablement à /content-private/
et
Ce que je propose est bien que TOUT les contenus publiés (article et tutos) soient stockés au même endroit dans ZDS_APP['content']['repo_public_path'], qui équivaudrait probablement à /content-public/.
Je ne vois pas de problème avec ça.
Attention, la proposition 3 est dangereuse : si on fait cela, ça veut dire que cette partie ne peut pas être modifiée ensuite, sauf si on exporte à nouveau le tutoriel. IL faut donc bien réfléchir au cas ou ça pourrait poser problème avant d'accepter celle-ci
Je ne comprends pas où est le danger, puisqu'on ne modifie jamais le contenu public à la main mais qu'on le valide à chaque fois, ce qui fait rejouer toute la procédure de validation – et donc régénère tous les fichiers concernés.
Dans l'idéal, on ne devrait pas avoir à ce servir de GIT pour afficher la version publiée d'un contenu.
Pas d'accord. On ne doit pas avoir à se servir de Git pour afficher la version publiée d'un contenu. Sans conditionnel. En particulier, ça implique de ne pas avoir d'informations Git (dossiers .git
) dans le dossier de contenu public.
le manifest.json est employé pour générer le sommaire
Pour moi, le sommaire doit être généré à la publication, en HTML ; les méta-données utiles à l'affichage présentes en base, et le manifest.json
complètement absent du dossier de publication (puisqu'il devient inutile).
additionné de l'éventuelle possibilité de faire suivant/précédent
Qu'est-ce qui nous empêche de générer ces liens précédent / suivant à la validation ?
Pour moi le principal impact de mes 2 dernières remarques, c'est que si on fait une grosse mise à jour du HTML front des contenus, on doit régénérer les HTML. Vu ce qu'on gagne à côté (la consultation se résume à lire des HTML), est-ce vraiment un problème ?