Amazing Things In Open Source

Author

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