# ★ Définition et avantages d'un framework web

J'ai récemment reçu un mail de maxime me rappelant à juste titre que le terme « framework web » n'est pas familier pour tous mes lecteurs et qu'un billet à ce sujet serait le bienvenu. Je vais essayer de rester le plus accessible possible en utilisant une métaphore bien connue, après celle de la caisse à outils pour le choix d'un framework web, passons à la cuisine pour les non bricoleurs (comme moi).

## Définition d'un framework web

L'objectif est de faire un bon gâteau. Généralement, les personnes qui ne savent pas cuisiner ou qui aiment particulièrement une recette très connue choisissent un gâteau tout prêt qui est vendu dans un sachet qu'il suffit de mettre au four, c'est ce que l'on appelle en développement web un CMS ou Système de Gestion de Contenu. C'est très pratique et on y a tous goûté un jour mais il est quasi-impossible de changer la recette, au mieux vous pouvez rajouter un peu de nappage sur le dessus mais ça reste succinct... et frustrant. De plus, avouons-le, c'est loin d'être de la grande cuisine, c'est correct mais ça en reste là. Enfin, et c'est souvent le plus gênant, les sachets vendus sont pour 4 et comment faire lorsque vous êtes 6 ou 2 ?

Heureusement tout ces inconvénients disparaissent lorsque l'on sait cuisiner. On choisit la recette qui nous plaît, les ingrédients parmi les meilleurs et on fait un bon gâteau. Le problème de cette méthode est qu'elle prend du temps. Or, il y a des combinaisons d'ingrédients que l'on retrouve tout le temps comme mélanger des œufs et de la farine ou monter des blancs en neige. Si seulement on pouvait directement avoir accès à ces ingrédients tout prêts !

En cuisine, ce n'est pas évident et cela demanderait un frigo énorme, mais en développement web on a trouvé la parade : les frameworks web.

Un framework web est donc un regroupement de macro-ingrédients qui forment un tout cohérent et que l'on a juste a assembler selon nos besoins pour faire un gâteau avec notre propre recette.

## Avantages d'un framework web

Liste non exhaustive :

- Le premier avantage est la liberté : c'est vous qui décidez de la recette pour arriver au gâteau souhaité et personne d'autre, si vous n'aimez pas le café il suffit de ne pas en mettre, c'est tout simple. Ce soir vous êtes 9 ? Une petite conversion et le tour est joué. Aïe, ce macro-ingrédient n'existe pas encore. Aucun problème il suffit de le créer vous-même ;
- Le deuxième est la rapidité : faire votre gâteau à partir des ingrédients de base prendrait trop de temps, l'objectif est quand même d'être rassasié rapidement . Les macro-ingrédients sont le compromis idéal ;
- Le troisième est la qualité : les macro-ingrédients ont été assemblés par des personnes très compétentes qui ont normalement envisagé toutes les possibilités d'assemblage. De plus, ceux-ci sont distincts donc vous pouvez facilement modifier/améliorer le vôtre pour ensuite éventuellement le partager ou directement récupérer celui d'un ami ;
- Le quatrième est la cohérence : pour éviter les fautes de goût, tous les macro-ingrédients ont été assemblés dans un but commun qui est de faire de bons gâteau ;
- Le cinquième est la pérennité : tout le monde peut monter des blancs en neige, mais il faut toujours retenir ce qu'il faut mettre à la bonne température, combien de temps tourner dans un sens,... le macro-ingrédients « blancs en neige » est toujours fait de la même manière, la meilleure. Et si jamais un jour il en existe un nouvelle encore meilleure, elle sera utilisée sans même que vous le sachiez.

Bon je crois que ça suffit pour convaincre les plus piètres cuisiniers (je n'ai pas mentionné les différentes cuisines possibles mais elles sont bien sûr nombreuses, ma préférée étant celle du Python). S'il y a des marmitons inspirés vous pouvez mettre votre recette en commentaire :-).

Dans un registre un peu plus technique/sérieux, vous pouvez lire l'article de Jon initulé CMS et frameworks web ou Top 13 reasons to use a web framework and never look back de CoderBattery.

### Articles peut-être en rapport

