Historia popularności Django [zamknięte]

84

Jaka sekwencja zdarzeń spowodowała, że ​​Django stało się najpopularniejszym frameworkiem WWW w Pythonie… i nadal tak jest? Mimo że istnieje kilka innych frameworków.

Uwaga : to pytanie nie jest ani dyskusyjne, ani konfrontacyjne . Poprosiłem jedynie o (obiektywną) „kolejność wydarzeń”, które doprowadziły do ​​jego faktycznej popularności. Mając świadomość dynamiki akceptacji oprogramowania , nie zamierzam nikomu wdawać się w spory o wyższość techniczną.

Sridhar Ratnakumar
źródło
14
Django jest najpopularniejszym frameworkiem WWW w Pythonie, to fakt, a nie subiektywna opinia. „sekwencja wydarzeń” oznacza decyzje projektowe, harmonogram, marketing itd., które prowadzą do jego popularności. Co jest w tym bezsensownego?
Sridhar Ratnakumar
2
To naprawdę dobre pytanie.
Joshua Partogi
Z zainteresowaniem będę obserwował, czy te decyzje projektowe, harmonogram, marketing itp. Są znane z wystarczającą dokładnością i aktualnością, aby można je było uznać za „historię”.
John Saunders,
Nie zgadzam się z zamknięciem tego pytania, ale na CS może być lepiej .
Kyle Strand

Odpowiedzi:

107

Myślę, że było kilka czynników, których kombinacja była większa niż suma ich indywidualnych wag.

Jednym z nich jest po prostu wyczucie czasu: Django pojawił się w momencie, gdy narastała pierwsza wielka fala szumu o Railsach, więc od razu został przedstawiony jako coś w rodzaju „odpowiedzi Pythona na Railsy”. Spowodowało to niemałą liczbę oczu na temat projektu niemal od samego początku. Fakt, że Adrian był na spotkaniu „Snakes and Rubies” w Chicago i wziął udział w równoległych rozmowach o Railsach i Django, bardzo się do tego przyczynił.

Innym czynnikiem jest to, że Django jest i zawsze było instalacją pojedynczego pakietu (no cóż, niezupełnie: nadal potrzebujesz adaptera bazy danych, chyba że korzystasz z Pythona 2.5+ i używasz SQLite, ale wystarczająco blisko). Alternatywy inne niż Zope, z których wszystkie skupiały się na pozostawieniu wyboru komponentów w rękach programisty, wymagały nieco więcej pracy, aby dojść do punktu, w którym można było zrobić podstawowy samouczek: musiałbyś poszukać ORM, język szablonów itp., a następnie zainstaluj je i skonfiguruj. Chociaż z biegiem lat to się znacznie poprawiło, myślę, że utrzymująca się pamięć o tym wciąż ma wpływ.

A Django wyszedł z bramki z dokumentacją, która (jeśli mogę tak powiedzieć) znacznie wykraczała poza zwykły standard projektów open-source iz czasem stawała się coraz lepsza. Samouczek, pomimo wszystkich swoich wielu błędów, zwraca uwagę na szereg najważniejszych punktów, które czynią Django użytecznym, a pozostała część dokumentacji zawsze była dobrej jakości, mieszając zarówno opisy API, jak i ważne bity „jak” w razie potrzeby. Daje to dobre doświadczenie po wyjęciu z pudełka i pomaga w krzywej uczenia się po samouczku (coś, co zawsze nękało Zope).

Myślę też, że istnieje przekonanie - słuszne lub niesłuszne - że, ​​powiedzmy, Pylony lub Werkzeug są naprawdę lepsze dla doświadczonych programistów, którzy już znają WSGI i ekosystem sieciowy Pythona; fakt, że wydają się one być dobrym wyborem, jeśli chodzi o wzięcie istniejących ulubionych bibliotek i połączenie ich razem, jest tego źródłem, jak sądzę, i może skłania niektórych nowszych ludzi do zintegrowanego podejścia Django. Z drugiej strony oczywiście jest to, że wiele osób, którym lepiej byłoby dowiedzieć się więcej z góry przed wypróbowaniem Django, nie robi tego;)

