SlideShare a Scribd company logo
1 of 87
Download to read offline
by Audrey Roy and Daniel Greenfeld
       @audreyr / @pydanny
                1
Audrey Roy
•   Python & Django developer
    for Cartwheel Web / RevSys

•   MIT ’04, EE/CS

•   PyLadies,
    djangopackages.com,
    OpenComparison




                                                                                    Django Packages Thunderdome
    (Packaginator)

•




                                                                                            @pydanny / @audreyr
    Fiancée of Daniel
    Greenfeld (pydanny)          http://www.flickr.com/photos/chrisjrn/6102009780/




                           2
Daniel Greenfeld
                                                  •   Python & Django developer for
                                                      Cartwheel Web / RevSys

                                                  •   Learned Python at NASA

                                                  •   djangopackages.com,
                                                      OpenComparison
                                                      (Packaginator), django-uni-form




                                                                                        Django Packages Thunderdome
http://www.flickr.com/photos/pydanny/4442245488/
                                                  •   Fiancé of Audrey Roy (audreyr)




                                                                                                @pydanny / @audreyr
                                                       3
A Year+ of Package
               Comparisons
•   We launched
    djangopackages.com
    July 2010

•   We’ve seen the
    Django package




                                 Django Packages Thunderdome
    ecosystem grow and
    change




                                         @pydanny / @audreyr
                         4
Why a Thunderdome?
• Pattern: you hear about the “best” package for
  X, and you use it
• Comparison grids on djangopackages.com help
  • but not 100% effective/objective
• Why not a Consumer Reports-style analysis?




                                                   Django Packages Thunderdome
• This is what a Django community manager



                                                           @pydanny / @audreyr
  would do

                        5
Our review criteria
 What makes your package worthy?




                6
1. Purpose

• The name tells you what it does
• “django-” prefix says it’s a Django package
  • Even better if coupled with a related
    Python package




                                               Django Packages Thunderdome
• The package addresses a real need




                                                       @pydanny / @audreyr
                     7
Scoring: Purpose
             Range: 0 to +15


• Descriptive name: +5
• “django-” prefix: +5
• Incredibly useful purpose: +5




                                  Django Packages Thunderdome
                                          @pydanny / @audreyr
                     8
2. Scope


• Small scope, narrow focus is better
  • Application logic will be tighter
  • Patching/replacing the app will be




                                         Django Packages Thunderdome
    easier




                                                 @pydanny / @audreyr
                     9
Scoring: Scope
             Range: -5 to +5


• Does one thing: +5
• Does two things: 0
• Does three or more things: -5




                                  Django Packages Thunderdome
                                          @pydanny / @audreyr
                    10
3. Documentation

• No docs means your app is pre-alpha
• Doc strings do not suffice as
  documentation
• If there are dependencies, they should be
  in your docs




                                              Django Packages Thunderdome
• Installation steps should be bulletproof



                                                      @pydanny / @audreyr
                     11
Scoring: Docs
            Range: -5o to +15

• Docs folder in RST/Sphinx format: +10
  • Displayed on http://rtfd.org: +5
• Lousy Docs (wiki for example): -5 to -20
• Only README + docstrings: -10




                                             Django Packages Thunderdome
• No docs: -50



                                                     @pydanny / @audreyr
                    12
4. Testing

• Tests improve reliability
• Tests make it easy to advance Python/
  Django versions
• Tests make it easier for others to




                                          Django Packages Thunderdome
  contribute effectively




                                                  @pydanny / @audreyr
                     13
Scoring: Tests
            Range: -50 to +15

• Public Jenkins site: +5
• django_coverage/coverage.py: +5
• Well done tests: +5
• No Tests: -10




                                    Django Packages Thunderdome
• Placeholder tests: -50



                                            @pydanny / @audreyr
                   14
5. Activity


• When was the last commit?
• How frequent are commits?
• Are there periodic version updates?




                                        Django Packages Thunderdome
                                                @pydanny / @audreyr
                    15
Scoring: Activity
            Range: 0 to +15


• Last commit up to 3 months ago: +15
• Last commit up to 6 months ago: +10
• Last commit up to 1 year ago: +5




                                        Django Packages Thunderdome
                                                @pydanny / @audreyr
                   16
6. Community

• Active community leader(s)
• How many people are contributing?
• Proper attribution of authors?
  • CONTRIBUTORS.txt?




                                      Django Packages Thunderdome
  • README



                                              @pydanny / @audreyr
                   17
Scoring: Community
              Range: 0 to +35
•   Active community leader: +10
    • Lots of divergent forks? Then no
• Number of contributors = # of points
  • Maximum of 20 points




                                         Django Packages Thunderdome
• Proper attribution: +5



                                                 @pydanny / @audreyr
                      18
7. Modularity


• “Pluggability”
• Installation should be minimally invasive
• Do not confuse modularity with over




                                              Django Packages Thunderdome
  engineering




                                                      @pydanny / @audreyr
                    19
Scoring: Modularity
              Range: -20 t0 +20
•   Just add to up to these things:
    • INSTALLED_APPS
    • MIDDLEWARE
    • urls.py




                                      Django Packages Thunderdome
    • models.py in a few cases




                                              @pydanny / @audreyr
    • A few custom settings
                     +20
                       20
Scoring: Modularity

• Having to write your own custom code/
  backends from scratch
• Having to write your own templates
• Having to study the code to make it work




                                             Django Packages Thunderdome
• More framework than pluggable




                                                     @pydanny / @audreyr
       -5 for any of these violations

                     21
8. Availability on PyPI

• Actually on PyPI
• Latest release on PyPI
  • Should not have to go to repo for
    working version




                                        Django Packages Thunderdome
• Proper version numbers




                                                @pydanny / @audreyr
                      22
Scoring: PyPI Availability
             Range: 0 to +30

• Latest release download link on PyPI: +15
• Latest stable release +5
• Historical versions kept on PyPI: +5




                                              Django Packages Thunderdome
• Good versioning scheme: +5




                                                      @pydanny / @audreyr
                    23
9. VCS/Hosting

• Great: Github or BitBucket
• Okay: Launchpad or SourceForge
• Outdated: Google Project Hosting




                                     Django Packages Thunderdome
• Poor: Your own site




                                             @pydanny / @audreyr
                   24
Scoring: VCS/Hosting
           Range: -20 t0 +20

• Github or BitBucket: +20
• Launchpad or SourceForge: +5
• Google Project Hosting: +0




                                 Django Packages Thunderdome
• Hosting your own VCS: -20




                                         @pydanny / @audreyr
                   25
10. License


• You need a license
• Companies prefer BSD or MIT licenses
• http://opensource.org/licenses/category




                                            Django Packages Thunderdome
                                                    @pydanny / @audreyr
                    26
Scoring: License
             Range: -15 to +5

• BSD or MIT license: +5
• Any other formal license: 0
• Custom license: -5 to -15




                                Django Packages Thunderdome
• No license: -15




                                        @pydanny / @audreyr
                    27
Thunderdome
 Fight, packages! Fight!




           28
A quick warning

• We’re just kidding about the fighting
• Friendly, “constructive criticism”
• Use our feedback to help improve your
  favorite package




                                          Django Packages Thunderdome
• Think of us as your friendly Django




                                                  @pydanny / @audreyr
  community managers (during the talk)


                     29
How packages were
     chosen for this

• We sent out a survey and chose the:
  ★ most commonly-used packages
  ★ most interesting packages




                                        Django Packages Thunderdome
• Not direct one-to-one comparisons




                                                @pydanny / @audreyr
                    30
Round 1
API Creation




     31
Contenders: API Creation

They’re all a little different:
 • django-piston
 • django-tastypie
 • djangorestframework




                                 Django Packages Thunderdome
 • django-xmlrpc



                                         @pydanny / @audreyr
                      32
django-   django-    djangorestframe django-
 API Creation   piston    tastypie   work            xmlrpc

Purpose         10        10         10              15

Scope           5         5          5               5

Documentation   -10       15         15              -10

Tests           5         10         15              -10

Activity        0         15         15              5

Community       5         30         27              6

Modularity      -10       20         20              -5

PyPI            20        25         30              25




                                                               Django Packages Thunderdome
VCS/Hosting     20        20         20              20




                                                                       @pydanny / @audreyr
License         5         5          5               5

Totals          50        155        162             56
                                33
django-   django-    djangorestframe django-
 API Creation   piston    tastypie   work            xmlrpc

Purpose         10        10         10              15

Scope           5         5          5               5

Documentation   -10       15         15              -10

Tests           5         10         10              -10

Activity        0         15         15              5

Community       5         30         27              6

Modularity      -10       20         -5              -5

PyPI            20        25         30              25




                                                               Django Packages Thunderdome
VCS/Hosting     20        20         20              20




                                                                       @pydanny / @audreyr
License         5         5          5               5

Totals          50        155        162             56
                                34
django-   django-    djangorestframe django-
 API Creation   piston    tastypie   work            xmlrpc

Purpose         10        10         10              15

Scope           5         5          5               5

Documentation   -10       15         15              -10

Tests           5         10         15              -10

Activity        0         15         15              5

Community       5         30         27              6

Modularity      -10       20         -5              -5

PyPI            20        25         30              25




                                                               Django Packages Thunderdome
VCS/Hosting     20        20         20              20




                                                                       @pydanny / @audreyr
License         5         5          5               5

Totals          50        155        162             56
                                35
django-       django-       djangorestframe django-
 API Creation            piston        tastypie      work            xmlrpc

Purpose                  10             10           10              15

Scope                    5              5            5               5

Documentation            -10            15           15              -10

Tests                    5              10           15              -10

Activity                 0              15           15              5

Community                5              30           27              6

Modularity

