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.
Commentaires
#1 shingara , le 17 January 2007 à 21h :
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.
#2 pangel , le 17 January 2007 à 23h :
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.
#3 David, biologeek , 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 ;-).
#4 Tartopom , 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.
#5 pangel , 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é :-)
#6 giz404 , le 18 January 2007 à 01h :
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.
#7 JS , le 18 January 2007 à 09h :
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.
#8 David , le 18 January 2007 à 13h :
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 ! =)
#9 NiCoS , 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 :-)
#10 maxime , le 18 January 2007 à 18h :
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
#11 David, biologeek , le 19 January 2007 à 09h :
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/
#12 mohamed , le 27 January 2007 à 14h :
merci pour la definition j'aime bien
#13 Jonathan , le 27 January 2007 à 22h :
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 ;-)
#14 Eric , le 19 February 2007 à 14h :
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.
#15 David, biologeek , le 20 February 2007 à 10h :
Excellentes remarques Eric, merci :-).
#16 jfern , le 14 March 2007 à 14h :
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!
#17 David, biologeek , le 15 March 2007 à 22h :
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 ;-).
Ajouter un commentaire