Wreszcie, myślę, że jest coś do powiedzenia na temat sposobu, w jaki Django jest sprzedawany, to znaczy, że tak naprawdę nie był sprzedawany przez długi czas, a przynajmniej nie w tym sensie, że, powiedzmy, Rails był sprzedawany. Dopóki Django 1.0 nie wylądowało, wysiłek "marketingowy" składał się głównie z blogowania (i było kilka znaczących incydentów, w których ludzie byli proszeni o trochę stonowanie), rozmów na PyCon, a następnie głównie po prostu ulepszania frameworka, budowania z nim fajnych rzeczy i pozwalając, aby wyniki mówiły same za siebie. Teraz, oczywiście, w świecie post-1.0 mamy DSF i DjangoCon oraz konsultantów zorientowanych na biznes, którzy prowadzą szkolenia, mnóstwo książek i całą resztę, ale to wciąż jest całkiem nowe.

Spodziewam się, że będzie luz, tak jak to było z Railsami, i tak naprawdę myślę, że od jakiegoś czasu się rozwija i już się zaczął. Ale do tej pory myślę, że czynniki, które tu wymieniłem, są przynajmniej głównymi czynnikami stojącymi za konsekwentnym, stałym wzrostem popularności, które Django widziało od czasu jego pierwszego wydania.

James Bennett
źródło
31
Nie trzeba być skromnym: jakość i ilość dokumentacji Django to dla niego ogromny plus. Dobra robota, wszystko.
Ned Deily
1
„Aż do wylądowania Django 1.0, wysiłek„ marketingowy ”składał się głównie z blogujących ludzi ...” Czy zapominasz o dwóch książkach opublikowanych (tj. W pracach przez długi czas) przed 1.0, z których jedna jest twoja? To brzmi dla mnie jak ciężki marketing.
Cristian
9
Dwie książki nie robią „ciężkiego marketingu”, przynajmniej dla mnie. I, szczerze mówiąc, wolałbym trzymać się z daleka, dopóki 1.0 nie zniknie, choćby dlatego, że uprościłoby to trochę moje życie.
James Bennett
4
Powinieneś prawdopodobnie wspomnieć o swoim zaangażowaniu w Django, ponieważ nie jest ono tak znane na SO, jak, powiedzmy, Twój blog. Wydaje mi się, że piszesz coś na ten temat wcześniej, chociaż nie mogę znaleźć linku w bankomacie.
Xiong Chiamiov
7
Dość łatwo jest kliknąć moje imię i zobaczyć, kim jestem.
James Bennett
112

Wiele frameworków internetowych Pythona istniało już, gdy Django pojawiło się w 2005 roku - rzeczywiście, żart był już wtedy kręcony, że Python jest "językiem z większą ilością frameworków sieciowych niż słów kluczowych" (a Guido odrzucił moją propozycję naprawienia tego w Py3k przez dodawanie wielu, wielu innych słów kluczowych). Teraz „django” samo w sobie jest nieco niejednoznaczne jako wyszukiwane hasło (jest to również nazwa popularnego gitarzysty, którego życie zainspirowało film Woody'ego Allena itp.), Niemniej jednak dodaje się do wyszukiwania słowo „python”, aby usunąć te inne znaczenia widać np. na tym wykresiejak zmieniła się jego względna popularność w porównaniu z innym klasycznym frameworkiem sieciowym Pythona, Zope. Przeważnie stały wzrost kwartał do kwartału, z ogromnym zaskakującym skokiem na początku drugiego kwartału 2008 ... co akurat zbiega się z datą, w której Google ogłosił App Engine (w takim przypadku nie można udowodnić związku przyczynowego, ale zbieg okoliczności jest taki przynajmniej ciekawe ;-).

App Engine zasadniczo wyklucza wszelkie ramy internetowe Python, które są głęboko zależne od niestandardowych komponentów zakodowanych w C lub wewnętrznie wymagają funkcji „silnie relacyjnych”; Spośród tych, które działają dobrze z czystym kodem Pythona, Django jest prawdopodobnie tym, który App Engine obsługuje najbardziej bezpośrednio i widocznie. Jednak to był tylko impuls, który wzmocnił podstawowy trend zdrowego wzrostu Django. Wyjaśnienie tego trendu (a także decyzji zespołu App Engine i decyzji użytkowników o tak dobrym wsparciu Django) musi leżeć w cechach, które są nieodłączne dla samego Django.

Django jest czasami krytykowane (w tym przez ... naprawdę twoje ;-) za to, że jest „zbyt magiczne” lub „zbyt monolityczne”, w porównaniu z alternatywami, takimi jak Pylony, TurboGears, Werkzeug itd., Które są lżejsze (szczególnie te drugie , mój ulubiony ;-), bardziej przejrzysty i umożliwia łatwiejszą wymianę określonych komponentów (ORM, szablony itp.). Jednak popularność Django mówi nam, że dla większości ludzi zainteresowanych tworzeniem witryn internetowych i aplikacji po stronie serwera te wybory projektowe Django są postrzegane pozytywnie: Django jest postrzegane jako bardzo bogaty i dobrze zintegrowany framework (i ma wiele dodatków ons i wnoszone „wtyczki”, ale są one bardziej konsekwencją niż przyczyną jej dominacji).

Łatwość rozpoczęcia pracy, automagiczne „strony administracyjne” i tym podobne - a także fakt, że Django można nagiąć, aby tworzyć naprawdę bogate i złożone witryny / aplikacje oraz dostosowywać do specyficznych lub unikalnych wymagań, przy dużych umiejętnościach i pewnej pracy - to prawdopodobnie „zabójcze funkcje”. Aby korzystać z Werkzeug w najlepszym wydaniu, musisz zrozumieć HTTP i WSGI oraz wybrać i zintegrować swoją ulubioną pamięć masową i szablony - twórców witryn i aplikacji opartych na Pythonie (takich jak, w pewnym sensie, użytkownicy Railsów lub użytkownicy jeszcze bardziej popularne PHP! -) „głosują ze swoim umysłem” na środowisko, w którym niekoniecznie muszą to robić, ale mogą skupić się głównie na swojej domenie aplikacji. Muszę przyznać, że prawdopodobnie mają rację ;-).

