Django Package Thunderdome: Is Your Package Worthy?

A session at DjangoCon US 2011

Wednesday 7th September, 2011

11:20am to 12:00pm

What makes a package useful? What is it about certain packages that makes them must-haves for any project? I’ll go over topics like: purpose, structure, docs, tests, availability on PyPI and Github/Bitbucket, activity, and more. I will visit some of the most useful grids on djangopackages.com and highlight my top package picks, showing examples of what makes these top packages so great.

What makes a Django package usable? (10 min)

Modularity (pluggability)
Availability on PyPI
Availability on Github/Bitbucket
Code quality
Package evaluations (25 min)

Go to a Django Packages grid
Drill down into doc/code examples from winning packages to show what makes them so usable
Making your favorite project get onto my favorites list (5 min)

Here's a rough outline of what we have in mind:


1. To paraphrase James Bennett, the smaller the scope and greater the focus of your app, the better it will be. Application logic can be tighter and patching/replacing the app is easier.
2. The package addresses a real need.


1. No docs means your app fails. I won't even look at it.
2. Doc strings do not suffice as documentation.
3. Bonus points awarded for using rtfd.org for documentation hosting.
4. If there are dependencies, you must make the requirements clear.
5. The installation steps should be bulletproof. I should be able to follow your install docs and have the package just work.

1. No tests means it is hard to do Python/Django/Dependency upgrades
2. No tests means the the code is unpredictable.

1. When was the last contribution?
2. How many people are contributing?
3. Who is contributing?
4. Attribution of authors: every author and contributor should be credited. This shows that you're willing to go the extra mile for your package.

Modularity (pluggability)
1. Installation should be minimally invasive to the rest of your project.
2. Do not confuse pluggability with over-engineering for every generic use case.
3. Within your app, sub-modularity is great, e.g. different registration backends for django-registration

Availability on PyPI
1. Give your package proper version numbers and always have the latest release available on PyPI.

Version Control Hosting
1. If you aren't on Github or Bitbucket you don't exist. Nothing else has the visibility for Django developers.
2. Launchpad and SourceForge are much less popular
3. Google Project Hosting lacks an API, so no metrics can be gathered.

Code quality / Best practices
1. Code follows PEP-8?
2. Tries not to have too many variables set in settings.py?
3. Easy to plug in, INSTALLED_APPS = ‘foo’ preferred.
4. Naming of your app: should be django-something, should be descriptive

Fundamentals that every project needs

Database migrations

A sheet of useful packages recommended by Django developers whose opinions we respect deeply.

About the speakers

This person is speaking at this event.
Audrey Roy

Creator of Cookiecutter & Python, JS, CSS open source libraries. Coauthor of Two Scoops of Django. @IEPyladies leader. Painter, sculptor, artist. MIT EECS 2005 bio from Twitter

This person is speaking at this event.
Daniel Greenfeld

Pythonista, Djangonaut, teacher, author, speaker, capoeirista, and more!

Coverage of this session

Sign in to add slides, notes or videos to this session

Tell your friends!


Time 11:20am12:00pm PST

Date Wed 7th September 2011

Short URL


Official session page


View the schedule



Books by speaker

  • Two Scoops of Django: Best Practices for Django 1.8
  • Into the Brambles: The Brambles Book 1 (Volume 1)
  • Two Scoops of Django

See something wrong?

Report an issue with this session