Sessions at DjangoCon US 2011 about Django and Packaging on Wednesday 7th September

Your current filters are…

Clear
  • Django Package Thunderdome: Is Your Package Worthy?

    by Audrey Roy and Daniel Greenfeld

    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)

    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
    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.

    Structure

    Docs
    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.

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

    Community
    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

    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.

    At 11:20am to 12:00pm, Wednesday 7th September

    Coverage video