Alex Martelli
źródło
3
Myślę, że biorąc pod uwagę popularność Django, znajomość go dobrze Ci się przyda; to nie wyklucza również korzystania z repoze.bfg, werkzeug itp., gdy lepiej pasują do aplikacji lub witryny. Mógłbyś w każdym z nich zrobić od podstaw projekt pół-zabawki, jeśli masz trochę czasu, a tym samym zyskać głębsze uznanie dla mocnych i słabych stron, które czynią je mniej lub bardziej odpowiednimi w zależności od tego, co pociąga za sobą projekt (muszę przyznać Nie mam prawdziwego doświadczenia z pierwszej ręki z repoze.bfg ...).
Alex Martelli
1
@Triptych, oczywiście nie jest to jedyny powód, ponieważ niektóre inne frameworki ( choć nie żadne ramy: pomyśl, na przykład, Zope! -) mogły być równie przydatne. Wydaje mi się, że moje przemyślenia na temat zalet bogato zintegrowanych i nieco „magicznych” frameworków dla twórców aplikacji / witryn mogły wpłynąć na decyzję o tym, w czym zaoferować podstawowe wsparcie (np. Przez udostępnienie go automatycznie bez konieczności przesyłania przez użytkownika).
Alex Martelli
1
@cletus, Java ma 50 słów kluczowych na java.sun.com/docs/books/tutorial/java/nutsandbolts/… , Python 2.6 ma 31 na len(keyword.kwlist)- np. nazwy typów nie są słowami kluczowymi w Pythonie itp.
Alex Martelli
34
Myślę, że przegapiłeś ważny punkt. Dokumentacja Django była (o wiele) lepsza niż jakikolwiek framework Pythona (a także lepsza niż dokumentacja rails, IMO)
agiliq
6
@Alex, wątpię, czy ktokolwiek faktycznie czyta dokumenty zaczynające się kończyć, ale większość ludzi, gdy mają problem, trafia do wyszukiwarki Google. Możliwość znalezienia odpowiedzi w 5 minut za pomocą dobrze wyglądających dokumentów zamiast 1 godziny przeszukiwania postów na blogu to duży plus (przynajmniej do StackOveflow, który znacznie ułatwiał zadawanie głupich pytań;)
Edan Maor
22

Przychodzą mi do głowy trzy powody popularności Django, z których tylko jeden został omówiony w innych odpowiedziach, o ile widzę:

  1. Dokumentacja. Jest dobrze zorganizowany, wszechstronny i dostępny na wielu poziomach umiejętności.

  2. Projekt. Projekt wizualny panelu administracyjnego, stron błędów i witryny projektu znacznie przewyższa poziom projektowania widoczny w większości projektów open source.

  3. Społeczność. Zaczynając od zespołu World Online, Django wcześnie podjął kilku wpływowych ewangelistów. Nie jestem pewien, czy możesz przecenić znaczenie postów na blogu, takich jak Django Jeffa Crofta dla osób niebędących programistami (myślę, że taki był tytuł).

Tony
źródło
13

