SlideShare a Scribd company logo
1 of 84
Download to read offline
Building Django

Jacob Kaplan-Moss

PyCon
March 29, 2009


http://jacobian.org/speaking/2009/pycon-designing-django/
Building a web framework: Django's design decisions
History
LJW
Adrian/Simon
lawrence.com
                                                                           Wakarusa 2008
                                                                           › Find photos
                                                                                               Great 'cue. Cheap
                                                                           from the festival
                                                                                               beer. View.
Log in to                                                                  here (new photos
post                                                                                           › All ads this
                                                            still coming in) and video
                                                                                               week
comments.                                                   posted here. More to be posted
            Cornmeal / Hoots & Hellmouth: Steeped in        as soon as we dry out...
            the tradition of legendary acts, this Chicago
            band uses bluegrass as a springboard for
            long improvisational work and songs ranging
            from country and rock to jazz and funk ...
                                                             School of Wak (Soggy
            More info
                                                             Edition) (Ten Million Pounds
“The CMS”
Philosophy
Make development fast
Automate repetitive tasks
Best practices
“
The ink is never dry
 on these babies.



                       ”
          — Adrian Holovaty
Choices
Open Source
BSD license
Building a web framework: Django's design decisions
Pragmatism over Methodology
GoF?

       MVC?

TDD?
Building a web framework: Django's design decisions
Snake Oil
“   No silver bullet.



                                 ”
                     — Fred Brooks
      Author of The Mythical Man-Month
The Real World
“   Build cool shit.



                       ”
               — Rob Curley
Ramifications
“What’s the need?”
No architecture astronauts
Reinventing the wheel
“Magic” over boilerplate
Web development is boring
It should be fun!
APIs should match behavior,
         not show how they work
Ramifications
It can go too far.
Messy internals
More power in less code
Easier to document
Building a web framework: Django's design decisions
“Full stack”
“Best of breed”
Why full stack?
Lack of choices at the time
“Glued together”
Ramifications
More control
Don’t repeat Zope’s mistakes
“   Innovation
     happens
    elsewhere.


                       ”
                 — Bill Joy
Small pieces advance quicker
“Sensible defaults”
“Opinionated Software”
Ego is dangerous
You can’t possibly predict
         what everyone wants
... so listen to your users!
      (this is harder than it sounds)
“One obvious way”
  over “pluggable components”
Autumn
 Modeling
    PDB
  PyORM
SQLAlchemy
 SQLObject
   Storm
   ZODB
Choice is good for experts ...
... but not good for new users
More beginners
“
Don’t make me think.



                     ”
             — Steve Krug
“
It seems ... that if choice is good, then
 more choice is better. The paradox is
that this “obvious” truth isn’t true... a
   point can be reached where, with
  more choice, people are worse off.




                                      ”
                      — Barry Schwartz
                    “The Paradox of Choice”
Ramifications
Consistency
Make complicated things easy
Don’t reinvent the wheel
Set our own pace




                   Skip to end
Choices in the future
Long tail
    or huge scale?
#2 Yahoo
 #5 Facebook
 #8 Wikipedia
#16 Photobucket
#19 Flickr
#20 Comcast
#23 Wordpress
Building a web framework: Django's design decisions
Standard      | Distance      | Phone Number




        Business Name or Category                                  City, State, ZIP Code or Neighborhoo
                                                                      Set as Default Location




        Atlanta                 Dallas                  Las Vegas                New York                S

        Austin                  Denver                  Los Angeles              Oklahoma City           S

        Baltimore               Detroit                 Louisville               Orlando                 S

        Boston                  Houston                 Memphis                  Philadelphia            S

        Charlotte               Indianapolis            Miami                    Phoenix                 S

        Chicago                 Kansas City             Milwaukee                Saint Louis             M




       Careers Browse Yellow Pages About YELLOWPAGES.COM Contact Us Site Map Help                     Adv
       AT&T AT&T Wireless att.net TollFreeDA.com AnyWho Ingenio Yellow Pages Keen
       Privacy Policy Terms & Conditions Phone Book Recycling

       © 2008 YELLOWPAGES.COM LLC. All rights reserved.
       © 2008 AT&T Intellectual Property. All rights reserved. AT&T, AT&T logo and all other marks containe

       Some data provided by Localeze and Acxiom.




#643   BROWSE STATES
       Alabama         Colorado            Hawaii         Kansas           Massachusetts         Montana
       Alaska          Connecticut         Idaho          Kentucky         Michigan              Nebraska
       Arizona         Delaware            Illinois       Louisiana        Minnesota             Nevada
       Arkansas        Florida             Indiana        Maine            Mississippi           New Ham
       California      Georgia             Iowa           Maryland         Missouri              New Jers
my
                                               All Games

 Home     News     Forums         WoW Addons     WAR Addons      B

Welcome to Curse.                 login


                                          Curse.com B
Signup now to take advantage of
amazing Curse.com Features!
                                          The new Curse.com si
                                          read more




                                                Curse.com Beta


Curse Network Services




                                                      Enhance
                                                 Addons are extens
                                                 experience. We ha
                                                 to browse addons

                                                         World of

      #1295                                              Age of C

                                                         Warhamm
!quot;#$%$&'()$*+',-.
    !quot;#$%&'(&)*+'
!quot;#$%&'&$ ())*   +)
!quot;#$%&'&$ ())*   +,
!quot;#$%&'&$ ())*   +(
“Enterprise”
Is this a competition we want?
Backlash
“Rails doesn’t scale”
s    Maps   News Shopping Gmail more        !



                                                                           Advan
              rails doesn't scale                                 Search   Prefe



                  Results 1 - 10 of about 4,680,000 for rails doesn't scale. (0.0

    Rails Doesn't Scale?
. quot;I've heard a few people mention that they heard that Rails doesn't scale
stions on how we might alleviate their doubt?quot; ...
t.com/2008/03/rails-doesnt-scale.html - 31k - Cached - Similar pages

Interview with Twitter Developer Alex Payne
  its: Ruby On Rails Can’t Scale at Brandon Werner // Apr 13, ... the rubber is
d, and the thing doesn’t scale on the DB end. ...
 havior.com/5-question-interview-with-twitter-developer-alex-payne/ - 161k -
ilar pages

aid Rails doesn’t Scale?” Features
“Django doesn’t ...?”
  Maps   News Shopping Gmail more !


                                                                          Adv
             quot;django sucksquot;                                      Search   Pref



                          Results 1 - 10 of about 189 for quot;django sucksquot;. (0

ks
 eaningless: Django sucks from Alan's clob. [RSS] Picture of the blogger ...
o sucks: 21.5 ...
nkila/blog/2006/05/21/Django%20sucks.html - 28k - Cached - Similar pages

 compression sucks
phasis: 29.9; Hitman: 7.9. 2006, 8. Misc: 23.8. 2006, 6. DSP progress: 29.6; B
is: 19.6; Atari ST audio: 17.6. 2006, 5. Django sucks: 21.5 ...
l.fi/~alankila/blog/2007/09/15/jQuery%20compression%20sucks.html - 23k -
 - Similar pages
Keep out the ego
Invite criticism




      ... and take it well
Make conscious decisions
Thanks!
http://jacobian.org/speaking/2009/pycon-designing-django/
                  <jacob@jacobian.org>
Photo credits
                                                       http://flickr.com/photos/noulakaz/418575599/
Lawrence Journal-World (with permission)                                                                     http://flickr.com/photos/mawari/2091456761/
                                                       http://flickr.com/photos/lwr/78032315/
Free Software Foundation (GDFL license)                                                                      http://flickr.com/photos/foox404/640768235/
                                                       http://flickr.com/photos/petereed/496392956/
Poul-Henning Kamp (Beerware license)                                                                         http://flickr.com/photos/ppdigital/2327942088/
                                                       http://flickr.com/photos/ognam/252251866/
NASA (public domain)                                                                                         http://flickr.com/photos/summitcheese/197359430/
                                                       http://flickr.com/photos/dullhunk/412756798/
http://flickr.com/photos/mathoov/19172893/                                                                    http://flickr.com/photos/kandyjaxx/98984009/
                                                       http://flickr.com/photos/jdlasica/1681114312/
http://flickr.com/photos/trp0/127771914/                                                                      http://flickr.com/photos/andih/345556778/
                                                       http://flickr.com/photos/altemark/304078711/
http://flickr.com/photos/simon/351253/                                                                        http://flickr.com/photos/yuan2003/733770226/
                                                       http://flickr.com/photos/mworrell/266913194/
http://flickr.com/photos/number13001/247125164/                                                               http://flickr.com/photos/ocms/2535068094/
                                                       http://flickr.com/photos/iainr/61917036/
http://flickr.com/photos/s_v_p/5869861/                                                                       http://flickr.com/photos/dannyman/958602998/
                                                       http://flickr.com/photos/dhammza/110422065/
http://flickr.com/photos/xerones/31671892/                                                                    http://flickr.com/photos/martinlabar/2832969149/
                                                       http://flickr.com/photos/hercules/118434343/
http://flickr.com/photos/kt/418938142/                                                                        http://flickr.com/photos/shyha/225517137/
                                                       http://flickr.com/photos/donkeycart/2477069275/
http://flickr.com/photos/stee/154686864/                                                                    http://flickr.com/photos/therefore/19256103/
                                                       http://flickr.com/photos/halfbisqued/2353845688/
http://flickr.com/photos/8011986@N02/2702162140/                                                              http://flickr.com/photos/teflon/128827389/
                                                       http://flickr.com/photos/dominiqs/137546402/
http://flickr.com/photos/orinrobertjohn/114430223/                                                            http://flickr.com/photos/druclimb/390916759/
                                                       http://flickr.com/photos/articnomad/16153058/
http://flickr.com/photos/poluz/1871578378/                                                                    http://flickr.com/photos/cgc/1289366227/
                                                       http://flickr.com/photos/zrahen/14469412/
http://flickr.com/photos/pkdouyk/394163975/                                                                   http://flickr.com/photos/mihr-i/2741602553/
                                                       http://flickr.com/photos/stonebird/2723635311/
http://flickr.com/photos/automatt/226498681/                                                                  http://flickr.com/photos/wtlphotos/480714473/
                                                       http://flickr.com/photos/kandyjaxx/2012468692/
http://flickr.com/photos/micktwomey/9646019/                                                                  http://flickr.com/photos/fatboyke/2668411239/
                                                       http://flickr.com/photos/khalid-almasoud/1283997041/ http://flickr.com/photos/zen/12132210/
http://flickr.com/photos/twinleaves/437606968/
                                                       http://flickr.com/photos/oskay/404330158/
http://flickr.com/photos/mag3737/1914076277/                                                                  http://flickr.com/photos/accordionguy/411908565/
                                                       http://flickr.com/photos/cheetleys/295717673/
http://flickr.com/photos/beckytwinley/2451754919/                                                             http://flickr.com/photos/seier/501372541/
                                                       http://flickr.com/photos/gullevek/2667764480/
http://flickr.com/photos/devos/6358304/                                                                       http://flickr.com/photos/romanlily/2041441584/
                                                       http://flickr.com/photos/phoenixdailyphoto/1467681879/ http://flickr.com/photos/kookr/2810433787/
http://flickr.com/photos/robyn-gallagher/2097474328/
                                                       http://flickr.com/photos/gavatron/866650954/
http://flickr.com/photos/lexnger/149433512/                                                                   http://flickr.com/photos/clintjcl/2471735838/
                                                       http://flickr.com/photos/wheatfields/2587147000/
http://flickr.com/photos/akearns72/166086716/                                                                 http://flickr.com/photos/fynes/72573221/
                                                       http://flickr.com/photos/locator/420581084/
http://flickr.com/photos/timjoyfamily/532089575/                                                              http://flickr.com/photos/thegeneralstore/709924038/
                                                       http://flickr.com/photos/tomeppy/84700111/
http://flickr.com/photos/pittaya/396707150/                                                                   http://flickr.com/photos/hamed/231011405/
                                                       http://flickr.com/photos/bass_nroll/579960238/
http://flickr.com/photos/jcroft/106571677/                                                                    http://flickr.com/photos/fusionpanda/363012235/
                                                       http://flickr.com/photos/dalbera/2587777300/
http://flickr.com/photos/webology/2722802478/                                                                 http://flickr.com/photos/srevenge/1396062019/
                                                       http://flickr.com/photos/lwr/62382337/
http://flickr.com/photos/niallkennedy/310814303/                                                              http://flickr.com/photos/foresmac/2537548732/
                                                       http://flickr.com/photos/lwr/526773135/
http://flickr.com/photos/thomashawk/305370843/                                                                http://flickr.com/photos/12693492@N04/1338136415/
                                                       http://flickr.com/photos/lwr/50191251/
http://flickr.com/photos/glynnis/19523654/                                                                    http://flickr.com/photos/platinum/6761199/
                                                       http://flickr.com/photos/strausser/386412877/
http://flickr.com/photos/loredenizen/14435744                                                                 http://flickr.com/photos/30553515@N00/1786871517/
                                                       http://flickr.com/photos/wolfhound/258498934/
http://flickr.com/photos/biwook/145765624/                                                                    http://flickr.com/photos/skrb/94927584/
                                                       http://flickr.com/photos/jef/52133463/
http://flickr.com/photos/rspanton/2305408272/
                                                       http://flickr.com/photos/atc/106694427/
http://flickr.com/photos/furiousgeorge81/177926979/
                                                       http://flickr.com/photos/saintmurse/68159330/
http://flickr.com/photos/twenty_questions/2192450204/
                                                       http://flickr.com/photos/flattop341/212276640/
http://flickr.com/photos/shawnide/1733789973/
                                                       http://flickr.com/photos/rtarga/223776150/
http://flickr.com/photos/davidrn/255058535/
                                                       http://flickr.com/photos/xenophod/116388638/
http://flickr.com/photos/eschipul/436109463/
                                                       http://flickr.com/photos/huladancer22/530743543/
http://flickr.com/photos/cguille/2556176764/
                                                       http://flickr.com/photos/planetargon/127984254/
http://flickr.com/photos/lonebluelady/890604409/
                                                       http://flickr.com/photos/mkmabus/2576358439/
http://flickr.com/photos/atomicbartbeans/229618075/
                                                       http://flickr.com/photos/9619972@N08/2220659880/
http://flickr.com/photos/vidiot/2150088788/
                                                       http://flickr.com/photos/seeminglee/1973003433/
http://flickr.com/photos/cboulton/2085336565/
http://flickr.com/photos/darwinbell/1538611841/

More Related Content

Similar to Building a web framework: Django's design decisions

Commercialization Challenges Of Mobile Software Development In A Fragmented M...
Commercialization Challenges Of Mobile Software Development In A Fragmented M...Commercialization Challenges Of Mobile Software Development In A Fragmented M...
Commercialization Challenges Of Mobile Software Development In A Fragmented M...Stephen King
 
Web Wreck-utation - CanSecWest 2008
Web Wreck-utation - CanSecWest 2008Web Wreck-utation - CanSecWest 2008
Web Wreck-utation - CanSecWest 2008Stephan Chenette
 
Open and Accessible UI
Open and Accessible UIOpen and Accessible UI
Open and Accessible UIMark Meeker
 
How to Bluff Your Way in Web 2.0
How to Bluff Your Way in Web 2.0How to Bluff Your Way in Web 2.0
How to Bluff Your Way in Web 2.0Andy Budd
 
Why computers are cool high school audience - 2010-12-01
Why computers are cool   high school audience - 2010-12-01Why computers are cool   high school audience - 2010-12-01
Why computers are cool high school audience - 2010-12-01Willie Favero
 
The convergence of all things (wdu keynote)
The convergence of all things (wdu keynote)The convergence of all things (wdu keynote)
The convergence of all things (wdu keynote)Chris Wilson
 
Rails in the Cloud
Rails in the CloudRails in the Cloud
Rails in the Cloudiwarshak
 
Ignite Orlando - Act 2
Ignite Orlando - Act 2Ignite Orlando - Act 2
Ignite Orlando - Act 2GreggPollack
 
Joe Dyer - Alphabet Soup: Career Paths, Interviews, and Skill Sets
Joe Dyer - Alphabet Soup: Career Paths, Interviews, and Skill SetsJoe Dyer - Alphabet Soup: Career Paths, Interviews, and Skill Sets
Joe Dyer - Alphabet Soup: Career Paths, Interviews, and Skill Setsprojekt202
 
Beyond The Padlock: New Ideas in Browser Security UI
Beyond The Padlock: New Ideas in Browser Security UIBeyond The Padlock: New Ideas in Browser Security UI
Beyond The Padlock: New Ideas in Browser Security UImozilla.presentations
 
Teaching Elephants to Dance (Federal Audience): A Developer's Journey to Digi...
Teaching Elephants to Dance (Federal Audience): A Developer's Journey to Digi...Teaching Elephants to Dance (Federal Audience): A Developer's Journey to Digi...
Teaching Elephants to Dance (Federal Audience): A Developer's Journey to Digi...Burr Sutter
 
Gordon Kraft Response - Apr 1998 - Artificial inc discussions panel summary
Gordon Kraft Response - Apr 1998 - Artificial inc discussions panel summaryGordon Kraft Response - Apr 1998 - Artificial inc discussions panel summary
Gordon Kraft Response - Apr 1998 - Artificial inc discussions panel summaryGordon Kraft
 
Securing Rails
Securing RailsSecuring Rails
Securing RailsAlex Payne
 
The Future Of Responsive Design Standards (Den Odell)
The Future Of Responsive Design Standards (Den Odell)The Future Of Responsive Design Standards (Den Odell)
The Future Of Responsive Design Standards (Den Odell)Future Insights
 
The Future Of Responsive Design Standards
The Future Of Responsive Design StandardsThe Future Of Responsive Design Standards
The Future Of Responsive Design StandardsDen Odell
 
Games for the Masses (Jax)
Games for the Masses (Jax)Games for the Masses (Jax)
Games for the Masses (Jax)Wooga
 
How to not suck! Lessons Learned from running a Web Startup.
How to not suck! Lessons Learned from running a Web Startup. How to not suck! Lessons Learned from running a Web Startup.
How to not suck! Lessons Learned from running a Web Startup. Wolf Becvar
 
Stathy DevOps in MSP / MKE on IAC
Stathy DevOps in MSP / MKE on IACStathy DevOps in MSP / MKE on IAC
Stathy DevOps in MSP / MKE on IACStathy Touloumis
 
Os Nightingale
Os NightingaleOs Nightingale
Os Nightingaleoscon2007
 

Similar to Building a web framework: Django's design decisions (20)

Commercialization Challenges Of Mobile Software Development In A Fragmented M...
Commercialization Challenges Of Mobile Software Development In A Fragmented M...Commercialization Challenges Of Mobile Software Development In A Fragmented M...
Commercialization Challenges Of Mobile Software Development In A Fragmented M...
 
Web Wreck-utation - CanSecWest 2008
Web Wreck-utation - CanSecWest 2008Web Wreck-utation - CanSecWest 2008
Web Wreck-utation - CanSecWest 2008
 
Open and Accessible UI
Open and Accessible UIOpen and Accessible UI
Open and Accessible UI
 
How to Bluff Your Way in Web 2.0
How to Bluff Your Way in Web 2.0How to Bluff Your Way in Web 2.0
How to Bluff Your Way in Web 2.0
 
Why computers are cool high school audience - 2010-12-01
Why computers are cool   high school audience - 2010-12-01Why computers are cool   high school audience - 2010-12-01
Why computers are cool high school audience - 2010-12-01
 
The convergence of all things (wdu keynote)
The convergence of all things (wdu keynote)The convergence of all things (wdu keynote)
The convergence of all things (wdu keynote)
 
Rails in the Cloud
Rails in the CloudRails in the Cloud
Rails in the Cloud
 
Ignite Orlando - Act 2
Ignite Orlando - Act 2Ignite Orlando - Act 2
Ignite Orlando - Act 2
 
Joe Dyer - Alphabet Soup: Career Paths, Interviews, and Skill Sets
Joe Dyer - Alphabet Soup: Career Paths, Interviews, and Skill SetsJoe Dyer - Alphabet Soup: Career Paths, Interviews, and Skill Sets
Joe Dyer - Alphabet Soup: Career Paths, Interviews, and Skill Sets
 
Beyond The Padlock: New Ideas in Browser Security UI
Beyond The Padlock: New Ideas in Browser Security UIBeyond The Padlock: New Ideas in Browser Security UI
Beyond The Padlock: New Ideas in Browser Security UI
 
Teaching Elephants to Dance (Federal Audience): A Developer's Journey to Digi...
Teaching Elephants to Dance (Federal Audience): A Developer's Journey to Digi...Teaching Elephants to Dance (Federal Audience): A Developer's Journey to Digi...
Teaching Elephants to Dance (Federal Audience): A Developer's Journey to Digi...
 
Gordon Kraft Response - Apr 1998 - Artificial inc discussions panel summary
Gordon Kraft Response - Apr 1998 - Artificial inc discussions panel summaryGordon Kraft Response - Apr 1998 - Artificial inc discussions panel summary
Gordon Kraft Response - Apr 1998 - Artificial inc discussions panel summary
 
Securing Rails
Securing RailsSecuring Rails
Securing Rails
 
The Future Of Responsive Design Standards (Den Odell)
The Future Of Responsive Design Standards (Den Odell)The Future Of Responsive Design Standards (Den Odell)
The Future Of Responsive Design Standards (Den Odell)
 
The Future Of Responsive Design Standards
The Future Of Responsive Design StandardsThe Future Of Responsive Design Standards
The Future Of Responsive Design Standards
 
Chris Bourseau, UI/UX Designer
Chris Bourseau, UI/UX DesignerChris Bourseau, UI/UX Designer
Chris Bourseau, UI/UX Designer
 
Games for the Masses (Jax)
Games for the Masses (Jax)Games for the Masses (Jax)
Games for the Masses (Jax)
 
How to not suck! Lessons Learned from running a Web Startup.
How to not suck! Lessons Learned from running a Web Startup. How to not suck! Lessons Learned from running a Web Startup.
How to not suck! Lessons Learned from running a Web Startup.
 
Stathy DevOps in MSP / MKE on IAC
Stathy DevOps in MSP / MKE on IACStathy DevOps in MSP / MKE on IAC
Stathy DevOps in MSP / MKE on IAC
 
Os Nightingale
Os NightingaleOs Nightingale
Os Nightingale
 

More from Jacob Kaplan-Moss

Introduction To Django (Strange Loop 2011)
Introduction To Django (Strange Loop 2011)Introduction To Django (Strange Loop 2011)
Introduction To Django (Strange Loop 2011)Jacob Kaplan-Moss
 
The Best (and Worst) of Django
The Best (and Worst) of DjangoThe Best (and Worst) of Django
The Best (and Worst) of DjangoJacob Kaplan-Moss
 
Writing great documentation - CodeConf 2011
Writing great documentation - CodeConf 2011Writing great documentation - CodeConf 2011
Writing great documentation - CodeConf 2011Jacob Kaplan-Moss
 
Django Introduction, Dev in Rio 2009
Django Introduction, Dev in Rio 2009Django Introduction, Dev in Rio 2009
Django Introduction, Dev in Rio 2009Jacob Kaplan-Moss
 
Django - the first five years
Django - the first five yearsDjango - the first five years
Django - the first five yearsJacob Kaplan-Moss
 
A brief history of Django model syntax
A brief history of Django model syntaxA brief history of Django model syntax
A brief history of Django model syntaxJacob Kaplan-Moss
 

More from Jacob Kaplan-Moss (12)

Introduction To Django (Strange Loop 2011)
Introduction To Django (Strange Loop 2011)Introduction To Django (Strange Loop 2011)
Introduction To Django (Strange Loop 2011)
 
The Best (and Worst) of Django
The Best (and Worst) of DjangoThe Best (and Worst) of Django
The Best (and Worst) of Django
 
Writing great documentation - CodeConf 2011
Writing great documentation - CodeConf 2011Writing great documentation - CodeConf 2011
Writing great documentation - CodeConf 2011
 
What's new in Django 1.2?
What's new in Django 1.2?What's new in Django 1.2?
What's new in Django 1.2?
 
Django Introduction, Dev in Rio 2009
Django Introduction, Dev in Rio 2009Django Introduction, Dev in Rio 2009
Django Introduction, Dev in Rio 2009
 
Snakes on the Web
Snakes on the WebSnakes on the Web
Snakes on the Web
 
Django In The Real World
Django In The Real WorldDjango In The Real World
Django In The Real World
 
Django in the Real World
Django in the Real WorldDjango in the Real World
Django in the Real World
 
State Of Django
State Of DjangoState Of Django
State Of Django
 
Django - the first five years
Django - the first five yearsDjango - the first five years
Django - the first five years
 
A brief history of Django model syntax
A brief history of Django model syntaxA brief history of Django model syntax
A brief history of Django model syntax
 
Django Update (OSCON 2007)
Django Update (OSCON 2007)Django Update (OSCON 2007)
Django Update (OSCON 2007)
 

Recently uploaded

UiPath Studio Web workshop series - Day 7
UiPath Studio Web workshop series - Day 7UiPath Studio Web workshop series - Day 7
UiPath Studio Web workshop series - Day 7DianaGray10
 
Computer 10: Lesson 10 - Online Crimes and Hazards
Computer 10: Lesson 10 - Online Crimes and HazardsComputer 10: Lesson 10 - Online Crimes and Hazards
Computer 10: Lesson 10 - Online Crimes and HazardsSeth Reyes
 
Comparing Sidecar-less Service Mesh from Cilium and Istio
Comparing Sidecar-less Service Mesh from Cilium and IstioComparing Sidecar-less Service Mesh from Cilium and Istio
Comparing Sidecar-less Service Mesh from Cilium and IstioChristian Posta
 
activity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdf
activity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdf
activity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdfJamie (Taka) Wang
 
Building AI-Driven Apps Using Semantic Kernel.pptx
Building AI-Driven Apps Using Semantic Kernel.pptxBuilding AI-Driven Apps Using Semantic Kernel.pptx
Building AI-Driven Apps Using Semantic Kernel.pptxUdaiappa Ramachandran
 
Bird eye's view on Camunda open source ecosystem
Bird eye's view on Camunda open source ecosystemBird eye's view on Camunda open source ecosystem
Bird eye's view on Camunda open source ecosystemAsko Soukka
 
VoIP Service and Marketing using Odoo and Asterisk PBX
VoIP Service and Marketing using Odoo and Asterisk PBXVoIP Service and Marketing using Odoo and Asterisk PBX
VoIP Service and Marketing using Odoo and Asterisk PBXTarek Kalaji
 
How Accurate are Carbon Emissions Projections?
How Accurate are Carbon Emissions Projections?How Accurate are Carbon Emissions Projections?
How Accurate are Carbon Emissions Projections?IES VE
 
AI You Can Trust - Ensuring Success with Data Integrity Webinar
AI You Can Trust - Ensuring Success with Data Integrity WebinarAI You Can Trust - Ensuring Success with Data Integrity Webinar
AI You Can Trust - Ensuring Success with Data Integrity WebinarPrecisely
 
Videogame localization & technology_ how to enhance the power of translation.pdf
Videogame localization & technology_ how to enhance the power of translation.pdfVideogame localization & technology_ how to enhance the power of translation.pdf
Videogame localization & technology_ how to enhance the power of translation.pdfinfogdgmi
 
UiPath Platform: The Backend Engine Powering Your Automation - Session 1
UiPath Platform: The Backend Engine Powering Your Automation - Session 1UiPath Platform: The Backend Engine Powering Your Automation - Session 1
UiPath Platform: The Backend Engine Powering Your Automation - Session 1DianaGray10
 
UiPath Studio Web workshop series - Day 6
UiPath Studio Web workshop series - Day 6UiPath Studio Web workshop series - Day 6
UiPath Studio Web workshop series - Day 6DianaGray10
 
Empowering Africa's Next Generation: The AI Leadership Blueprint
Empowering Africa's Next Generation: The AI Leadership BlueprintEmpowering Africa's Next Generation: The AI Leadership Blueprint
Empowering Africa's Next Generation: The AI Leadership BlueprintMahmoud Rabie
 
UiPath Solutions Management Preview - Northern CA Chapter - March 22.pdf
UiPath Solutions Management Preview - Northern CA Chapter - March 22.pdfUiPath Solutions Management Preview - Northern CA Chapter - March 22.pdf
UiPath Solutions Management Preview - Northern CA Chapter - March 22.pdfDianaGray10
 
Basic Building Blocks of Internet of Things.
Basic Building Blocks of Internet of Things.Basic Building Blocks of Internet of Things.
Basic Building Blocks of Internet of Things.YounusS2
 
Meet the new FSP 3000 M-Flex800™
Meet the new FSP 3000 M-Flex800™Meet the new FSP 3000 M-Flex800™
Meet the new FSP 3000 M-Flex800™Adtran
 
UiPath Community: AI for UiPath Automation Developers
UiPath Community: AI for UiPath Automation DevelopersUiPath Community: AI for UiPath Automation Developers
UiPath Community: AI for UiPath Automation DevelopersUiPathCommunity
 
Salesforce Miami User Group Event - 1st Quarter 2024
Salesforce Miami User Group Event - 1st Quarter 2024Salesforce Miami User Group Event - 1st Quarter 2024
Salesforce Miami User Group Event - 1st Quarter 2024SkyPlanner
 
KubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCost
KubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCostKubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCost
KubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCostMatt Ray
 

Recently uploaded (20)

UiPath Studio Web workshop series - Day 7
UiPath Studio Web workshop series - Day 7UiPath Studio Web workshop series - Day 7
UiPath Studio Web workshop series - Day 7
 
Computer 10: Lesson 10 - Online Crimes and Hazards
Computer 10: Lesson 10 - Online Crimes and HazardsComputer 10: Lesson 10 - Online Crimes and Hazards
Computer 10: Lesson 10 - Online Crimes and Hazards
 
Comparing Sidecar-less Service Mesh from Cilium and Istio
Comparing Sidecar-less Service Mesh from Cilium and IstioComparing Sidecar-less Service Mesh from Cilium and Istio
Comparing Sidecar-less Service Mesh from Cilium and Istio
 
activity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdf
activity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdf
activity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdf
 
Building AI-Driven Apps Using Semantic Kernel.pptx
Building AI-Driven Apps Using Semantic Kernel.pptxBuilding AI-Driven Apps Using Semantic Kernel.pptx
Building AI-Driven Apps Using Semantic Kernel.pptx
 
Bird eye's view on Camunda open source ecosystem
Bird eye's view on Camunda open source ecosystemBird eye's view on Camunda open source ecosystem
Bird eye's view on Camunda open source ecosystem
 
VoIP Service and Marketing using Odoo and Asterisk PBX
VoIP Service and Marketing using Odoo and Asterisk PBXVoIP Service and Marketing using Odoo and Asterisk PBX
VoIP Service and Marketing using Odoo and Asterisk PBX
 
How Accurate are Carbon Emissions Projections?
How Accurate are Carbon Emissions Projections?How Accurate are Carbon Emissions Projections?
How Accurate are Carbon Emissions Projections?
 
AI You Can Trust - Ensuring Success with Data Integrity Webinar
AI You Can Trust - Ensuring Success with Data Integrity WebinarAI You Can Trust - Ensuring Success with Data Integrity Webinar
AI You Can Trust - Ensuring Success with Data Integrity Webinar
 
Videogame localization & technology_ how to enhance the power of translation.pdf
Videogame localization & technology_ how to enhance the power of translation.pdfVideogame localization & technology_ how to enhance the power of translation.pdf
Videogame localization & technology_ how to enhance the power of translation.pdf
 
UiPath Platform: The Backend Engine Powering Your Automation - Session 1
UiPath Platform: The Backend Engine Powering Your Automation - Session 1UiPath Platform: The Backend Engine Powering Your Automation - Session 1
UiPath Platform: The Backend Engine Powering Your Automation - Session 1
 
UiPath Studio Web workshop series - Day 6
UiPath Studio Web workshop series - Day 6UiPath Studio Web workshop series - Day 6
UiPath Studio Web workshop series - Day 6
 
20150722 - AGV
20150722 - AGV20150722 - AGV
20150722 - AGV
 
Empowering Africa's Next Generation: The AI Leadership Blueprint
Empowering Africa's Next Generation: The AI Leadership BlueprintEmpowering Africa's Next Generation: The AI Leadership Blueprint
Empowering Africa's Next Generation: The AI Leadership Blueprint
 
UiPath Solutions Management Preview - Northern CA Chapter - March 22.pdf
UiPath Solutions Management Preview - Northern CA Chapter - March 22.pdfUiPath Solutions Management Preview - Northern CA Chapter - March 22.pdf
UiPath Solutions Management Preview - Northern CA Chapter - March 22.pdf
 
Basic Building Blocks of Internet of Things.
Basic Building Blocks of Internet of Things.Basic Building Blocks of Internet of Things.
Basic Building Blocks of Internet of Things.
 
Meet the new FSP 3000 M-Flex800™
Meet the new FSP 3000 M-Flex800™Meet the new FSP 3000 M-Flex800™
Meet the new FSP 3000 M-Flex800™
 
UiPath Community: AI for UiPath Automation Developers
UiPath Community: AI for UiPath Automation DevelopersUiPath Community: AI for UiPath Automation Developers
UiPath Community: AI for UiPath Automation Developers
 
Salesforce Miami User Group Event - 1st Quarter 2024
Salesforce Miami User Group Event - 1st Quarter 2024Salesforce Miami User Group Event - 1st Quarter 2024
Salesforce Miami User Group Event - 1st Quarter 2024
 
KubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCost
KubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCostKubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCost
KubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCost
 

Building a web framework: Django's design decisions

  • 1. Building Django Jacob Kaplan-Moss PyCon March 29, 2009 http://jacobian.org/speaking/2009/pycon-designing-django/
  • 4. LJW
  • 6. lawrence.com Wakarusa 2008 › Find photos Great 'cue. Cheap from the festival beer. View. Log in to here (new photos post › All ads this still coming in) and video week comments. posted here. More to be posted Cornmeal / Hoots & Hellmouth: Steeped in as soon as we dry out... the tradition of legendary acts, this Chicago band uses bluegrass as a springboard for long improvisational work and songs ranging from country and rock to jazz and funk ... School of Wak (Soggy More info Edition) (Ten Million Pounds
  • 12. “ The ink is never dry on these babies. ” — Adrian Holovaty
  • 18. GoF? MVC? TDD?
  • 21. No silver bullet. ” — Fred Brooks Author of The Mythical Man-Month
  • 23. Build cool shit. ” — Rob Curley
  • 30. It should be fun!
  • 31. APIs should match behavior, not show how they work
  • 33. It can go too far.
  • 35. More power in less code
  • 41. Lack of choices at the time
  • 46. Innovation happens elsewhere. ” — Bill Joy
  • 51. You can’t possibly predict what everyone wants
  • 52. ... so listen to your users! (this is harder than it sounds)
  • 53. “One obvious way” over “pluggable components”
  • 54. Autumn Modeling PDB PyORM SQLAlchemy SQLObject Storm ZODB
  • 55. Choice is good for experts ...
  • 56. ... but not good for new users
  • 58. “ Don’t make me think. ” — Steve Krug
  • 59. “ It seems ... that if choice is good, then more choice is better. The paradox is that this “obvious” truth isn’t true... a point can be reached where, with more choice, people are worse off. ” — Barry Schwartz “The Paradox of Choice”
  • 64. Set our own pace Skip to end
  • 65. Choices in the future
  • 66. Long tail or huge scale?
  • 67. #2 Yahoo #5 Facebook #8 Wikipedia #16 Photobucket #19 Flickr #20 Comcast #23 Wordpress
  • 69. Standard | Distance | Phone Number Business Name or Category City, State, ZIP Code or Neighborhoo Set as Default Location Atlanta Dallas Las Vegas New York S Austin Denver Los Angeles Oklahoma City S Baltimore Detroit Louisville Orlando S Boston Houston Memphis Philadelphia S Charlotte Indianapolis Miami Phoenix S Chicago Kansas City Milwaukee Saint Louis M Careers Browse Yellow Pages About YELLOWPAGES.COM Contact Us Site Map Help Adv AT&T AT&T Wireless att.net TollFreeDA.com AnyWho Ingenio Yellow Pages Keen Privacy Policy Terms & Conditions Phone Book Recycling © 2008 YELLOWPAGES.COM LLC. All rights reserved. © 2008 AT&T Intellectual Property. All rights reserved. AT&T, AT&T logo and all other marks containe Some data provided by Localeze and Acxiom. #643 BROWSE STATES Alabama Colorado Hawaii Kansas Massachusetts Montana Alaska Connecticut Idaho Kentucky Michigan Nebraska Arizona Delaware Illinois Louisiana Minnesota Nevada Arkansas Florida Indiana Maine Mississippi New Ham California Georgia Iowa Maryland Missouri New Jers
  • 70. my All Games Home News Forums WoW Addons WAR Addons B Welcome to Curse. login Curse.com B Signup now to take advantage of amazing Curse.com Features! The new Curse.com si read more Curse.com Beta Curse Network Services Enhance Addons are extens experience. We ha to browse addons World of #1295 Age of C Warhamm
  • 71. !quot;#$%$&'()$*+',-. !quot;#$%&'(&)*+'
  • 76. Is this a competition we want?
  • 78. “Rails doesn’t scale” s Maps News Shopping Gmail more ! Advan rails doesn't scale Search Prefe Results 1 - 10 of about 4,680,000 for rails doesn't scale. (0.0 Rails Doesn't Scale? . quot;I've heard a few people mention that they heard that Rails doesn't scale stions on how we might alleviate their doubt?quot; ... t.com/2008/03/rails-doesnt-scale.html - 31k - Cached - Similar pages Interview with Twitter Developer Alex Payne its: Ruby On Rails Can’t Scale at Brandon Werner // Apr 13, ... the rubber is d, and the thing doesn’t scale on the DB end. ... havior.com/5-question-interview-with-twitter-developer-alex-payne/ - 161k - ilar pages aid Rails doesn’t Scale?” Features
  • 79. “Django doesn’t ...?” Maps News Shopping Gmail more ! Adv quot;django sucksquot; Search Pref Results 1 - 10 of about 189 for quot;django sucksquot;. (0 ks eaningless: Django sucks from Alan's clob. [RSS] Picture of the blogger ... o sucks: 21.5 ... nkila/blog/2006/05/21/Django%20sucks.html - 28k - Cached - Similar pages compression sucks phasis: 29.9; Hitman: 7.9. 2006, 8. Misc: 23.8. 2006, 6. DSP progress: 29.6; B is: 19.6; Atari ST audio: 17.6. 2006, 5. Django sucks: 21.5 ... l.fi/~alankila/blog/2007/09/15/jQuery%20compression%20sucks.html - 23k - - Similar pages
  • 81. Invite criticism ... and take it well
  • 84. Photo credits http://flickr.com/photos/noulakaz/418575599/ Lawrence Journal-World (with permission) http://flickr.com/photos/mawari/2091456761/ http://flickr.com/photos/lwr/78032315/ Free Software Foundation (GDFL license) http://flickr.com/photos/foox404/640768235/ http://flickr.com/photos/petereed/496392956/ Poul-Henning Kamp (Beerware license) http://flickr.com/photos/ppdigital/2327942088/ http://flickr.com/photos/ognam/252251866/ NASA (public domain) http://flickr.com/photos/summitcheese/197359430/ http://flickr.com/photos/dullhunk/412756798/ http://flickr.com/photos/mathoov/19172893/ http://flickr.com/photos/kandyjaxx/98984009/ http://flickr.com/photos/jdlasica/1681114312/ http://flickr.com/photos/trp0/127771914/ http://flickr.com/photos/andih/345556778/ http://flickr.com/photos/altemark/304078711/ http://flickr.com/photos/simon/351253/ http://flickr.com/photos/yuan2003/733770226/ http://flickr.com/photos/mworrell/266913194/ http://flickr.com/photos/number13001/247125164/ http://flickr.com/photos/ocms/2535068094/ http://flickr.com/photos/iainr/61917036/ http://flickr.com/photos/s_v_p/5869861/ http://flickr.com/photos/dannyman/958602998/ http://flickr.com/photos/dhammza/110422065/ http://flickr.com/photos/xerones/31671892/ http://flickr.com/photos/martinlabar/2832969149/ http://flickr.com/photos/hercules/118434343/ http://flickr.com/photos/kt/418938142/ http://flickr.com/photos/shyha/225517137/ http://flickr.com/photos/donkeycart/2477069275/ http://flickr.com/photos/stee/154686864/ http://flickr.com/photos/therefore/19256103/ http://flickr.com/photos/halfbisqued/2353845688/ http://flickr.com/photos/8011986@N02/2702162140/ http://flickr.com/photos/teflon/128827389/ http://flickr.com/photos/dominiqs/137546402/ http://flickr.com/photos/orinrobertjohn/114430223/ http://flickr.com/photos/druclimb/390916759/ http://flickr.com/photos/articnomad/16153058/ http://flickr.com/photos/poluz/1871578378/ http://flickr.com/photos/cgc/1289366227/ http://flickr.com/photos/zrahen/14469412/ http://flickr.com/photos/pkdouyk/394163975/ http://flickr.com/photos/mihr-i/2741602553/ http://flickr.com/photos/stonebird/2723635311/ http://flickr.com/photos/automatt/226498681/ http://flickr.com/photos/wtlphotos/480714473/ http://flickr.com/photos/kandyjaxx/2012468692/ http://flickr.com/photos/micktwomey/9646019/ http://flickr.com/photos/fatboyke/2668411239/ http://flickr.com/photos/khalid-almasoud/1283997041/ http://flickr.com/photos/zen/12132210/ http://flickr.com/photos/twinleaves/437606968/ http://flickr.com/photos/oskay/404330158/ http://flickr.com/photos/mag3737/1914076277/ http://flickr.com/photos/accordionguy/411908565/ http://flickr.com/photos/cheetleys/295717673/ http://flickr.com/photos/beckytwinley/2451754919/ http://flickr.com/photos/seier/501372541/ http://flickr.com/photos/gullevek/2667764480/ http://flickr.com/photos/devos/6358304/ http://flickr.com/photos/romanlily/2041441584/ http://flickr.com/photos/phoenixdailyphoto/1467681879/ http://flickr.com/photos/kookr/2810433787/ http://flickr.com/photos/robyn-gallagher/2097474328/ http://flickr.com/photos/gavatron/866650954/ http://flickr.com/photos/lexnger/149433512/ http://flickr.com/photos/clintjcl/2471735838/ http://flickr.com/photos/wheatfields/2587147000/ http://flickr.com/photos/akearns72/166086716/ http://flickr.com/photos/fynes/72573221/ http://flickr.com/photos/locator/420581084/ http://flickr.com/photos/timjoyfamily/532089575/ http://flickr.com/photos/thegeneralstore/709924038/ http://flickr.com/photos/tomeppy/84700111/ http://flickr.com/photos/pittaya/396707150/ http://flickr.com/photos/hamed/231011405/ http://flickr.com/photos/bass_nroll/579960238/ http://flickr.com/photos/jcroft/106571677/ http://flickr.com/photos/fusionpanda/363012235/ http://flickr.com/photos/dalbera/2587777300/ http://flickr.com/photos/webology/2722802478/ http://flickr.com/photos/srevenge/1396062019/ http://flickr.com/photos/lwr/62382337/ http://flickr.com/photos/niallkennedy/310814303/ http://flickr.com/photos/foresmac/2537548732/ http://flickr.com/photos/lwr/526773135/ http://flickr.com/photos/thomashawk/305370843/ http://flickr.com/photos/12693492@N04/1338136415/ http://flickr.com/photos/lwr/50191251/ http://flickr.com/photos/glynnis/19523654/ http://flickr.com/photos/platinum/6761199/ http://flickr.com/photos/strausser/386412877/ http://flickr.com/photos/loredenizen/14435744 http://flickr.com/photos/30553515@N00/1786871517/ http://flickr.com/photos/wolfhound/258498934/ http://flickr.com/photos/biwook/145765624/ http://flickr.com/photos/skrb/94927584/ http://flickr.com/photos/jef/52133463/ http://flickr.com/photos/rspanton/2305408272/ http://flickr.com/photos/atc/106694427/ http://flickr.com/photos/furiousgeorge81/177926979/ http://flickr.com/photos/saintmurse/68159330/ http://flickr.com/photos/twenty_questions/2192450204/ http://flickr.com/photos/flattop341/212276640/ http://flickr.com/photos/shawnide/1733789973/ http://flickr.com/photos/rtarga/223776150/ http://flickr.com/photos/davidrn/255058535/ http://flickr.com/photos/xenophod/116388638/ http://flickr.com/photos/eschipul/436109463/ http://flickr.com/photos/huladancer22/530743543/ http://flickr.com/photos/cguille/2556176764/ http://flickr.com/photos/planetargon/127984254/ http://flickr.com/photos/lonebluelady/890604409/ http://flickr.com/photos/mkmabus/2576358439/ http://flickr.com/photos/atomicbartbeans/229618075/ http://flickr.com/photos/9619972@N08/2220659880/ http://flickr.com/photos/vidiot/2150088788/ http://flickr.com/photos/seeminglee/1973003433/ http://flickr.com/photos/cboulton/2085336565/ http://flickr.com/photos/darwinbell/1538611841/