Just like those two cars, custom CMS might be similar to Drupal from the outside, but whole difference is in the inside

Drupal après avoir fait le saut depuis un CMS personnalisé

Parfois, je trouve des questions comme la suivante sur les forums Internet : « Je veux créer un site web. Dois-je utiliser un CMS standard (tel que Drupal), ou développer un CMS propriétaire ? » J'ai travaillé avec un grand CMS personnalisé développé depuis un certain temps, ainsi qu'avec Drupal, et je voulais partager mes idées.

Réinventer la roue

La première chose que j'ai remarquée, c'est la différence en termes de temps et d'efforts consacrés à la réécriture de solutions standard. Chaque site web, quelle que soit sa taille, comporte des éléments récurrents auxquels vous ne prêtez généralement pas attention en tant qu'utilisateur. Ils sont là, en arrière-plan. Cependant, cela ne signifie pas qu'ils ne nécessitent pas beaucoup de travail.

Des exemples de cela incluent l'ajustement des images sur un site web à un certain format, le plan du site, toutes sortes de sondages et d'enquêtes, etc. Je pourrais continuer indéfiniment. Toute fonctionnalité de ce type doit être développée, les bugs doivent être repérés, et malheureusement, certains bugs ne sont découverts qu'en production.

Même des changements simples, comme l'ajout d'un nouveau format de données ou la modification d'éléments graphiques, peuvent être un défi dans un système écrit à partir de zéro. Vous devez vous rappeler que le développement d'une nouvelle fonctionnalité ne consiste pas seulement à écrire le code ; il faut aussi trouver tous les bugs, tout aligner avec le reste du système, puis le mettre en production pour qu'il puisse être testé sous pression.

Il y a une différence entre passer une semaine à écrire du code similaire à des solutions existantes, ou simplement installer un module, comme c'est le cas avec Drupal.

J'ai aussi remarqué que dans un CMS personnalisé, la quantité de travail consacrée à l'interface administrative est bien plus importante que le temps dédié aux solutions concernant la façon dont le client/consommateur voit le contenu.

De plus, lors du développement pour Drupal, vous pouvez partager les résultats de votre travail en créant un module et en le publiant pour que d'autres puissent l'utiliser.

Modularité

Deuxièmement, j'aime la modularité de Drupal. Notre modus operandi standard est de trouver un module existant ou de développer le nôtre, qui étend ou modifie le fonctionnement du module standard. La philosophie de Drupal est de permettre une modification facile de tous les éléments.

Utiliser l'interface utilisateur

De plus, il est surprenant de voir combien de choses peuvent être faites dans Drupal sans écrire une seule ligne de code dans l'éditeur, en utilisant plutôt le menu Drupal.

Par exemple, nous avons créé Droopler – une distribution Drupal dans notre entreprise, permettant aux utilisateurs de créer rapidement des sites web au design professionnel. J'ai travaillé sur le développement de l'interface de création de blog. En dehors du style, presque toutes les fonctionnalités, y compris l'interface administrative, ont été créées en cliquant sur les paramètres appropriés dans le menu Drupal (la page principale et les sous-pages avec des articles, l'interface d'ajout de contenu, les types de paragraphes et les formats d'image, la date de création, les catégories d'entrées, etc...).

Standards

Le problème avec les systèmes de gestion de contenu personnalisés est un ensemble hétérogène de solutions qu'on peut y trouver. Par exemple, il peut arriver que le code pour une certaine fonctionnalité ait été écrit par une personne qui est passée à une autre entreprise et que personne dans l'entreprise ne comprenne pleinement la solution. Dans Drupal, cela est minimisé dans une certaine mesure, car nous utilisons des fonctions standard pour modifier, nous avons des structures de données spécifiques, des façons de sauvegarder les configurations, et ainsi de suite. Cela me permet de savoir que l'autre personne utilise les mêmes standards et il est plus facile pour moi de comprendre le code. De plus, il est plus facile de maintenir l'ordre dans le code et de limiter les occurrences du « code spaghetti ».

Dans Drupal, les structures de données principales sont bien pensées, éprouvées et il n'est pas nécessaire de réinventer la roue.

Les bugs sont un problème complètement à part. Presque chaque bug dans un CMS personnalisé signifie des ennuis. Avec Drupal, vous pouvez être sûr que quelqu'un a déjà résolu les problèmes auxquels vous êtes confronté.

Communauté

Eh bien, nous sommes arrivés au point principal – la communauté. Drupal est un projet open source et a une communauté dynamique. Le projet est développé non seulement par des particuliers, mais aussi par des entreprises utilisant Drupal. Grâce à cela, une variété de modules, une richesse de matériel supplémentaire, des solutions aux problèmes courants, des rencontres régulières à travers le monde, une littérature abondante et des cours en ligne sont disponibles à portée de main.

Inconvénients de Drupal

Je me suis concentré sur les avantages, mais cela ne signifie pas que Drupal n'a pas de limitations ou d'inconvénients. Par exemple... Drupal est un système puissant, chaque chose peut être faite de plusieurs manières. Si vous voulez modifier un élément sur une page, vous pouvez utiliser plusieurs méthodes différentes : créer un bloc, modifier les données en utilisant une des nombreuses fonctions hook possibles, ou peut-être changer le thème. Cela peut être problématique si vous modifiez une base de code existante, car la ligne que vous recherchez, qui est responsable de l'apparence d'un élément donné, peut se trouver à de nombreux endroits différents.

Parfois, vous pouvez rencontrer des contraintes que vous ne vous attendriez jamais à trouver. Un tel exemple est le fait qu'en standard, l'option pour sélectionner plusieurs éléments dans la liste ne vous offre pas la possibilité de les sélectionner sur plusieurs pages.

Drupal a aussi son propre style spécifique, c'est pourquoi vous devez passer un peu de temps à l'apprendre. Il n'est pas possible de commencer un grand projet en connaissant seulement PHP ou en ayant peu d'expérience avec d'autres frameworks. Vous devez apprendre où et quand changer le code, comment mieux modifier les données, connaître les structures de données, l'API interne.

Résumé

Pour résumer, si je devais comparer mon travail avec un CMS personnalisé à celui avec Drupal, Drupal l'emporte. Des milliers de modules extensibles, des structures de données bien pensées, des standards, et la quantité de matériel et de documentation rendent possible, après une certaine période d'apprentissage, de résoudre des tâches de manière efficace et productive, et de créer d'excellents logiciels.

3. Best practices for software development teams