„Moim osobistym faworytem i spodziewam się, że pozostanie on osobistym faworytem przez długi czas, jest coś nazwanego Django” - Guido Van Rossum w cotygodniowym odcinku 11 FLOSS, wyemitowanym 4 sierpnia 2006

[Kliknij tutaj] (posłuchaj ostatniej trzeciej części wywiadu)

Myślisz, że to mogłoby pomóc? a przynajmniej powód, dla którego Google wybrał go dla AppEngine?

oczywiście społeczność django (w tym deweloperzy) robi wiele rzeczy dobrze. Na przykład (niektóre analizy w linkach):

Poprawa modułowości: [Kliknij tutaj]

dokumentacja kick ass Kliknij tutaj

W społeczności jest też coś, co sprawia, że ​​ludzie chcą wnieść swój wkład, na co jeszcze nie zwróciłem uwagi: Kliknij tutaj

Oczywiście wszystko to prowadzi do tego, że Django jest odstającym: Kliknij tutaj

Nie ma wątpliwości co do popularności Django.

W górę.
źródło
1
Myślę, że ta odpowiedź dostarcza trochę innych odpowiedzi. DUŻO ludzi poszło na ślepo do Django z powodu tego komentarza.
Jorge Vargas
Nie ma nic złego w robieniu tego na ślepo, skoro Guido tak to opisuje. Zrobiłem to i od tamtej pory nigdy nie oglądałem się za siebie.
górę.
3

W moim przypadku kupiłem książkę TurboGears i walczyłem z jej niespójnościami i przypadkową drogą do wyjaśnienia rzeczy. Potem dostałem książkę Django i voila! Mój pierwszy projekt płatny powstał podczas pracy nad przykładowym projektem w książce. To plus dokumentacja online przypieczętowała umowę. Dla mnie to było proste: dokumentacja, dokumentacja, dokumentacja.

sygnał
źródło
2

Zauważyłem, że często był promowany jako odpowiednik Ruby on Rails w Pythonie. Ma również połączenie z Google (Google obsługuje zdarzenia Django i obsługuje je w swoim App Engine). Platforma internetowa wspierana przez Google musi na coś służyć. :)

joemoe
źródło
2
Jasne, ale GAE pojawiło się znacznie później w procesie. A Django był już popularny.
Sridhar Ratnakumar
1
@Sridhar, tak - w mojej odpowiedzi wskazałem na oba punkty: GAE dało Django duży wzrost w dacie ogłoszenia ... ale to było uzupełnieniem stałego trendu wzrostowego.
Alex Martelli
2

Przynajmniej dla mnie ważnym czynnikiem było to, że Simon Willison i Adrian Holovaty byli już dobrze znanymi graczami na scenie „Web Standards”, a później Jeff Croft.

To nie tylko znak jakości, ale także uczynił Django bardzo przyjaznym dla sieci, z szacunkiem dla HTTP, znaczników, a nawet szybkim i brudnym sposobem pracy "debugowania wydruku", do którego przywykli ludzie pochodzący z PHP.

Mogę się bardzo mylić, brak danych, które mogłyby to potwierdzić, ale czuję, że Django zyskał dużo większą popularność wśród ludzi pochodzących z PHP, w przeciwieństwie do Railsów, które uzyskały wiele konwersji z Java / .NET.

Jak już zauważyli inni, dokumentacja jest znacznie powyżej średniej. Najlepsze, jakie widziałem, o ile pamiętam.

Manuel Razzari
źródło
0

Fakt, że istniało kilka dużych witryn korzystających już z Django (np. Lawrence.com itp.) - nawet w okresie 0,96 dnia - pomógł mi przekonać kierownictwo, że korzystanie z niego jest bezpieczne. Rzeczy takie jak Pylony i Turbogears naprawdę tego nie miały.

Obrabować
źródło
1
Na szczęście te czasy się skończyły, teraz, gdy pylony mają teraz reddit.com i sourceforge (przez turbogears).
zzzeek
Pylony nie osiągnęły jednak jeszcze wersji 1.0, co, jak zakładam (nie sprawdziłem), oznacza, że ​​brakuje im obietnic stabilności API Django.
Xiong Chiamiov
-1

Jeśli chodzi o popularność Django w czasie (dosłowne znaczenie tytułu twojego pytania, jeśli nie do końca twojego pytania), spójrz na trend Google .

Piotr
źródło
1
Link do trendu jest nieprawidłowy. Jak zauważył @Alex Martelli, musisz wyciągnąć gitarzystę.
Jorge Vargas