Amazing Things In Open Source¶
Author¶
- Audrey Roy (http://twitter.com/audreyr)
- Python volunteer, Django Packages
Overview¶
- Community recognizes work you do (meritocracy)
Meritocracy¶
People will use your work if it has merit
- Anyone can build or be a leader
- If they put in the work
- Permission isn’t (usually) needed
- We allow experiments
Open Comparison¶
- Writing Comparison Grids for sub communities
- Compare packages for Django, Pyramid, etc.
Call to Action¶
- Build it!
- Be Nice
- Others probaby won’t build it, so you should
Early Decisions¶
Django Packages
Made during Django Dash
Decided to only manually add packages
- Good decision?
- Doesn’t matter
- 900 packages right now
Action is better than having something get debated
Probably better in the hands of the core devs
- Gut instinct is often right
- Can always change it later
Ecosystem Patterns¶
- Mostly from Django experience
- Django has many 3rd party packages
- Compared to Legos
- Django Core vs. Apps
- Many batteries included
- This approach is good and bad
- Can get stuck with a heavy core
- Promotes “one obvious way”
- Django has well defined patterns for apps
- App structure
- App settings
- Overridable templates
Reuse encourages innovations as 3rd party packages
Core is conservative
Best 3rd party apps get added to core
- Grow fastest when there is a pattern for extensions
- jQuery
- CPAN
- Pyramid
- Smaller core
- Core functionality as add-ons
- Endorsed add-ons
- Potential for rapid growth
- Can deprecate, and allow add-ons to evolve
- Don’t need to wait on core
- Pyramid’s Ecosystem developed over time
- Came from Pylons, Repoze, Turbogears
How to Grow an Ecosystem¶
- Write “Best Practices” on how to write 3rd party packages
- There is a big gap in this
- Well-defined specs
- Allow others to write upon a base
Sample code
Active community
Mailing list/ IRC
Docs
3rd-Party packages catalog
Too Many Options?¶
“There should be one– and preferably only one –obvious way to do it.”
There can be many web frameworks
But there is often too much clutter
Document the differences
- Deprecate bad packages
- Hard to do in some cases
- Recommend replacements
Fragmentation¶
Not all web
Science, games, etc.
- Can’t have too many interest groups
- Diversity of ideas
3rd Party Packages¶
Best: Do one thing well
- Usability
- Good docs
- Easy to install
- Reliability
- Tests
- Help
Antipatterns are viral
- Snippets is the biggest anti-pattern
- Copy and paste code
Don’t over-engineer though
- Don’t make the “kitchen-sink” package
- Utility functions
- Unrelated problems
- More visible in HTML/CSS world
- Do Be Pythoic
- Elegance
- Ease of use
- Explicitness
- Simplicity is why we use Python
Mentorship¶
- Provide positive encouragement
- Put yourself out there
Diversity of Ideas¶
- Differ from country to country
- Other types of diversity
- PyLadies vs. SoCal Python Interest Group