PyPI
           Jenkins!!!    -10

                           20
                                        20

                                          25
                                                     20

                                                     30
                                                                     -5

                                                                     25




                                                                               Django Packages Thunderdome
 http://jenkins.tibold.nl/job/djangorestframework/
VCS/Hosting              20             20           20              20




                                                                                       @pydanny / @audreyr
License                  5              5            5               5

Totals                   50             155          162             56
                                              36
django-   django-    djangorestframe django-
 API Creation   piston    tastypie   work            xmlrpc

Purpose         10        10         10              15

Scope           5         5          5               5

Documentation   -10       15         15              -10

Tests           5         10         15              -10

Activity        0         15      Activity
                                     15              5

Community

Modularity
                5

                -10
                          30

                          20
                                 Community
                                     27

                                     20
                                                     6

                                                     -5

PyPI            20        25         30              25




                                                               Django Packages Thunderdome
VCS/Hosting     20        20         20              20




                                                                       @pydanny / @audreyr
License         5         5          5               5

Totals          50        155        162             56
                                37
Winners: API Creation


1. djangorestframework: 162 out of 175
   points
2. django-tastypie: 155 out of 175 points




                                            Django Packages Thunderdome
                                                    @pydanny / @audreyr
                      38
django-   django-    djangorestframe django-
 API Creation   piston    tastypie   work            xmlrpc

Purpose         10        10         10              15

Scope           5         5          5               5

Documentation   -10       15         15              -10

Tests           5         10         15              -10

Activity        0         15         15              5

Community       5         30         27              6

Modularity      -10       20         20              -5

PyPI            20        25         30              25




                                                               Django Packages Thunderdome
VCS/Hosting     20        20         20              20




                                                                       @pydanny / @audreyr
License         5         5          5               5

Totals          50        155        162             56
                                39
Round 2
Fundamentals




     40
Contenders: Fundamentals
 2 utilities:
  • django-debug-toolbar
  • django-coverage
 2 boilerplate-style “must need” pieces




                                          Django Packages Thunderdome
  • django-extensions



                                                  @pydanny / @audreyr
  • Pinax
                      41
django-       django- django-
 Fundamentals   debug-toolbar coverage extensions
                                                    Pinax

Purpose         15            15        15          10

Scope           5             5         -5          -5

Documentation   -10           -10       15          10

Tests           -10           -10       0           0

Activity        15            15        15          10

Community       35            25        30          35

Modularity      20            20        -10         -5

PyPI            25            25        30          20




                                                            Django Packages Thunderdome
VCS/Hosting     20            20        20          20




                                                                    @pydanny / @audreyr
License         5             0         5           5

Totals          120           105       115         100
                                   42
django-       django- django-
 Fundamentals   debug-toolbar coverage extensions
                                                    Pinax

Purpose         15            15        15          10

Scope           5             5         -5          -5

Documentation   -10           -10       15          10

Tests           -10           -10       0           0

Activity        15            15        15          10

Community       35            25        30          35

Modularity      20            20        -10         -5

PyPI            25            25        30          5




                                                            Django Packages Thunderdome
VCS/Hosting     20            20        20          20




                                                                    @pydanny / @audreyr
License         5             0         5           5

Totals          120           105       115         100
                                   43
django-       django- django-
 Fundamentals   debug-toolbar coverage extensions
                                                    Pinax

Purpose         15            15        15          10

Scope           5             5         -5          -5

Documentation   -10           -10       15          10

Tests           -10           -10       0           0

Activity        15            15        15          10

Community       35            25        30          35

Modularity      20            20        -10         -5

PyPI            25            25        30          20




                                                            Django Packages Thunderdome
VCS/Hosting     20     History unclear
                            20     20               20




                                                                    @pydanny / @audreyr
License         5
                           on PyPI 5
                            0                       5

Totals          120           105       115         100
                                   44
Winners: Fundamentals

1. django-debug-toolbar: 120 out of 175 points
2. django-extensions: 115 out of 175 points


  Note that this was obviously not a one-to-




                                                 Django Packages Thunderdome
  one comparison, but a purely points-based




                                                         @pydanny / @audreyr
  evaluation


                       45
django-       django- django-
 Fundamentals   debug-toolbar coverage extensions
                                                    Pinax

Purpose         15            15        15          10

Scope           5             5         -5          -5

Documentation   -10           -10       15          10

Tests           -10           -10       0           0

Activity        15            15        15          10

Community       35            25        30          35

Modularity      20            20        -10         -5

PyPI            25            25        30          20




                                                            Django Packages Thunderdome
VCS/Hosting     20            20        20          20




                                                                    @pydanny / @audreyr
License         5             0         5           5

Totals          120           105       115         100
                                   46
Round 3
 Registration




      47
Contenders: Registration

Different approaches:
 • django-registration
 • Pinax (accounts part)
 • django-userena (registration+profiles)




                                           Django Packages Thunderdome
 • django-social-auth



                                                   @pydanny / @audreyr
                   48
django-        Pinax                     django-
  Registration   registration   (accounts)
                                           django-userena
                                                          social-auth

Purpose          15             10         15              15

Scope            5              -5         -5              5

Documentation    10             10         15              10

Tests            5              0          5               0

Activity         15             10         15              15

Community        25             35         16              26

Modularity       -15            -5         -10             -5

PyPI             15             20         25              25




                                                                        Django Packages Thunderdome
VCS/Hosting      20             20         20              20




                                                                                @pydanny / @audreyr
License          5              5          5               5

Totals           100            100        101             116
                                     49
django-        Pinax                     django-
  Registration   registration   (accounts)
                                           django-userena
                                                          social-auth

Purpose          15             10           15            15

Scope            5              -5           -5            5

Documentation    10             10        Inaccurate authors list!
                                              15         10

Tests            5              0            5             0

Activity         15             10           15            15

Community        25             35           16            26

Modularity       -15            -5           -10           -5

PyPI             15             20           25            25




                                                                        Django Packages Thunderdome
VCS/Hosting      20             20           20            20




                                                                                @pydanny / @audreyr
License          5              5            5             5

Totals           100            100          101           116
                                     50
django-        Pinax                     django-
  Registration    registration   (accounts)
                                            django-userena
                                                           social-auth

Purpose           15             10         15              15

Popular
Scope     unofficial 5
                    mirror       -5         -5              5
   with templates? If the
Documentation       10           10         15              10
  original had templates,
Tests common fork5would
 this                            0          5               0
       not be needed
Activity          15             10         15              15

Community         25             35         16              26

Modularity        -15            -5         -10             -5

PyPI              15             20         25              25




                                                                         Django Packages Thunderdome
VCS/Hosting       20             20         20              20




                                                                                 @pydanny / @audreyr
License           5              5          5               5

Totals            100            100        101             116
                                      51
Winners: Registration

1. django-social-auth: 116 out of 175 points
2. django-userena: 101 out of 175 points


  Interesting comment from survey:




                                                             Django Packages Thunderdome
  “Site registration sucks and using Twitter, Facebook, or




                                                                     @pydanny / @audreyr
  Google auth is easier”


                             52
django-        Pinax                     django-
  Registration   registration   (accounts)
                                           django-userena
                                                          social-auth

Purpose          15             10         15              15

Scope            5              0          -5              5

Documentation    10             10         15              10

Tests            5              0          5               0

Activity         15             10         15              15

Community        25             35         16              26

Modularity       -15            -5         -10             -5

PyPI             15             5          25              25




                                                                        Django Packages Thunderdome
VCS/Hosting      20             20         20              20




                                                                                @pydanny / @audreyr
License          5              5          5               5

Totals           100            90         101             116
                                     53
Round 4
  Profiles




    54
Contenders: Profiles

Different approaches:
 • django-profiles
 • django-easy-profiles
 • django-userena (registration+profiles)




                                           Django Packages Thunderdome
 • idios



                                                   @pydanny / @audreyr
                   55
django-    django-easy-
        Profiles   profiles   profiles
                                            django-userena idios

Purpose           15         15             10              10

Scope             5          5              -5              5

Documentation     5          10             15              15

Tests             -10        -10            5               5

Activity          0          15             15              15

Community         16         16             16              16

Modularity        -5         -10            -5              20

PyPI              25         5              25              0




                                                                   Django Packages Thunderdome
VCS/Hosting       20         20             20              20




                                                                           @pydanny / @audreyr
License           5          5              5               5

Totals            76         71             101             111
                                     56
django-    django-easy-
        Profiles   profiles   profiles
                                            django-userena idios

Purpose           15         15             10              10

Scope             5          5              -5              5

Documentation     5          10             15              15

Tests             -10        -10            5               5

Activity          0          15             15              15

Community         16         16             16              16

Modularity        -5         -10            -5              20

PyPI              25         5              25              0




                                                                   Django Packages Thunderdome
VCS/Hosting       20         20             20              20




                                                                           @pydanny / @audreyr
License           5          5              5               5

Totals            76         71             101             111
                                     57
Winners: Profiles
1. idios: 111 out of 175 points
2. django-userena: 101 out of 175 points


  Room for improvement:




                                                 Django Packages Thunderdome
      Low point values.
      Few surveyed users knew of a good Django




                                                         @pydanny / @audreyr
      profiles app.
      Some roll their own each time.
                          58
django-    django-easy-
        Profiles   profiles   profiles
                                            django-userena idios

Purpose           15         15             10              10

Scope             5          5              -5              5

Documentation     5          10             15              15

Tests             -10        -10            5               5

Activity          0          15             15              15

Community         16         16             16              16

Modularity        -5         -10            -5              20

PyPI              25         5              25              0




                                                                   Django Packages Thunderdome
VCS/Hosting       20         20             20              20




                                                                           @pydanny / @audreyr
License           5          5              5               5

Totals            76         71             101             111
                                     59
Round 5
  Blogs




   60
