SlideShare a Scribd company logo
No! Bad Pony!
 Dr Russell Keith-Magee
    DjangoCon 2009
wotnews.com.au
 wotnews.com
 wotnews.co.uk
wearehunted.com
how is ponny formed?
Genesis of the pony
Cal Henderson @ DjangoCon2008
DjangoCon09: No! Bad Pony!
What does it mean?
What is a pony?
DjangoCon09: No! Bad Pony!
What turns an idea
 into a bad pony?
DjangoCon09: No! Bad Pony!
It’s an idea that...

• Is just plain wrong
• Is impractical
• Isn’t a good fit for Django’s design
• Takes the project in the wrong direction
• Comes without an offer of assistance
Ideas that are wrong
Ideas that are wrong

• Idea violates a standard or best practice
• Idea can’t be implemented
• Rusty Russell Interface Level too high
• Idea violates DRY
Impractical ideas
Impractical ideas

• A problem that doesn’t exist:YAGNI
• Changes the design contract
• Addresses a small part of larger problem
• Architecture astronauting
Design Mismatch
Replace X with Y

• Replace Django’s templates with Jinga
• Replace ORM with SQLAlchemy
• Replace test framework with Nose
Ignores the philosophy

• Add GROUP BY, HAVING to ORM
• Add variables/callables to template language
• Add AJAX to Forms
Just add a setting...

• A setting is a decision deferred
• N settings, 2 configurations
             N


• Doesn’t mean we won’t add settings
Wrong direction
Feature creep


• Make development server multithreaded
• Add connection pooling
Add a backend...

• MS-SQL / DB2 / SQLAnywhere / Firebird
• New authentication schemes (LDAP)
• New serialization schemes (CSV)
• New file stores (S3)
Put another way...

• You say “Add X to core”
• We hear:
 • “Here’s something else to worry about”
 • “Won’t you look after this for me”
• We introduce backend APIs for a reason
The Community

• The core doesn’t have to do everything
• In fact - the core can’t do everything
• The community has an essential role here
• Blessing by core doesn’t make code better
Add X to contrib

• django-tagging
• django-registration
• django-debug-toolbar
What is django.contrib?
A collection of
      optional,
  defacto standard
implementations of
 common patterns
Here’s a big job...
but I’d like someone else to do it (please)
Process Ponies

• Write more blog posts
• Have a weekly news summary
• Have a nightly tarball download
• Have a continuous build
• Have precompiled PDF documentation
Massive Features

• Support for multiple database connections
• Schema Evolution
• Support for non-SQL data stores
Some popular tickets
Almost certainly in 1.2


• #5390 - Signals for ManyRelatedManager
• #7052 - Problems with auth fixture loading
Possibly in 1.2

• #13 - Better related objects admin UI
• #1142 - Multiple database support
• #5833 - Custom Filterspecs
• #6845 - Model Validation
Waiting on patch
• #373 - Multi-column primary keys
• #2879 - Live test server support
• #4102 - Update of specific fields
• #6148 - Database schemas
• #6735 - Class-based generic views
• #7270 - Reverse select_related()
Waiting on design

• #2405 - FOR UPDATE in querysets
• #3011 - Extendable user auth module
• #3591 - Custom app_label/verbose_name
• #7048 - Support clearing FileFields
Waiting on decision

• #17 - Identity mapper
• #2417 - Binary DB fields
• #4604 - Session-based messages
How to get your pony
What won’t work

• Putting your name in the ticket CC
• Saying “me too” on a ticket or list thread
• Posting hyperbole on your blog
• Changing the ticket to “Milestone 1.X”
• Putting the ticket on the 1.X feature wiki
What will work

• Offer to help out
• Better still - actually help out!
• Build up karma
• Do the unglamorous stuff
 • Triage, django-users, patch feedback
Don’t just write code

• Yes, code needs to be written
• It isn’t just a matter of writing a patch
• You need to be an advocate
• Best advocate is someone who is trusted
A matter of trust

• Core team has limited resources
• We need to make best use of that time
• Understand the core DVCS message:
 • It’s all about trust
 • It’s not about forking - it’s about merging
If you must...

• Do the research
• Demonstrate you understand the problem
• Implementation trumps idle discussion
• Maximise utility for the core team
Yes Virginia,
you can have a pony.
DjangoCon09: No! Bad Pony!
No Pony
       !=
