Ces problèmes d'extension concernent tous les systèmes ouverts. Que ce soit un navigateur, une plate-forme d'ecommerce, un logiciel de dessin, ou un système de blog, aucun de ces développement ne peut prétendre être complet et s'adapter à tous les usages sans extension ou sans modification. Déjà parce qu'il est difficile voire impossible d'énumérer les usages présents et futurs. Ensuite même si certaines fonctionnalités peuvent être identifiées, il n'est pas forcement souhaitable de les intégrer au système, les développeurs peuvent considérer qu'il est préférable de limiter les développements aux fonctions de bases pour ne pas se perdre dans l'implantation d'une multitudes de fonctions annexes. D'où cette idée de développer le système sous une forme de plate-forme ouverte contenant les fonctions de bases, sur laquelle des développements annexes pourront être interfacés afin d'offrir les fonctions complémentaires.
La difficulté majeure pour l'intégration de ces mécanisme d'interfaces peut-être résumé à un compromis entre l'ouverture du code fragilisant l'édifice, et l'ouverture du code permettant des usages insoupçonnés.
Puisque le problème est récurent à de nombreux développements, et que beaucoup de ces développements sont sous licence Opensource, il est possible de regarder ce que font les autres, et même parfois d'en tirer inspiration.
Avant d'essayer de résoudre les problèmes que je rencontre, faisons une liste :
La gestion des droits d'administration
Pour un site réalisé avec Dotclear, et devant être utilisé par plusieurs intervenants, certains ayant le statut de 'rédacteur', d'autres celui de 'rédacteurs avancés' et quelqu'un celui d'administrateur (un seul c'est mieux, et ça limite la casse), je souhaite attribuer la possibilité pour les rédacteurs d'accéder à l'administration de certains plugins ( gestionnaire de liens, galerie d'image, ou métadonnées par exemple ).
La possibilité de surcharger ou de compléter les fonctions d'origines.
Il existe dans le logiciel certaines fonctions sur lesquels beaucoup repose. Malheureusement, l'extension du système entraîne l'incompatibilité de ces fonctions avec le nouvel ensemble (cas par exemple de la génération de la liste des articles, qui peut être considérée obsolète après l'introduction des sous-catégorie). Je veux pouvoir dans ce cas: surcharger la définition de ces fonctions affin d'utiliser simplement l'appel à la fonction de base pour exécuter la fonction mise à jour.
la gestion des dépendances.
Le fonctionnement de certains plugins dépend de l'installation et du paramétrage d'autres extensions (exemple : les tags et le métadonnées ). Il n'existe pour l'instant que deux solutions :
- Tester systématiquement la présence du plugin tier, lors de l'exécution d'une fonction et éventuellement re-développer une procédure de lecture des paramètres de ce dernier pour en tenir compte.
- Ne rien faire, et compter sur les compétences humaines de l'administrateur du site pour régler les problèmes quand ils se présentent.
L'organisation séquentielle de l'initialisation des plugins
Certains plugins peuvent être utilisé simultanément pour apporter une solution ( Le filtrage des spams par exemple pour lequel il existe plusieurs solutions complémentaires : filtrage par mot-clés, par listes de bannissement, par similitude statistique ...). La simultanéité stricte n'existant pas ici, les plugins sont actuellement initialisés, ou activés, l'un après l'autre dans un ordre indéfini (pour être plus précis : l'ordre exact est fixé par la lecture du répertoire contenant les plugins. Il dépend donc du système de fichier utilisé, de son remplissage, des caches internes au système d'exploitation... Autant dire qu'il est indéfini et non garanti).
La mise à jour automatique et conditionnelle des plugins
Lors de la mise à jour du système à l'occasion d'un changement de version, la mise à jour des extensions ne peut être faite que manuellement. Si certains développeurs ont essayé d'inclure des procédures de mise à jour de leur plugin, Celles-ci ne sont pas normalisées et bien souvent la seule solution pour mettre à jour un plugin, c'est de le désintaller puis de le réinstaller. De plus pour réaliser cette opération manuelle, il n'existe aucun système permettant d'être averti de l'opportunité d'une mise à jour.
La prise en compte des plugins en dehors de l'affichage du blog.
Pour l'instant seul l'accès au site permet la prise en compte fonctions ajouter par les plugins. Le mécanisme d'initialisation de ces derniers, n'est activé que lors de l'affichage de la partie publique du site sur un navigateur. Certaines fonctions introduites par plugin, pourrait être utilisées lors de la génération des flux RSS ou ATOM. Ces génération sont initialisées par l'appel aux scripts rss.php, ou atom.php, or seul le script index.php intègre le mécanisme de chargement des plugins. Si l'accès aux écrans de configuration des plugins est naturellement possible à partir de la console d'administration, ces plugins n'ont aucun moyen d'ajouter des fonctions aux écrans d'administration de base. Pourquoi par exemple ne pas imaginer un plugin ajoutant la correction orthographique lors de l'édition d'un billet ? En l'absence de mécanisme permettant l'activation des extensions, les seules solutions pour un développeur souhaitant modifier le comportement de ces modules sont soit de modifier les fichiers d'origine (travail à refaire lors de chaque mise à jour), soit de re-développer un module complet.
Comment faire pour résoudre ces problèmes ?
La première solution serait d'attendre une hypothétique nouvelle version du système. L'équipe du projet nous promet depuis quelques temps un 'Dotclear 2'. Les informations sur les caractéristiques de ce nouveau produit restant pour l'instant secrètes ou listées d'une façon trop globale pour pouvoir nous renseigner. N'en sachant pas plus, je ne pense pas que l'attente passive constitue un moyen de résoudre mes problèmes.
La deuxième solution serait de modifier plus ou moins profondément le fonctionnement de la version actuelle de Dotclear, et tout en établissant un système compatible avec l'existant intégrer les mécanisme qui me manquent. C'est sans doute sur cette voie que je vais travailler.
J'ai le problèmes, j'aurai la solution
Commentaires
Ne t'emballe pas trop quand même : pense à regarder les modifications existantes dans la branche rocky-dev, et attends toi également à en voir apparaitre d'autres...
PepJ'ai vu différentes modifications de la branche Rocky-dev, pas toutes au point, pas toutes fonctionnelles, et ne résolvant pas la totalité des points évoqués ici. Je suis certain que des solutions seront apportées par les versions futures, le tout est de savoir lesquelles et quand.
Jérôme LauriolTu sais moi je marche très simplement : J'ai un problème, je l'analyse, je regarde si des solutions sont disponibles, et le cas échéant j'en développe. Qu'il y ait des solutions à ces problèmes dans les cartons de l'un ou de l'autre, n'arrange en rien mon problème.
Je suis tout à fait conscient que Dotclear va continuer à évoluer même en dehors de la V2 (J'ai lu que Dotclear 2 est un nouveau développement, un nouveau produit en quelque sorte). Mais je m'y attends sans rester les bras croisés.
<troll>Will DC fork?</troll> ;-)
David Latapie<troll>Fork and die !</troll> :-D
PepGné !... Je rêve ou je viens d'être victime de l'antispam ? :-p
PepJe confirme : Antispam Baysien réfractaire aux smiles (ou à certains smiles).
C'est malin, maintenant les robots vont essayer tous les smiles pour voir ceux qui passent.
Jérôme LauriolDans la série, j'en ai besoin alors je le fais: j'ai joué adapté avec la classe plugin de Dotclear. Vous savez c'est truc qui s'occupe du chargement des extensions.
dépendances entre plugins (Un avis sur la question)Lancieren erbleichen schwer erlaeutert weltlich tun erlaubt ist, was gefaellt sechzehn baden ziemlich Tuvalu, konzipiert enorm aufzumerken oder und behalten selbst wider geplenkt icke isotrop siebte Geld verdienen werden Praevarikation erschossen tierisch voipen.
Geld verdienen Online