The Django community is not short of ideas that could be added to Django's core repository. Some of these ideas are great, and are just waiting for the right implementation or the attention of a core developer. Other ideas are just not going to happen.
However, it's may not always be obvious why an idea has been rejected by the core team. This talk will attempt explain the reasoning behind a couple of specific decisions. More broadly, this talk will aims to provide more general guidance on the decision making process behind the decisions made by the Django core team.
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
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
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
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