Contenders: Blogs

Again, different approaches:
 • biblion
 • django-mingus
 • django-basic-apps (blog part)




                                   Django Packages Thunderdome
 • django-blog-zinnia



                                           @pydanny / @audreyr
                   61
django-basic-    django-blog-
         Blogs   biblion   django-mingus
                                           apps (blog part) zinnia

Purpose          5         10              15               15

Scope            5         5               -5               5

Documentation    -10       -5              -10              10

Tests            -10       5               5                5

Activity         15        10              15               15

Community        15        32              10               35

Modularity       -10       -15             -5               20

PyPI             0         0               0                25




                                                                           Django Packages Thunderdome
VCS/Hosting      20        20              20               20




                                                                                   @pydanny / @audreyr
License          5         5               -15              5

Totals           35        67              30               155
                                  62
django-basic-    django-blog-
         Blogs   biblion   django-mingus
                                           apps (blog part) zinnia

Purpose          5         10              15               15

Scope            5         5               -5               5

Documentation    -10       -5              -10              10

Tests            -10       5               5                5

Activity         15        10              15               15

Community        15        32              10               35

Modularity       -10       -15             -5               20

PyPI             0         0               0                25




                                                                           Django Packages Thunderdome
VCS/Hosting      20        20              20               20




                                                                                   @pydanny / @audreyr
License          5         5               -15              5

Totals           35        67              30               155
                                  63
Winner: Blogs

1. django-blog-zinnia: 155 out of 175 points


  Most points by a landslide.
  So many blog packages exist that this gets buried.




                                                        Django Packages Thunderdome
  Note that biblion is early/pre-alpha. With docs, it




                                                                @pydanny / @audreyr
  could become a promising option for 1 blog per
  profile sites.

                          64
Round 6
  Tagging




    65
Contenders: Tagging

A closer comparison here:
 • django-taggit
 • django-tagging




                            Django Packages Thunderdome
 • django-tagging-ng




                                    @pydanny / @audreyr
                   66
Tagging   django-taggit django-tagging django-tagging-ng

Purpose              15               15          15

Scope                5                5           5

Documentation        15               0           0

Tests                5                0           5

Activity             10               0           5

Community            26               15          12

Modularity           20               20          20

PyPI                 25               25          25




                                                                      Django Packages Thunderdome
VCS/Hosting          20               20          20




                                                                              @pydanny / @audreyr
License              5                5           5

Totals               146              105         112
                                 67
Tagging   django-taggit django-tagging django-tagging-ng

Purpose              15               15          15

Scope                5                5           5

Documentation        15               0           0

Tests                5                0           5

Activity             10               0           5

Community            26               15          12

Modularity           20               20          20

PyPI                 25               25          25




                                                                      Django Packages Thunderdome
VCS/Hosting          20               20          20




                                                                              @pydanny / @audreyr
License              5                5           5

Totals               146              105         112
                                 68
Winner: Tagging

1. django-taggit: 146 out of 175 points


  Sets the bar for the other packages. High points
  for all compared.




                                                     Django Packages Thunderdome
  “Stable API and responsive dev”




                                                             @pydanny / @audreyr
  “Lots of magic under the hood, though”


                            69
Tagging   django-taggit django-tagging django-tagging-ng

Purpose              15               15          15

Scope                5                5           5

Documentation        15               0           0

Tests                5                0           5

Activity             10               0           5

Community            26               15          12

Modularity           20               20          20

PyPI                 25               25          25




                                                                      Django Packages Thunderdome
VCS/Hosting          20               20          20




                                                                              @pydanny / @audreyr
License              5                5           5

Totals               146              105         112
                                 70
Round 7
Database Migrations




        71
Contenders: DB Migrations


 Only 2 good options to even evaluate:
  • South
  • nashvegas




                                         Django Packages Thunderdome
                                                 @pydanny / @audreyr
                     72
Database Migrations   South     nashvegas

Purpose                5         5

Scope                  5         5

Documentation          15        15

Tests                  5         -10

Activity               15        10

Community              30        22

Modularity             20        15

PyPI                   25        30




                                             Django Packages Thunderdome
VCS/Hosting            20        20




                                                     @pydanny / @audreyr
License                0         5

Totals                 140       117
                            73
Database Migrations   South       nashvegas

Purpose                5            5

Scope                  5            5

Documentation          15           15

Tests                  5            -10

Activity               15           10

Community              If nashvegas 22 tests plus one
                       11           had
Modularity
                       other higher 15
                       20
                                    sub-score, it could
                                 have won!
PyPI                   25           30




                                                          Django Packages Thunderdome
VCS/Hosting            20           20




                                                                  @pydanny / @audreyr
License                0            5

Totals                 140          117
                            74
Winners: DB Migrations
1. South: 140 out of 175 points
2. nashvegas: 117 out of 175 points


  “I’m looking forward to someone else cha#enging this
  space but South is by far the best that we currently have”




                                                               Django Packages Thunderdome
  “South is the de facto standard...sti# run into more




                                                                       @pydanny / @audreyr
  %iction on managing DB changes than I care for, but it’s
  a lot better than doing without.”
                             75
Database Migrations   South     nashvegas

Purpose                5         5

Scope                  5         5

Documentation          15        15

Tests                  5         -10

Activity               15        10

Community              30        22

Modularity             20        15

PyPI                   25        30




                                             Django Packages Thunderdome
VCS/Hosting            20        20




                                                     @pydanny / @audreyr
License                0         5

Totals                 140       117
                            76
Best of the best
  Who got the most points?




             77
Leaderboard
1. djangorestframework: 162 points
2. django-tastypie: 155 points
   django-blog-zinnia: 155 points (tie)
3. django-taggit: 146 points
4. South: 140 points
5. django-debug-toolbar: 120 points
6. nashvegas: 117 points




                                          Django Packages Thunderdome
7. django-social-auth: 116 points




                                                  @pydanny / @audreyr
8. django-extensions: 115 points
9. django-tagging-ng: 112 points
10. idios: 111 points
                       78
Honorable mentions
   What the surveyed users said




                79
They also can’t live without

 • celery & django-celery with redis
 • django-haystack with pysolr, sometimes
   whoosh
 • django-fixture-generator, django-sorting,




                                              Django Packages Thunderdome
   django-pagination, django-uni-form,
   django-floppy-forms




                                                      @pydanny / @audreyr
                     80
Summary
The key to a prize-winning Django package




                   81
Judging Report



• http://bit.ly/django-thunderdome-2011
• A detailed report is available (PDF)




                                          Django Packages Thunderdome
                                                  @pydanny / @audreyr
                    82
Score high on the base criteria
 •   Purpose (0 to +15)           •   Community (0 to +35)

 •   Scope (-5 to +5)             •   Modularity (-20 to +20)

 •   Docs (-50 to +15)            •   PyPI Availability (0 to +30)

 •   Tests (-50 to +15)           •   VCS/Hosting (-20 to +20)

 •   Activity (0 to +15)          •   License (-15 to +5)

                    Maximum Score: +175

                             83
Beyond the base criteria


•   Run code through PEP8 checker

•   Aim for 100% test coverage

•   Elegant, clean, explicit ways of doing things

    •




                                                    Django Packages Thunderdome
        Minimize magical code




                                                            @pydanny / @audreyr
                          84
How to get more users for
      your package
Use djangopackages.com to find similar packages
 • Add a grid (if needed)
 • Add your package to the grid
 • Add grid features




                                                 Django Packages Thunderdome
 • Make yours better than its competitors



                                                         @pydanny / @audreyr
                      85
• Tweet your self-calculated score at
    @pydanny and @audreyr
• We’ll evaluate it ourselves




                                                 Django Packages Thunderdome
• If it ranks high, we’ll help spread the word




                                                         @pydanny / @audreyr
•   (conference bandwidth-permitting)




                                 86
Thank you

• Twitter: @pydanny & @audreyr

• PyLadies meetup/party: Wed 8pm
  • http://pyladies.com/blog/pyladies-




                                         Django Packages Thunderdome
    meetup-at-djangocon/




                                                 @pydanny / @audreyr
• PyLadies open space: Thurs 1-1:30pm
                    87

More Related Content

What's hot

Python Ecosystem for Beginners - PyCon Uruguay 2013
Python Ecosystem for Beginners - PyCon Uruguay 2013Python Ecosystem for Beginners - PyCon Uruguay 2013
Python Ecosystem for Beginners - PyCon Uruguay 2013Hannes Hapke
 
Jupyter: A Gateway for Scientific Collaboration and Education
Jupyter: A Gateway for Scientific Collaboration and EducationJupyter: A Gateway for Scientific Collaboration and Education
Jupyter: A Gateway for Scientific Collaboration and EducationCarol Willing
 
Advanced Django Forms Usage
Advanced Django Forms UsageAdvanced Django Forms Usage
Advanced Django Forms UsageDaniel Greenfeld
 
JupyterHub: Learning at Scale
JupyterHub: Learning at ScaleJupyterHub: Learning at Scale
JupyterHub: Learning at ScaleCarol Willing
 
JupyterHub - A "Thing Explainer" Overview
JupyterHub - A "Thing Explainer" OverviewJupyterHub - A "Thing Explainer" Overview
JupyterHub - A "Thing Explainer" OverviewCarol Willing
 
Learning Python: Tips from Cognitive Science, Jupyter, and Community
Learning Python: Tips from Cognitive Science, Jupyter, and CommunityLearning Python: Tips from Cognitive Science, Jupyter, and Community
Learning Python: Tips from Cognitive Science, Jupyter, and CommunityCarol Willing
 
JupyterHub - A "Thing Explainer" Overview
JupyterHub - A "Thing Explainer" OverviewJupyterHub - A "Thing Explainer" Overview
JupyterHub - A "Thing Explainer" OverviewCarol Willing
 
