![Page 1: Amazing things in open source - Amazon Web Servicescodeconf.s3.amazonaws.com/2011/pycodeconf/talks... · Amazing things in open source 3rd-party Python package ecosystems Audrey Roy](https://reader035.vdocuments.site/reader035/viewer/2022062602/5ec98bef677e3c7a1359306c/html5/thumbnails/1.jpg)
Audrey Roy@audreyr
Amazing things in open source
3rd-party Python package ecosystems
Audrey Roy@audreyr
![Page 2: Amazing things in open source - Amazon Web Servicescodeconf.s3.amazonaws.com/2011/pycodeconf/talks... · Amazing things in open source 3rd-party Python package ecosystems Audrey Roy](https://reader035.vdocuments.site/reader035/viewer/2022062602/5ec98bef677e3c7a1359306c/html5/thumbnails/2.jpg)
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)
![Page 3: Amazing things in open source - Amazon Web Servicescodeconf.s3.amazonaws.com/2011/pycodeconf/talks... · Amazing things in open source 3rd-party Python package ecosystems Audrey Roy](https://reader035.vdocuments.site/reader035/viewer/2022062602/5ec98bef677e3c7a1359306c/html5/thumbnails/3.jpg)
Audrey Roy@audreyr
Overview
• Python community is a meritocracy
• Python ecosystem patterns
• 3rd-party packages: Quantity & quality
• Community-building
![Page 4: Amazing things in open source - Amazon Web Servicescodeconf.s3.amazonaws.com/2011/pycodeconf/talks... · Amazing things in open source 3rd-party Python package ecosystems Audrey Roy](https://reader035.vdocuments.site/reader035/viewer/2022062602/5ec98bef677e3c7a1359306c/html5/thumbnails/4.jpg)
Audrey Roy@audreyr
MeritocracyIf your work has merit, people use it
![Page 5: Amazing things in open source - Amazon Web Servicescodeconf.s3.amazonaws.com/2011/pycodeconf/talks... · Amazing things in open source 3rd-party Python package ecosystems Audrey Roy](https://reader035.vdocuments.site/reader035/viewer/2022062602/5ec98bef677e3c7a1359306c/html5/thumbnails/5.jpg)
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
![Page 6: Amazing things in open source - Amazon Web Servicescodeconf.s3.amazonaws.com/2011/pycodeconf/talks... · Amazing things in open source 3rd-party Python package ecosystems Audrey Roy](https://reader035.vdocuments.site/reader035/viewer/2022062602/5ec98bef677e3c7a1359306c/html5/thumbnails/6.jpg)
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)
![Page 7: Amazing things in open source - Amazon Web Servicescodeconf.s3.amazonaws.com/2011/pycodeconf/talks... · Amazing things in open source 3rd-party Python package ecosystems Audrey Roy](https://reader035.vdocuments.site/reader035/viewer/2022062602/5ec98bef677e3c7a1359306c/html5/thumbnails/7.jpg)
Audrey Roy@audreyr
It’s fun
• Rewarding to see others using your work
![Page 8: Amazing things in open source - Amazon Web Servicescodeconf.s3.amazonaws.com/2011/pycodeconf/talks... · Amazing things in open source 3rd-party Python package ecosystems Audrey Roy](https://reader035.vdocuments.site/reader035/viewer/2022062602/5ec98bef677e3c7a1359306c/html5/thumbnails/8.jpg)
Audrey Roy@audreyr
Meritocracies are about what 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
![Page 9: Amazing things in open source - Amazon Web Servicescodeconf.s3.amazonaws.com/2011/pycodeconf/talks... · Amazing things in open source 3rd-party Python package ecosystems Audrey Roy](https://reader035.vdocuments.site/reader035/viewer/2022062602/5ec98bef677e3c7a1359306c/html5/thumbnails/9.jpg)
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
![Page 10: Amazing things in open source - Amazon Web Servicescodeconf.s3.amazonaws.com/2011/pycodeconf/talks... · Amazing things in open source 3rd-party Python package ecosystems Audrey Roy](https://reader035.vdocuments.site/reader035/viewer/2022062602/5ec98bef677e3c7a1359306c/html5/thumbnails/10.jpg)
Audrey Roy@audreyr
Early decisions for djangopackages.com
• Forced to make quick decisions during Django Dash
• All packages are added manually, using:
• package name
• PyPI URL
• repo URL
![Page 11: Amazing things in open source - Amazon Web Servicescodeconf.s3.amazonaws.com/2011/pycodeconf/talks... · Amazing things in open source 3rd-party Python package ecosystems Audrey Roy](https://reader035.vdocuments.site/reader035/viewer/2022062602/5ec98bef677e3c7a1359306c/html5/thumbnails/11.jpg)
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
![Page 12: Amazing things in open source - Amazon Web Servicescodeconf.s3.amazonaws.com/2011/pycodeconf/talks... · Amazing things in open source 3rd-party Python package ecosystems Audrey Roy](https://reader035.vdocuments.site/reader035/viewer/2022062602/5ec98bef677e3c7a1359306c/html5/thumbnails/12.jpg)
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
![Page 13: Amazing things in open source - Amazon Web Servicescodeconf.s3.amazonaws.com/2011/pycodeconf/talks... · Amazing things in open source 3rd-party Python package ecosystems Audrey Roy](https://reader035.vdocuments.site/reader035/viewer/2022062602/5ec98bef677e3c7a1359306c/html5/thumbnails/13.jpg)
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
![Page 14: Amazing things in open source - Amazon Web Servicescodeconf.s3.amazonaws.com/2011/pycodeconf/talks... · Amazing things in open source 3rd-party Python package ecosystems Audrey Roy](https://reader035.vdocuments.site/reader035/viewer/2022062602/5ec98bef677e3c7a1359306c/html5/thumbnails/14.jpg)
Audrey Roy@audreyr
Your 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 ;)
![Page 15: Amazing things in open source - Amazon Web Servicescodeconf.s3.amazonaws.com/2011/pycodeconf/talks... · Amazing things in open source 3rd-party Python package ecosystems Audrey Roy](https://reader035.vdocuments.site/reader035/viewer/2022062602/5ec98bef677e3c7a1359306c/html5/thumbnails/15.jpg)
Audrey Roy@audreyr
Ecosystem PatternsAdd-ons, plugins, contrib, core size, etc.
What makes a Python project or framework grow?
![Page 16: Amazing things in open source - Amazon Web Servicescodeconf.s3.amazonaws.com/2011/pycodeconf/talks... · Amazing things in open source 3rd-party Python package ecosystems Audrey Roy](https://reader035.vdocuments.site/reader035/viewer/2022062602/5ec98bef677e3c7a1359306c/html5/thumbnails/16.jpg)
Audrey Roy@audreyr
Why I Use Mostly Django These Days
• Many 3rd-party packages
• Candy store
• Bucket of Legos
• Not having to write everything myself is fun
![Page 17: Amazing things in open source - Amazon Web Servicescodeconf.s3.amazonaws.com/2011/pycodeconf/talks... · Amazing things in open source 3rd-party Python package ecosystems Audrey Roy](https://reader035.vdocuments.site/reader035/viewer/2022062602/5ec98bef677e3c7a1359306c/html5/thumbnails/17.jpg)
Audrey Roy@audreyr
Why I Use Mostly Django These Days
• (also, I’m just used to it)
![Page 18: Amazing things in open source - Amazon Web Servicescodeconf.s3.amazonaws.com/2011/pycodeconf/talks... · Amazing things in open source 3rd-party Python package ecosystems Audrey Roy](https://reader035.vdocuments.site/reader035/viewer/2022062602/5ec98bef677e3c7a1359306c/html5/thumbnails/18.jpg)
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
![Page 19: Amazing things in open source - Amazon Web Servicescodeconf.s3.amazonaws.com/2011/pycodeconf/talks... · Amazing things in open source 3rd-party Python package ecosystems Audrey Roy](https://reader035.vdocuments.site/reader035/viewer/2022062602/5ec98bef677e3c7a1359306c/html5/thumbnails/19.jpg)
Audrey Roy@audreyr
Django’s Reusable App Structure
houses/
__init__.pymodels.py
views.py
urls.py
tests.py
templates/houses/house_list.html
house_detail.html
• What an app looks like
![Page 20: Amazing things in open source - Amazon Web Servicescodeconf.s3.amazonaws.com/2011/pycodeconf/talks... · Amazing things in open source 3rd-party Python package ecosystems Audrey Roy](https://reader035.vdocuments.site/reader035/viewer/2022062602/5ec98bef677e3c7a1359306c/html5/thumbnails/20.jpg)
Audrey Roy@audreyr
Installing Django Apps
# settings.py
INSTALLED_APPS += (‘houses’)YOUR_CUSTOM_SETTING = ‘your value’
# urls.py
url(r’^houses/’, include(‘houses.urls’)),
• How to install an app
![Page 21: Amazing things in open source - Amazon Web Servicescodeconf.s3.amazonaws.com/2011/pycodeconf/talks... · Amazing things in open source 3rd-party Python package ecosystems Audrey Roy](https://reader035.vdocuments.site/reader035/viewer/2022062602/5ec98bef677e3c7a1359306c/html5/thumbnails/21.jpg)
Audrey Roy@audreyr
Django’s Ecosystem Over Time
• More and more new innovations implemented as 3rd-party packages.
• The best innovations get added to core
![Page 22: Amazing things in open source - Amazon Web Servicescodeconf.s3.amazonaws.com/2011/pycodeconf/talks... · Amazing things in open source 3rd-party Python package ecosystems Audrey Roy](https://reader035.vdocuments.site/reader035/viewer/2022062602/5ec98bef677e3c7a1359306c/html5/thumbnails/22.jpg)
Audrey Roy@audreyr
Observation
• Ecosystems grow fastest when end-users can write packages
• Look at jQuery plugins
• Look at PyPI
• Look at CPAN
![Page 23: Amazing things in open source - Amazon Web Servicescodeconf.s3.amazonaws.com/2011/pycodeconf/talks... · Amazing things in open source 3rd-party Python package ecosystems Audrey Roy](https://reader035.vdocuments.site/reader035/viewer/2022062602/5ec98bef677e3c7a1359306c/html5/thumbnails/23.jpg)
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
![Page 24: Amazing things in open source - Amazon Web Servicescodeconf.s3.amazonaws.com/2011/pycodeconf/talks... · Amazing things in open source 3rd-party Python package ecosystems Audrey Roy](https://reader035.vdocuments.site/reader035/viewer/2022062602/5ec98bef677e3c7a1359306c/html5/thumbnails/24.jpg)
Audrey Roy@audreyr
Pyramid’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.
![Page 25: Amazing things in open source - Amazon Web Servicescodeconf.s3.amazonaws.com/2011/pycodeconf/talks... · Amazing things in open source 3rd-party Python package ecosystems Audrey Roy](https://reader035.vdocuments.site/reader035/viewer/2022062602/5ec98bef677e3c7a1359306c/html5/thumbnails/25.jpg)
Audrey Roy@audreyr
Checklist: What 3rd-Party 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
![Page 26: Amazing things in open source - Amazon Web Servicescodeconf.s3.amazonaws.com/2011/pycodeconf/talks... · Amazing things in open source 3rd-party Python package ecosystems Audrey Roy](https://reader035.vdocuments.site/reader035/viewer/2022062602/5ec98bef677e3c7a1359306c/html5/thumbnails/26.jpg)
Audrey Roy@audreyr
Checklist: What Every Micro-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
![Page 27: Amazing things in open source - Amazon Web Servicescodeconf.s3.amazonaws.com/2011/pycodeconf/talks... · Amazing things in open source 3rd-party Python package ecosystems Audrey Roy](https://reader035.vdocuments.site/reader035/viewer/2022062602/5ec98bef677e3c7a1359306c/html5/thumbnails/27.jpg)
Audrey Roy@audreyr
Too many options?Dealing with a (not always) happy problem
![Page 28: Amazing things in open source - Amazon Web Servicescodeconf.s3.amazonaws.com/2011/pycodeconf/talks... · Amazing things in open source 3rd-party Python package ecosystems Audrey Roy](https://reader035.vdocuments.site/reader035/viewer/2022062602/5ec98bef677e3c7a1359306c/html5/thumbnails/28.jpg)
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
![Page 29: Amazing things in open source - Amazon Web Servicescodeconf.s3.amazonaws.com/2011/pycodeconf/talks... · Amazing things in open source 3rd-party Python package ecosystems Audrey Roy](https://reader035.vdocuments.site/reader035/viewer/2022062602/5ec98bef677e3c7a1359306c/html5/thumbnails/29.jpg)
Audrey Roy@audreyr
Too Much ClutterCan’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
![Page 30: Amazing things in open source - Amazon Web Servicescodeconf.s3.amazonaws.com/2011/pycodeconf/talks... · Amazing things in open source 3rd-party Python package ecosystems Audrey Roy](https://reader035.vdocuments.site/reader035/viewer/2022062602/5ec98bef677e3c7a1359306c/html5/thumbnails/30.jpg)
Audrey Roy@audreyr
Too Much Fragmentation?
• So many Python micro-communities
• Web frameworks with their own user bases
• SciPy, PyGame, wxPython, etc.
![Page 31: Amazing things in open source - Amazon Web Servicescodeconf.s3.amazonaws.com/2011/pycodeconf/talks... · Amazing things in open source 3rd-party Python package ecosystems Audrey Roy](https://reader035.vdocuments.site/reader035/viewer/2022062602/5ec98bef677e3c7a1359306c/html5/thumbnails/31.jpg)
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
![Page 32: Amazing things in open source - Amazon Web Servicescodeconf.s3.amazonaws.com/2011/pycodeconf/talks... · Amazing things in open source 3rd-party Python package ecosystems Audrey Roy](https://reader035.vdocuments.site/reader035/viewer/2022062602/5ec98bef677e3c7a1359306c/html5/thumbnails/32.jpg)
Audrey Roy@audreyr
3rd Party Package Quality
Patterns and Anti-Patterns
![Page 33: Amazing things in open source - Amazon Web Servicescodeconf.s3.amazonaws.com/2011/pycodeconf/talks... · Amazing things in open source 3rd-party Python package ecosystems Audrey Roy](https://reader035.vdocuments.site/reader035/viewer/2022062602/5ec98bef677e3c7a1359306c/html5/thumbnails/33.jpg)
Audrey Roy@audreyr
What Makes a Python Package Useful?
• Solving problems elegantly, clearly, efficiently
• Does one thing well
• Usability: thorough docs, pip install from PyPI
• Reliability: tests, support
![Page 34: Amazing things in open source - Amazon Web Servicescodeconf.s3.amazonaws.com/2011/pycodeconf/talks... · Amazing things in open source 3rd-party Python package ecosystems Audrey Roy](https://reader035.vdocuments.site/reader035/viewer/2022062602/5ec98bef677e3c7a1359306c/html5/thumbnails/34.jpg)
Audrey Roy@audreyr
Package 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
![Page 35: Amazing things in open source - Amazon Web Servicescodeconf.s3.amazonaws.com/2011/pycodeconf/talks... · Amazing things in open source 3rd-party Python package ecosystems Audrey Roy](https://reader035.vdocuments.site/reader035/viewer/2022062602/5ec98bef677e3c7a1359306c/html5/thumbnails/35.jpg)
Audrey Roy@audreyr
Package Anti-Pattern:Not Packaging
• Releasing snippets instead of packages
• Heavy reliance on copying and pasting snippets
• project-to-project
• from old blog posts
• snippet directories
![Page 36: Amazing things in open source - Amazon Web Servicescodeconf.s3.amazonaws.com/2011/pycodeconf/talks... · Amazing things in open source 3rd-party Python package ecosystems Audrey Roy](https://reader035.vdocuments.site/reader035/viewer/2022062602/5ec98bef677e3c7a1359306c/html5/thumbnails/36.jpg)
Audrey Roy@audreyr
Package Anti-Pattern:Not Packaging
• But there are exceptions to this!
• Don’t over-engineer to be pluggable
![Page 37: Amazing things in open source - Amazon Web Servicescodeconf.s3.amazonaws.com/2011/pycodeconf/talks... · Amazing things in open source 3rd-party Python package ecosystems Audrey Roy](https://reader035.vdocuments.site/reader035/viewer/2022062602/5ec98bef677e3c7a1359306c/html5/thumbnails/37.jpg)
Audrey Roy@audreyr
Package Anti-Pattern:Not Packaging
• Tricks that you have to be “in the know” to understand
![Page 38: Amazing things in open source - Amazon Web Servicescodeconf.s3.amazonaws.com/2011/pycodeconf/talks... · Amazing things in open source 3rd-party Python package ecosystems Audrey Roy](https://reader035.vdocuments.site/reader035/viewer/2022062602/5ec98bef677e3c7a1359306c/html5/thumbnails/38.jpg)
Audrey Roy@audreyr
Package Anti-Pattern:Too Much Functionality
• Kitchen-sink base platforms
• Utility, do-everything packages
• Duct-tape packages to correct a large variety of unrelated problems
![Page 39: Amazing things in open source - Amazon Web Servicescodeconf.s3.amazonaws.com/2011/pycodeconf/talks... · Amazing things in open source 3rd-party Python package ecosystems Audrey Roy](https://reader035.vdocuments.site/reader035/viewer/2022062602/5ec98bef677e3c7a1359306c/html5/thumbnails/39.jpg)
Audrey Roy@audreyr
Package Pattern: Be Pythonic
• Why do we love Python?
• Elegance
• Ease of use
• Explicitness, clarity
• Simplicity
![Page 40: Amazing things in open source - Amazon Web Servicescodeconf.s3.amazonaws.com/2011/pycodeconf/talks... · Amazing things in open source 3rd-party Python package ecosystems Audrey Roy](https://reader035.vdocuments.site/reader035/viewer/2022062602/5ec98bef677e3c7a1359306c/html5/thumbnails/40.jpg)
Audrey Roy@audreyr
Community-buildingGroups, leaders, and diversity of ideas
![Page 41: Amazing things in open source - Amazon Web Servicescodeconf.s3.amazonaws.com/2011/pycodeconf/talks... · Amazing things in open source 3rd-party Python package ecosystems Audrey Roy](https://reader035.vdocuments.site/reader035/viewer/2022062602/5ec98bef677e3c7a1359306c/html5/thumbnails/41.jpg)
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)
![Page 42: Amazing things in open source - Amazon Web Servicescodeconf.s3.amazonaws.com/2011/pycodeconf/talks... · Amazing things in open source 3rd-party Python package ecosystems Audrey Roy](https://reader035.vdocuments.site/reader035/viewer/2022062602/5ec98bef677e3c7a1359306c/html5/thumbnails/42.jpg)
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
![Page 43: Amazing things in open source - Amazon Web Servicescodeconf.s3.amazonaws.com/2011/pycodeconf/talks... · Amazing things in open source 3rd-party Python package ecosystems Audrey Roy](https://reader035.vdocuments.site/reader035/viewer/2022062602/5ec98bef677e3c7a1359306c/html5/thumbnails/43.jpg)
Audrey Roy@audreyr
Summary
![Page 44: Amazing things in open source - Amazon Web Servicescodeconf.s3.amazonaws.com/2011/pycodeconf/talks... · Amazing things in open source 3rd-party Python package ecosystems Audrey Roy](https://reader035.vdocuments.site/reader035/viewer/2022062602/5ec98bef677e3c7a1359306c/html5/thumbnails/44.jpg)
Audrey Roy@audreyr
Summary
• Build what you want
• Encourage a community of 3rd-party package developers
• Be helpful
![Page 45: Amazing things in open source - Amazon Web Servicescodeconf.s3.amazonaws.com/2011/pycodeconf/talks... · Amazing things in open source 3rd-party Python package ecosystems Audrey Roy](https://reader035.vdocuments.site/reader035/viewer/2022062602/5ec98bef677e3c7a1359306c/html5/thumbnails/45.jpg)
Audrey Roy@audreyr
Thank you
• Twitter: @audreyr
• Find me in IRC - #pyladies, others
• By the way: