SlideShare a Scribd company logo
1 of 111
Download to read offline
The first five years

Jacob Kaplan-Moss

Google, December 16, 2008
http://jacobian.org/speaking/2008/first-five-years/
“
Good software takes ten years.
       Get used to it.



                            — Joel Spolsky
                                                         ”
        http://www.joelonsoftware.com/articles/fog0000000017.html
Halfway there!




                 http://flickr.com/photos/usonian/257403571/
Kansas
Merry Slickmas              Events     Latest     Music     Movies      Food      Nightlife




   Best bets    Upcoming


                                      quot;A Benefit for Charley's Fingerquot; with The
                                      Dactyls / Naomi What?
                                      Charlie Downey is a baller. He's so badass that he
                                      broke his finger in two places when one of his
                                      shots got stuffed

                                      Today at 10:00pm
                                      The Jackpot Music Hall, $5




   Today's events                                                            Search events
                                                                                                                   Staph blogs

                                                                                                  O Caption! My Caption!
       The Dog and Pony Show                                                                      Loafers of Mass Destruction
                                                                                                  13 comments
       Hark! The Local Musicians Sing!: New Christmas albums from Sam
       Billen and Josh Atkinson                                                                   Scene Stealers
       Sam Billen’s “Merry Christmas” and Josh Atkinson’s “Songs for Christmas” rank right up     'Synecdoche, New York' tackles life’s
       there with recent yuletide blessings from Sufjan Stevens and Low. Both albums strip away   complexity with complexity
“
    In the beginning there was Zope. Zope
    was a web application framework ... but
     it had some discontents who dared to
     call it quot;monolithicquot; and quot;unpythonicquot;.
    And behold, then there came Webware,
        and it was Modular.... But others
      rebelled ... and a Ton of frameworks
      appeared: Quixote ... SkunkWEB ...




                                                      ”
     CherryPy ... and some thirteen others.


                              — Mike Orr
                          http://linuxgazette.net/113/orr.html
2003
2008
r36 cms/apps/polls/

 r84 cms/core/validators.py

r159 cms/core/paginator.py

r327 cms/apps/auth/

r390 cms/core/urlresolvers.py

r630 cms/core/sites.py
February 2004
    circa r1000
cms/apps/polls/poll.py
>>>
from
cms.apps.polls.polls
import
Poll
>>>
p
=
Poll(4,
quot;hiquot;,
date(2004,
1,
1),
...)
>>>
p.save()
cms/apps/polls/polls.py
cms/apps/polls/polls.py
cms/apps/polls/dblayout.sql
httpd.conf
cms/conf/mrmustard/polls.py
cms/views/polls/polls.py
Data class                 Admin view




Data-access function(s)         Admin template




                   Admin URLs
cms/datadescriptions/polls.py
./generate_code.py
polls
apps/
   polls.py

sql/
   polls.sql

views/
   admin/
      polls.py

templates/
   admin/
      polls/
         change_list.html
         add_form.html
         change_form.html
cms/utilities/codegeneration/generation.py
cms/datadescriptions/polls.py
DO
NOT
EDIT
THIS
FILE
MANUALLY.
IT
WAS
GENERATED
BY
A
PROGRAM.
RE‐RUN
THE
CODE
GENERATOR
INSTEAD.
Seven months later...
       October 2004
cms/models/polls.py
PyCon 2005
Rails
class
Poll(meta.Model):