- Sortie de Django 1.0, une année de nouveautés
- Google App Engine : avantages et inconvénients
- ★ Astuces et bonnes pratiques Django

### Commentaires

shingara le 17/01/2007 :

Très bonne définission d'un framework web. Je trouve cette métaphore très bien trouvé et je pense que je garderais ce billet en exemple d'explication.
Merci d'éclairer les novices.

pangel le 17/01/2007 :

Je me demande toujours selon quels critères on peut choisir entre un CMS un framework.
Jusqu'à présent j'ai toujours opté pour des CMS car je travaillais sur des sites de taille petite ou moyenne, mais j'aimerais bien déterminer plus précisément à partir de quelle "ampleur" le framework devient avantegeux.

David, biologeek le 17/01/2007 :

@pangel : lorsque le temps d'adaptation aux besoins du CMS devient supérieur à celui d'un développement spécifique via un framework web. À court terme on pense toujours que le CMS est le plus avantageux mais c'est en fait rarement le cas si l'on sait programmer. Un CMS est l'idéal pour un besoin spécifique mais on finit tôt ou tard par vouloir s'en éloigner... et c'est généralement à ce moment là qu'on commence à regretter ce choix ;-).

Tartopom le 17/01/2007 :

Ah ! Bha gloire à Maxime, cela faisait longtemps que je me demandais en quoi consistait vraiment un framework (oui, j'ai cherché et oui c'était pas très clair).
Super analogie en tout cas.

pangel le 17/01/2007 :

@David : merci pour ta réponse ! je sais maintenant ce qu'il me restera à faire quand le magazine pour lequel je bosse voudra commencer à gagner des sous avec son site - c'est-à-dire ajouter massivement du contenu et de la grosse interactivité :-)

giz404 le 18/01/2007 :

Je pense aussi m'orienter vers un framework pour de futurs développements, histoire de pouvoir réellement faire du sur-mesure, tout en restant évolutif. Entrer dans la logique de construction d'un CMS est souvent complexe, et surtout, plus on fait de modifs, et plus on s'éloigne de l'appli originale, ce qui peut poser de gros problèmes lors de mises à jour. Le problème est moins présent avec un framework.

JS le 18/01/2007 :

Hum....
Perso, je suis pas complètement d'accord en ce qui concerne les CMS.
Avec un CMS bien concut, modulaire, tu peux tout a fait ajouter tes briques, le configurer comme tu veux, et si un jour le gateau est pour 2 et le lendemain, c'est un gateau pour 30, y'a pas de soucis...
En tout cas, jusqu'a présent, tous les sites qu'on a développé dans ma boite sont réalisé avec un CMS, on a développé pas mal de modules, d'appli métiers, etc... Et par rapport à mon expérience des CMS, on gagne encore en rapidité.
Ca fait 1 an que je bosse avec Plone.

David le 18/01/2007 :

Pour moi qui ce que c'est qu'un framework web, c'est trop métaphorique : à la fin du billet je suis allé faire un tour à la cuisine ! =)

NiCoS le 18/01/2007 :

Joli billet - tout est bien trouvé :-)
Pour JS, peut-on vraiment considérer Plone comme un CMS ? Je le vois plus comme un CMF (Content Management Framework) qu'un CMS.
Tant que tu reste dans un principe d'édition/publication, le CMS est gagnant en efficacité et rapidité de dev. Plus tu vas vers des applis métiers, moins cela est possible de le faire avec des CMS, même les plus évolués/modulaires. Je rejoins ainsi David :-)
C'est vrai que quand on aborde un nouveau projet, on hésite parfois entre les deux. Dois-je partir d'un CMS et prévoir du dev spécifique ou bien partir d'un framework qui va me faciliter tel autre aspect du projet mais m'oblige à recoder la partie CMS...
Nous n'avons pas fini de cogiter :-)

maxime le 18/01/2007 :

