Geschichte der Popularität von Django [geschlossen]

84

Welche Abfolge von Ereignissen machte Django zum beliebtesten Python-Webframework. Und das immer noch? Obwohl es mehrere andere Frameworks gibt.

Hinweis : Diese Frage ist weder argumentativ noch konfrontativ . Ich habe lediglich nach (objektiven) "Abfolgen von Ereignissen" gefragt, die zu seiner tatsächlichen Popularität führen. Da ich mir der Dynamik der Softwareakzeptanz bewusst bin, beabsichtige ich nicht, über die technische Überlegenheit zu streiten.

Sridhar Ratnakumar
quelle
14
Django als beliebtestes Python-Webframework ist eine Tatsache, keine subjektive Meinung. "Abfolge von Ereignissen" bezeichnet die Entwurfsentscheidungen, das Timing, das Marketing usw., die zu seiner Popularität führen. Was ist daran unsinnig?
Sridhar Ratnakumar
2
Das ist eine wirklich gute Frage.
Joshua Partogi
Ich werde mit Interesse beobachten, um zu erfahren, ob diese Entwurfsentscheidungen, das Timing, das Marketing usw. mit ausreichender Genauigkeit und Aktualität bekannt sind, um als "Geschichte" betrachtet zu werden.
John Saunders
Ich bin mit dem Abschluss dieser Frage nicht einverstanden, aber es könnte für CS besser sein .
Kyle Strand

Antworten:

107

Ich denke, es gab einige Faktoren, deren Kombination größer war als die Summe ihrer individuellen Gewichte.

Eines ist einfach das Timing: Django schien richtig zu sein, als die erste große Welle des Rails-Hype anstieg, und so wurde es sofort als eine Art "Pythons Antwort auf Rails" dargestellt. Dies führte fast von Anfang an zu einer nicht unerheblichen Anzahl von Augäpfeln im Projekt. Die Tatsache, dass Adrian beim "Snakes and Rubies" -Treffen in Chicago war und an Nebengesprächen über Rails und Django teilnehmen durfte, hat viel dazu beigetragen.

Ein weiterer Faktor ist, dass Django eine Einzelpaketinstallation ist und war (nun ja, nicht ganz: Sie benötigen immer noch einen Datenbankadapter, es sei denn, Sie arbeiten mit Python 2.5+ und verwenden SQLite, sind aber nah genug dran). Die Nicht-Zope-Alternativen, die sich alle darauf konzentrierten, die Auswahl der Komponenten in den Händen des Entwicklers zu lassen, erforderten viel mehr Arbeit, um an den Punkt zu gelangen, an dem Sie ein grundlegendes Tutorial durchführen konnten: Sie müssten einen ORM suchen, a Vorlagensprache usw. usw. und installieren und konfigurieren Sie sie alle. Obwohl das im Laufe der Jahre viel besser geworden ist, denke ich, dass die anhaltende Erinnerung daran immer noch Wirkung zeigt.

Und Django kam mit einer Dokumentation aus dem Tor, die (wenn ich es selbst sagen darf) weit über dem üblichen Standard für Open-Source-Projekte lag und mit der Zeit nur besser geworden ist. Das Tutorial trifft trotz all seiner vielen Fehler auf eine Reihe von Höhepunkten, die Django nützlich machen, und der Rest der Dokumentation war immer von guter Qualität, wobei sowohl API-Referenz als auch wichtige "How to" -Bits nach Bedarf gemischt wurden. Dies führt zu einer guten Out-of-the-Box-Erfahrung und hilft bei der Lernkurve nach dem Tutorial (was Zope schon immer geplagt hat).

Ich denke auch, dass es eine Wahrnehmung gibt - zu Recht oder zu Unrecht -, dass beispielsweise Pylons oder Werkzeuge wirklich besser für erfahrene Entwickler sind, die sich bereits mit WSGI und dem Python-Web-Ökosystem auskennen. Die Tatsache, dass sie in der Regel eine gute Wahl sind, um Ihre vorhandenen Lieblingsbibliotheken zu nutzen und zusammenzufügen, ist meiner Meinung nach die Quelle dafür und treibt möglicherweise einige neuere Leute zu Djangos integriertem Ansatz. Die Kehrseite ist natürlich, dass viele Leute, die besser dran sind, mehr im Voraus zu lernen, bevor sie Django ausprobieren, das nicht tun;)