End of the world
Fin

More Related Content

KEY
UTEP AITP Presentation - 10/17/2012
PPT
Html tags
PDF
Teach a Man To Fish (phpconpl edition)
PPTX
Site Down: How to Triage Those First Minutes
PDF
Understanding bdd and tdd with lego
ODP
Why do we need two eyes? - JsConfEu October 2011
PPSX
Terri Karp 2010 03 23 V2
PDF
Contributing to WordPress Core
UTEP AITP Presentation - 10/17/2012
Html tags
Teach a Man To Fish (phpconpl edition)
Site Down: How to Triage Those First Minutes
Understanding bdd and tdd with lego
Why do we need two eyes? - JsConfEu October 2011
Terri Karp 2010 03 23 V2
Contributing to WordPress Core

Viewers also liked (6)

PDF
DjangoCon09: The Test Client
PPT
Introduction to django-config
PDF
State of Pinax
PDF
Fighting Malnutrition with SMS and Django
PDF
Cowboy development with Django
PDF
DjangoCon 2009 Keynote
DjangoCon09: The Test Client
Introduction to django-config
State of Pinax
Fighting Malnutrition with SMS and Django
Cowboy development with Django
DjangoCon 2009 Keynote
Ad

Similar to DjangoCon09: No! Bad Pony! (20)

PPTX
Introduction to django (and py)
ODP
dJango
PDF
Introduction to Python and Django
PPTX
Introduction to django
PDF
django
PPTX
1-_Introduction_To_Django_Model_and_Database (1).pptx
KEY
DjangoCon recap
PDF
The Django Book, Chapter 16: django.contrib
PPTX
Tango with django
PDF
Intro to Pinax: Kickstarting Your Django Apps
PDF
PDF
Code quality. Patch quality
PDF
Code quality; patch quality
 
PDF
Unbreaking Your Django Application
PPT
PDF
Debugging Django
PDF
What the heck went wrong?
PPTX
Tango with django
PDF
10 things you should know about django
PDF
Intro to Web Development Using Python and Django
Introduction to django (and py)
dJango
Introduction to Python and Django
Introduction to django
django
1-_Introduction_To_Django_Model_and_Database (1).pptx
DjangoCon recap
The Django Book, Chapter 16: django.contrib
Tango with django
Intro to Pinax: Kickstarting Your Django Apps
Code quality. Patch quality
Code quality; patch quality
 
Unbreaking Your Django Application
Debugging Django
What the heck went wrong?
Tango with django
10 things you should know about django
Intro to Web Development Using Python and Django
Ad

Recently uploaded (20)

PDF
Approach and Philosophy of On baking technology
PDF
Per capita expenditure prediction using model stacking based on satellite ima...
PPTX
SOPHOS-XG Firewall Administrator PPT.pptx
PDF
Electronic commerce courselecture one. Pdf
PPTX
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
PDF
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
PDF
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
PDF
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
PDF
Network Security Unit 5.pdf for BCA BBA.
PDF
Encapsulation_ Review paper, used for researhc scholars
PDF
MIND Revenue Release Quarter 2 2025 Press Release
PPTX
Tartificialntelligence_presentation.pptx
PPTX
Big Data Technologies - Introduction.pptx
PDF
Machine learning based COVID-19 study performance prediction
PPTX
Digital-Transformation-Roadmap-for-Companies.pptx
PDF
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
PDF
Assigned Numbers - 2025 - Bluetooth® Document
PDF
Dropbox Q2 2025 Financial Results & Investor Presentation
PDF
Unlocking AI with Model Context Protocol (MCP)
PPTX
MYSQL Presentation for SQL database connectivity
Approach and Philosophy of On baking technology
Per capita expenditure prediction using model stacking based on satellite ima...
SOPHOS-XG Firewall Administrator PPT.pptx
Electronic commerce courselecture one. Pdf
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
Network Security Unit 5.pdf for BCA BBA.
Encapsulation_ Review paper, used for researhc scholars
MIND Revenue Release Quarter 2 2025 Press Release
Tartificialntelligence_presentation.pptx
Big Data Technologies - Introduction.pptx
Machine learning based COVID-19 study performance prediction
Digital-Transformation-Roadmap-for-Companies.pptx
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
Assigned Numbers - 2025 - Bluetooth® Document
Dropbox Q2 2025 Financial Results & Investor Presentation
Unlocking AI with Model Context Protocol (MCP)
MYSQL Presentation for SQL database connectivity

