Pourquoi Drupal ? 1ère partie.

Si vous avez:
- un projet Web et votre outil ne vous permet pas d'y répondre ...
- entendu parler de Drupal, et souhaitez en savoir plus ...
- l'envie d'explorer de nouveaux territoires ...
Alors, cet article est pour vous !

Les articles sur les CMS/Framework du marché sont nombreux, il s'agit souvent de grille de comparaison, fonction par fonction. N'étant pas très friand moi-même de ces comparaisons qui échappent l'essentiel, je voudrais juste partager mon expérience. Il y a quelques années j'étais dans cette situation: beaucoup de lectures, des expérimentations, mais difficile de faire un choix. Finalement j'ai plongé dans Drupal. Après des hauts et des bas, comme vous peut-être, je ne regrette pas ce choix. Je vous invite à me suivre dans ce voyage de 2 parties, en voici la première: Pourquoi Drupal ?

Mise à jour: la 2ème partie est publiée.

Petit préambule

C'est une question posée par Karim au dernier Drupal Meetup Québec: "Pourquoi vous faites cela avec Drupal et pas en .Net directement ?", qui m'a incité à mettre noir sur blanc mes reflexions. Mais avant, juste quelques mots sur moi (rassurez-vous, en rapport au sujet!).

Je suis en contact avec plusieurs univers:

  • le Libre (principalement par Drupal) et le Propriétaire (Microsoft .Net, MSCMS, SharePoint/MOSS, un peu Oracle-UCM)
  • le travailleur autonome, et l'employé (Architecte pour une grande compagnie).

Ça me permet de relativiser. J'ai parfois l'impression d'être bipolaire ... mais au final tous ces univers s'enrichissent !

... entrons donc dans le vif du sujet ...

C'est quoi Drupal ?

Drupal est très vaste. Pour commencer du coté technique, c'est:

  • un CMS opensource (License GPL)
  • doublé d'un Framework de développement
  • basé sur LAMP: Linux/Apache/MySQL/PHP.
  • livré dans un tout petit gzip de 3 Mo (et oui !)
  • très flexible, avec plus de 4000 modules (Drupal 7)
  • plus un outil de développement qu'un CMS prêt à l'emploi
  • une courbe d'apprentissage avec des hauts et des bas ;-)

Drupal c'est surtout une communauté très active, avec:

  • comme slogan "Come for the software, stay for the community" et c'est vrai !
  • 2 conférences mondiales par an (DrupalCon) de 2000-3000 personnes, des centaines de DrupalCamp (comme Montréal ou Lyon), des milliers de Drupal Meetup et autre CodeSprint.
  • 500 groupes régionaux. Il y en a un proche de chez vous ... sinon créez le.
  • 2% des sites mondiaux. De grosses pointures, comme la maison blanche, dans tous les domaines. Explorez drupalshowcase ça vaut le détour.
  • un écosystème très riche (compagnies, travailleurs autonomes, formations, support ...).
  • un développement très actif: 1 nouvelle version tous les 2-3 ans. La version 8 pour l'été 2013.
  • un groupe de sécurité qui vieille.
  • et comme tout bon projet opensource: des chicanes, des consensus et le "fondateur" @Dries toujours impliqué. Darwin à son meilleur !

Pour en savoir plus: http://drupal.org/about

Revenons à la question du pourquoi ...

Pourquoi Drupal et pas un développement maison ?

Un développement maison dans votre langage préféré est une stratégie. Je suis passé par là, une sorte de mini CMS-maison. C'est très formateur, on contrôle tout, on doit tout maitriser, et on est capable de répondre exactement au besoin du client. L'inconvénient ... c'est que c'est long (=couteux), il faut tout maintenir soit même, mais surtout ça devient quasi impossible à répondre, à un cout raisonnable, aux demandes des clients.

Pourquoi Drupal et pas un "vrai" Framework ?

Les "vrais" Framework ne manquent pas (Symfony, CakePHP, Django, Ruby On Rails, EntLib, etc). C'est une stratégie déjà plus productive qu'un développement maison. Mais vous devrez coder plus de fonctionnalités, comme la gestion des utilisateurs (authentification, rôle), des contenu (CMS), la traduction, le caching, etc ... Un Framework aide beaucoup pour cela, mais il vous restera une bonne partie de la job à faire.

Si votre projet et très spécifique (une petite WebApp par exemple) et n'a pas besoin de toutes ces fonctionnalités, un Framework fera très bien la job. Mais si de nouveaux besoins apparaissent il vous faudra les développer vous même, ou migrer ... D'ailleurs, voici une vidéo sur le sujet lors d'une Compétition de Framework PHP.

Drupal est d'abord un CMS, qui se double ensuite d'un Framework de développement. C'est souvent ce qui crée de la frustration pour un développeur qui cherche un Framework et qui utilise Drupal pour la première fois ... vous êtes prévenu si c'est votre cas ;-). Par contre, la prochaine version de Drupal (8) se rapproche de Symfony2, en utilisant plusieurs de ses composants. Vous pouvez consulter la présentation très intéressante au symfony live de Larry Garfield (@Crell)

Pourquoi Drupal et pas un CMS propriétaire ?

Si vous avez un budget conséquent, et que vous cherchez une solution "contractuelle" plutôt que "technique", alors vous regarderez du coté des CMS propriétaire. Vous aurez alors un fournisseur "redevable". Mais ne détournez pas trop vite votre regard de Drupal ... restez avec moi quelques secondes de plus ...

