Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Journey to Maintainer- GitHub
Search
KatherineMichel
June 11, 2021
Technology
25
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Journey to Maintainer- GitHub
KatherineMichel
June 11, 2021
More Decks by KatherineMichel
See All by KatherineMichel
DjangoCon US 2023 Recap
katherinemichel
0
61
Maintaining Demystified- DjangoCon US
katherinemichel
0
29
Desmitificando el Mantenimiento- DjangoCon US
katherinemichel
0
26
Bringing Pinax Back to Life- PyCon US Maintainers Summit
katherinemichel
0
30
Bringing Pinax Back to Life- FOSDEM
katherinemichel
0
28
Pinax Lessons Learned- DevICT
katherinemichel
0
61
Get a Jumpstart on Collaboration and Code Review in GitHub- PyLadies Southwest Florida
katherinemichel
0
47
Get a Jumpstart on Collaboration and Code Review in GitHub- devICT Hacktoberfest
katherinemichel
0
39
Get a Jumpstart on Collaboration and Code Review in GitHub- PyLadies Remote
katherinemichel
0
41
Other Decks in Technology
See All in Technology
機械学習を「社会実装」するということ 2026年夏版 / Social Implementation of Machine Learning June 2026 Version
moepy_stats
6
2.4k
AIエージェントが名古屋の猛暑からあなたを守る
happysamurai294
0
130
SONiCの統計情報を取得したい
sonic
0
180
On-behalf-of Token exchange with AgentCore Identity
hironobuiga
2
220
SONiCで構築・運用する生成AI向けパブリッククラウドネットワーク ~実装編~
sonic
0
220
気軽に使える"情報のハブ"としてのNotion活用 〜フロー情報の集積点 と、 Claude Code × Notion AI〜
syucream
1
140
Bucharest Tech Week 2026 - Reinventing testing practices in the AI era
edeandrea
PRO
1
160
自宅LLMの話
jacopen
1
600
2026 TECHFRESH 畢業分享會 - AI-Native 重塑軟體工程與虛擬講師
line_developers_tw
PRO
0
1.1k
手塩にかけりゃいいってもんじゃない
ming_ayami
0
590
Claude Code の Sandbox 機能を Anthropic Sandbox Runtime(srt) で試そう!/lets-play-anthropic-sandbox-runtime
tomoki10
1
620
【NRUG vol.18】なぜ多くのオブザーバビリティ導入は失敗するのか
nrug_member
0
150
Featured
See All Featured
How to build an LLM SEO readiness audit: a practical framework
nmsamuel
1
780
Believing is Seeing
oripsolob
1
150
Art, The Web, and Tiny UX
lynnandtonic
304
22k
Exploring the relationship between traditional SERPs and Gen AI search
raygrieselhuber
PRO
2
4k
Why You Should Never Use an ORM
jnunemaker
PRO
61
9.9k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
49
3.5k
Writing Fast Ruby
sferik
630
63k
16th Malabo Montpellier Forum Presentation
akademiya2063
PRO
0
140
Bootstrapping a Software Product
garrettdimon
PRO
307
120k
Design of three-dimensional binary manipulators for pick-and-place task avoiding obstacles (IECON2024)
konakalab
0
460
Gemini Prompt Engineering: Practical Techniques for Tangible AI Outcomes
mfonobong
2
430
Building Flexible Design Systems
yeseniaperezcruz
330
40k
Transcript
Journey to Maintainer By Katherine “Kati” Michel
About Me 2
Talk Goals • How I got my start in open
source and maintaining • Technical aspects of being a Python package maintainer • Maintaining report card • Lessons learned
Milestone: Django Was Born, 2003
Django is Invented at LJW
If Only I Had Known
If Only I Had Known I was driving around the
birthplace of Django and didn’t know it existed
Milestone: Becoming Interested in Tech, 2010
Intro to Tech
Milestone: Getting Started in Open Source, 2013
Announcing TacoFancy!
One Life Changing Question
My First Pull Request
Milestone: Learning the Fundamentals of Maintaining, 2017
DjangoCon US: The Conference with a Heart
DjangoCon US: The Conference with a Heart From my friend
Mariatta’s ReadME Project page
DjangoCon US Website Pinax to... Jekyll
The Sites I’ve Overseen
Increase in Number of Contributors From 23 in 2016 To
65 in 2020
“Low Hanging Fruit” PRs 67 commits, including merging 28 PRs
That time I accidentally deleted the `dev` Branch One of
the first things I did was the worst thing I ever thought I could do and it was liberating
I Learned So Much After that…
• Fetch a PR locally • Run the code •
Merge a PR locally • Push a PR to a `master` branch • Push an update to a PR from a fork How To...
Created contributing docs and helped newcomers Also Became a Mentor
OS and Life Lesson: The Mistakes Disappear into the History
• Open source has taught me it’s ok to have a beginner mindset; make mistakes, keep improving
First Tech Talk Photo by Adam Gregory of https://atomimages509.wixsite.com/atom
Get a Jumpstart on Collaboration and Code Review in GitHub
• I made a talk about the mental model I had developed of how Git and GitHub work • I have given the talk to PyLadies, in particular
Mental Model • What GitHub is • “Shared Repository” versus
“Fork and Pull” • A local development process • How to review pull requests as a maintainer • Tips for getting started
My All Time Favorite Piece of Git Code Push to
a forked repo PR branch $ git push https://github.com/<user-name>/<repo-name> <local-branch-name>:<remote-branch-name>
Quality of Life • Technical skill set • Better pay
• Attend conferences • Meet smart, interesting people • Travel to cool places
Second Chances On a “State of Django” panel with 3
LJW friends Me Frank Wiles, early LJW Simon Willison, Django co-creator Jeff Triplett, early LJW
Eating Dinner with Guido Me Guido
Milestone: Becoming a Python Package Maintainer, 2017
I Was Hired by Eldarion to Maintain Pinax Pinax: an
open-source library of reusable Django starter projects, apps, and themes for building websites
The “Hot Club” Formed: 2007
Pinax Was Born: 2008
How It Began Personal Sites Inspiring Reusable Features
How It Began “Pinax is every idea I’ve ever had.”
How It Was Going 80 Projects and Apps account blog
static stripe waitinglist zero company documents team-wiki wiki forums socialauth Pinax Themes Popular Pinax Apps Pinax Starter Projects django-user-accounts pinax-stripe pinax-announcements pinax-badges pinax-blog pinax-calendars pinax-cohorts pinax-comments pinax-documents pinax-eventlog pinax-events pinax-forums pinax-images pinax-invitations pinax-likes pinax-messages pinax-news pinax-notifications pinax-points pinax-ratings pinax-referrals pinax-submissions pinax-teams pinax-testimonials pinax-types pinax-waitinglist pinax-webanalytics pinax-wiki pinax-templates pinax-theme-bootstrap
How It Was Going GitHub Organization, Global Docs, and Slack
How It Was Going Sustainability lacking
Beginner Mindset
Simplified, Self-Service, Self-Sustaining
Vanilla Django Project Project Files Terminal $ django-admin startproject mysite
.
Vanilla Django Apps Project and App Files Terminal $ python
manage.py startapp myapp
Pinax CLI Terminal $ pip install pinax-cli $ pinax projects
Pinax CLI `startproject` is called from within the pinax-cli codebase
Code Snippet
Pinax CLI Code Snippet starter project URL is passed in
as a parameter
`projects.json` File File Snippet
Pinax Starter Projects • Pinax starter projects are in one
repo • Each starter project is in an individual branch
Pinax Apps in Starter Projects Each starter project contains the
relevant Pinax apps, to be installed from PyPI (the Python Package Index)
Pinax Apps Stand Alone Alternatively, Pinax apps can be used
independently of any Pinax starter project Search “pinax” on PyPI
Maintaining Pinax Apps • GitHub Flow workflow • CalVer at
release-level (year.month) • SemVer at app-level (major.minor.patch)
Pinax App Codebases Each Pinax app codebase lives in a
GitHub repo
Professional Level Configs tox for testing CircleCI for continuous integration
`setup.py` for packaging
Update the Test Matrix CircleCI Boilerplate tox Boilerplate
pyenv and tox pyenv can be used to install multiple
global Python versions Then tox can run the test matrix Terminal
Python/Django Release Notes Tell you what changes have been made
to the codebase in the release
Update SemVer Version and Changelog
Tag and Publish Tagging a release Published to PyPI
Pinax Report Card GitHub Open Source Guide “A Checklist Before
You Contribute” is a good starting point
Pinax Seems Dead... TODO Group: “Shutting Down an Open Source
Project”
But, Pinax is Still Being Used… A Lot? pinax-ratings has
1045 downloads per week and last release was by far most popular
But, Pinax is Still Being Used… A Lot? A query
via BigQuery pinax-ratings has 27,550 downloads over 6 months!
Pinax Releases • Happening more regularly now • Keeps the
code secure • Plus, access to new features
Docs and Standardization • Documented tribal knowledge • Made one
source of docs, easy to find, use • Created detailed release and maintainer docs • Created community health files • Chose one configuration approach across projects
Community Engagement • Reduced the backlog of issues and PRs
• Wrote more blog posts and publicized them
How It’s Going: 20.07 Release • 28 apps included •
Support for Python 2.7 dropped • A huge milestone for me personally and professionally
How It’s Going: 21.05 Release
Updating the Test Matrix • Drop support for Django 3.0
• Continue support for Django 2.2, and Python 3.6, 3.7, and 3.8 • Add support for Django 3.1, 3.2, and Python 3.9
Small Improvements • Fix `setup.py test` deprecation • Fix isort
deprecation • Add Black formatter
Documentation • Global documentation is in need of improvement •
App specific docs should be double checked
Additional Automation • GitHub Action that runs tox • GitHub
Action to auto-publish to PyPI upon tagging
Creating a Fork • pinax-starter-projects • pinax-cli
Lessons Learned • How to make a community self-sustaining
OS Social Contract “... open source maintainers owe you quite
literally nothing when it comes to their open source code, and treating them poorly is unethical.” - Brett Cannon, Python Core Dev
The Link Between Django Core Dev and Pinax
Centralize Access and Knowledge • Centralize access • Be willing
to hand access over • Avoid solutions that create gatekeeping
Managing Volunteer Maintainers • Give selective permissions • Protect branches
• Require reviews
Reduce Scope • Mark repos as deprecated • Archive repos
• Disable issues • Communicate that the code is maintained sporadically
Additional Automation • GitHub Actions • GitHub Apps • Probot
Is it Worth It? Yes :)
Is it Worth It? Yes :)
Q & A