Comparer et choisir son CMS : Drupal et Django par Scot Hacker

Scot Hacker, webmaster à l'école de journalisme de Berkeley, propose un article comparant Drupal et Django. Drupal étant un CMS PHP et Django un FrameWork en Python. Scot Hacker rédige cette note en tant que développeur Django, son étude est relative aux questions qu'il se pose par rapport à des problématiques professionnelles quotidiennes.

Les présupposés

A l'école de journalisme de Berkeley et au Knight Digital Media Center, Scot Hacker utilise le moteur de blogs WordPress pour l'édition d'actualité, ainsi que le FrameWork Django pour des sites éditoriaux plus complexes comportant des données plus structurées.

Drupal Django

Pourquoi ne pas utiliser Drupal ?

Pour résumer simplement la nature de chacun des systèmes :

  • WordPress est CMS simple
  • Drupal est un CMS avancé
  • Django est un FrameWork.

Un FrameWork est plus bas niveau qu'un CMS. Django est un FrameWork destiné à la création simplifiée d'espaces d'administration de contenus. Son utilisation permet une grande flexibilité pour la création de sites spécifiques.

Scot tente d'expliquer que Django, en tant que FrameWork, n'engage en rien sur la structuration du contenu. Choisir Drupal peut se réveler pertinent à partir du moment où sa structuration de contenu est cohérente par rapport à votre projet.

Orientation objet du code

Etant en Python, Django est par définition optimisé pour l'écriture en objet. Le code de ce FrameWork évite le code redondant et les lignes inutiles, il respecte les principes de développement DRY.

Tous les développeurs les disent, Drupal comporte des soupçons de code orienté objet mais il ne respecte pas les principes dans la totalité de ses fonctions. Drupal 7 apporte des améliorations, mais sans arriver à égaler les FrameWork orienté objet.

Système de gabarits

Django est super clean. Son principe se base sur une séparation stricte entre le système de données et le rendu logique; son utilisation est très simple.

En revanche, Drupal comprend des traitements de données dans le système de gabarit (système de thème et sous-thème), ce qui empêche le partage de code entre différents thèmes.

Ce fonctionnement peut se réveler très souple, mais compliqué à maintenir dans le temps. La copie les fonctions logiques d'un thème à un autre peut être fastidieuse et générer des dysfonctionnements.

Le modèle de données ORM

Les développeurs Django utilisent le Object Relational Mapper, ou ORM, afin d'accéder aux données de leur modèle, ceci sans l'écriture d'une seule requête SQL. Cette pratique permet un réel gain de temps à long terme.

Drupal ne dispose pas de ce genre de fonctionnement ; l'accès aux données se fait de manière « plate ». L'utilisation du CCK permet à des non-développeurs de créer leur propres types de contenu (simple). Souvent les développeurs Drupal discutent pour savoir comment contourner un problème plutôt que de coder directement la fonction nécessaire.

Les performances

Les comparaisons sont difficiles à établir. L'auteur suppose que le système d'appel en base de données par requêtes SQl de Drupal ralentit fortement l'affichage des pages. Il cite Bruno Desthuilliers qui prétend que les performances en local (sans cache) de Drupal sont épouvantables.

L'apprentissage

Tous les sytèmes proposent leur complexité. Le temps d'apprentissage dépend en grande part de ses capacités en développement. Drupal n'est pas plus complexe qu'un autre CMS, son avantage est d'être plus accessible à des débutants.

Le langage

L'utilisation de PHP est souvent une utilisation par défaut du fait de sa grande utilisation dans le web. Pourtant, PHP se révèle assez lent quand les systèmes sont trop complexes (suffisant pour de petits sites).

La réussite de PHP s'est faite sur les débuts du web avec des sites plutôt simples ; avec l'arrivée à maturité du marché, PHP se révèle être vieux et dépassé, il prévoit encore en évolution certains fonctionnements intégrés par les autres langages depuis des lustres.

Le déploiement

L'avantage de Drupal est de pouvoir être deployé sans aucne connaissance en PHP. L'usage de Django est moins commun et les hébergeur proposent moins de solutions dédiées que pour le PHP. Hormi, l'installation à proprement dit, configuration d'Apache et quelques modules à installer, la maintenance est très similaire.

Conclusion

Drupal se situe entre le CMS et la FrameWork ; mieux dimensionné qu'un CMS, moins fexible qu'un FrameWork (Pour moi, un CMS tout simplement). Drupal n'est pas Orienté Objet, il ne propose pas de système de gabarit (MVC) propre, n'a pas d'ORM et ne permet pas de passer par Pyhton (au dessus du PHP) pour les développements.

Voilà ce qui justifie de ne pas utiliser Drupal pour Scot Hacker. Même si un bon développeur peut réaliser de beaux projets avec Drupal , l'avantage certain de Django est de ne pas se soucier de la structuration et de l'architecture de données passées et futures.

Rappelons que la communauté TYPO3 proposera une prochaine version de TYPO3 (version 5.0) basée sur un FrameWork en PHP. TYPO3 présentera donc les avantages du FrameWork avec les désavantages du PHP (en se basant sur cet article). Le FrameWork FLOW3 de TYPO3 est totalement Orienté Objet, il est compatible avec la prochaine version de PHP (PHP6).

Lire Drupal or Django? A Guide for Decision Makers.