Cox Media Group
KryptoniteConference Schedule
Track one or two? Eeenie, meenie, miney, moe…
Django Package Thunderdome: Is Your Package Worthy?
Time
Level
Description
Abstract
What makes a Django package usable? (10 min)
- Purpose
- Structure
- Docs
- Tests
- Community
- Modularity (pluggability)
- Availability on PyPI
- Availability on Github/Bitbucket
- Activity
- 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:
Points of comparison:
- Purpose
- 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.
- The package addresses a real need.
- Structure
- Docs
- No docs means your app fails. I won't even look at it.
- Doc strings do not suffice as documentation.
- Bonus points awarded for using rtfd.org for documentation hosting.
- If there are dependencies, you must make the requirements clear.
- The installation steps should be bulletproof. I should be able to follow your install docs and have the package just work.
- Tests
- No tests means it is hard to do Python/Django/Dependency upgrades
- No tests means the the code is unpredictable.
- Community
- When was the last contribution?
- How many people are contributing?
- Who is contributing?
- 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)
- Installation should be minimally invasive to the rest of your project.
- Do not confuse pluggability with over-engineering for every generic use case.
- Within your app, sub-modularity is great, e.g. different registration backends for django-registration
- Availability on PyPI
- Give your package proper version numbers and always have the latest release available on PyPI.
- Version Control Hosting
- If you aren't on Github or Bitbucket you don't exist. Nothing else has the visibility for Django developers.
- Launchpad and SourceForge are much less popular
- Google Project Hosting lacks an API, so no metrics can be gathered.
- Code quality / Best practices
- Code follows PEP-8?
- Tries not to have too many variables set in settings.py?
- Easy to plug in, INSTALLED_APPS = ‘foo’ preferred.
- Naming of your app: should be django-something, should be descriptive
Showdowns:
- Fundamentals that every project needs
- Registration
- Profiles
- Blogs
- Tagging
- REST
- Database migrations
Take-home bonus:
A sheet of useful packages recommended by Django developers whose opinions we respect deeply.