Drupal : un Framework ou juste un CMS?

Drupal : un Framework ou juste un CMS?

Drupal est communément connu comme étant un CMS. Cependant, quand on plonge dans le code source, on se rend compte qu'il offre les mêmes avantages qu'un Framework PHP traditionnel au même titre que Zend, Symfony, CakePHP et j'en passe.

Par conséquent, Drupal est-il juste un CMS ou un Framework ?

Afin de répondre à cette problématique, nous allons redéfinir  ce qu’est un CMS et ce qu'est un Framework. Puis nous verrons  ce qui fait qu'on peut dire que Drupal est un Framework

 

C'est quoi un CMS ?

Un CMS est un progiciel qui permet l’administration et la gestion des contenus d’un site web par des personnes n’ayant pas forcément de compétences en programmation.

 

C'est quoi un Framework ?

En informatique, un framework est un espace de travail cadré. C’est un ensemble de bibliothèques, de conventions et d’APIs qui aident les différents composants à fonctionner les uns avec les autres.

Un framework offre les fontionnalités de base suivante :

  • inversion de contrôle - Dans un framework, contrairement aux bibliothèques de fonctions ou aux applications utilisateurs normales, tout le processus d’exécution n’est pas dicté par un programme ou une procédure, mais uniquement par le framework.
  • comportement par défaut - Un framework a un comportement par défaut. Par exemple, un framework a une façon par défaut d’accéder aux données qui peut être modifiée par un override de function.
  • extensibilité - Un framework peut être extensible par des modules offrant des fonctionnalités spécifiques.
  • code du framework non modifiable - Le code du framework n’est pas destiné à être modifié. Par contre, les utilisateurs peuvent étendre les fonctionnalités du framework sans modifier son code via des modules. . 

Par ailleurs, il y a différents types de frameworks mais ils héritent tous des fonctionnalités principales invoquées plus haut.

 

Drupal, un framework ?

Drupal permet de gérer et d’administrer des sites web via une interface web. Ses fonctionnalités peuvent s'étendrent avec des modules. 

Ces modules sont développés selon un framework. Ils respectent bien les principes fondamentaux d'un framework . Il n'y a qu’à regarder le code source suivant:

<?php
/////////////////////////////////////////////////
/// Exemple avec un module intitulé My Module
////////////////////////////////////////////////

// 1. Extensibilité avec le module “My Module”
// 2. Changement du comportement par défaut avec 
//    implémentation du hook_cron().
function my_module_cron(){
// 3. inversion de contrôle avec l'affiche d'un message à 
//    chaque exécution d'une tâche cron.
      drupal_set_message('Hello world !');
}
// 4. Code du framework non modifiable car on n’a pas touché au
//    "core" du framework pour modifier le comportemant par 
//    défaut d'une  tâche cron.
?>

 

Dries Buytaert, fondateur de Drupal, parle de Drupal comme un framework dans son article sur Drupal 8.

Par ailleurs, parmi les différentes familles de frameworks, Drupal fait parti des WAFs (Web Application Framework). 

En effet, voici une liste de fonctionnalités qu’offre un WAF et auxquelles répond Drupal  (source : wikipedia) :

  • Système de template web
  • Cache
  • Securité
  • Accès à la  BDD et mapping des données
  • URL mapping
  • Configuration automatique d’AJAX
  • Web services

Cependant, Drupal est plutôt reconnu comme CMS . Donc, ne devrions-nous pas parler d’un CMS plutôt que d’un framework

 

Conclusion, Drupal est-il juste un CMS ?

Nous venons de définir ce qu'est un CMS et un Framework.  Les caractéristiques de Drupal correspondent parfaitement aux deux définitions.

Drupal offre les avantages d'un CMS aussi bien que d'un Framework. Par conséquent, quand on parle de Drupal, ne serait-il pas plus habile de parler d’un CMF ?

 

5

Commentaires

Drupal est un CMS! Point.

 

Drupal est un CMS (virgule), un CMF aussi.

Pour avoir l'habittude de développer avec des cms tel que spip, prestashop, cmsms, joomla, drupal, contao ainsi que des frameworks tel que zend et CodeIgniter (symonfy je n'ai pas assez pratiqué mais mon ancienne entreprise l'utise et j'ai vue son potentiel).

Je peux vous dire que Drupal n'est pas qu'un simple CMS, celui qui dit c'est "un cms ! point"... Ne connait vraiment pas l'outils pour avancer de tel propos.

Drupal appartient à la famille des CMF tout simplement. Les CMF sont entrain et verront de plus en plus le jour à force. Tout comme Contao (anciennement typolight=rien à voir avec typo3) qui lui aussi est un véritable cmF.

Après les développeurs acharné qui ne jure que par leurs script perso (à 95% bancal) ou bien dénigre les cms. Je leur dirais tout simplement de réfléchir une seconde... si l'on développe sous un cms ayant une bonne base ne peut-on pas tout faire avec ce dernier ? Un cms ca n'est qu'une librairie et une API dans le coeur de cette application. Donc rien n'empêche de dévleopper et détendre le cms à ses besoins. On en revient presque au même point du coup. C'est juste qu'un framework ou cmf correspondra mieux à des applis web bien spécifique.

Je crois que tu ne sais pas vraiment ce que c'est qu'un CMF. Drupal est juste un cms ... il est loin d'être un cmf 

Si pour toi un CMF == Content Mangement Framework, ton commentaire est loin de m'intéresser. Cependant, si tu as des arguments serieux à développer, je t'en prie, exprime toi !

Dites ce que vous pensez, laissez un commentaire !