J’ai longtemps utilisé Wordpress pour mes besoins de publication de texte en ligne. J’ai longtemps eu des difficultés pour arriver à un site web qui réponde à mes besoins et me contente. Pour obtenir une fonctionnalité spécifique, ou bien il faut triturer le code dans functions.php ( la colonne vertébrale de Wordpress), ou bien il faut télécharger un plugin.
 
Qui trop embrasse, mal étreint :
 
Ajouter des lignes de code dans le fichier functions.php nécessite une excellente connaissance aussi bien de PHP que de l’architecture de Wordpress, qui est complexe avec des ramifications très étendues.  Utiliser un plugin est une solution facile et pratique, mais encore faut-il déterminer la fiabilité et la sécurité du code qui le sous-tend. Ce qui requiert là aussi un savoir large sur le fonctionnement de Wordpress. Certains modules sont mal conçus, qui ouvrent la porte à des actes malveillants sur le site web qui les utilise. Par ailleurs, la multiplication des plugins sur un site web, pour ajouter des fonctionnalités simples comme une galerie d’images, affecte sérieusement les performances d’un site.  Ce qui a de graves conséquences sur l’expérience utilisateur.
Cette expérience dépend aussi de la composition du site. Sur Wordpress, le dévelopeur crée des thèmes. Ces thèmes sont constitués de plusieurs  fichiers indispensabes. C’est une structure quelconque qui fonctionne très bien. Pour donner un style à son site, il faut basculer d’un fichier à l’autre. Peindre ici, retirer là, vérifier, revenir, etc…Ce n’est pas aisé même avec de l’expérience. Le dévelopeur ne peut pas faire comme il veut. Il doit se conformer à la structure complexe de Wordpress. Les standards du web sont respectés mais ils ne sont pas disposés savamment. Un document HTML standard est morcelé pour plus de modularité : ce qui n’est pas pratique du tout, notamment si le « designer » veut une structure de la page spécifique. C’est faisable mais ce n’est pas simple. Pour déclarer des fichiers de style (css) ou d’interactivé ( Javascript), il faut les ajouter de préférence dans le fichier functions.php mais ce n’est pas aisé. Il est très difficile aussi d’appréhender le style des plugins installés : c’est une couche sur une autre couche. Essayez de personaliser une galerie d’images fournie au moyen d’un plugin : c’est un cauchemar ! Comme le sont aussi toutes ces mises à jours interminables de chaque module installé.
 
La partie Administrateur est à l’image du développement d’un thème : complexe. Elle montre toute la pénibilité qu’il y a à favoriser une modularité maximale. Cela donne toujours un système offrant toutes les possibilités aux utilisateurs jusqu’à excéder leurs besoins pour arriver à une forme de chaos, qui vient après la perfection. C’est le principal écueil de vouloir contenter tous les besoins en même temps ( dévelopeur/utilisateur).
 Il faut se souvenir du proverbe : « Qui trop embrasse, mal étreint ».
Wordpress est l’un des CMS ( système de gestion de contenu ) les plus utilisés au monde, sans doute. Les utilisateurs comme moi n’ont pas trouvé mieux à ce jour, car il n’y a pas mieux ! Drupal est encore plus complexe, qui est réservé aux « professionnels » et aux « Etats ». Les autres solutions existantes sont payantes et/ou tout aussi complexes que Wordpress. Elles demandent un temps d’apprentissage, qui peut être long selon l’utilisateur. Parfois un utilisateur a besoin juste de publier un contenu en produisant un titre, un paragraphe, etc…Ces fonctionnalités sont visibles dans Wordpress mais il faut les deviner : et c’est tout le problème ! Il faudrait les présupposer.
D’où une grande frustation qui m’a conduit à embrasser  la simplicité en réinventant la roue. Oui, j’ai bien dit : réinventer la roue, ou partir de zéro. Cette recherche de la simplicité implique avant toute chose un rejet de tout « framework »  (bibliothèque fournissant une ossature pour créer des applications). L’objectif premier en créant à partir de rien est, tant que faire se peut, l’indépendance. Je n’aime les prisons d’aucune sorte.  L’objectif second consiste à obtenir un système de gestion de contenu qui réponde à mes attentes, tout à fait à mon image et surtout qui soit fait uniquement de langage comme PHP, pas de substrat de langage. Dans ce système, je veux pouvoir utiliser les standards du web sans toute la complexité de dépendance des framework.
 
Réinventer la roue:
 
En effet, c’est en partant de zéro que l’on emprunte des voies jusque-là impénétrables et insoupçonnées pour arriver à une œuvre nouvelle. En définitive, c’est ce que j’ai réalisé à créeant un système de gestion de contenu original écrit en PHP procédural* intelligent  : le code pour personnaliser le design de mon site est séparé du code logique dit backend. Pourquoi procédural ? Eh bien parce que j’ai trouvé la logique MVC ( Model View Controller ) complexe pour une application web. La logique MVC a été créée initialement pour les systèmes d’exploitation. Je trouve que ce modèle n’offre pas les mêmes avantages pour les applications web. En suivant les bonnes pratiques en matière de sécurité, je suis arrivé à un système fonctionnel stable, qui ne demande aucun support. Tout est à sa place, qui fonctionne parfaitement bien. Le principal  avantage ici est que je peux enfin me consacrer à écrire plutôt qu’à mettre à jour des modules dans l’espoir qu’ils ne brisent pas une fonctionnalité majeure de mon site. Aujourd’hui j’ai un site opérationnel qui ne dépend d’aucune bibliothèque ou d’outils existants.
En conclusion, on a tendance à oublier : de tous temps, l’homme a toujours fait un bond vers son futur en inventant des outils et des moyens nécessaires à son progrès. De la machine à coudre au cerf volant, pour s’élever à des niveaux supérieurs de son existence, l’homme a imaginé. Il a souvent imité, mais pour faire une empreinte, il a dû partir de zéro. Pour tout réécrire afin de produire un effet nouveau, quelques fois du même dessin.  Et Du même dessein. Avec mon site culturedesidees.com, j’ai donc tenté de réinventer la roue au moyen des seuls standards existants. Pour y arriver, il m’a fallu du travail acharné, une attention toute particulière au détail  durant tout le processus.
 
*La programmation procédurale porte  sur les étapes pour construire quelque chose
tandis que  la programmation dite orientée objet porte sur la création d'objets qui savent comment construire eux-mêmes quelque chose.