Schließlich denke ich, dass es etwas zu sagen gibt für die Art und Weise, wie Django vermarktet wurde, das heißt, dass es wirklich lange Zeit nicht vermarktet wurde, oder zumindest nicht in dem Sinne, dass beispielsweise Rails vermarktet wurde. Bis zur Landung von Django 1.0 bestand die "Marketing" -Anstrengung hauptsächlich aus Bloggen (und es gab einige bemerkenswerte Vorfälle, in denen die Leute gebeten wurden, es ein wenig abzuschwächen), Gesprächen bei PyCon und dann meist nur der Verbesserung des Frameworks, um damit coole Dinge aufzubauen und die Ergebnisse für sich selbst sprechen lassen. In der Welt nach 1.0 haben wir natürlich DSF und DjangoCon sowie geschäftsorientierte Berater, die Schulungen und viele Bücher und alles andere durchführen, aber das ist alles noch ziemlich neu.

Ich gehe davon aus, dass es eine Gegenreaktion geben wird, genau wie bei Rails, und ich denke, es braut sich schon eine Weile zusammen und hat bereits begonnen. Aber bis jetzt denke ich, dass die Faktoren, die ich hier aufgelistet habe, zumindest die Hauptfaktoren für das stetige, stetige Wachstum der Popularität sind, das Django seit seiner ersten Veröffentlichung gesehen hat.

James Bennett
quelle
31
Sie müssen nicht bescheiden sein: Die Qualität und Quantität der Dokumentation von Django ist ein großes Plus dafür. Alles gut gemacht.
Ned Deily
1
"Bis zur Landung von Django 1.0 bestand die" Marketing "-Anstrengung hauptsächlich aus Bloggern ..." Vergessen Sie die beiden Bücher , die vor 1.0 veröffentlicht wurden (dh lange in Arbeit waren), von denen eines Ihnen gehört? Das klingt für mich nach schwerem Marketing.
Cristian
9
Zwei Bücher machen zumindest für mich kein "schweres Marketing". Und um ehrlich zu sein, hätte ich es vorgezogen, meine bis zur Veröffentlichung von 1.0 auszuschalten, schon allein deshalb, weil dies mein Leben ein wenig vereinfacht hätte.
James Bennett
4
Sie sollten wahrscheinlich Ihr Engagement für Django erwähnen, da es auf SO nicht so bekannt ist wie beispielsweise Ihr Blog. Ich scheine mich zu erinnern, dass du vorher etwas darüber geschrieben hast, obwohl ich den Link atm nicht finden kann.
Xiong Chiamiov
7
Es ist ziemlich einfach, auf meinen Namen zu klicken und zu sehen, wer ich bin.
James Bennett
112

Viele Python-Webframeworks existierten bereits, als Django 2005 erschien - tatsächlich ging der Witz bereits dahin, dass Python "die Sprache mit mehr Webframeworks als Schlüsselwörtern" ist (und Guido lehnte meinen Vorschlag ab, dies in Py3k durch zu beheben viele, viele weitere Schlüsselwörter hinzufügen). Jetzt ist "django" per se als Suchbegriff etwas mehrdeutig (es ist auch der Name eines beliebten Gitarristen, dessen Leben einen Woody Allen-Film usw. usw. inspiriert hat), und fügt der Suche dennoch "Python" hinzu, um diese anderen Bedeutungen zu entfernen Sie können zB in dieser Grafik sehenwie sich seine relative Popularität im Vergleich zu einem anderen klassischen Python-Webframework, Zope, verändert hat. Meistens stetiges Wachstum gegenüber dem Vorquartal, mit einem großen überraschenden Anstieg zu Beginn des zweiten Quartals 2008 ... der zufällig mit dem Datum zusammenfällt, an dem Google App Engine angekündigt hat (in einem solchen Fall ist es unmöglich, die Ursache zu beweisen, aber der Zufall ist es zumindest interessant ;-).

App Engine schließt im Wesentlichen jedes Python-Webframework aus, das stark von benutzerdefinierten C-codierten Komponenten abhängt oder an sich "stark relationale" Funktionen erfordert. Von denen, die nur mit reinem Python-Code gut funktionieren, ist Django wahrscheinlich derjenige, den App Engine am direktesten und sichtbarsten unterstützt. Dies war jedoch nur ein Schub, der zu Djangos zugrunde liegendem gesunden Wachstumstrend beitrug. Die Erklärung für diesen Trend (und in der Tat für die Entscheidung des App Engine-Teams und der Benutzer, Django so gut zu unterstützen) muss in Eigenschaften liegen, die Django selbst eigen sind.