D'abord, avec une solution propriétaire, il y a:

  • le coût initial des licenses, souvent à multiplier par vos serveurs éventuels (internes et externes). Un article intéressant de Marc Andreessen sur la viabilité économique d'un Facebook s'il avait emprunté ce chemin.
  • le coût pour bien piloter la solution est important (en temps et en consultant). Ce coût est souvent négligé. Avec ces CMS, l'information est parfois difficile à trouver sur le Net, et vos "cas particuliers" difficiles à résoudre.
  • Autre aspect, moins tangible, c'est la prise en main de l'outil par vos équipes. Si votre outil s'installe en quelques minutes sans avoir besoin d'équipes spécialisées, ni de licenses, ni de serveur, il sera mieux maitrisé par vos équipes qui en tireront le maximum plus rapidement.

Vous me voyez venir avec mes gros sabots ! C'est à comparer avec une solution opensource comme Drupal ... Je ne porte pas de lunettes roses non plus, il a des embûches aussi:

  • le coût à bien piloter n'est pas à négliger, mais vous pourrez y mettre les économies faites du coté des licences/serveurs pour être encore mieux piloté.
  • il y a toujours des problèmes qui surviennent lors de l'implantation d'un tel outil, peut-être même plus nombreux avec une solution opensource (Darwin vous vous souvenez...). Dans ce cas, je peux vous garantir (expérience vécu ici !) que Google est votre meilleur ami. Avec 2% des sites mondiaux et une communauté qui publie ses recettes .... la solution n'est jamais loin: aucune compagnie ne peut accoter cela. Vous pouvez aussi débugger directement le code de Drupal (c'est de l'opensource !), alors qu'un produit propriétaire (boite noire) vous rendra dépendant du fournisseur pour tracer et corriger le problème.
  • sans aborder l'aspect sécurité par "Visibility vs Obscurity".

...ok, mais mon support, mon fournisseur "redevable", c'est impossible avec Drupal ....

Et bien oui c'est possible. L'écosystème Drupal est très riche, et de nombreux fournisseurs seront heureux de vous offrir ce support. Il y a notamment Acquia qui est à Drupal ce que Redhat est à Linux. Vous avez le meilleur des 2 mondes: l'assurance d'un fournisseur, et les avantages d'une solution opensource. Acquia est classé par Forbes comme une des compagnies des plus prometteuse (41ème). Ils sont à leur 4ème round de financement de 15 M$.

Dries à propos des CMS propriétaires:

"... ils vont mourir. Beaucoup d'entre eux n'existent déjà plus. Il n'y a aucun intérêt à avoir une solution propriétaire. Les avantages de l'open source sont bien trop nombreux. Nous avons réussi à former une très grande communauté. Des dizaines de milliers de gens vivent en développant pour Drupal et autant d'entre eux contribuent au projet.

À titre de comparaison, ces concurrents, même les plus gros, doivent posséder une équipe d'une cinquantaine d'ingénieurs, pas plus. L'innovation apportée par les développeurs de Drupal fait donc l'effet d'un tsunami. Nous avons par exemple 15 000 extensions et ces dernières sont développées très rapidement. Après le lancement de Google+ il n'a fallu que 24 heures pour voir une extension spécifiquement conçue pour Drupal. Il existe déjà un module pour Pinterest. Je serais prêt à parier que ces intégrations n'existent pas pour les CMS propriétaires. Ils ne peuvent tout simplement pas concurrencer notre rythme de développement et l'innovation sur le web..."

Extrait d'une interview donnée à Clubic.com

Pourquoi Drupal et pas un autre CMS opensource

Beaucoup de CMS opensource sont disponibles comme Wordpress, Joomla, Typo3 pour ne citer qu'eux. Ils ont tous leurs avantages. J'en ai essayé plusieurs, développé avec Joomla (même Mambo ... RIP ;-)

De ce coté là, la comparaison est plus ardue, chaque outil a ses forces et ses faiblesses. Par contre les contributions croisées sont fréquentes, comme par exemple les éditeurs WYSIWYG.

Mais d'après moi Drupal est celui qui offre le plus large champs d'application. Ça peut aller d'un site vitrine, un blog individuel, un blog multi-utilisateurs, un site à fort trafic et contenu (The Economist), un site communautaire ou chaque utilisateur est un contributeur.

Si votre objectif est de faire 1 seul site, ou toujours le même type de site, sans doute que d'autres outils seront mieux adaptés que Drupal. Mais si vous voulez être plus polyvalent, répondre à différentes offres, et capitaliser à chaque projet pour être plus efficace, alors Drupal est un très bon choix.

D'ailleurs pour ceux qui sont sur Paris, et qui sont libres ce 14 Juin, le CMSDay vous permettra d'explorer l'offre des CMS opensource. Ça se passera sur Twitter #CMSday. J'en profite pour une petite parenthèse, devinez quel est l'outil utilisé pour le site développeur de Twitter ;-)

À suivre ...

Bon c'est assez pour un article de blog, je vous donne rendez-vous d'ici quelques jours, le temps de faire le tri dans mes idées ... J'aborderai d'autres aspects de Drupal comme sa flexibilité, le développement spécifique, la courbe d'apprentissage, et comment sortir vivant de la jungle Drupal …

Vous pouvez me suivre sur twitter @NicolasFruit pour échanger sur Drupal, les Technos Web et plus!
Mise à jour: la 2ème partie est publiée.