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.
27 Commentaires
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.
1 | shingara, le 17 January 2007 à 21h
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.
2 | pangel, le 17 January 2007 à 23h
@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 ;-).
3 | David, biologeek, le 17 January 2007 à 23h
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.
4 | Tartopom, le 17 January 2007 à 23h
@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é :-)
5 | pangel, le 17 January 2007 à 23h
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.
6 | giz404, le 18 January 2007 à 01h
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.
7 | JS, le 18 January 2007 à 09h
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 ! =)
8 | David, le 18 January 2007 à 13h
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 :-)
9 | NiCoS, le 18 January 2007 à 13h
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
10 | maxime, le 18 January 2007 à 18h
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/
11 | David, biologeek, le 19 January 2007 à 09h
merci pour la definition j'aime bien
12 | mohamed, le 27 January 2007 à 14h
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 ;-)
13 | Jonathan, le 27 January 2007 à 22h
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.
14 | Eric, le 19 February 2007 à 14h
Excellentes remarques Eric, merci :-).
15 | David, biologeek, le 20 February 2007 à 10h
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!
16 | jfern, le 14 March 2007 à 14h
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 ;-).
17 | David, biologeek, le 15 March 2007 à 22h
Salut
Voilà on a appris ce que signifie un framework, reste maintenant à savoir quel est le bon framewark à choisir :-)
18 | étudiant blogueur, le 29 November 2008 à 21h
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?
19 | Mod12, le 4 December 2008 à 14h
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.
20 | étudiant marocain, le 4 December 2008 à 14h
>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
21 | balluche, le 26 January 2009 à 18h
Venir faire la promotion de SPIP ici c'est un peu se tirer une balle dans le pied, m'enfin j'dis ça... :-)
22 | David, biologeek, le 26 January 2009 à 18h
Bravo pour cette définition. Savoir expliquer les choses simplement et de manière intéressante est pour moi une grande qualité.
23 | thomas, le 4 March 2009 à 16h
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 :)
24 | Faiza, le 5 August 2009 à 14h
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...
25 | pari sportif, le 26 October 2009 à 16h
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
26 | Tataouine, le 9 January 2010 à 20h
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?
27 | creation sites web, le 19 February 2010 à 16h
Ajouter un commentaire