fields
=
(








meta.SlugField('slug',
'slug',
unique_for_month='pub_dat








meta.CharField('question',
'question',
maxlength=255),








meta.DateTimeField('pub_date',
'date
published'),








meta.DateTimeField('expire_date',
'expiration
date'),








meta.ManyToManyField(core.Site),








meta.PositiveSmallIntegerField('choice_votes',
'choice
v




)





db_table
=
polls




ordering
=
('‐pub_date',)




get_latest_by
=
'pub_date'
class
Poll(meta.Model):




slug
=
meta.SlugField(unique_for_month='pub_date')




question
=
meta.CharField(maxlength=255)




pub_date
=
meta.DateTimeField('date
published')




expire_date
=
meta.DateTimeField('expiration
date')




sites
=
meta.ManyToManyField(core.Site)




choice_votes
=
meta.PositiveSmallIntegerField(default=1)





class
META:








db_table
=
'polls'








ordering
=
('‐pub_date',)
“    I can't think of any other
    backwards-incompatible
  changes that we're planning
before 1.0 (knock on wood). If
 this isn't the last one, though,
 it's at least the last major one.


        — Adrian, August 2005
                                                         ”
    http://www.djangoproject.com/weblog/2005/aug/25/modelsyntax/
Before:
from
django.models.polls
import
Poll

After:
from
myapp.models
import
Poll
Before:
...
magic!
...

After:
import
datetime
Before:
class
Poll(meta.Model):




class
META:








admin
=
meta.Admin(












list_display
=
('title'),








)

After:
class
Poll(meta.Model):




class
Admin








list_display
=
('title')
Before:
from
django.models.polls
import
polls
polls.get_list(slug__exact='slug')

After:
from
polls.models
import
Poll
Poll.objects.filter(slug='slug')

339
files
changed,

22290
insertions(+),

 15656
deletions(‐)
“   After this merge,
Django 1.0 can’t be far off.



                                — Bill de hÓra
                                                            ”
     http://www.dehora.net/journal/2006/04/django_magic_merging.html
“0.95”
django.newforms

  django.test
18 months
3,094 commits
    + branches
1,370 from the
  community
230 new AUTHORS
2,120 bugs fixed

1,394
files
changed,

28,3237
insertions(+),

 97,036
deletions(‐)
40,000 lines of new
  documentation
4 new full committers
Unicode
QSRF
NFA
GeoDjango
ModelForms
Autoescaping
Django on Jython
    (Thanks, Google!)
... and much more ...
http://docs.djangoproject.com/en/dev/releases/1.0/
API stability &
forwards-compatability
http://docs.djangoproject.com/en/dev/misc/api-stability/
Formal release process
http://docs.djangoproject.com/en/dev/internals/release-process/
What’s next?
Django 1.1
 March 16, 2009
Django 1.1 Roadmap
http://code.djangoproject.com/wiki/Version1.1Roadmap
ORM aggregation
http://github.com/freakboy3742/django/tree/aggregation
>>>
Book.objects.aggregate(
...




Avg('price'),
...




highest_price
=
Max('price'))

{'price_avg':
45.0,
'highest_price':
82.80}
>>>
Author.objects.aggregate(Sum('book__price'))

{'book_price_sum':
442}
>>>
books
=
Book.objects.annotate(Max('authors__age'))

>>>
books[0].name
u'Python
Web
Development
With
Django'

>>>
books[0].authors.all()
[<Author:
Jeffrey
Forcier
>,
<Author:
Paul
Bissex>,

<Author:
Wesley
J.
Chun>]

>>>
books[0].authors__age__max
37.0
Publisher.objects.annotate(num_books=Count('book__id'))


















.filter(num_books__gt=1)


















.order_by('num_books')
Improved
QuerySet.update()
>>>
Person.objects.update(age=F('age')+1)
Model Validation
http://code.djangoproject.com/ticket/6845
>>>
p
=
Person.objects.get(...)
>>>
p.age
=
‐7
>>>
p.save(validate=True)
Traceback
(most
recent
call
last):


File
quot;<stdin>quot;,
line
1,
in
<module>
ValidationError:
enter
a
number
greater
than
0.
Bulk admin actions
http://code.google.com/p/django-batchadmin/
Class-based
generic views
from
django.views.generic
import
DetailView

class
PersonView(DetailView):




queryset
=
Person.objects.all()









def
get_template(self,
request):








return
Template(...)
... and more ...
http://code.djangoproject.com/wiki/Version1.1Roadmap
Please help!
http://code.djangoproject.com/wiki/Version1.1Roadmap#how-you-can-help
Thank you!
 jacob@jacobian.org

More Related Content

Viewers also liked

ICDE2014 Session 14 Data Warehousing
ICDE2014 Session 14 Data WarehousingICDE2014 Session 14 Data Warehousing
ICDE2014 Session 14 Data Warehousing
Takuma Wakamori
 
User Profiles: I Didn't Know I Could Do That (Updated Demo)
User Profiles:  I Didn't Know I Could Do That (Updated Demo)User Profiles:  I Didn't Know I Could Do That (Updated Demo)
User Profiles: I Didn't Know I Could Do That (Updated Demo)
Stacy Deere
 
Especial Linux Magazine Software Público
Especial Linux Magazine Software PúblicoEspecial Linux Magazine Software Público
Especial Linux Magazine Software Público
GovBR
 
Java EE 6 = Less Code + More Power (Tutorial) [5th IndicThreads Conference O...
Java EE 6 = Less Code + More Power (Tutorial)  [5th IndicThreads Conference O...Java EE 6 = Less Code + More Power (Tutorial)  [5th IndicThreads Conference O...
Java EE 6 = Less Code + More Power (Tutorial) [5th IndicThreads Conference O...
IndicThreads
 
Lacerte Helpful Resources
Lacerte Helpful ResourcesLacerte Helpful Resources
Lacerte Helpful Resources
intuitaccts
 

Viewers also liked (19)

2013 06-07
2013 06-072013 06-07
2013 06-07
 
HDF OPeNDAP project update and demo
HDF OPeNDAP project update and demoHDF OPeNDAP project update and demo
HDF OPeNDAP project update and demo
 
Upgrade OBIEE to 11.1.1.7.1
Upgrade OBIEE to 11.1.1.7.1Upgrade OBIEE to 11.1.1.7.1
Upgrade OBIEE to 11.1.1.7.1
 
What's Next with Government Big Data
What's Next with Government Big Data What's Next with Government Big Data
What's Next with Government Big Data
 
빅데이터와 프라이버시 강장묵 130619_ver1
빅데이터와 프라이버시 강장묵 130619_ver1빅데이터와 프라이버시 강장묵 130619_ver1
빅데이터와 프라이버시 강장묵 130619_ver1
 
ICDE2014 Session 14 Data Warehousing
ICDE2014 Session 14 Data WarehousingICDE2014 Session 14 Data Warehousing
ICDE2014 Session 14 Data Warehousing
 
Nosotros Elmedio
Nosotros ElmedioNosotros Elmedio
Nosotros Elmedio
 
Tomcat Maven Plugin
Tomcat Maven PluginTomcat Maven Plugin
Tomcat Maven Plugin
 
¡This is drupal! - Global Training Days
¡This is drupal! - Global Training Days¡This is drupal! - Global Training Days
¡This is drupal! - Global Training Days
 
State of virtualisation -- 2012
State of virtualisation -- 2012State of virtualisation -- 2012
State of virtualisation -- 2012
 
Bug x tracker
Bug x trackerBug x tracker
Bug x tracker
 
Bryan So
Bryan SoBryan So
Bryan So
 
User Profiles: I Didn't Know I Could Do That (Updated Demo)
User Profiles:  I Didn't Know I Could Do That (Updated Demo)User Profiles:  I Didn't Know I Could Do That (Updated Demo)
User Profiles: I Didn't Know I Could Do That (Updated Demo)
 
Especial Linux Magazine Software Público
Especial Linux Magazine Software PúblicoEspecial Linux Magazine Software Público
Especial Linux Magazine Software Público
 
Adventures in Digital Forensics
Adventures in Digital ForensicsAdventures in Digital Forensics
Adventures in Digital Forensics
 
Archives & the Semantic Web
Archives & the Semantic WebArchives & the Semantic Web
Archives & the Semantic Web
 
Java EE 6 = Less Code + More Power (Tutorial) [5th IndicThreads Conference O...
Java EE 6 = Less Code + More Power (Tutorial)  [5th IndicThreads Conference O...Java EE 6 = Less Code + More Power (Tutorial)  [5th IndicThreads Conference O...
Java EE 6 = Less Code + More Power (Tutorial) [5th IndicThreads Conference O...
 
Lacerte Helpful Resources
Lacerte Helpful ResourcesLacerte Helpful Resources
Lacerte Helpful Resources
 
Know Your PHY Types.
Know Your PHY Types.Know Your PHY Types.
Know Your PHY Types.
 

Similar to Django - the first five years

Design Strategy Tokuil
Design Strategy TokuilDesign Strategy Tokuil
Design Strategy Tokuil
Nao Tokui
 
Talking About Fluent Interface
Talking About Fluent InterfaceTalking About Fluent Interface
Talking About Fluent Interface
Koji SHIMADA
 
Tech, Reference, AND PATRON Views of our new Front-End
Tech, Reference, AND PATRON Views of our new Front-EndTech, Reference, AND PATRON Views of our new Front-End
Tech, Reference, AND PATRON Views of our new Front-End
kramsey
 

Similar to Django - the first five years (18)

Semantic Web For Distributed Social Networks
Semantic Web For Distributed Social NetworksSemantic Web For Distributed Social Networks
Semantic Web For Distributed Social Networks
 
Silent Running Side E Appendix
Silent Running Side E AppendixSilent Running Side E Appendix
Silent Running Side E Appendix
 
Revolutions The Appendix
Revolutions The AppendixRevolutions The Appendix
Revolutions The Appendix
 
Design Strategy Tokuil
Design Strategy TokuilDesign Strategy Tokuil
Design Strategy Tokuil
 
Return of the Command Line: New Text Interfaces
Return of the Command Line: New Text InterfacesReturn of the Command Line: New Text Interfaces
Return of the Command Line: New Text Interfaces
 
Podcasting - What's all the fuss? (2006)
Podcasting - What's all the fuss? (2006)Podcasting - What's all the fuss? (2006)
Podcasting - What's all the fuss? (2006)
 
The Uncanny Valley - BarCamp Canberra
The Uncanny Valley - BarCamp CanberraThe Uncanny Valley - BarCamp Canberra
The Uncanny Valley - BarCamp Canberra
 
When The Whole World is Your Database at Ruby Conference Kenya by Victor Shep...
When The Whole World is Your Database at Ruby Conference Kenya by Victor Shep...When The Whole World is Your Database at Ruby Conference Kenya by Victor Shep...
When The Whole World is Your Database at Ruby Conference Kenya by Victor Shep...
 
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...
 
The Open Web & The Broken TVs
The Open Web & The Broken TVsThe Open Web & The Broken TVs
The Open Web & The Broken TVs
 
Ignite Orlando - Act 1
Ignite Orlando -  Act 1Ignite Orlando -  Act 1
Ignite Orlando - Act 1
 
Talking About Fluent Interface
Talking About Fluent InterfaceTalking About Fluent Interface
Talking About Fluent Interface
 
New Media & Social Technologies | 5 Blogs
New Media & Social Technologies | 5 BlogsNew Media & Social Technologies | 5 Blogs
New Media & Social Technologies | 5 Blogs
 
The Spicies 2008 Favorite Clips
The Spicies 2008 Favorite ClipsThe Spicies 2008 Favorite Clips
The Spicies 2008 Favorite Clips
 
Cowboy development with Django
Cowboy development with DjangoCowboy development with Django
Cowboy development with Django
 
Taking A Line For A Walk
Taking A Line For A WalkTaking A Line For A Walk
Taking A Line For A Walk
 
Tech, Reference, AND PATRON Views of our new Front-End
Tech, Reference, AND PATRON Views of our new Front-EndTech, Reference, AND PATRON Views of our new Front-End
Tech, Reference, AND PATRON Views of our new Front-End
 
What is Creative Commons? for University HS Students
What is Creative Commons? for University HS StudentsWhat is Creative Commons? for University HS Students
What is Creative Commons? for University HS Students
 

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 Django
Jacob Kaplan-Moss
 
Writing great documentation - CodeConf 2011
Writing great documentation - CodeConf 2011Writing great documentation - CodeConf 2011
Writing great documentation - CodeConf 2011
Jacob Kaplan-Moss
 
Django Introduction, Dev in Rio 2009
Django Introduction, Dev in Rio 2009Django Introduction, Dev in Rio 2009
Django Introduction, Dev in Rio 2009
Jacob 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 syntax
Jacob 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
 
Building a web framework: Django's design decisions
Building a web framework: Django's design decisionsBuilding a web framework: Django's design decisions
Building a web framework: Django's design decisions
 
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
 
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

Structuring Teams and Portfolios for Success
Structuring Teams and Portfolios for SuccessStructuring Teams and Portfolios for Success
Structuring Teams and Portfolios for Success
UXDXConf
 
Breaking Down the Flutterwave Scandal What You Need to Know.pdf
Breaking Down the Flutterwave Scandal What You Need to Know.pdfBreaking Down the Flutterwave Scandal What You Need to Know.pdf
Breaking Down the Flutterwave Scandal What You Need to Know.pdf
UK Journal
 
Easier, Faster, and More Powerful – Alles Neu macht der Mai -Wir durchleuchte...
Easier, Faster, and More Powerful – Alles Neu macht der Mai -Wir durchleuchte...Easier, Faster, and More Powerful – Alles Neu macht der Mai -Wir durchleuchte...
Easier, Faster, and More Powerful – Alles Neu macht der Mai -Wir durchleuchte...
panagenda
 

Recently uploaded (20)

Where to Learn More About FDO _ Richard at FIDO Alliance.pdf
Where to Learn More About FDO _ Richard at FIDO Alliance.pdfWhere to Learn More About FDO _ Richard at FIDO Alliance.pdf
Where to Learn More About FDO _ Richard at FIDO Alliance.pdf
 
Syngulon - Selection technology May 2024.pdf
Syngulon - Selection technology May 2024.pdfSyngulon - Selection technology May 2024.pdf
Syngulon - Selection technology May 2024.pdf
 
Behind the Scenes From the Manager's Chair: Decoding the Secrets of Successfu...
Behind the Scenes From the Manager's Chair: Decoding the Secrets of Successfu...Behind the Scenes From the Manager's Chair: Decoding the Secrets of Successfu...
Behind the Scenes From the Manager's Chair: Decoding the Secrets of Successfu...
 
The Metaverse: Are We There Yet?
The  Metaverse:    Are   We  There  Yet?The  Metaverse:    Are   We  There  Yet?
The Metaverse: Are We There Yet?
 
AI presentation and introduction - Retrieval Augmented Generation RAG 101
AI presentation and introduction - Retrieval Augmented Generation RAG 101AI presentation and introduction - Retrieval Augmented Generation RAG 101
AI presentation and introduction - Retrieval Augmented Generation RAG 101
 
Designing for Hardware Accessibility at Comcast
Designing for Hardware Accessibility at ComcastDesigning for Hardware Accessibility at Comcast
Designing for Hardware Accessibility at Comcast
 
TEST BANK For, Information Technology Project Management 9th Edition Kathy Sc...
TEST BANK For, Information Technology Project Management 9th Edition Kathy Sc...TEST BANK For, Information Technology Project Management 9th Edition Kathy Sc...
TEST BANK For, Information Technology Project Management 9th Edition Kathy Sc...
 
Structuring Teams and Portfolios for Success
Structuring Teams and Portfolios for SuccessStructuring Teams and Portfolios for Success
Structuring Teams and Portfolios for Success
 
Choosing the Right FDO Deployment Model for Your Application _ Geoffrey at In...
Choosing the Right FDO Deployment Model for Your Application _ Geoffrey at In...Choosing the Right FDO Deployment Model for Your Application _ Geoffrey at In...
Choosing the Right FDO Deployment Model for Your Application _ Geoffrey at In...
 
Unpacking Value Delivery - Agile Oxford Meetup - May 2024.pptx
Unpacking Value Delivery - Agile Oxford Meetup - May 2024.pptxUnpacking Value Delivery - Agile Oxford Meetup - May 2024.pptx
Unpacking Value Delivery - Agile Oxford Meetup - May 2024.pptx
 
How we scaled to 80K users by doing nothing!.pdf
How we scaled to 80K users by doing nothing!.pdfHow we scaled to 80K users by doing nothing!.pdf
How we scaled to 80K users by doing nothing!.pdf
 
Free and Effective: Making Flows Publicly Accessible, Yumi Ibrahimzade
Free and Effective: Making Flows Publicly Accessible, Yumi IbrahimzadeFree and Effective: Making Flows Publicly Accessible, Yumi Ibrahimzade
Free and Effective: Making Flows Publicly Accessible, Yumi Ibrahimzade
 
The Value of Certifying Products for FDO _ Paul at FIDO Alliance.pdf
The Value of Certifying Products for FDO _ Paul at FIDO Alliance.pdfThe Value of Certifying Products for FDO _ Paul at FIDO Alliance.pdf
The Value of Certifying Products for FDO _ Paul at FIDO Alliance.pdf
 
IESVE for Early Stage Design and Planning
IESVE for Early Stage Design and PlanningIESVE for Early Stage Design and Planning
IESVE for Early Stage Design and Planning
 
Optimizing NoSQL Performance Through Observability
Optimizing NoSQL Performance Through ObservabilityOptimizing NoSQL Performance Through Observability
Optimizing NoSQL Performance Through Observability
 
Breaking Down the Flutterwave Scandal What You Need to Know.pdf
Breaking Down the Flutterwave Scandal What You Need to Know.pdfBreaking Down the Flutterwave Scandal What You Need to Know.pdf
Breaking Down the Flutterwave Scandal What You Need to Know.pdf
 
Overview of Hyperledger Foundation
Overview of Hyperledger FoundationOverview of Hyperledger Foundation
Overview of Hyperledger Foundation
 
Easier, Faster, and More Powerful – Alles Neu macht der Mai -Wir durchleuchte...
Easier, Faster, and More Powerful – Alles Neu macht der Mai -Wir durchleuchte...Easier, Faster, and More Powerful – Alles Neu macht der Mai -Wir durchleuchte...
Easier, Faster, and More Powerful – Alles Neu macht der Mai -Wir durchleuchte...
 
ECS 2024 Teams Premium - Pretty Secure
ECS 2024   Teams Premium - Pretty SecureECS 2024   Teams Premium - Pretty Secure
ECS 2024 Teams Premium - Pretty Secure
 
Portal Kombat : extension du réseau de propagande russe
Portal Kombat : extension du réseau de propagande russePortal Kombat : extension du réseau de propagande russe
Portal Kombat : extension du réseau de propagande russe
 

Django - the first five years