Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Audrey Roy                                        @audreyrAmazing things in  open source3rd-party Python package ecosystem...
Audrey Roy                                                  @audreyr                About me• Python volunteer work: Djang...
Audrey Roy                                             @audreyr              Overview• Python community is a meritocracy• ...
Audrey Roy                                          @audreyr    MeritocracyIf your work has merit, people use it
Audrey Roy                                                    @audreyr      We are a meritocracy• Python open-source commu...
Audrey Roy                                                   @audreyr    No permission needed• Just implement or experimen...
Audrey Roy                                              @audreyr                   It’s fun• Rewarding to see others using...
Audrey RoyMeritocracies are about what                                                     @audreyr      you actually do• ...
Audrey Roy                                                                 @audreyr    Who’s in charge?If you’re doing the...
Audrey Roy        Early decisions for                                                  @audreyr       djangopackages.com• ...
Audrey Roy                                                  @audreyr       Decisions, decisions• No automatic package-findi...
Audrey Roy                                                       @audreyr        Decisions, decisions• Sometimes you just ...
Audrey Roy                                                      @audreyr  The Future is in Your Hands                    (...
Audrey Roy                                                       @audreyrYour Gut Instinct Is Often Right• Fun fact: many ...
Audrey Roy                                               @audreyr   Ecosystem Patterns   Add-ons, plugins, contrib, core s...
Audrey Roy   Why I Use Mostly Django                                                   @audreyr         These Days• Many 3...
Audrey Roy   Why I Use Mostly Django                                  @audreyr         These Days• (also, I’m just used to...
Audrey Roy                                              @audreyr      Django Core vs. Apps• Many, many batteries included ...
Audrey Roy     Django’s Reusable App                               @audreyr           Structure• What an app looks like ho...
Audrey Roy                                               @audreyr      Installing Django Apps• How to install an app # set...
Audrey Roy                                               @audreyrDjango’s Ecosystem Over Time• More and more new innovatio...
Audrey Roy                                                  @audreyr              Observation• Ecosystems grow fastest whe...
Audrey Roy                                                  @audreyr  Pyramid Core vs. Add-Ons• Smaller core, more add-ons...
Audrey Roy                                                      @audreyrPyramid’s Ecosystem Over Time• Past: Pylons, Repoz...
Audrey Roy   Checklist: What 3rd-Party                                                     @audreyr     Package Devs Need•...
Audrey RoyChecklist: What Every Micro-                                                   @audreyr    Community Needs• Mail...
Audrey Roy                                              @audreyrToo many options?Dealing with a (not always) happy problem
Audrey Roy                                                       @audreyr        The One True Way?• The Zen of Python says...
Audrey Roy                                                @audreyr          Too Much Clutter      Can’t find the right pack...
Audrey Roy                                                @audreyr   Too Much Fragmentation?• So many Python micro-communi...
Audrey Roy                                                  @audreyr   Too Much Fragmentation?• You can never have too man...
Audrey Roy                                  @audreyr3rd Party Package     Quality   Patterns and Anti-Patterns
Audrey RoyWhat Makes a Python Package                                                      @audreyr         Useful?• Solvi...
Audrey Roy                                                   @audreyrPackage Anti-Patterns Are Viral• Don’t underestimate ...
Audrey Roy       Package Anti-Pattern:                                                     @audreyr          Not Packaging...
Audrey Roy     Package Anti-Pattern:                                           @audreyr        Not Packaging• But there ar...
Audrey Roy     Package Anti-Pattern:                                                  @audreyr        Not Packaging• Trick...
Audrey Roy      Package Anti-Pattern:                                                       @audreyr     Too Much Function...
Audrey Roy                             @audreyrPackage Pattern: Be Pythonic• Why do we love Python? • Elegance • Ease of u...
Audrey Roy                                             @audreyrCommunity-building Groups, leaders, and diversity of ideas
Audrey Roy                                                      @audreyr               Mentorship• Today’s new users are t...
Audrey Roy                                                     @audreyr           Diversity of Ideas• Look at schedules & ...
Audrey Roy            @audreyrSummary
Audrey Roy                                                 @audreyr                Summary• Build what you want• Encourage...
Audrey Roy                                         @audreyr                  Thank you• Twitter: @audreyr• Find me in IRC ...
Upcoming SlideShare
Loading in …5
×

Amazing Things: Third-Party Python Package Ecosystems

19,138 views

Published on

My presentation from PyCodeConf 2011.

I talk about:
- how the Python open-source community is a meritocracy
- how the best way to grow your ecosystem within the Python community is to make it easy to create third-party packages
- community building, mentorship, and diversity of ideas

Published in: Technology
  • Be the first to comment

Amazing Things: Third-Party Python Package Ecosystems

  1. 1. Audrey Roy @audreyrAmazing things in open source3rd-party Python package ecosystems Audrey Roy @audreyr
  2. 2. Audrey Roy @audreyr About me• Python volunteer work: Django Packages/ OpenComparison co-BDFL, PyLadies co-organizer• Entrepreneur: co-founder of Whitespace Jobs• Django consultant: Cartwheel Web & Revsys• Fiancee of Daniel Greenfeld (@pydanny)
  3. 3. Audrey Roy @audreyr Overview• Python community is a meritocracy• Python ecosystem patterns• 3rd-party packages: Quantity & quality• Community-building
  4. 4. Audrey Roy @audreyr MeritocracyIf your work has merit, people use it
  5. 5. Audrey Roy @audreyr We are a meritocracy• Python open-source community is a meritocracy • Anyone can build anything • Anyone can start a user group • Anyone can be a leader • ...as long as they put in the work
  6. 6. Audrey Roy @audreyr No permission needed• Just implement or experiment with what you want• The more useful or helpful your work is, the more you succeed• (A few exceptions)
  7. 7. Audrey Roy @audreyr It’s fun• Rewarding to see others using your work
  8. 8. Audrey RoyMeritocracies are about what @audreyr you actually do• Call to action: Build whatever you desire/need • Don’t worry about politics. Just be nice • If you don’t build X, no one will • You can solve your own problems
  9. 9. Audrey Roy @audreyr Who’s in charge?If you’re doing the coding, you’re in charge*. So make the decisions that you want. *when it’s your own project or 3rd-party Python package
  10. 10. Audrey Roy Early decisions for @audreyr djangopackages.com• Forced to make quick decisions during Django Dash• All packages are added manually, using: • package name • PyPI URL • repo URL
  11. 11. Audrey Roy @audreyr Decisions, decisions• No automatic package-finding spiders, by design.• Was it a good decision? • Who knows, doesn’t matter• Currently 900+ packages
  12. 12. Audrey Roy @audreyr Decisions, decisions• Sometimes you just have to pick something• As opposed to asking a mailing list and having X get debated for 2 weeks • Mailing lists can be useful, but be careful
  13. 13. Audrey Roy @audreyr The Future is in Your Hands (or is it?)• Future of your Python project: In your hands/in the hands of your core dev team• or...• Future of your Python project: Decided by other people on a mailing list
  14. 14. Audrey Roy @audreyrYour Gut Instinct Is Often Right• Fun fact: many of the grid items/descriptions on Django Packages come from “throwaway” fixtures that I created in a rush • Don’t like them? You have edit permissions ;)
  15. 15. Audrey Roy @audreyr Ecosystem Patterns Add-ons, plugins, contrib, core size, etc.What makes a Python project or framework grow?
  16. 16. Audrey Roy Why I Use Mostly Django @audreyr These Days• Many 3rd-party packages • Candy store • Bucket of Legos• Not having to write everything myself is fun
  17. 17. Audrey Roy Why I Use Mostly Django @audreyr These Days• (also, I’m just used to it)
  18. 18. Audrey Roy @audreyr Django Core vs. Apps• Many, many batteries included • Gives you one obvious way to do things• Third-party apps: “Django packages”• Good and bad
  19. 19. Audrey Roy Django’s Reusable App @audreyr Structure• What an app looks like houses/ __init__.py models.py views.py urls.py tests.py templates/houses/ house_list.html house_detail.html
  20. 20. Audrey Roy @audreyr Installing Django Apps• How to install an app # settings.py INSTALLED_APPS += (‘houses’) YOUR_CUSTOM_SETTING = ‘your value’ # urls.py url(r’^houses/’, include(‘houses.urls’)),
  21. 21. Audrey Roy @audreyrDjango’s Ecosystem Over Time• More and more new innovations implemented as 3rd-party packages. • The best innovations get added to core
  22. 22. Audrey Roy @audreyr Observation• Ecosystems grow fastest when end-users can write packages • Look at jQuery plugins • Look at PyPI • Look at CPAN
  23. 23. Audrey Roy @audreyr Pyramid Core vs. Add-Ons• Smaller core, more add-ons• Anyone can write add-ons• Some add-ons are “officially endorsed”• Still young, but potential for rapid growth
  24. 24. Audrey Roy @audreyrPyramid’s Ecosystem Over Time• Past: Pylons, Repoze.BFG, Turbogears• Present: Core-like functionality implemented as add-ons. • Few but growing # of add-ons• Future: Lots of add-ons. Old add-ons easily deprecated for new replacement add-ons.
  25. 25. Audrey Roy Checklist: What 3rd-Party @audreyr Package Devs Need• “Best practices” doc on how to write 3rd party packages• Well-defined, easy-to-understand spec• Sample code (as much as possible)• Active community
  26. 26. Audrey RoyChecklist: What Every Micro- @audreyr Community Needs• Mailing list for announcements/questions• IRC channel• Docs, tutorials, sample projects• Spec or “Best practices” doc for package authors.• Add-on, plugin, or other 3rd-party package system• Actively-updated 3rd-party package catalog
  27. 27. Audrey Roy @audreyrToo many options?Dealing with a (not always) happy problem
  28. 28. Audrey Roy @audreyr The One True Way?• The Zen of Python says: “ There should be one-- and preferably only one --obvious way to do it.” • This is about Python language constructs• Not applicable to 3rd-party packages • e.g. okay to have multiple web frameworks
  29. 29. Audrey Roy @audreyr Too Much Clutter Can’t find the right package?• What if 2 packages have the same purpose?• Differences should be documented • Within the package docs • In a catalog• Deprecate bad packages
  30. 30. Audrey Roy @audreyr Too Much Fragmentation?• So many Python micro-communities • Web frameworks with their own user bases • SciPy, PyGame, wxPython, etc.
  31. 31. Audrey Roy @audreyr Too Much Fragmentation?• You can never have too many Python interest groups • Diversity of ideas • More communities == more Python developers• Share as much code as possible
  32. 32. Audrey Roy @audreyr3rd Party Package Quality Patterns and Anti-Patterns
  33. 33. Audrey RoyWhat Makes a Python Package @audreyr Useful?• Solving problems elegantly, clearly, efficiently • Does one thing well• Usability: thorough docs, pip install from PyPI• Reliability: tests, support
  34. 34. Audrey Roy @audreyrPackage Anti-Patterns Are Viral• Don’t underestimate the influence of your patterns• When there is no best practice, people find the anti-pattern code samples
  35. 35. Audrey Roy Package Anti-Pattern: @audreyr Not Packaging• Releasing snippets instead of packages• Heavy reliance on copying and pasting snippets • project-to-project • from old blog posts • snippet directories
  36. 36. Audrey Roy Package Anti-Pattern: @audreyr Not Packaging• But there are exceptions to this! • Don’t over-engineer to be pluggable
  37. 37. Audrey Roy Package Anti-Pattern: @audreyr Not Packaging• Tricks that you have to be “in the know” to understand
  38. 38. Audrey Roy Package Anti-Pattern: @audreyr Too Much Functionality• Kitchen-sink base platforms• Utility, do-everything packages• Duct-tape packages to correct a large variety of unrelated problems
  39. 39. Audrey Roy @audreyrPackage Pattern: Be Pythonic• Why do we love Python? • Elegance • Ease of use • Explicitness, clarity • Simplicity
  40. 40. Audrey Roy @audreyrCommunity-building Groups, leaders, and diversity of ideas
  41. 41. Audrey Roy @audreyr Mentorship• Today’s new users are tomorrow’s contributors & leaders• Mentorship groups: Positive encouragement • PyLadies • Python Core Mentorship • (need more like this)
  42. 42. Audrey Roy @audreyr Diversity of Ideas• Look at schedules & slides from PyCons & PUGs around the world• Ideas differ country-to-country• Same goes for other types of diversity besides geographic • LA PyLadies is very different from SoCal Python Interest Group & LA Django
  43. 43. Audrey Roy @audreyrSummary
  44. 44. Audrey Roy @audreyr Summary• Build what you want• Encourage a community of 3rd-party package developers• Be helpful
  45. 45. Audrey Roy @audreyr Thank you• Twitter: @audreyr• Find me in IRC - #pyladies, others• By the way:

×