Django wird manchmal kritisiert (auch von ... Ihnen wirklich ;-), weil er "zu magisch" oder "zu monolithisch" ist, verglichen mit Alternativen wie Pylons, TurboGears, Werkzeug usw., die leichter sind (insbesondere letzteres) , mein Favorit ;-), transparenter und einfacheres Ein- und Auswechseln bestimmter Komponenten (ORM, Vorlagen usw.). Die Popularität von Django zeigt jedoch, dass diese Django-Designentscheidungen für die meisten Menschen, die an der Entwicklung serverseitiger Websites und Apps interessiert sind, positiv wahrgenommen werden: Django wird als sehr reichhaltiges und gut integriertes Framework angesehen (und es hat viele zusätzliche Vorteile). ons und beigetragene "Plugins", aber diese sind eher eine Konsequenz als eine Ursache für ihren Aufstieg).

Einfache begonnen, automagischen „admin Seiten“ und dergleichen - sowie die Tatsache , dass Django kann gebogen werden , um wirklich reiche und komplexe Websites / apps zu machen und eigentümlich oder individuellen Anforderungen, mit viel Geschick und etwas Arbeit aufnehmen - sind wahrscheinlich die "Killer Features". Um Werkzeug optimal nutzen zu können, müssen Sie HTTP und WSGI verstehen und Ihren bevorzugten Speicher und Vorlagen auswählen und integrieren - Entwickler von Python-basierten Websites und Apps (in gewissem Sinne Benutzer von Rails oder Benutzer von Noch beliebteres PHP! -) "stimmen mit ihrem Mindshare ab" für eine Umgebung, in der sie nicht unbedingt etwas davon tun müssen, sondern sich hauptsächlich auf ihre Anwendungsdomäne konzentrieren können. Ich muss zugeben, dass sie wahrscheinlich einen Punkt haben ;-).

Alex Martelli
quelle
3
Ich denke, angesichts der Popularität von Django wird Ihnen eine gewisse Vertrautheit damit gute Dienste leisten. das schließt nicht aus, auch repoze.bfg, werkzeug usw. zu verwenden, wenn sie besser zu einer App oder Site passen. Wenn Sie etwas Zeit haben, können Sie in jedem von ihnen ein Semi-Toy-Projekt von Grund auf neu erstellen und dadurch ein tieferes Verständnis für die Stärken und Schwächen gewinnen, die sie je nach Projekt mehr oder weniger angemessen machen (ich muss zugeben) Ich habe keine Erfahrungen aus erster Hand mit repoze.bfg ...).
Alex Martelli
1
@Triptych, eindeutig nicht der einzige Grund, da einige andere Frameworks ( allerdings kein Framework: denken Sie zum Beispiel an Zope! -) möglicherweise genauso zutreffend waren. Ich denke, meine Überlegungen zu den Vorteilen von reich integrierten und etwas "magischen" Frameworks für App- / Site-Entwickler haben möglicherweise die Entscheidung beeinflusst, wofür primäre Unterstützung angeboten werden soll (z. B. indem sie automatisch verfügbar gemacht werden, ohne dass ein Benutzer-Upload erforderlich ist).
Alex Martelli
1
@cletus, Java hat 50 Schlüsselwörter pro java.sun.com/docs/books/tutorial/java/nutsandbolts/… , Python 2.6 hat 31 pro len(keyword.kwlist)- z. B. sind Typnamen keine Schlüsselwörter in Python usw.
Alex Martelli
34
Ich denke, Sie vermissen einen wichtigen Punkt. Djangos Dokumentation war (viel) besser als jedes Python-Framework (sowie besser als Rails-Dokumentation, IMO)
agiliq
6
@Alex, ich bezweifle, dass jemand die Dokumente tatsächlich von Anfang bis Ende liest, aber die meisten Leute, die ein Problem haben, greifen auf eine Google-Suche zu. Die Antwort in 5 Minuten mit gut aussehenden Dokumenten zu finden, anstatt 1 Stunde in Blog-Posts zu suchen, ist ein großes Plus (zumindest bis StackOveflow, was das Stellen dummer Fragen viel einfacher machte;)
Edan Maor
22

Ich kann mir drei Gründe für die Popularität von Django vorstellen, von denen meines Erachtens nur einer in anderen Antworten angesprochen wurde:

  1. Dokumentation. Es ist gut strukturiert, umfassend und von einer Reihe von Schwierigkeitsstufen aus zugänglich.

  2. Design. Das visuelle Design des Administrators, der Fehlerseiten und der Projektwebsite liegt weit über dem Designniveau, das bei den meisten Open Source-Projekten zu beobachten ist.

  3. Gemeinschaftliche Unterstützung. Beginnend mit dem Team von World Online hat Django schon früh einige einflussreiche Evangelisten aufgegriffen. Ich bin mir nicht sicher, ob Sie die Bedeutung von Blog-Posts wie Jeff Crofts Django für Nicht-Entwickler überbewerten können (ich denke, das war der Titel).

Tony
quelle
13