Declare independence from your it department sysadmin skills for symfony dev...
Declare independence from your it department  sysadmin skills for symfony dev...Declare independence from your it department  sysadmin skills for symfony dev...
Declare independence from your it department sysadmin skills for symfony dev...Pablo Godel
 
STEAM Workshops with Binder and JupyterHub
STEAM Workshops with Binder and JupyterHubSTEAM Workshops with Binder and JupyterHub
STEAM Workshops with Binder and JupyterHubCarol Willing
 
PyData: Past, Present Future (PyData SV 2014 Keynote)
PyData: Past, Present Future (PyData SV 2014 Keynote)PyData: Past, Present Future (PyData SV 2014 Keynote)
PyData: Past, Present Future (PyData SV 2014 Keynote)Peter Wang
 
Hactoberfest presentation
Hactoberfest presentationHactoberfest presentation
Hactoberfest presentationAITIKDANDAPAT
 
"Building a Resilient Cloud Infrastructure. From Scratch." - Cloud East, 28 J...
"Building a Resilient Cloud Infrastructure. From Scratch." - Cloud East, 28 J..."Building a Resilient Cloud Infrastructure. From Scratch." - Cloud East, 28 J...
"Building a Resilient Cloud Infrastructure. From Scratch." - Cloud East, 28 J...Jeremy Jarvis
 
The Puppet Community: Current State and Future Plans - PuppetConf 2014
The Puppet Community: Current State and Future Plans - PuppetConf 2014The Puppet Community: Current State and Future Plans - PuppetConf 2014
The Puppet Community: Current State and Future Plans - PuppetConf 2014Puppet
 
State of the Puppet Community: PuppetConf 2014
State of the Puppet Community: PuppetConf 2014State of the Puppet Community: PuppetConf 2014
State of the Puppet Community: PuppetConf 2014Dawn Foster
 
Write a better FM
Write a better FMWrite a better FM
Write a better FMRich Bowen
 
