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...
Daniel Greenfeld                                                  •   Python & Django developer for                       ...
A Year+ of Package               Comparisons•   We launched    djangopackages.com    July 2010•   We’ve seen the    Django...
Why a Thunderdome?• Pattern: you hear about the “best” package for  X, and you use it• Comparison grids on djangopackages....
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 r...
Scoring: Purpose             Range: 0 to +15• Descriptive name: +5• “django-” prefix: +5• Incredibly useful purpose: +5    ...
2. Scope• Small scope, narrow focus is better  • Application logic will be tighter  • Patching/replacing the app will be  ...
Scoring: Scope             Range: -5 to +5• Does one thing: +5• Does two things: 0• Does three or more things: -5         ...
3. Documentation• No docs means your app is pre-alpha• Doc strings do not suffice as  documentation• If there are dependenci...
Scoring: Docs            Range: -5o to +15• Docs folder in RST/Sphinx format: +10  • Displayed on http://rtfd.org: +5• Lou...
4. Testing• Tests improve reliability• Tests make it easy to advance Python/  Django versions• Tests make it easier for ot...
Scoring: Tests            Range: -50 to +15• Public Jenkins site: +5• django_coverage/coverage.py: +5• Well done tests: +5...
5. Activity• When was the last commit?• How frequent are commits?• Are there periodic version updates?                    ...
Scoring: Activity            Range: 0 to +15• Last commit up to 3 months ago: +15• Last commit up to 6 months ago: +10• La...
6. Community• Active community leader(s)• How many people are contributing?• Proper attribution of authors?  • CONTRIBUTOR...
Scoring: Community              Range: 0 to +35•   Active community leader: +10    • Lots of divergent forks? Then no• Num...
7. Modularity• “Pluggability”• Installation should be minimally invasive• Do not confuse modularity with over             ...
Scoring: Modularity              Range: -20 t0 +20•   Just add to up to these things:    • INSTALLED_APPS    • MIDDLEWARE ...
Scoring: Modularity• Having to write your own custom code/  backends from scratch• Having to write your own templates• Hav...
8. Availability on PyPI• Actually on PyPI• Latest release on PyPI  • Should not have to go to repo for    working version ...
Scoring: PyPI Availability             Range: 0 to +30• Latest release download link on PyPI: +15• Latest stable release +...
9. VCS/Hosting• Great: Github or BitBucket• Okay: Launchpad or SourceForge• Outdated: Google Project Hosting              ...
Scoring: VCS/Hosting           Range: -20 t0 +20• Github or BitBucket: +20• Launchpad or SourceForge: +5• Google Project H...
10. License• You need a license• Companies prefer BSD or MIT licenses• http://opensource.org/licenses/category            ...
Scoring: License             Range: -15 to +5• BSD or MIT license: +5• Any other formal license: 0• Custom license: -5 to ...
Thunderdome Fight, packages! Fight!           28
A quick warning• We’re just kidding about the fighting• Friendly, “constructive criticism”• Use our feedback to help improv...
How packages were     chosen for this• We sent out a survey and chose the:  ★ most commonly-used packages  ★ most interest...
Round 1API Creation     31
Contenders: API CreationThey’re all a little different: • django-piston • django-tastypie • djangorestframework            ...
django-   django-    djangorestframe django- API Creation   piston    tastypie   work            xmlrpcPurpose         10 ...
django-   django-    djangorestframe django- API Creation   piston    tastypie   work            xmlrpcPurpose         10 ...
django-   django-    djangorestframe django- API Creation   piston    tastypie   work            xmlrpcPurpose         10 ...
django-       django-       djangorestframe django- API Creation            piston        tastypie      work            xm...
django-   django-    djangorestframe django- API Creation   piston    tastypie   work            xmlrpcPurpose         10 ...
Winners: API Creation1. djangorestframework: 162 out of 175   points2. django-tastypie: 155 out of 175 points             ...
django-   django-    djangorestframe django- API Creation   piston    tastypie   work            xmlrpcPurpose         10 ...
Round 2Fundamentals     40
Contenders: Fundamentals 2 utilities:  • django-debug-toolbar  • django-coverage 2 boilerplate-style “must need” pieces   ...
django-       django- django- Fundamentals   debug-toolbar coverage extensions                                            ...
django-       django- django- Fundamentals   debug-toolbar coverage extensions                                            ...
django-       django- django- Fundamentals   debug-toolbar coverage extensions                                            ...
Winners: Fundamentals1. django-debug-toolbar: 120 out of 175 points2. django-extensions: 115 out of 175 points  Note that ...
django-       django- django- Fundamentals   debug-toolbar coverage extensions                                            ...
Round 3 Registration      47
Contenders: RegistrationDifferent approaches: • django-registration • Pinax (accounts part) • django-userena (registration+...
django-        Pinax                     django-  Registration   registration   (accounts)                                ...
django-        Pinax                     django-  Registration   registration   (accounts)                                ...
django-        Pinax                     django-  Registration    registration   (accounts)                               ...
Winners: Registration1. django-social-auth: 116 out of 175 points2. django-userena: 101 out of 175 points  Interesting com...
django-        Pinax                     django-  Registration   registration   (accounts)                                ...
Round 4  Profiles    54
Contenders: ProfilesDifferent approaches: • django-profiles • django-easy-profiles • django-userena (registration+profiles)    ...
django-    django-easy-        Profiles   profiles   profiles                                            django-userena idi...
django-    django-easy-        Profiles   profiles   profiles                                            django-userena idi...
Winners: Profiles1. idios: 111 out of 175 points2. django-userena: 101 out of 175 points  Room for improvement:            ...
django-    django-easy-        Profiles   profiles   profiles                                            django-userena idi...
Round 5  Blogs   60
Contenders: BlogsAgain, different approaches: • biblion • django-mingus • django-basic-apps (blog part)                    ...
django-basic-    django-blog-         Blogs   biblion   django-mingus                                           apps (blog...
django-basic-    django-blog-         Blogs   biblion   django-mingus                                           apps (blog...
Winner: Blogs1. django-blog-zinnia: 155 out of 175 points  Most points by a landslide.  So many blog packages exist that t...
Round 6  Tagging    65
Contenders: TaggingA closer comparison here: • django-taggit • django-tagging                            Django Packages T...
Tagging   django-taggit django-tagging django-tagging-ngPurpose              15               15          15Scope         ...
Tagging   django-taggit django-tagging django-tagging-ngPurpose              15               15          15Scope         ...
Winner: Tagging1. django-taggit: 146 out of 175 points  Sets the bar for the other packages. High points  for all compared...
Tagging   django-taggit django-tagging django-tagging-ngPurpose              15               15          15Scope         ...
Round 7Database Migrations        71
Contenders: DB Migrations Only 2 good options to even evaluate:  • South  • nashvegas                                     ...
Database Migrations   South     nashvegasPurpose                5         5Scope                  5         5Documentation...
Database Migrations   South       nashvegasPurpose                5            5Scope                  5            5Docum...
Winners: DB Migrations1. South: 140 out of 175 points2. nashvegas: 117 out of 175 points  “I’m looking forward to someone ...
Database Migrations   South     nashvegasPurpose                5         5Scope                  5         5Documentation...
Best of the best  Who got the most points?             77
Leaderboard1. djangorestframework: 162 points2. django-tastypie: 155 points   django-blog-zinnia: 155 points (tie)3. djang...
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 • djang...
SummaryThe key to a prize-winning Django package                   81
Judging Report• http://bit.ly/django-thunderdome-2011• A detailed report is available (PDF)                               ...
Score high on the base criteria •   Purpose (0 to +15)           •   Community (0 to +35) •   Scope (-5 to +5)            ...
Beyond the base criteria•   Run code through PEP8 checker•   Aim for 100% test coverage•   Elegant, clean, explicit ways o...
How to get more users for      your packageUse djangopackages.com to find similar packages • Add a grid (if needed) • Add y...
• Tweet your self-calculated score at    @pydanny and @audreyr• We’ll evaluate it ourselves                               ...
Thank you• Twitter: @pydanny & @audreyr• PyLadies meetup/party: Wed 8pm  • http://pyladies.com/blog/pyladies-             ...
Upcoming SlideShare
Loading in...5
×

Django Package Thunderdome by Audrey Roy & Daniel Greenfeld

22,163

Published on

What makes a package useful? What is it about certain packages that makes them must-haves for any project?

We’ll go over topics like: purpose, structure, docs, tests, availability on PyPI and Github/Bitbucket, activity, and more.

We will visit some of the most useful grid categories on djangopackages.com and highlight our top package picks, showing examples of what makes the top packages so great and what could use improvement.

0 Comments
13 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
22,163
On Slideshare
0
From Embeds
0
Number of Embeds
37
Actions
Shares
0
Downloads
55
Comments
0
Likes
13
Embeds 0
No embeds

No notes for slide
  • A\n
  • DANNT\n
  • A\n
  • D\n
  • A\n
  • A\n
  • A \ncriterion (SINGULAR) \ncriteria (PLURAL)\n
  • D\n
  • A\n
  • D\n
  • A\n
  • D\n
  • A\n
  • D\n
  • A\n
  • D\n
  • A\n
  • D\n
  • A\n
  • D\n
  • D\n
  • A\n
  • D\n
  • A\n
  • D\n
  • A\n
  • D\n
  • T\n
  • A\n
  • A\n
  • A\n
  • D\n
  • A\n
  • D\n
  • A\n
  • A\n
  • D\n
  • A\n
  • A\n
  • D\n
  • A\n
  • D\n
  • A\n
  • D\n
  • A\n
  • A\n
  • D\n
  • D\n
  • A\n
  • A\n
  • D\n
  • A\n
  • A\n
  • A\n
  • D\n
  • A\n
  • D\n
  • D\n
  • D\n
  • A\n
  • A\n
  • D\n
  • A\n
  • D\n
  • A\n
  • D\n
  • A\n
  • D\n
  • A\n
  • A\n
  • D\n
  • D\n
  • A\n
  • D\n
  • A\n
  • A\n
  • D\n
  • A\n
  • D\n
  • D\n
  • A\n
  • A\n
  • Alternate!\n
  • A\n
  • D\n
  • A\n
  • A\n
  • Django Package Thunderdome by Audrey Roy & Daniel Greenfeld

    1. 1. by Audrey Roy and Daniel Greenfeld @audreyr / @pydanny 1
    2. 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. 3. Daniel Greenfeld • Python & Django developer for Cartwheel Web / RevSys • Learned Python at NASA • djangopackages.com, OpenComparison (Packaginator), django-uni-form Django Packages Thunderdomehttp://www.flickr.com/photos/pydanny/4442245488/ • Fiancé of Audrey Roy (audreyr) @pydanny / @audreyr 3
    4. 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. 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. 6. Our review criteria What makes your package worthy? 6
    7. 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. 8. Scoring: Purpose Range: 0 to +15• Descriptive name: +5• “django-” prefix: +5• Incredibly useful purpose: +5 Django Packages Thunderdome @pydanny / @audreyr 8
    9. 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. 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. 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. 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. 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. 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. 15. 5. Activity• When was the last commit?• How frequent are commits?• Are there periodic version updates? Django Packages Thunderdome @pydanny / @audreyr 15
    16. 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. 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. 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. 19. 7. Modularity• “Pluggability”• Installation should be minimally invasive• Do not confuse modularity with over Django Packages Thunderdome engineering @pydanny / @audreyr 19
    20. 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. 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. 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. 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. 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. 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. 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. 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
    28. 28. Thunderdome Fight, packages! Fight! 28
    29. 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. 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
    31. 31. Round 1API Creation 31
    32. 32. Contenders: API CreationThey’re all a little different: • django-piston • django-tastypie • djangorestframework Django Packages Thunderdome • django-xmlrpc @pydanny / @audreyr 32
    33. 33. django- django- djangorestframe django- API Creation piston tastypie work xmlrpcPurpose 10 10 10 15Scope 5 5 5 5Documentation -10 15 15 -10Tests 5 10 15 -10Activity 0 15 15 5Community 5 30 27 6Modularity -10 20 20 -5PyPI 20 25 30 25 Django Packages ThunderdomeVCS/Hosting 20 20 20 20 @pydanny / @audreyrLicense 5 5 5 5Totals 50 155 162 56 33
    34. 34. django- django- djangorestframe django- API Creation piston tastypie work xmlrpcPurpose 10 10 10 15Scope 5 5 5 5Documentation -10 15 15 -10Tests 5 10 10 -10Activity 0 15 15 5Community 5 30 27 6Modularity -10 20 -5 -5PyPI 20 25 30 25 Django Packages ThunderdomeVCS/Hosting 20 20 20 20 @pydanny / @audreyrLicense 5 5 5 5Totals 50 155 162 56 34
    35. 35. django- django- djangorestframe django- API Creation piston tastypie work xmlrpcPurpose 10 10 10 15Scope 5 5 5 5Documentation -10 15 15 -10Tests 5 10 15 -10Activity 0 15 15 5Community 5 30 27 6Modularity -10 20 -5 -5PyPI 20 25 30 25 Django Packages ThunderdomeVCS/Hosting 20 20 20 20 @pydanny / @audreyrLicense 5 5 5 5Totals 50 155 162 56 35
    36. 36. django- django- djangorestframe django- API Creation piston tastypie work xmlrpcPurpose 10 10 10 15Scope 5 5 5 5Documentation -10 15 15 -10Tests 5 10 15 -10Activity 0 15 15 5Community 5 30 27 6ModularityPyPI 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 / @audreyrLicense 5 5 5 5Totals 50 155 162 56 36
    37. 37. django- django- djangorestframe django- API Creation piston tastypie work xmlrpcPurpose 10 10 10 15Scope 5 5 5 5Documentation -10 15 15 -10Tests 5 10 15 -10Activity 0 15 Activity 15 5CommunityModularity 5 -10 30 20 Community 27 20 6 -5PyPI 20 25 30 25 Django Packages ThunderdomeVCS/Hosting 20 20 20 20 @pydanny / @audreyrLicense 5 5 5 5Totals 50 155 162 56 37
    38. 38. Winners: API Creation1. djangorestframework: 162 out of 175 points2. django-tastypie: 155 out of 175 points Django Packages Thunderdome @pydanny / @audreyr 38
    39. 39. django- django- djangorestframe django- API Creation piston tastypie work xmlrpcPurpose 10 10 10 15Scope 5 5 5 5Documentation -10 15 15 -10Tests 5 10 15 -10Activity 0 15 15 5Community 5 30 27 6Modularity -10 20 20 -5PyPI 20 25 30 25 Django Packages ThunderdomeVCS/Hosting 20 20 20 20 @pydanny / @audreyrLicense 5 5 5 5Totals 50 155 162 56 39
    40. 40. Round 2Fundamentals 40
    41. 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. 42. django- django- django- Fundamentals debug-toolbar coverage extensions PinaxPurpose 15 15 15 10Scope 5 5 -5 -5Documentation -10 -10 15 10Tests -10 -10 0 0Activity 15 15 15 10Community 35 25 30 35Modularity 20 20 -10 -5PyPI 25 25 30 20 Django Packages ThunderdomeVCS/Hosting 20 20 20 20 @pydanny / @audreyrLicense 5 0 5 5Totals 120 105 115 100 42
    43. 43. django- django- django- Fundamentals debug-toolbar coverage extensions PinaxPurpose 15 15 15 10Scope 5 5 -5 -5Documentation -10 -10 15 10Tests -10 -10 0 0Activity 15 15 15 10Community 35 25 30 35Modularity 20 20 -10 -5PyPI 25 25 30 5 Django Packages ThunderdomeVCS/Hosting 20 20 20 20 @pydanny / @audreyrLicense 5 0 5 5Totals 120 105 115 100 43
    44. 44. django- django- django- Fundamentals debug-toolbar coverage extensions PinaxPurpose 15 15 15 10Scope 5 5 -5 -5Documentation -10 -10 15 10Tests -10 -10 0 0Activity 15 15 15 10Community 35 25 30 35Modularity 20 20 -10 -5PyPI 25 25 30 20 Django Packages ThunderdomeVCS/Hosting 20 History unclear 20 20 20 @pydanny / @audreyrLicense 5 on PyPI 5 0 5Totals 120 105 115 100 44
    45. 45. Winners: Fundamentals1. django-debug-toolbar: 120 out of 175 points2. 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. 46. django- django- django- Fundamentals debug-toolbar coverage extensions PinaxPurpose 15 15 15 10Scope 5 5 -5 -5Documentation -10 -10 15 10Tests -10 -10 0 0Activity 15 15 15 10Community 35 25 30 35Modularity 20 20 -10 -5PyPI 25 25 30 20 Django Packages ThunderdomeVCS/Hosting 20 20 20 20 @pydanny / @audreyrLicense 5 0 5 5Totals 120 105 115 100 46
    47. 47. Round 3 Registration 47
    48. 48. Contenders: RegistrationDifferent approaches: • django-registration • Pinax (accounts part) • django-userena (registration+profiles) Django Packages Thunderdome • django-social-auth @pydanny / @audreyr 48
    49. 49. django- Pinax django- Registration registration (accounts) django-userena social-authPurpose 15 10 15 15Scope 5 -5 -5 5Documentation 10 10 15 10Tests 5 0 5 0Activity 15 10 15 15Community 25 35 16 26Modularity -15 -5 -10 -5PyPI 15 20 25 25 Django Packages ThunderdomeVCS/Hosting 20 20 20 20 @pydanny / @audreyrLicense 5 5 5 5Totals 100 100 101 116 49
    50. 50. django- Pinax django- Registration registration (accounts) django-userena social-authPurpose 15 10 15 15Scope 5 -5 -5 5Documentation 10 10 Inaccurate authors list! 15 10Tests 5 0 5 0Activity 15 10 15 15Community 25 35 16 26Modularity -15 -5 -10 -5PyPI 15 20 25 25 Django Packages ThunderdomeVCS/Hosting 20 20 20 20 @pydanny / @audreyrLicense 5 5 5 5Totals 100 100 101 116 50
    51. 51. django- Pinax django- Registration registration (accounts) django-userena social-authPurpose 15 10 15 15PopularScope unofficial 5 mirror -5 -5 5 with templates? If theDocumentation 10 10 15 10 original had templates,Tests common fork5would this 0 5 0 not be neededActivity 15 10 15 15Community 25 35 16 26Modularity -15 -5 -10 -5PyPI 15 20 25 25 Django Packages ThunderdomeVCS/Hosting 20 20 20 20 @pydanny / @audreyrLicense 5 5 5 5Totals 100 100 101 116 51
    52. 52. Winners: Registration1. django-social-auth: 116 out of 175 points2. 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. 53. django- Pinax django- Registration registration (accounts) django-userena social-authPurpose 15 10 15 15Scope 5 0 -5 5Documentation 10 10 15 10Tests 5 0 5 0Activity 15 10 15 15Community 25 35 16 26Modularity -15 -5 -10 -5PyPI 15 5 25 25 Django Packages ThunderdomeVCS/Hosting 20 20 20 20 @pydanny / @audreyrLicense 5 5 5 5Totals 100 90 101 116 53
    54. 54. Round 4 Profiles 54
    55. 55. Contenders: ProfilesDifferent approaches: • django-profiles • django-easy-profiles • django-userena (registration+profiles) Django Packages Thunderdome • idios @pydanny / @audreyr 55
    56. 56. django- django-easy- Profiles profiles profiles django-userena idiosPurpose 15 15 10 10Scope 5 5 -5 5Documentation 5 10 15 15Tests -10 -10 5 5Activity 0 15 15 15Community 16 16 16 16Modularity -5 -10 -5 20PyPI 25 5 25 0 Django Packages ThunderdomeVCS/Hosting 20 20 20 20 @pydanny / @audreyrLicense 5 5 5 5Totals 76 71 101 111 56
    57. 57. django- django-easy- Profiles profiles profiles django-userena idiosPurpose 15 15 10 10Scope 5 5 -5 5Documentation 5 10 15 15Tests -10 -10 5 5Activity 0 15 15 15Community 16 16 16 16Modularity -5 -10 -5 20PyPI 25 5 25 0 Django Packages ThunderdomeVCS/Hosting 20 20 20 20 @pydanny / @audreyrLicense 5 5 5 5Totals 76 71 101 111 57
    58. 58. Winners: Profiles1. idios: 111 out of 175 points2. 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. 59. django- django-easy- Profiles profiles profiles django-userena idiosPurpose 15 15 10 10Scope 5 5 -5 5Documentation 5 10 15 15Tests -10 -10 5 5Activity 0 15 15 15Community 16 16 16 16Modularity -5 -10 -5 20PyPI 25 5 25 0 Django Packages ThunderdomeVCS/Hosting 20 20 20 20 @pydanny / @audreyrLicense 5 5 5 5Totals 76 71 101 111 59
    60. 60. Round 5 Blogs 60
    61. 61. Contenders: BlogsAgain, different approaches: • biblion • django-mingus • django-basic-apps (blog part) Django Packages Thunderdome • django-blog-zinnia @pydanny / @audreyr 61
    62. 62. django-basic- django-blog- Blogs biblion django-mingus apps (blog part) zinniaPurpose 5 10 15 15Scope 5 5 -5 5Documentation -10 -5 -10 10Tests -10 5 5 5Activity 15 10 15 15Community 15 32 10 35Modularity -10 -15 -5 20PyPI 0 0 0 25 Django Packages ThunderdomeVCS/Hosting 20 20 20 20 @pydanny / @audreyrLicense 5 5 -15 5Totals 35 67 30 155 62
    63. 63. django-basic- django-blog- Blogs biblion django-mingus apps (blog part) zinniaPurpose 5 10 15 15Scope 5 5 -5 5Documentation -10 -5 -10 10Tests -10 5 5 5Activity 15 10 15 15Community 15 32 10 35Modularity -10 -15 -5 20PyPI 0 0 0 25 Django Packages ThunderdomeVCS/Hosting 20 20 20 20 @pydanny / @audreyrLicense 5 5 -15 5Totals 35 67 30 155 63
    64. 64. Winner: Blogs1. 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. 65. Round 6 Tagging 65
    66. 66. Contenders: TaggingA closer comparison here: • django-taggit • django-tagging Django Packages Thunderdome • django-tagging-ng @pydanny / @audreyr 66
    67. 67. Tagging django-taggit django-tagging django-tagging-ngPurpose 15 15 15Scope 5 5 5Documentation 15 0 0Tests 5 0 5Activity 10 0 5Community 26 15 12Modularity 20 20 20PyPI 25 25 25 Django Packages ThunderdomeVCS/Hosting 20 20 20 @pydanny / @audreyrLicense 5 5 5Totals 146 105 112 67
    68. 68. Tagging django-taggit django-tagging django-tagging-ngPurpose 15 15 15Scope 5 5 5Documentation 15 0 0Tests 5 0 5Activity 10 0 5Community 26 15 12Modularity 20 20 20PyPI 25 25 25 Django Packages ThunderdomeVCS/Hosting 20 20 20 @pydanny / @audreyrLicense 5 5 5Totals 146 105 112 68
    69. 69. Winner: Tagging1. 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. 70. Tagging django-taggit django-tagging django-tagging-ngPurpose 15 15 15Scope 5 5 5Documentation 15 0 0Tests 5 0 5Activity 10 0 5Community 26 15 12Modularity 20 20 20PyPI 25 25 25 Django Packages ThunderdomeVCS/Hosting 20 20 20 @pydanny / @audreyrLicense 5 5 5Totals 146 105 112 70
    71. 71. Round 7Database Migrations 71
    72. 72. Contenders: DB Migrations Only 2 good options to even evaluate: • South • nashvegas Django Packages Thunderdome @pydanny / @audreyr 72
    73. 73. Database Migrations South nashvegasPurpose 5 5Scope 5 5Documentation 15 15Tests 5 -10Activity 15 10Community 30 22Modularity 20 15PyPI 25 30 Django Packages ThunderdomeVCS/Hosting 20 20 @pydanny / @audreyrLicense 0 5Totals 140 117 73
    74. 74. Database Migrations South nashvegasPurpose 5 5Scope 5 5Documentation 15 15Tests 5 -10Activity 15 10Community If nashvegas 22 tests plus one 11 hadModularity other higher 15 20 sub-score, it could have won!PyPI 25 30 Django Packages ThunderdomeVCS/Hosting 20 20 @pydanny / @audreyrLicense 0 5Totals 140 117 74
    75. 75. Winners: DB Migrations1. South: 140 out of 175 points2. 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. 76. Database Migrations South nashvegasPurpose 5 5Scope 5 5Documentation 15 15Tests 5 -10Activity 15 10Community 30 22Modularity 20 15PyPI 25 30 Django Packages ThunderdomeVCS/Hosting 20 20 @pydanny / @audreyrLicense 0 5Totals 140 117 76
    77. 77. Best of the best Who got the most points? 77
    78. 78. Leaderboard1. djangorestframework: 162 points2. django-tastypie: 155 points django-blog-zinnia: 155 points (tie)3. django-taggit: 146 points4. South: 140 points5. django-debug-toolbar: 120 points6. nashvegas: 117 points Django Packages Thunderdome7. django-social-auth: 116 points @pydanny / @audreyr8. django-extensions: 115 points9. django-tagging-ng: 112 points10. idios: 111 points 78
    79. 79. Honorable mentions What the surveyed users said 79
    80. 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. 81. SummaryThe key to a prize-winning Django package 81
    82. 82. Judging Report• http://bit.ly/django-thunderdome-2011• A detailed report is available (PDF) Django Packages Thunderdome @pydanny / @audreyr 82
    83. 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. 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. 85. How to get more users for your packageUse 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. 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. 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
    1. A particular slide catching your eye?

      Clipping is a handy way to collect important slides you want to go back to later.

    ×