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

12.08.09 / content management system / bertrand keller

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.


Tags : , ,

Navigation Temporelle

Commentaires ( 3 )

Article intéressant, dommage que le parti pris pour django soit si évident dès les premières lignes.

Django à l’apparence d’un très bon framework, mais il parait délicat de le comparer avec un CMS, et l’avantage peut aller à chacun des deux suivant la nature du projet et le profil des développeurs qui travailleront dessus.

Personellement, comme l’auteur, je prend django, j’ai en horreur les CMS qui conviennent bien que pour faire ce qu’ils sont supposés faire : de la gestion de contenus.

Comme dit dans l’article dès qu’il faut maintenir ces systèmes (drupal, wordpress, spip, ezPublish) ca devient vite très long.

Un framework permet de livrer une application sur mesure, qui sera maintenable et évolutive. Cela nécessite peut être un peu plus d’investissement au démarrage (encore que, vu les tarifs d’intégration ezPublish que proposent certains…), mais sur du moyen voire court terme le gain apporté par un CMS est nul.

Benoit ajouté le déc 09 09 à 23:54

D’autant que Django propose aussi un CMS.
http://www.django-cms.org.

bertrand keller ajouté le déc 10 09 à 11:18

Salut à tous,
Personnellement, je pourrais facilement comparer Drupal et Django pour avoir fait du Drupal pendant 2 ans, avoir finalement développé deux-trois modules et fait pas mal de customisation d’interface (c’est souvent infernal, essayez de customiser des formulaires de base, comme les commentaires, l’inscription, etc. vous verrez). J’ai aussi fait du Django pendant 1 mois et demi à présent, en ne connaissant pas Python au départ.
Et j’ai donc créé deux sites du même type, un avec Drupal, le second avec Django. Si la base du site Drupal a été créée en quelques semaines, la maintenance n’a pas été de tout repos, et surtout, surtout ! Les performances sont vraiment justes, et la consommation mémoire est énorme. Un site Drupal complexe installé sur un PHP par défaut ne tiendra jamais un gros trafic. Alors qu’un site Django installé sur un serveur nginx+gunicorn, sera stable, rapide, et consommera peu de mémoire.
Pour moi, Django a été facile (j’ai torché un site en 3 semaines sans rien y connaître) et a changé une nouvelle fois ma vision du développement web. Ça avait été le cas avec Drupal lorsque je venais de Joomla.

Pour parler de façon plus claire, je ferais un site simple, de type blog, avec Drupal (parce que c’est plus simple).
Pour un site d’e-Commerce, j’hésite, mais je penche pour Drupal avec Ubercart.
Pour un forum, je ne sais pas. La solution de base de Drupal fonctionne mais ralentit au fil du temps. Les forums en Django m’ont l’air pas mal mais je n’y ai pas touché. Je fuis les intégrations PhpBB depuis que j’ai essayé avec Joomla.
Pour les sites un peu particuliers que vous avez imaginés, pour les sites où la performance est ultra importante, préférez Django. Vous irez probablement plus vite, même si vous ne connaissez pas Python à la base.

Lovelive ajouté le déc 31 10 à 04:23

Ajouter un commentaire


XHTML : Vous pouvez utiliser ces tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>


© Copyright 2009 bertrandkeller . Merci pour la visite