merci d'avoir répondu :)
En effet ca à l'air pas mal pratique, ca évite de réinventer toujours la roue. En ce qui concerne les cms c'est vrai que c'est souvent brouillon. J'ai passé plusieurs semaines à en essayer des tonnes pour une communauté d'entraide, et c'est une jungle pas croyable.... Résultat j'ai pris un "LightCMS" (pseudo cms) que j'ai modifié à ma guise (au moins le code était pas trop merdique :-/ ) J'aurais été bien mieux avec un bon framework...
Dommage qu'il existe pas (arretez moi si je me trompe) d'hebergeur gratuit avec python j'aurais installé Django voir ce qu'il a dans le bide

David, biologeek le 19/01/2007 :

Le meilleur hébergement gratuit ça reste localhost ;-)
Sinon il y a WebFaction qui a l'air pas mal pour du django : www.webfaction.com/

mohamed le 27/01/2007 :

merci pour la definition j'aime bien

Jonathan le 27/01/2007 :

Bizarrement, étant un adepte de Django, j'aime beaucoup ModX.
ModX est à mi-chemin entre le framework et le SGC ("CMS" en Français).
C'est un CMF mais avec une courbe d'apprentissage plus proche d'un CMS (et d'un CMS plutôt simple).
Pour tous les sites de contenus plus ou moins généraux, il est idéal. Et même pour ceux qui le sont moins.
En somme, à mon humble avis :
- Si le site est basé sur des contenus fixes, journalistiques ou pouvant être gérés par des éléments génériques (avec des variables spécifiques pouvant être ajoutées. ex: images, videos, commentaires) : go for ModX, car il est rapide à mettre en oeuvre, non obstrusif (je pars de mon code xhtml/css et je fais mon site avec, pas le contraire), et marche sur 95% des hébergeurs.
- Si en revanche, on part dans un site de contenu demandant beaucoup d'éléments spécifiques : go for Django, et un hébergeur le supportant.
ps: merci pour le lien vers mon article ;-)

Eric le 19/02/2007 :

Merci pour cette intéressante vulgarisation.
J'aurais une remarque concernant le troisième avantage d'un framework web -la qualité qui tiendrait à la qualité des développeurs des "macro-ingrédients".
La conclusion me semble un peu rapide. En effet, on peut espérer que les CMS, sur lesquels travaillent en permanence des équipes de développeurs ont en leur sein une qualité équivalente. Or vous avez vous-même pointé les limites de telles entreprises.
Pour moi, la qualité de ces développements tient plutôt :
- dans leur généricité, découplés d'un problème particulier, ils sont naturellement plus génériques, s'adaptant aux différents développement
- pour une certaine part dans leur taille, réduite, qui permet aux développeurs compétents dont vous parlez de pousser leur qualité beaucoup plus loin que s'ils étaient confrontés à un développement plus large.

David, biologeek le 20/02/2007 :

Excellentes remarques Eric, merci :-).

jfern le 14/03/2007 :

Bonjour à tou(te)s,
Voila, je suis en train (debut du projet) de réfléchir à la création d'un site web très orienté et par la même occasion de me lancer un petit défi personnel.
Je code principalement en php, mais je suis de plus en plus attiré par le python (je l'utilise dans mon métier, la bioinfo...). Ma question est naive (mais pas inutile!) : y a t'il vraiment un intérêt à utiliser un framework (symphony ou django) plutôt que de coder bêtement ces pages en php?
De plus, j'utilise python mais je ne suis pas encore familiarisé avec celui-ci pour créer des interfaces web. Dois je faire l'effort de passer à django ou essayer un framework comme symphony? (En clair python plutot que php)
Django est très puissant mais les hébergeurs acceptant python ont l'air rares! Les hébergeurs gratuits (ou peu onnéreux, style ovh90gp) sont ils suffisant (assez robuste) pour un début?
Merci....
PS: super site David!

David, biologeek le 15/03/2007 :

En ce qui concerne le choix d'un framework ou le développement à l'ancienne, tout dépend de l'ampleur du projet. Mais je pense qu'on gagne énormément en rapidité et en bonne pratique de programmation (modèle MVC, etc) avec un framework.
Pour le choix entre python et PHP, hum j'ai du mal à être objectif ;-).

étudiant blogueur le 29/11/2008 :

Salut
Voilà on a appris ce que signifie un framework, reste maintenant à savoir quel est le bon framewark à choisir :-)

Mod12 le 04/12/2008 :