"Mein persönlicher Favorit, und ich gehe davon aus, dass dies noch lange ein persönlicher Favorit sein wird, heißt Django" - Guido Van Rossum in der wöchentlichen FLOSS-Folge 11, ausgestrahlt am 4. August 2006

[Hier klicken] (letztes Drittel des Interviews anhören)

Denken Sie, das hätte vielleicht geholfen? oder zumindest der Grund, warum Google es für AppEngine ausgewählt hat?

Natürlich macht die Django-Community (einschließlich der Entwickler) vieles richtig. Zum Beispiel (Einige Analysen in den Links):

Verbesserung der Modularität: [Hier klicken]

Kick Ass Dokumentation Klicken Sie hier

Es gibt auch etwas in der Community, das die Leute dazu bringt, einen Beitrag zu leisten, auf den ich noch keinen Finger gelegt habe: Klicken Sie hier

Natürlich alles, was dazu führt, dass Django ein Ausreißer ist: Klicken Sie hier

Es gibt keine Frage über Djangos Popularität.

Oben.
quelle
1
Ich denke, diese Antwort liefert ein bisschen, was die anderen nicht tun. Viele Leute gingen aufgrund dieses Kommentars blind in Django hinein.
Jorge Vargas
Es ist nichts Falsches daran, es blind zu machen, wenn Guido es als solches beschreibt. Ich habe es getan und seitdem nie mehr zurückgeschaut.
Auf.
3

In meinem Fall hatte ich das TurboGears-Buch gekauft und mich durch seine Inkonsistenzen und den zufälligen Weg zur Erklärung der Dinge gekämpft. Dann bekam ich das Django-Buch und voila! Mein erstes kostenpflichtiges Projekt wurde erstellt, während ich mich durch das Beispielprojekt im Buch arbeitete. Das und die Online-Dokumentation besiegelten den Deal. Für mich war es einfach: Dokumentation, Dokumentation, Dokumentation.

Signal
quelle
2

Mir ist aufgefallen, dass es in Python oft als Ruby on Rails-Äquivalent beworben wurde. Es hat auch eine Verbindung zu Google (Google hostet Django-Events und unterstützt diese in ihrer App Engine). Ein von Google empfohlenes Webframework muss etwas ausmachen. :) :)

Joemoe
quelle
2
Sicher, aber GAE kam viel später in den Prozess. Und Django war schon beliebt.
Sridhar Ratnakumar
1
@Sridhar, yep - Ich habe in meiner Antwort beide Punkte angesprochen: GAE hat Django am Ankündigungstermin einen großen Schub gegeben ... aber das war zusätzlich zu einem stetigen Wachstumstrend.
Alex Martelli
2

Zumindest für mich war ein wichtiger Faktor, dass Simon Willison und Adrian Holovaty bereits bekannte Spieler in der "Web Standards" -Szene waren, ebenso wie Jeff Croft später.

Das war nicht nur ein Qualitätssiegel, sondern machte Django auch sehr webfreundlich, mit seinem Respekt vor HTTP, Markup und sogar der schnellen und schmutzigen "Print-Debugging" -Methode, an die Leute aus PHP gewöhnt waren.

Ich könnte mich hier stark irren, keine Daten, um dies zu sichern, aber ich habe das Gefühl, dass Django von Leuten, die aus PHP kommen, viel mehr Zugkraft gewonnen hat als von Rails, die viele Konvertierungen von Java / .NET erhalten haben.

Wie bereits erwähnt, ist die Dokumentation weit überdurchschnittlich. Das Beste, was ich gesehen habe, soweit ich mich erinnere.

Manuel Razzari
quelle
0

Die Tatsache, dass es bereits mehrere Websites mit hohem Volumen gab, auf denen Django verwendet wurde (z. B. lawrence.com usw.) - selbst nach 0,96 Tagen -, half mir, das Management davon zu überzeugen, dass die Verwendung sicher ist. Dinge wie Pylons und Turbogears hatten das wirklich nicht.

rauben
quelle
1
Glücklicherweise sind diese Zeiten vorbei, jetzt, wo Pylons jetzt reddit.com und sourceforge haben (über Turbogears).
Zzzeek
Pylons hat jedoch noch nicht 1.0 erreicht, was meiner Meinung nach (nicht überprüft) bedeutet, dass ihnen die API-Stabilitätsversprechen von Django fehlen.
Xiong Chiamiov
-1

Was die Popularität von Django im Laufe der Zeit betrifft (die wörtliche Bedeutung Ihres Fragentitels, wenn nicht ganz Ihre eigentliche Frage), werfen Sie einen Blick auf den Google-Trend .

Peter
quelle
1
Der Trendlink ist falsch. Wie von @Alex Martelli hervorgehoben, müssen Sie den Gitarristen rausholen.
Jorge Vargas