GSoC: How to get prepared and write a good proposal (or how to start contribu...
GSoC: How to get prepared and write a good proposal (or how to start contribu...GSoC: How to get prepared and write a good proposal (or how to start contribu...
GSoC: How to get prepared and write a good proposal (or how to start contribu...João Paulo Rechi Vita
 

What's hot (19)

Doonish
DoonishDoonish
Doonish
 
Python Ecosystem for Beginners - PyCon Uruguay 2013
Python Ecosystem for Beginners - PyCon Uruguay 2013Python Ecosystem for Beginners - PyCon Uruguay 2013
Python Ecosystem for Beginners - PyCon Uruguay 2013
 
Jupyter: A Gateway for Scientific Collaboration and Education
Jupyter: A Gateway for Scientific Collaboration and EducationJupyter: A Gateway for Scientific Collaboration and Education
Jupyter: A Gateway for Scientific Collaboration and Education
 
Advanced Django Forms Usage
Advanced Django Forms UsageAdvanced Django Forms Usage
Advanced Django Forms Usage
 
JupyterHub: Learning at Scale
JupyterHub: Learning at ScaleJupyterHub: Learning at Scale
JupyterHub: Learning at Scale
 
JupyterHub - A "Thing Explainer" Overview
JupyterHub - A "Thing Explainer" OverviewJupyterHub - A "Thing Explainer" Overview
JupyterHub - A "Thing Explainer" Overview
 
Learning Python: Tips from Cognitive Science, Jupyter, and Community
Learning Python: Tips from Cognitive Science, Jupyter, and CommunityLearning Python: Tips from Cognitive Science, Jupyter, and Community
Learning Python: Tips from Cognitive Science, Jupyter, and Community
 
JupyterHub - A "Thing Explainer" Overview
JupyterHub - A "Thing Explainer" OverviewJupyterHub - A "Thing Explainer" Overview
JupyterHub - A "Thing Explainer" Overview
 
Declare independence from your it department sysadmin skills for symfony dev...
Declare independence from your it department  sysadmin skills for symfony dev...Declare independence from your it department  sysadmin skills for symfony dev...
Declare independence from your it department sysadmin skills for symfony dev...
 
STEAM Workshops with Binder and JupyterHub
STEAM Workshops with Binder and JupyterHubSTEAM Workshops with Binder and JupyterHub
STEAM Workshops with Binder and JupyterHub
 
PyData: Past, Present Future (PyData SV 2014 Keynote)
PyData: Past, Present Future (PyData SV 2014 Keynote)PyData: Past, Present Future (PyData SV 2014 Keynote)
PyData: Past, Present Future (PyData SV 2014 Keynote)
 
Intro to Python
Intro to PythonIntro to Python
Intro to Python
 
Hactoberfest presentation
Hactoberfest presentationHactoberfest presentation
Hactoberfest presentation
 
"Building a Resilient Cloud Infrastructure. From Scratch." - Cloud East, 28 J...
"Building a Resilient Cloud Infrastructure. From Scratch." - Cloud East, 28 J..."Building a Resilient Cloud Infrastructure. From Scratch." - Cloud East, 28 J...
"Building a Resilient Cloud Infrastructure. From Scratch." - Cloud East, 28 J...
 
The Puppet Community: Current State and Future Plans - PuppetConf 2014
The Puppet Community: Current State and Future Plans - PuppetConf 2014The Puppet Community: Current State and Future Plans - PuppetConf 2014
The Puppet Community: Current State and Future Plans - PuppetConf 2014
 
gsoc
gsocgsoc
gsoc
 
State of the Puppet Community: PuppetConf 2014
State of the Puppet Community: PuppetConf 2014State of the Puppet Community: PuppetConf 2014
State of the Puppet Community: PuppetConf 2014
 
Write a better FM
Write a better FMWrite a better FM
Write a better FM
 
GSoC: How to get prepared and write a good proposal (or how to start contribu...
GSoC: How to get prepared and write a good proposal (or how to start contribu...GSoC: How to get prepared and write a good proposal (or how to start contribu...
GSoC: How to get prepared and write a good proposal (or how to start contribu...
 

Similar to Django Package Thunderdome by Audrey Roy & Daniel Greenfeld

Python Tricks That You Can't Live Without
Python Tricks That You Can't Live WithoutPython Tricks That You Can't Live Without
Python Tricks That You Can't Live WithoutAudrey Roy
 
Advanced Django forms usage
Advanced Django forms usageAdvanced Django forms usage
Advanced Django forms usagemiguel_araujo
 
Solving real world data problems with Jerakia
Solving real world data problems with JerakiaSolving real world data problems with Jerakia
Solving real world data problems with JerakiaCraig Dunn
 
Intro to Python for C# Developers
Intro to Python for C# DevelopersIntro to Python for C# Developers
Intro to Python for C# DevelopersSarah Dutkiewicz
 
How to be a contributor to Drupal by Drupalista.me
How to be a contributor to Drupal by Drupalista.meHow to be a contributor to Drupal by Drupalista.me
How to be a contributor to Drupal by Drupalista.meJose palala
 
Implementing real time web applications with Django
Implementing real time web applications with DjangoImplementing real time web applications with Django
Implementing real time web applications with DjangoKristian Houlberg Øllegaard
 
Presentation distro recipes-2013
Presentation distro recipes-2013Presentation distro recipes-2013
Presentation distro recipes-2013olberger
 
Distro Recipes 2013 : Contribution of RDF metadata for traceability among pro...
Distro Recipes 2013 : Contribution of RDF metadata for traceability among pro...Distro Recipes 2013 : Contribution of RDF metadata for traceability among pro...
Distro Recipes 2013 : Contribution of RDF metadata for traceability among pro...Anne Nicolas
 
13 practical tips for writing secure golang applications
13 practical tips for writing secure golang applications13 practical tips for writing secure golang applications
13 practical tips for writing secure golang applicationsKarthik Gaekwad
 
Two scoops of django Introduction
Two scoops of django IntroductionTwo scoops of django Introduction
Two scoops of django Introductionflywindy
 
Keep it out - How to keep Drupal Secure
Keep it out - How to keep Drupal SecureKeep it out - How to keep Drupal Secure
Keep it out - How to keep Drupal SecureAlex Burrows
 
Django Third party packages
Django Third party packagesDjango Third party packages
Django Third party packagesAndy Dai
 
Effectively using Open Source with conda
Effectively using Open Source with condaEffectively using Open Source with conda
Effectively using Open Source with condaTravis Oliphant
 
OSDC 2016 - Continous Integration in Data Centers - Further 3 Years later by ...
OSDC 2016 - Continous Integration in Data Centers - Further 3 Years later by ...OSDC 2016 - Continous Integration in Data Centers - Further 3 Years later by ...
OSDC 2016 - Continous Integration in Data Centers - Further 3 Years later by ...NETWAYS
 
Contributing to pandas (Korean)
Contributing to pandas (Korean)Contributing to pandas (Korean)
Contributing to pandas (Korean)Younggun Kim
 
Building Web Apps in Ratpack
Building Web Apps in RatpackBuilding Web Apps in Ratpack
Building Web Apps in RatpackDaniel Woods
 
Everything you wanted to know about making an R package but were afraid to ask
Everything you wanted to know about making an R package but were afraid to askEverything you wanted to know about making an R package but were afraid to ask
Everything you wanted to know about making an R package but were afraid to askEmily Robinson
 
Django: Beyond Basics
Django: Beyond BasicsDjango: Beyond Basics
Django: Beyond Basicsarunvr
 

Similar to Django Package Thunderdome by Audrey Roy & Daniel Greenfeld (20)

Python Tricks That You Can't Live Without
Python Tricks That You Can't Live WithoutPython Tricks That You Can't Live Without
Python Tricks That You Can't Live Without
 
Python x Django
Python x DjangoPython x Django
Python x Django
 
Advanced Django forms usage
Advanced Django forms usageAdvanced Django forms usage
Advanced Django forms usage
 
Solving real world data problems with Jerakia
Solving real world data problems with JerakiaSolving real world data problems with Jerakia
Solving real world data problems with Jerakia
 
Intro to Python for C# Developers
Intro to Python for C# DevelopersIntro to Python for C# Developers
Intro to Python for C# Developers
 
How to be a contributor to Drupal by Drupalista.me
How to be a contributor to Drupal by Drupalista.meHow to be a contributor to Drupal by Drupalista.me
How to be a contributor to Drupal by Drupalista.me
 
Introduce Python
Introduce PythonIntroduce Python
Introduce Python
 
Implementing real time web applications with Django
Implementing real time web applications with DjangoImplementing real time web applications with Django
Implementing real time web applications with Django
 
Presentation distro recipes-2013
Presentation distro recipes-2013Presentation distro recipes-2013
Presentation distro recipes-2013
 
Distro Recipes 2013 : Contribution of RDF metadata for traceability among pro...
Distro Recipes 2013 : Contribution of RDF metadata for traceability among pro...Distro Recipes 2013 : Contribution of RDF metadata for traceability among pro...
Distro Recipes 2013 : Contribution of RDF metadata for traceability among pro...
 
13 practical tips for writing secure golang applications
13 practical tips for writing secure golang applications13 practical tips for writing secure golang applications
13 practical tips for writing secure golang applications
 
Two scoops of django Introduction
Two scoops of django IntroductionTwo scoops of django Introduction
Two scoops of django Introduction
 
Keep it out - How to keep Drupal Secure
Keep it out - How to keep Drupal SecureKeep it out - How to keep Drupal Secure
Keep it out - How to keep Drupal Secure
 
Django Third party packages
Django Third party packagesDjango Third party packages
Django Third party packages
 
Effectively using Open Source with conda
Effectively using Open Source with condaEffectively using Open Source with conda
Effectively using Open Source with conda
 
OSDC 2016 - Continous Integration in Data Centers - Further 3 Years later by ...
OSDC 2016 - Continous Integration in Data Centers - Further 3 Years later by ...OSDC 2016 - Continous Integration in Data Centers - Further 3 Years later by ...
OSDC 2016 - Continous Integration in Data Centers - Further 3 Years later by ...
 
Contributing to pandas (Korean)
Contributing to pandas (Korean)Contributing to pandas (Korean)
Contributing to pandas (Korean)
 
Building Web Apps in Ratpack
Building Web Apps in RatpackBuilding Web Apps in Ratpack
Building Web Apps in Ratpack
 
Everything you wanted to know about making an R package but were afraid to ask
Everything you wanted to know about making an R package but were afraid to askEverything you wanted to know about making an R package but were afraid to ask
Everything you wanted to know about making an R package but were afraid to ask
 
Django: Beyond Basics
Django: Beyond BasicsDjango: Beyond Basics
Django: Beyond Basics
 

Recently uploaded

Keep Your Finger on the Pulse of Your Building's Performance with IES Live
Keep Your Finger on the Pulse of Your Building's Performance with IES LiveKeep Your Finger on the Pulse of Your Building's Performance with IES Live
Keep Your Finger on the Pulse of Your Building's Performance with IES LiveIES VE
 
UiPath Studio Web workshop series - Day 4
UiPath Studio Web workshop series - Day 4UiPath Studio Web workshop series - Day 4
UiPath Studio Web workshop series - Day 4DianaGray10
 
CyberSecurity - Computers In Libraries 2024
CyberSecurity - Computers In Libraries 2024CyberSecurity - Computers In Libraries 2024
CyberSecurity - Computers In Libraries 2024Brian Pichman
 
Introduction - IPLOOK NETWORKS CO., LTD.
Introduction - IPLOOK NETWORKS CO., LTD.Introduction - IPLOOK NETWORKS CO., LTD.
Introduction - IPLOOK NETWORKS CO., LTD.IPLOOK Networks
 
AI Workshops at Computers In Libraries 2024
AI Workshops at Computers In Libraries 2024AI Workshops at Computers In Libraries 2024
AI Workshops at Computers In Libraries 2024Brian Pichman
 
Emil Eifrem at GraphSummit Copenhagen 2024 - The Art of the Possible.pptx
Emil Eifrem at GraphSummit Copenhagen 2024 - The Art of the Possible.pptxEmil Eifrem at GraphSummit Copenhagen 2024 - The Art of the Possible.pptx
Emil Eifrem at GraphSummit Copenhagen 2024 - The Art of the Possible.pptxNeo4j
 
How to release an Open Source Dataweave Library
How to release an Open Source Dataweave LibraryHow to release an Open Source Dataweave Library
How to release an Open Source Dataweave Libraryshyamraj55
 
Technical SEO for Improved Accessibility WTS FEST
Technical SEO for Improved Accessibility  WTS FESTTechnical SEO for Improved Accessibility  WTS FEST
Technical SEO for Improved Accessibility WTS FESTBillieHyde
 
Explore the UiPath Community and ways you can benefit on your journey to auto...
Explore the UiPath Community and ways you can benefit on your journey to auto...Explore the UiPath Community and ways you can benefit on your journey to auto...
Explore the UiPath Community and ways you can benefit on your journey to auto...DianaGray10
 
Top 10 Squarespace Development Companies
Top 10 Squarespace Development CompaniesTop 10 Squarespace Development Companies
Top 10 Squarespace Development CompaniesTopCSSGallery
 
The Zero-ETL Approach: Enhancing Data Agility and Insight
The Zero-ETL Approach: Enhancing Data Agility and InsightThe Zero-ETL Approach: Enhancing Data Agility and Insight
The Zero-ETL Approach: Enhancing Data Agility and InsightSafe Software
 
Stobox 4: Revolutionizing Investment in Real-World Assets Through Tokenization
Stobox 4: Revolutionizing Investment in Real-World Assets Through TokenizationStobox 4: Revolutionizing Investment in Real-World Assets Through Tokenization
Stobox 4: Revolutionizing Investment in Real-World Assets Through TokenizationStobox
 
Webinar: The Art of Prioritizing Your Product Roadmap by AWS Sr PM - Tech
Webinar: The Art of Prioritizing Your Product Roadmap by AWS Sr PM - TechWebinar: The Art of Prioritizing Your Product Roadmap by AWS Sr PM - Tech
Webinar: The Art of Prioritizing Your Product Roadmap by AWS Sr PM - TechProduct School
 
Trailblazer Community - Flows Workshop (Session 2)
Trailblazer Community - Flows Workshop (Session 2)Trailblazer Community - Flows Workshop (Session 2)
Trailblazer Community - Flows Workshop (Session 2)Muhammad Tiham Siddiqui
 
March Patch Tuesday
March Patch TuesdayMarch Patch Tuesday
March Patch TuesdayIvanti
 
LF Energy Webinar - Unveiling OpenEEMeter 4.0
LF Energy Webinar - Unveiling OpenEEMeter 4.0LF Energy Webinar - Unveiling OpenEEMeter 4.0
LF Energy Webinar - Unveiling OpenEEMeter 4.0DanBrown980551
 
Graphene Quantum Dots-Based Composites for Biomedical Applications
Graphene Quantum Dots-Based Composites for  Biomedical ApplicationsGraphene Quantum Dots-Based Composites for  Biomedical Applications
Graphene Quantum Dots-Based Composites for Biomedical Applicationsnooralam814309
 
How to become a GDSC Lead GDSC MI AOE.pptx
How to become a GDSC Lead GDSC MI AOE.pptxHow to become a GDSC Lead GDSC MI AOE.pptx
How to become a GDSC Lead GDSC MI AOE.pptxKaustubhBhavsar6
 
From the origin to the future of Open Source model and business
From the origin to the future of  Open Source model and businessFrom the origin to the future of  Open Source model and business
From the origin to the future of Open Source model and businessFrancesco Corti
 
Extra-120324-Visite-Entreprise-icare.pdf
Extra-120324-Visite-Entreprise-icare.pdfExtra-120324-Visite-Entreprise-icare.pdf
Extra-120324-Visite-Entreprise-icare.pdfInfopole1
 

Recently uploaded (20)

Keep Your Finger on the Pulse of Your Building's Performance with IES Live
Keep Your Finger on the Pulse of Your Building's Performance with IES LiveKeep Your Finger on the Pulse of Your Building's Performance with IES Live
Keep Your Finger on the Pulse of Your Building's Performance with IES Live
 
UiPath Studio Web workshop series - Day 4
UiPath Studio Web workshop series - Day 4UiPath Studio Web workshop series - Day 4
UiPath Studio Web workshop series - Day 4
 
CyberSecurity - Computers In Libraries 2024
CyberSecurity - Computers In Libraries 2024CyberSecurity - Computers In Libraries 2024
CyberSecurity - Computers In Libraries 2024
 
Introduction - IPLOOK NETWORKS CO., LTD.
Introduction - IPLOOK NETWORKS CO., LTD.Introduction - IPLOOK NETWORKS CO., LTD.
Introduction - IPLOOK NETWORKS CO., LTD.
 
AI Workshops at Computers In Libraries 2024
AI Workshops at Computers In Libraries 2024AI Workshops at Computers In Libraries 2024
AI Workshops at Computers In Libraries 2024
 
Emil Eifrem at GraphSummit Copenhagen 2024 - The Art of the Possible.pptx
Emil Eifrem at GraphSummit Copenhagen 2024 - The Art of the Possible.pptxEmil Eifrem at GraphSummit Copenhagen 2024 - The Art of the Possible.pptx
Emil Eifrem at GraphSummit Copenhagen 2024 - The Art of the Possible.pptx
 
How to release an Open Source Dataweave Library
How to release an Open Source Dataweave LibraryHow to release an Open Source Dataweave Library
How to release an Open Source Dataweave Library
 
Technical SEO for Improved Accessibility WTS FEST
Technical SEO for Improved Accessibility  WTS FESTTechnical SEO for Improved Accessibility  WTS FEST
Technical SEO for Improved Accessibility WTS FEST
 
Explore the UiPath Community and ways you can benefit on your journey to auto...
Explore the UiPath Community and ways you can benefit on your journey to auto...Explore the UiPath Community and ways you can benefit on your journey to auto...
Explore the UiPath Community and ways you can benefit on your journey to auto...
 
Top 10 Squarespace Development Companies
Top 10 Squarespace Development CompaniesTop 10 Squarespace Development Companies
Top 10 Squarespace Development Companies
 
The Zero-ETL Approach: Enhancing Data Agility and Insight
The Zero-ETL Approach: Enhancing Data Agility and InsightThe Zero-ETL Approach: Enhancing Data Agility and Insight
The Zero-ETL Approach: Enhancing Data Agility and Insight
 
Stobox 4: Revolutionizing Investment in Real-World Assets Through Tokenization
Stobox 4: Revolutionizing Investment in Real-World Assets Through TokenizationStobox 4: Revolutionizing Investment in Real-World Assets Through Tokenization
Stobox 4: Revolutionizing Investment in Real-World Assets Through Tokenization
 
Webinar: The Art of Prioritizing Your Product Roadmap by AWS Sr PM - Tech
Webinar: The Art of Prioritizing Your Product Roadmap by AWS Sr PM - TechWebinar: The Art of Prioritizing Your Product Roadmap by AWS Sr PM - Tech
Webinar: The Art of Prioritizing Your Product Roadmap by AWS Sr PM - Tech
 
Trailblazer Community - Flows Workshop (Session 2)
Trailblazer Community - Flows Workshop (Session 2)Trailblazer Community - Flows Workshop (Session 2)
Trailblazer Community - Flows Workshop (Session 2)
 
March Patch Tuesday
March Patch TuesdayMarch Patch Tuesday
March Patch Tuesday
 
LF Energy Webinar - Unveiling OpenEEMeter 4.0
LF Energy Webinar - Unveiling OpenEEMeter 4.0LF Energy Webinar - Unveiling OpenEEMeter 4.0
LF Energy Webinar - Unveiling OpenEEMeter 4.0
 
Graphene Quantum Dots-Based Composites for Biomedical Applications
Graphene Quantum Dots-Based Composites for  Biomedical ApplicationsGraphene Quantum Dots-Based Composites for  Biomedical Applications
Graphene Quantum Dots-Based Composites for Biomedical Applications
 
How to become a GDSC Lead GDSC MI AOE.pptx
How to become a GDSC Lead GDSC MI AOE.pptxHow to become a GDSC Lead GDSC MI AOE.pptx
How to become a GDSC Lead GDSC MI AOE.pptx
 
From the origin to the future of Open Source model and business
From the origin to the future of  Open Source model and businessFrom the origin to the future of  Open Source model and business
From the origin to the future of Open Source model and business
 
Extra-120324-Visite-Entreprise-icare.pdf
Extra-120324-Visite-Entreprise-icare.pdfExtra-120324-Visite-Entreprise-icare.pdf
Extra-120324-Visite-Entreprise-icare.pdf
 

Django Package Thunderdome by Audrey Roy & Daniel Greenfeld

  • 1. by Audrey Roy and Daniel Greenfeld @audreyr / @pydanny 1
  • 2. Audrey Roy • Python & Django developer for Cartwheel Web / RevSys • MIT ’04, EE/CS • PyLadies, djangopackages.com, OpenComparison Django Packages Thunderdome (Packaginator) • @pydanny / @audreyr Fiancée of Daniel Greenfeld (pydanny) http://www.flickr.com/photos/chrisjrn/6102009780/ 2
  • 3. Daniel Greenfeld • Python & Django developer for Cartwheel Web / RevSys • Learned Python at NASA • djangopackages.com, OpenComparison (Packaginator), django-uni-form Django Packages Thunderdome http://www.flickr.com/photos/pydanny/4442245488/ • Fiancé of Audrey Roy (audreyr) @pydanny / @audreyr 3
  • 4. A Year+ of Package Comparisons • We launched djangopackages.com July 2010 • We’ve seen the Django package Django Packages Thunderdome ecosystem grow and change @pydanny / @audreyr 4
  • 5. Why a Thunderdome? • Pattern: you hear about the “best” package for X, and you use it • Comparison grids on djangopackages.com help • but not 100% effective/objective • Why not a Consumer Reports-style analysis? Django Packages Thunderdome • This is what a Django community manager @pydanny / @audreyr would do 5
  • 6. Our review criteria What makes your package worthy? 6
  • 7. 1. Purpose • The name tells you what it does • “django-” prefix says it’s a Django package • Even better if coupled with a related Python package Django Packages Thunderdome • The package addresses a real need @pydanny / @audreyr 7
  • 8. Scoring: Purpose Range: 0 to +15 • Descriptive name: +5 • “django-” prefix: +5 • Incredibly useful purpose: +5 Django Packages Thunderdome @pydanny / @audreyr 8
  • 9. 2. Scope • Small scope, narrow focus is better • Application logic will be tighter • Patching/replacing the app will be Django Packages Thunderdome easier @pydanny / @audreyr 9
  • 10. Scoring: Scope Range: -5 to +5 • Does one thing: +5 • Does two things: 0 • Does three or more things: -5 Django Packages Thunderdome @pydanny / @audreyr 10
  • 11. 3. Documentation • No docs means your app is pre-alpha • Doc strings do not suffice as documentation • If there are dependencies, they should be in your docs Django Packages Thunderdome • Installation steps should be bulletproof @pydanny / @audreyr 11
  • 12. Scoring: Docs Range: -5o to +15 • Docs folder in RST/Sphinx format: +10 • Displayed on http://rtfd.org: +5 • Lousy Docs (wiki for example): -5 to -20 • Only README + docstrings: -10 Django Packages Thunderdome • No docs: -50 @pydanny / @audreyr 12
  • 13. 4. Testing • Tests improve reliability • Tests make it easy to advance Python/ Django versions • Tests make it easier for others to Django Packages Thunderdome contribute effectively @pydanny / @audreyr 13
  • 14. Scoring: Tests Range: -50 to +15 • Public Jenkins site: +5 • django_coverage/coverage.py: +5 • Well done tests: +5 • No Tests: -10 Django Packages Thunderdome • Placeholder tests: -50 @pydanny / @audreyr 14
  • 15. 5. Activity • When was the last commit? • How frequent are commits? • Are there periodic version updates? Django Packages Thunderdome @pydanny / @audreyr 15
  • 16. Scoring: Activity Range: 0 to +15 • Last commit up to 3 months ago: +15 • Last commit up to 6 months ago: +10 • Last commit up to 1 year ago: +5 Django Packages Thunderdome @pydanny / @audreyr 16
  • 17. 6. Community • Active community leader(s) • How many people are contributing? • Proper attribution of authors? • CONTRIBUTORS.txt? Django Packages Thunderdome • README @pydanny / @audreyr 17
  • 18. Scoring: Community Range: 0 to +35 • Active community leader: +10 • Lots of divergent forks? Then no • Number of contributors = # of points • Maximum of 20 points Django Packages Thunderdome • Proper attribution: +5 @pydanny / @audreyr 18
  • 19. 7. Modularity • “Pluggability” • Installation should be minimally invasive • Do not confuse modularity with over Django Packages Thunderdome engineering @pydanny / @audreyr 19
  • 20. Scoring: Modularity Range: -20 t0 +20 • Just add to up to these things: • INSTALLED_APPS • MIDDLEWARE • urls.py Django Packages Thunderdome • models.py in a few cases @pydanny / @audreyr • A few custom settings +20 20
  • 21. Scoring: Modularity • Having to write your own custom code/ backends from scratch • Having to write your own templates • Having to study the code to make it work Django Packages Thunderdome • More framework than pluggable @pydanny / @audreyr -5 for any of these violations 21
  • 22. 8. Availability on PyPI • Actually on PyPI • Latest release on PyPI • Should not have to go to repo for working version Django Packages Thunderdome • Proper version numbers @pydanny / @audreyr 22
  • 23. Scoring: PyPI Availability Range: 0 to +30 • Latest release download link on PyPI: +15 • Latest stable release +5 • Historical versions kept on PyPI: +5 Django Packages Thunderdome • Good versioning scheme: +5 @pydanny / @audreyr 23
  • 24. 9. VCS/Hosting • Great: Github or BitBucket • Okay: Launchpad or SourceForge • Outdated: Google Project Hosting Django Packages Thunderdome • Poor: Your own site @pydanny / @audreyr 24
  • 25. Scoring: VCS/Hosting Range: -20 t0 +20 • Github or BitBucket: +20 • Launchpad or SourceForge: +5 • Google Project Hosting: +0 Django Packages Thunderdome • Hosting your own VCS: -20 @pydanny / @audreyr 25
  • 26. 10. License • You need a license • Companies prefer BSD or MIT licenses • http://opensource.org/licenses/category Django Packages Thunderdome @pydanny / @audreyr 26
  • 27. Scoring: License Range: -15 to +5 • BSD or MIT license: +5 • Any other formal license: 0 • Custom license: -5 to -15 Django Packages Thunderdome • No license: -15 @pydanny / @audreyr 27
  • 29. A quick warning • We’re just kidding about the fighting • Friendly, “constructive criticism” • Use our feedback to help improve your favorite package Django Packages Thunderdome • Think of us as your friendly Django @pydanny / @audreyr community managers (during the talk) 29
  • 30. How packages were chosen for this • We sent out a survey and chose the: ★ most commonly-used packages ★ most interesting packages Django Packages Thunderdome • Not direct one-to-one comparisons @pydanny / @audreyr 30
  • 32. Contenders: API Creation They’re all a little different: • django-piston • django-tastypie • djangorestframework Django Packages Thunderdome • django-xmlrpc @pydanny / @audreyr 32
  • 33. django- django- djangorestframe django- API Creation piston tastypie work xmlrpc Purpose 10 10 10 15 Scope 5 5 5 5 Documentation -10 15 15 -10 Tests 5 10 15 -10 Activity 0 15 15 5 Community 5 30 27 6 Modularity -10 20 20 -5 PyPI 20 25 30 25 Django Packages Thunderdome VCS/Hosting 20 20 20 20 @pydanny / @audreyr License 5 5 5 5 Totals 50 155 162 56 33
  • 34. django- django- djangorestframe django- API Creation piston tastypie work xmlrpc Purpose 10 10 10 15 Scope 5 5 5 5 Documentation -10 15 15 -10 Tests 5 10 10 -10 Activity 0 15 15 5 Community 5 30 27 6 Modularity -10 20 -5 -5 PyPI 20 25 30 25 Django Packages Thunderdome VCS/Hosting 20 20 20 20 @pydanny / @audreyr License 5 5 5 5 Totals 50 155 162 56 34
  • 35. django- django- djangorestframe django- API Creation piston tastypie work xmlrpc Purpose 10 10 10 15 Scope 5 5 5 5 Documentation -10 15 15 -10 Tests 5 10 15 -10 Activity 0 15 15 5 Community 5 30 27 6 Modularity -10 20 -5 -5 PyPI 20 25 30 25 Django Packages Thunderdome VCS/Hosting 20 20 20 20 @pydanny / @audreyr License 5 5 5 5 Totals 50 155 162 56 35
  • 36. django- django- djangorestframe django- API Creation piston tastypie work xmlrpc Purpose 10 10 10 15 Scope 5 5 5 5 Documentation -10 15 15 -10 Tests 5 10 15 -10 Activity 0 15 15 5 Community 5 30 27 6 Modularity PyPI Jenkins!!! -10 20 20 25 20 30 -5 25 Django Packages Thunderdome http://jenkins.tibold.nl/job/djangorestframework/ VCS/Hosting 20 20 20 20 @pydanny / @audreyr License 5 5 5 5 Totals 50 155 162 56 36
  • 37. django- django- djangorestframe django- API Creation piston tastypie work xmlrpc Purpose 10 10 10 15 Scope 5 5 5 5 Documentation -10 15 15 -10 Tests 5 10 15 -10 Activity 0 15 Activity 15 5 Community Modularity 5 -10 30 20 Community 27 20 6 -5 PyPI 20 25 30 25 Django Packages Thunderdome VCS/Hosting 20 20 20 20 @pydanny / @audreyr License 5 5 5 5 Totals 50 155 162 56 37
  • 38. Winners: API Creation 1. djangorestframework: 162 out of 175 points 2. django-tastypie: 155 out of 175 points Django Packages Thunderdome @pydanny / @audreyr 38
  • 39. django- django- djangorestframe django- API Creation piston tastypie work xmlrpc Purpose 10 10 10 15 Scope 5 5 5 5 Documentation -10 15 15 -10 Tests 5 10 15 -10 Activity 0 15 15 5 Community 5 30 27 6 Modularity -10 20 20 -5 PyPI 20 25 30 25 Django Packages Thunderdome VCS/Hosting 20 20 20 20 @pydanny / @audreyr License 5 5 5 5 Totals 50 155 162 56 39
  • 41. Contenders: Fundamentals 2 utilities: • django-debug-toolbar • django-coverage 2 boilerplate-style “must need” pieces Django Packages Thunderdome • django-extensions @pydanny / @audreyr • Pinax 41
  • 42. django- django- django- Fundamentals debug-toolbar coverage extensions Pinax Purpose 15 15 15 10 Scope 5 5 -5 -5 Documentation -10 -10 15 10 Tests -10 -10 0 0 Activity 15 15 15 10 Community 35 25 30 35 Modularity 20 20 -10 -5 PyPI 25 25 30 20 Django Packages Thunderdome VCS/Hosting 20 20 20 20 @pydanny / @audreyr License 5 0 5 5 Totals 120 105 115 100 42
  • 43. django- django- django- Fundamentals debug-toolbar coverage extensions Pinax Purpose 15 15 15 10 Scope 5 5 -5 -5 Documentation -10 -10 15 10 Tests -10 -10 0 0 Activity 15 15 15 10 Community 35 25 30 35 Modularity 20 20 -10 -5 PyPI 25 25 30 5 Django Packages Thunderdome VCS/Hosting 20 20 20 20 @pydanny / @audreyr License 5 0 5 5 Totals 120 105 115 100 43
  • 44. django- django- django- Fundamentals debug-toolbar coverage extensions Pinax Purpose 15 15 15 10 Scope 5 5 -5 -5 Documentation -10 -10 15 10 Tests -10 -10 0 0 Activity 15 15 15 10 Community 35 25 30 35 Modularity 20 20 -10 -5 PyPI 25 25 30 20 Django Packages Thunderdome VCS/Hosting 20 History unclear 20 20 20 @pydanny / @audreyr License 5 on PyPI 5 0 5 Totals 120 105 115 100 44
  • 45. Winners: Fundamentals 1. django-debug-toolbar: 120 out of 175 points 2. django-extensions: 115 out of 175 points Note that this was obviously not a one-to- Django Packages Thunderdome one comparison, but a purely points-based @pydanny / @audreyr evaluation 45
  • 46. django- django- django- Fundamentals debug-toolbar coverage extensions Pinax Purpose 15 15 15 10 Scope 5 5 -5 -5 Documentation -10 -10 15 10 Tests -10 -10 0 0 Activity 15 15 15 10 Community 35 25 30 35 Modularity 20 20 -10 -5 PyPI 25 25 30 20 Django Packages Thunderdome VCS/Hosting 20 20 20 20 @pydanny / @audreyr License 5 0 5 5 Totals 120 105 115 100 46
  • 48. Contenders: Registration Different approaches: • django-registration • Pinax (accounts part) • django-userena (registration+profiles) Django Packages Thunderdome • django-social-auth @pydanny / @audreyr 48
  • 49. django- Pinax django- Registration registration (accounts) django-userena social-auth Purpose 15 10 15 15 Scope 5 -5 -5 5 Documentation 10 10 15 10 Tests 5 0 5 0 Activity 15 10 15 15 Community 25 35 16 26 Modularity -15 -5 -10 -5 PyPI 15 20 25 25 Django Packages Thunderdome VCS/Hosting 20 20 20 20 @pydanny / @audreyr License 5 5 5 5 Totals 100 100 101 116 49
  • 50. django- Pinax django- Registration registration (accounts) django-userena social-auth Purpose 15 10 15 15 Scope 5 -5 -5 5 Documentation 10 10 Inaccurate authors list! 15 10 Tests 5 0 5 0 Activity 15 10 15 15 Community 25 35 16 26 Modularity -15 -5 -10 -5 PyPI 15 20 25 25 Django Packages Thunderdome VCS/Hosting 20 20 20 20 @pydanny / @audreyr License 5 5 5 5 Totals 100 100 101 116 50
  • 51. django- Pinax django- Registration registration (accounts) django-userena social-auth Purpose 15 10 15 15 Popular Scope unofficial 5 mirror -5 -5 5 with templates? If the Documentation 10 10 15 10 original had templates, Tests common fork5would this 0 5 0 not be needed Activity 15 10 15 15 Community 25 35 16 26 Modularity -15 -5 -10 -5 PyPI 15 20 25 25 Django Packages Thunderdome VCS/Hosting 20 20 20 20 @pydanny / @audreyr License 5 5 5 5 Totals 100 100 101 116 51
  • 52. Winners: Registration 1. django-social-auth: 116 out of 175 points 2. django-userena: 101 out of 175 points Interesting comment from survey: Django Packages Thunderdome “Site registration sucks and using Twitter, Facebook, or @pydanny / @audreyr Google auth is easier” 52
  • 53. django- Pinax django- Registration registration (accounts) django-userena social-auth Purpose 15 10 15 15 Scope 5 0 -5 5 Documentation 10 10 15 10 Tests 5 0 5 0 Activity 15 10 15 15 Community 25 35 16 26 Modularity -15 -5 -10 -5 PyPI 15 5 25 25 Django Packages Thunderdome VCS/Hosting 20 20 20 20 @pydanny / @audreyr License 5 5 5 5 Totals 100 90 101 116 53
  • 54. Round 4 Profiles 54
  • 55. Contenders: Profiles Different approaches: • django-profiles • django-easy-profiles • django-userena (registration+profiles) Django Packages Thunderdome • idios @pydanny / @audreyr 55
  • 56. django- django-easy- Profiles profiles profiles django-userena idios Purpose 15 15 10 10 Scope 5 5 -5 5 Documentation 5 10 15 15 Tests -10 -10 5 5 Activity 0 15 15 15 Community 16 16 16 16 Modularity -5 -10 -5 20 PyPI 25 5 25 0 Django Packages Thunderdome VCS/Hosting 20 20 20 20 @pydanny / @audreyr License 5 5 5 5 Totals 76 71 101 111 56
  • 57. django- django-easy- Profiles profiles profiles django-userena idios Purpose 15 15 10 10 Scope 5 5 -5 5 Documentation 5 10 15 15 Tests -10 -10 5 5 Activity 0 15 15 15 Community 16 16 16 16 Modularity -5 -10 -5 20 PyPI 25 5 25 0 Django Packages Thunderdome VCS/Hosting 20 20 20 20 @pydanny / @audreyr License 5 5 5 5 Totals 76 71 101 111 57
  • 58. Winners: Profiles 1. idios: 111 out of 175 points 2. django-userena: 101 out of 175 points Room for improvement: Django Packages Thunderdome Low point values. Few surveyed users knew of a good Django @pydanny / @audreyr profiles app. Some roll their own each time. 58
  • 59. django- django-easy- Profiles profiles profiles django-userena idios Purpose 15 15 10 10 Scope 5 5 -5 5 Documentation 5 10 15 15 Tests -10 -10 5 5 Activity 0 15 15 15 Community 16 16 16 16 Modularity -5 -10 -5 20 PyPI 25 5 25 0 Django Packages Thunderdome VCS/Hosting 20 20 20 20 @pydanny / @audreyr License 5 5 5 5 Totals 76 71 101 111 59
  • 60. Round 5 Blogs 60
  • 61. Contenders: Blogs Again, different approaches: • biblion • django-mingus • django-basic-apps (blog part) Django Packages Thunderdome • django-blog-zinnia @pydanny / @audreyr 61
  • 62. django-basic- django-blog- Blogs biblion django-mingus apps (blog part) zinnia Purpose 5 10 15 15 Scope 5 5 -5 5 Documentation -10 -5 -10 10 Tests -10 5 5 5 Activity 15 10 15 15 Community 15 32 10 35 Modularity -10 -15 -5 20 PyPI 0 0 0 25 Django Packages Thunderdome VCS/Hosting 20 20 20 20 @pydanny / @audreyr License 5 5 -15 5 Totals 35 67 30 155 62
  • 63. django-basic- django-blog- Blogs biblion django-mingus apps (blog part) zinnia Purpose 5 10 15 15 Scope 5 5 -5 5 Documentation -10 -5 -10 10 Tests -10 5 5 5 Activity 15 10 15 15 Community 15 32 10 35 Modularity -10 -15 -5 20 PyPI 0 0 0 25 Django Packages Thunderdome VCS/Hosting 20 20 20 20 @pydanny / @audreyr License 5 5 -15 5 Totals 35 67 30 155 63
  • 64. Winner: Blogs 1. django-blog-zinnia: 155 out of 175 points Most points by a landslide. So many blog packages exist that this gets buried. Django Packages Thunderdome Note that biblion is early/pre-alpha. With docs, it @pydanny / @audreyr could become a promising option for 1 blog per profile sites. 64
  • 65. Round 6 Tagging 65
  • 66. Contenders: Tagging A closer comparison here: • django-taggit • django-tagging Django Packages Thunderdome • django-tagging-ng @pydanny / @audreyr 66
  • 67. Tagging django-taggit django-tagging django-tagging-ng Purpose 15 15 15 Scope 5 5 5 Documentation 15 0 0 Tests 5 0 5 Activity 10 0 5 Community 26 15 12 Modularity 20 20 20 PyPI 25 25 25 Django Packages Thunderdome VCS/Hosting 20 20 20 @pydanny / @audreyr License 5 5 5 Totals 146 105 112 67
  • 68. Tagging django-taggit django-tagging django-tagging-ng Purpose 15 15 15 Scope 5 5 5 Documentation 15 0 0 Tests 5 0 5 Activity 10 0 5 Community 26 15 12 Modularity 20 20 20 PyPI 25 25 25 Django Packages Thunderdome VCS/Hosting 20 20 20 @pydanny / @audreyr License 5 5 5 Totals 146 105 112 68
  • 69. Winner: Tagging 1. django-taggit: 146 out of 175 points Sets the bar for the other packages. High points for all compared. Django Packages Thunderdome “Stable API and responsive dev” @pydanny / @audreyr “Lots of magic under the hood, though” 69
  • 70. Tagging django-taggit django-tagging django-tagging-ng Purpose 15 15 15 Scope 5 5 5 Documentation 15 0 0 Tests 5 0 5 Activity 10 0 5 Community 26 15 12 Modularity 20 20 20 PyPI 25 25 25 Django Packages Thunderdome VCS/Hosting 20 20 20 @pydanny / @audreyr License 5 5 5 Totals 146 105 112 70
  • 72. Contenders: DB Migrations Only 2 good options to even evaluate: • South • nashvegas Django Packages Thunderdome @pydanny / @audreyr 72
  • 73. Database Migrations South nashvegas Purpose 5 5 Scope 5 5 Documentation 15 15 Tests 5 -10 Activity 15 10 Community 30 22 Modularity 20 15 PyPI 25 30 Django Packages Thunderdome VCS/Hosting 20 20 @pydanny / @audreyr License 0 5 Totals 140 117 73
  • 74. Database Migrations South nashvegas Purpose 5 5 Scope 5 5 Documentation 15 15 Tests 5 -10 Activity 15 10 Community If nashvegas 22 tests plus one 11 had Modularity other higher 15 20 sub-score, it could have won! PyPI 25 30 Django Packages Thunderdome VCS/Hosting 20 20 @pydanny / @audreyr License 0 5 Totals 140 117 74
  • 75. Winners: DB Migrations 1. South: 140 out of 175 points 2. nashvegas: 117 out of 175 points “I’m looking forward to someone else cha#enging this space but South is by far the best that we currently have” Django Packages Thunderdome “South is the de facto standard...sti# run into more @pydanny / @audreyr %iction on managing DB changes than I care for, but it’s a lot better than doing without.” 75
  • 76. Database Migrations South nashvegas Purpose 5 5 Scope 5 5 Documentation 15 15 Tests 5 -10 Activity 15 10 Community 30 22 Modularity 20 15 PyPI 25 30 Django Packages Thunderdome VCS/Hosting 20 20 @pydanny / @audreyr License 0 5 Totals 140 117 76
  • 77. Best of the best Who got the most points? 77
  • 78. Leaderboard 1. djangorestframework: 162 points 2. django-tastypie: 155 points django-blog-zinnia: 155 points (tie) 3. django-taggit: 146 points 4. South: 140 points 5. django-debug-toolbar: 120 points 6. nashvegas: 117 points Django Packages Thunderdome 7. django-social-auth: 116 points @pydanny / @audreyr 8. django-extensions: 115 points 9. django-tagging-ng: 112 points 10. idios: 111 points 78
  • 79. Honorable mentions What the surveyed users said 79
  • 80. They also can’t live without • celery & django-celery with redis • django-haystack with pysolr, sometimes whoosh • django-fixture-generator, django-sorting, Django Packages Thunderdome django-pagination, django-uni-form, django-floppy-forms @pydanny / @audreyr 80
  • 81. Summary The key to a prize-winning Django package 81
  • 82. Judging Report • http://bit.ly/django-thunderdome-2011 • A detailed report is available (PDF) Django Packages Thunderdome @pydanny / @audreyr 82
  • 83. Score high on the base criteria • Purpose (0 to +15) • Community (0 to +35) • Scope (-5 to +5) • Modularity (-20 to +20) • Docs (-50 to +15) • PyPI Availability (0 to +30) • Tests (-50 to +15) • VCS/Hosting (-20 to +20) • Activity (0 to +15) • License (-15 to +5) Maximum Score: +175 83
  • 84. Beyond the base criteria • Run code through PEP8 checker • Aim for 100% test coverage • Elegant, clean, explicit ways of doing things • Django Packages Thunderdome Minimize magical code @pydanny / @audreyr 84
  • 85. How to get more users for your package Use djangopackages.com to find similar packages • Add a grid (if needed) • Add your package to the grid • Add grid features Django Packages Thunderdome • Make yours better than its competitors @pydanny / @audreyr 85
  • 86. • Tweet your self-calculated score at @pydanny and @audreyr • We’ll evaluate it ourselves Django Packages Thunderdome • If it ranks high, we’ll help spread the word @pydanny / @audreyr • (conference bandwidth-permitting) 86
  • 87. Thank you • Twitter: @pydanny & @audreyr • PyLadies meetup/party: Wed 8pm • http://pyladies.com/blog/pyladies- Django Packages Thunderdome meetup-at-djangocon/ @pydanny / @audreyr • PyLadies open space: Thurs 1-1:30pm 87

Editor's Notes

  1. A\n
  2. DANNT\n
  3. A\n
  4. D\n
  5. A\n
  6. A\n
  7. A \ncriterion (SINGULAR) \ncriteria (PLURAL)\n
  8. D\n
  9. A\n
  10. D\n
  11. A\n
  12. D\n
  13. A\n
  14. D\n
  15. A\n
  16. D\n
  17. A\n
  18. D\n
  19. A\n
  20. D\n
  21. D\n
  22. A\n
  23. D\n
  24. A\n
  25. D\n
  26. A\n
  27. D\n
  28. T\n
  29. A\n
  30. A\n
  31. A\n
  32. D\n
  33. A\n
  34. D\n
  35. A\n
  36. A\n
  37. D\n
  38. A\n
  39. A\n
  40. D\n
  41. A\n
  42. D\n
  43. A\n
  44. D\n
  45. A\n
  46. A\n
  47. D\n
  48. D\n
  49. A\n
  50. A\n
  51. D\n
  52. A\n
  53. A\n
  54. A\n
  55. D\n
  56. A\n
  57. D\n
  58. D\n
  59. D\n
  60. A\n
  61. A\n
  62. D\n
  63. A\n
  64. D\n
  65. A\n
  66. D\n
  67. A\n
  68. D\n
  69. A\n
  70. A\n
  71. D\n
  72. D\n
  73. A\n
  74. D\n
  75. A\n
  76. A\n
  77. D\n
  78. A\n
  79. D\n
  80. D\n
  81. A\n
  82. A\n
  83. Alternate!\n
  84. A\n
  85. D\n
  86. A\n
  87. A\n