Quelle séquence d'événements a fait Django le framework web le plus populaire Python) et encore? Même s'il existe plusieurs autres frameworks.
Note : Cette question n'est ni argumentative ni conflictuelle . J'ai simplement demandé (objectif) "la séquence des événements" qui a conduit à sa popularité réelle. Étant conscient de la dynamique de l'acceptation des logiciels , je n'ai l'intention de personne de se disputer sur la supériorité technique.
Je pense qu'il y avait quelques facteurs, dont la combinaison était supérieure à la somme de leurs poids individuels.
La première est simplement le timing: Django est apparu juste au moment où la première grande vague de battage médiatique Rails augmentait, et il a donc été immédiatement décrit comme une sorte de "réponse de Python à Rails". Cela a entraîné un nombre non négligeable de globes oculaires sur le projet presque depuis le début. Le fait qu'Adrian était à la rencontre "Snakes and Rubies" à Chicago et ait pu participer à des discussions côte à côte sur Rails et Django a fait beaucoup pour cela.
Un autre facteur est que Django est et a toujours été une installation à package unique (enfin, pas tout à fait: vous avez toujours besoin d'un adaptateur de base de données, sauf si vous êtes sur Python 2.5+ et utilisez SQLite, mais assez proche). Les alternatives non-Zope, qui se concentraient toutes sur le choix des composants entre les mains du développeur, nécessitaient un peu plus de travail juste pour arriver au point où vous pourriez faire un tutoriel de base: vous auriez besoin d'aller à la recherche d'un ORM, un langage de modèle, etc., etc. et faites-les tous installer et configurer. Bien que cela se soit beaucoup amélioré au fil des ans, je pense que la mémoire persistante de cela a toujours un effet.
Et Django est sorti de la porte avec une documentation qui (si je peux le dire moi-même) était bien au-dessus de la norme habituelle pour les projets open-source, et n'a fait que s'améliorer avec le temps. Le tutoriel, malgré tous ses nombreux défauts, met en évidence un certain nombre de points forts qui rendent Django utile, et le reste de la documentation a toujours été de bonne qualité, mélangeant à la fois la référence API et l'important "comment "bits au besoin. Cela produit une bonne expérience prête à l'emploi et aide à la courbe d'apprentissage post-tutoriel (quelque chose qui a toujours tourmenté Zope).
Je pense aussi qu'il y a une perception - à tort ou à raison - que, disons, Pylons ou Werkzeug sont vraiment meilleurs pour les développeurs expérimentés qui connaissent déjà WSGI et l'écosystème Web Python; le fait qu'ils soient généralement des choix solides pour prendre vos bibliothèques préférées existantes et les connecter ensemble est la source de cela, je pense, et peut-être pousse certains des nouveaux utilisateurs vers l'approche intégrée de Django. Le revers de la médaille, bien sûr, est que beaucoup de gens qui feraient mieux d’apprendre davantage avant d’essayer Django ne le font pas;)
Enfin, je pense qu'il y a quelque chose à dire sur la façon dont Django a été commercialisé, c'est-à-dire qu'il n'était pas commercialisé depuis longtemps, ou du moins pas dans le sens où, disons, Rails a été commercialisé. Jusqu'à ce que Django 1.0 ait atterri, l'effort de "marketing" consistait principalement en des blogs de personnes (et il y avait des incidents notables où les gens étaient invités à atténuer un peu), des discussions à PyCon et ensuite juste à améliorer le cadre , en construisant des choses cool avec et en laissant les résultats parler d'eux-mêmes. Maintenant, bien sûr, dans le monde post-1.0, nous avons le DSF et DjangoCon et des consultants orientés affaires qui font des sessions de formation et beaucoup de livres et tout le reste, mais c'est encore tout à fait nouveau.
Je m'attends à ce qu'il y ait un retour de bâton, tout comme il y en a eu avec Rails, et en fait je pense qu'il se prépare depuis un certain temps et a déjà commencé. Mais jusqu'à présent, je pense que les facteurs que j'ai énumérés ici sont au moins les principaux responsables de la croissance constante et constante de la popularité que Django a connue depuis sa sortie initiale.
De nombreux frameworks Web Python existaient déjà lorsque Django est apparu en 2005 - en effet, la blague circulait déjà, alors que Python est "le langage avec plus de frameworks web que de mots-clés" (et Guido a rejeté ma proposition de corriger cela dans Py3k en ajoutant beaucoup, beaucoup plus de mots-clés). Maintenant, "Django" en soi est un peu ambigu comme terme de recherche ( c'est aussi le nom d'un guitariste populaire dont la vie a inspiré un film de Woody Allen, etc, etc.), ajoutant néanmoins "python" à la recherche pour supprimer ces autres significations que vous pouvez voir par exemple dans ce graphique comment sa popularité relative a changé par rapport à un autre classique Python, Zope. Croissance généralement stable d'un trimestre à l'autre, avec une énorme augmentation surprenante au début du deuxième trimestre 2008 ... ce qui arrive juste à coïncident avec la date à laquelle Google a annoncé App Engine (il est impossible de prouver la causalité dans un tel cas, mais la coïncidence est au moins intéressante ;-).
App Engine exclut essentiellement tout Python qui dépend profondément des composants C-codés personnalisés, ou qui requiert intrinsèquement des fonctionnalités "fortement relationnelles"; parmi ceux qui fonctionnent bien avec juste Python, Django est probablement celui que App Engine prend en charge le plus directement et le plus visiblement. Cependant, ce n'était qu'un coup de pouce, ajoutant à la tendance de croissance saine sous-jacente de Django. L'explication de cette tendance (et en effet pour l'équipe App Engine et la décision des utilisateurs de prendre en charge Django si bien)) doit résider dans des caractéristiques intrinsèques à Django lui-même.
Django est parfois critiqué (y compris par ... le vôtre vraiment ;-) pour être "trop magique" ou "trop monolithique", par rapport aux alternatives telles que Pylons, TurboGears, Werkzeug, & c, qui sont plus légères (en particulier ce dernier , mon préféré ;-), plus transparent, et permet de permuter plus facilement dans et hors de composants spécifiques (ORM, modèles, etc.). Cependant, la popularité de Django nous dit que, pour la plupart des personnes intéressées par le développement de sites Web et d'applications côté serveur, ces choix de conception Django sont perçus positivement: Django est considéré comme un cadre très riche et bien intégré ( et il a beaucoup d'add-ons et de "plugins", mais ceux-ci sont plus une conséquence qu'une cause de son ascendant).
Facilité de démarrage, "pages d'administration" automatiques, etc. - ainsi que le fait que Django peut être déterminé à créer des sites/applications vraiment riches et complexes et à répondre à des exigences particulières ou uniques, avec beaucoup de compétence et un peu de travail - sont probablement les "fonctionnalités de tueur". Pour utiliser Werkzeug à son meilleur, vous devez comprendre HTTP et WSGI , et choisissez et intégrez votre stockage et vos modèles préférés - les développeurs de sites Web et d'applications basés sur Python (comme, dans un sens, les utilisateurs de Rails, ou les utilisateurs de PHP encore plus populaire! -) "votent avec leur esprit "pour un environnement dans lequel ils ne doivent pas nécessairement faire tout cela, mais peuvent surtout se concentrer sur leur domaine d'application. Je dois admettre qu'ils ont probablement un point ;-).
Je peux penser à trois raisons de la popularité de Django, dont une seule a été abordée dans d'autres réponses pour autant que je vois:
Documentation. Il est bien structuré, complet et accessible à partir d'un certain nombre de niveaux de compétence.
Conception. La conception visuelle de l'administrateur, des pages d'erreur et du site du projet est bien au-dessus du niveau de conception observé avec la plupart des projets open source.
Soutien communautaire. En commençant par l'équipe de World Online, Django a ramassé très tôt quelques évangélistes influents. Je ne suis pas sûr que vous puissiez trop souligner l'importance des articles de blog comme Jeff Croft Django pour les non-développeurs (je pense que c'était le titre).
"Mon préféré, et je m'attends à ce que cela reste longtemps un favori personnel, s'appelle Django" - Guido Van Rossum sur l'épisode hebdomadaire 11 de FLOSS, diffusé le 4 août 2006
[Cliquez ici] (écoutez le dernier tiers de l'interview)
Vous pensez que cela aurait pu vous aider? ou au moins la raison pour laquelle Google l'a choisi pour AppEngine?
bien sûr, la communauté Django (y compris les développeurs) fait bien des choses. Par exemple (quelques analyses dans les liens):
Amélioration de la modularité: [Cliquez ici]
documentation kick ass Cliquez ici
Il y a aussi quelque chose au sujet de la communauté qui amène les gens à vouloir contribuer sur lequel je n'ai pas encore mis le doigt: Cliquez ici
Bien sûr, tout cela mène à Django étant une valeur aberrante: Cliquez ici
Il n'y a aucun doute sur la popularité de Django.
Dans mon cas, j'avais acheté le livre TurboGears, et je me suis débattu à travers ses incohérences et sa façon aléatoire d'expliquer les choses. Ensuite, j'ai obtenu le livre Django, et le tour est joué! Mon premier projet payant a été créé tout en parcourant l'exemple de projet dans le livre. Cela, plus la documentation en ligne, a scellé l'affaire. Pour moi , c'était simple: Documentation, documentation, documentation.
Au moins pour moi, un facteur important était que Simon Willison et Adrian Holovaty étaient déjà des joueurs bien connus dans la scène des "Web Standards", ainsi que Jeff Croft plus tard.
Ce n'était pas seulement un sceau de qualité, mais cela rendait également Django très convivial pour le Web, avec son respect pour HTTP, le balisage et même la méthode de débogage d'impression rapide et sale, que les personnes venant de PHP étaient habitués.
Je me trompe peut-être beaucoup ici, pas de données pour le sauvegarder, mais je pense que Django a gagné beaucoup plus de traction de la part de personnes venant de PHP, par opposition à Rails qui a beaucoup des conversions à partir de Java/.NET.
Comme d'autres l'ont déjà noté, la documentation est bien au-dessus de la moyenne. Le meilleur que j'ai vu, autant que je me souvienne.
J'ai remarqué qu'il était souvent promu comme étant le Ruby on Rails équivalent en Python. Il a également une connexion à Google (Google héberge Django events, et le supporte dans leur App Engine.) Un framework web approuvé par Google doit coûter quelque chose. :)
Le fait que plusieurs sites à volume élevé utilisaient déjà Django (ie lawrence.com etc ...) - même à 0,96 jours - m'a aidé à convaincre la direction que son utilisation était sûre. Les pylônes et les turbocompresseurs n'avaient vraiment pas cela.