DjangoCon09: No! Bad Pony!

  • 1. No! Bad Pony! Dr Russell Keith-Magee DjangoCon 2009
  • 4. how is ponny formed?
  • 6. Cal Henderson @ DjangoCon2008
  • 8. What does it mean?
  • 9. What is a pony?
  • 11. What turns an idea into a bad pony?
  • 13. It’s an idea that... • Is just plain wrong • Is impractical • Isn’t a good fit for Django’s design • Takes the project in the wrong direction • Comes without an offer of assistance
  • 14. Ideas that are wrong
  • 15. Ideas that are wrong • Idea violates a standard or best practice • Idea can’t be implemented • Rusty Russell Interface Level too high • Idea violates DRY
  • 17. Impractical ideas • A problem that doesn’t exist:YAGNI • Changes the design contract • Addresses a small part of larger problem • Architecture astronauting
  • 19. Replace X with Y • Replace Django’s templates with Jinga • Replace ORM with SQLAlchemy • Replace test framework with Nose
  • 20. Ignores the philosophy • Add GROUP BY, HAVING to ORM • Add variables/callables to template language • Add AJAX to Forms
  • 21. Just add a setting... • A setting is a decision deferred • N settings, 2 configurations N • Doesn’t mean we won’t add settings
  • 23. Feature creep • Make development server multithreaded • Add connection pooling
  • 24. Add a backend... • MS-SQL / DB2 / SQLAnywhere / Firebird • New authentication schemes (LDAP) • New serialization schemes (CSV) • New file stores (S3)
  • 25. Put another way... • You say “Add X to core” • We hear: • “Here’s something else to worry about” • “Won’t you look after this for me” • We introduce backend APIs for a reason
  • 26. The Community • The core doesn’t have to do everything • In fact - the core can’t do everything • The community has an essential role here • Blessing by core doesn’t make code better
  • 27. Add X to contrib • django-tagging • django-registration • django-debug-toolbar
  • 29. A collection of optional, defacto standard implementations of common patterns
  • 30. Here’s a big job... but I’d like someone else to do it (please)
  • 31. Process Ponies • Write more blog posts • Have a weekly news summary • Have a nightly tarball download • Have a continuous build • Have precompiled PDF documentation
  • 32. Massive Features • Support for multiple database connections • Schema Evolution • Support for non-SQL data stores
  • 34. Almost certainly in 1.2 • #5390 - Signals for ManyRelatedManager • #7052 - Problems with auth fixture loading
  • 35. Possibly in 1.2 • #13 - Better related objects admin UI • #1142 - Multiple database support • #5833 - Custom Filterspecs • #6845 - Model Validation
  • 36. Waiting on patch • #373 - Multi-column primary keys • #2879 - Live test server support • #4102 - Update of specific fields • #6148 - Database schemas • #6735 - Class-based generic views • #7270 - Reverse select_related()
  • 37. Waiting on design • #2405 - FOR UPDATE in querysets • #3011 - Extendable user auth module • #3591 - Custom app_label/verbose_name • #7048 - Support clearing FileFields
  • 38. Waiting on decision • #17 - Identity mapper • #2417 - Binary DB fields • #4604 - Session-based messages
  • 39. How to get your pony
  • 40. What won’t work • Putting your name in the ticket CC • Saying “me too” on a ticket or list thread • Posting hyperbole on your blog • Changing the ticket to “Milestone 1.X” • Putting the ticket on the 1.X feature wiki
  • 41. What will work • Offer to help out • Better still - actually help out! • Build up karma • Do the unglamorous stuff • Triage, django-users, patch feedback
  • 42. Don’t just write code • Yes, code needs to be written • It isn’t just a matter of writing a patch • You need to be an advocate • Best advocate is someone who is trusted
  • 43. A matter of trust • Core team has limited resources • We need to make best use of that time • Understand the core DVCS message: • It’s all about trust • It’s not about forking - it’s about merging
  • 44. If you must... • Do the research • Demonstrate you understand the problem • Implementation trumps idle discussion • Maximise utility for the core team
  • 45. Yes Virginia, you can have a pony.
  • 47. No Pony != End of the world
  • 48. Fin