Est-ce qu'il y en a parmis vous qui veulent parler de leurs bonnes expériences et mauvaises qu'ils ont eu avec certain frameworks?

À vu d'oeil, symphony me semble intéressant mais compliqué à mettre en oeuvre. On me confirme?

étudiant marocain le 04/12/2008 :

Oui, c'est vrai, pour l'installer, il faut installer php, puis pear, puis symfony avec une ligne de commande, ce qui n'est pas assez facile.

balluche le 26/01/2009 :

>Définition et avantages d'un framework web, dans web
>frameworks sur BioloGeek, l'avis d'un freelance
>passionné par le web et son évolution.

Sauf si le CMS en question s'appelle SPIP ;-). Dans ce cas, il est très facile de développer ce que l'on veut comme fonctionnalité !

http://www.spip.net/fr

David, biologeek le 26/01/2009 :

Venir faire la promotion de SPIP ici c'est un peu se tirer une balle dans le pied, m'enfin j'dis ça... :-)

thomas le 04/03/2009 :

Bravo pour cette définition. Savoir expliquer les choses simplement et de manière intéressante est pour moi une grande qualité.

Faiza le 05/08/2009 :

Merci beaucoup, très bonne explication et très bonne définition d'un framework.

Je crois qu'avec cette comparaison je ne risque pas de l'oublier :)

pari sportif le 26/10/2009 :

Et que pensez vous de l'utilisation de Cake PHP ? Pour ma part je l'utilise et développe avec, j'en ai une utilisation professionnelle, et il me convient bien...

Tataouine le 09/01/2010 :

Les framework pour moi sont devenu quelque chose d'indispensable.
Déjà, je suis tombé sur ce blog en cherchant des tuto sur les framework php

creation sites web le 19/02/2010 :

j'ai voulu apprendre correctement à développer avec le framework symphony mais malheureusement j'ai eu plusieurs difficultés (ce qui n'était pas le cas avec le plugin cakephp par exemple)
connaissez vous un bon tutoriel pour commencer avec symphony?

maco le 30/06/2010 :

sur !!!

DantonQ le 03/08/2010 :

CMS=shit.
Désolé, désolé mais je vais en froisser plus d'un.
Au final la bonne question c'est de savoir qui va utiliser un CMS ?

La plupart du temps, un CMS s'accompagne d'un GUI ou en français d'une interface graphique pour l'utilisateur lambda...

Avec un CMS t'as du code, t'en a tellement qu'il y a la quantité mais pas la qualité... génial. Le dernier exemple en date serait celui de http://www.france.fr/.
C'est-y pas beau ? (indispo' au moment ou j'écris ces lignes...)

CMS = codage de masse... ne vous attendez pas à du grand art ou à de l'originalité.

Si vous voulez votre truc à vous, autant le coder par vous même quitte à apprendre et ensuite avec un peu d'expérience à développer vos propres bibliothèques de fonction personnalisées. A propos, le principal problème des gens qui veulent un site qui roxe mais sans coder un e accent aigu ont des petits problème d'organisation et de clarté voir même de cohérence quand il s'agir de poser à plat les données, les types de données et leurs variables...

Pour ce qui est des framework c'est plus ou moins le même raisonnement. Déploiement de masse donc éventuellement foirage de masse... et encore c'est sans compter les failles des CMS qui peuvent venir s'additionner à celles du script de codage lui-même !

"Je ne veux pas apprendre à coder", "c'est un truc de geek", "j'ai pas le temps", "j'y comprends que dalle à tout ça", okay mais faudra pas venir pleurer si le code est peu personnalisable et peu optimisé...

La connaissance procure le pouvoir.
Tout le reste est illusoire.

En clair si vous n'avez pas l'intention de vous impliquer dans le codage : utilisez un frame ou un CMS mais c'est dommage je trouve.

Jeux de Bateau le 07/11/2011 :

Ahah , pas mal la métaphore :) . Il manque plus qu'une version Bricoleur ! (Et oui faut apprendre ! :p)
Sinon merci sa été super Clair pour moi , a chaque fois je comprenais a moitié ... ^^ , maintenant je vais relire les articles afin de passer pour un connaisseur #joke :)