Presented by:
Travis Hathaway
For:
EuroPython 2025
Travis Hathaway
(a.k.a. pretty chill guy)
Standards
To illustrate how these all fit together, we follow the story of Jack and how he utilized these tools to build a community of open-source developers.
Jack's first steps...
1. Create a GitHub repository
2. Cut a release
3. Upload to PyPI
Jack's B2B SaaS employer writes a blog post about his project and it goes viral! π More and more users are discovering his project π.
Jack is excited π
Jack's employer realizes this project is a great source of publicity, so they decide to let him and few other co-workers work on it full-time.
Jack's first dilemma...
Now that his project is live on GitHub, he keeps getting new issues and pull requests from users. On one hand, this is great but on the other hand, he feels overwhelmed.
Jack is nervous π¬
"Hey Jack! What's up?"
"Hey Travis! I need some help! I know you help manage a popular open-source project, and I need some advice on how to handle all these issues and pull requests."
"I know it can feel overwhelming, but this is a great opportunity to communicate with your users, so be sure to find out how you can stay responsive by incorporating answering issues and pull requests into your daily routine."
"How much time should my team dedicate to this?"
"This will depend on the project, but a good rule of thumb would be 20% of your team's time."
"That sounds reasonable! We can always adjust later if needed and as we add more maintainers."
Jack and his fellow maintainers follow through on Travis' advice and start responding to issues and pull request and begin learning more and more about their users.
But as the number of issues and pull requests grows, they realize how unorganized everything is...
Jack and his maintainers now have an organized approach to communicating with their users via issues and pull requests, but Jack still feels like something is missing...
"Hey Travis! Thanks for the advice so far, but I feel like we're missing out on opportunities to connect and communicate better with our users. Do you have any other tools to recommend?"
"Definitely, one other way to not only communicate better with your users but allow them to communicate with each other is to host a chat server instance."
"A cat server! Oh hell yeah, sign me up!"
"No Jack! A chat server! Like Discord, Slack or Matrix"
Cat... ehem chat servers...
"One more thing Jack, you might also consider setting a forum website for ArgPaws. This gives you one more place to have conversations with your community and can be a bit more organized than a chat server."
"Awesome! Just one more place for cool cats to connect!"
Dedicated π§ββοΈ
Usual suspects π₯Έ
Jack decides to setup a Discord and Zulip server for ArgPaws and keeps an eye on StackOverflow for questions about ArgPaws there.
He's getting more and more engagement and feels a real connection with everyone he's writing his software for and his fellow maintainers π«Ά.
"Jeez Travis, so many great tools! But, I still feel like something is missing... What if I want to meet members of my community face-to-face?"
"Yes Jack, it can actually be pretty depressing never to meet anyone, especially those that dedicate so much of their time to your project. My first recommendation is setting up a regularly recurring community calls."
"To make sure the most people can attend, I would use a video conferencing tool and pick a time where the most people can attend. If you have a community that's spread out across the globe, consider rotating time slots."
"Great idea! We can pick a single time that works for most people and see how it goes. Looking forward to meeting everyone!"
Jack sets up his community call and slowly starts making connections with ArgPaws contributors and users from all over the world π πΈ.
Image generated with ChatGPT
Some time has passed and ArgPaws continues to gain adoption beyond the laser pointer industry...
Jack reaches out once more to his ol' pal Travis for some more advice...
"Hey Travis! Everything with ArgPaws is going very well. But, while the community calls are a great way to keep us organized on maintenance and feature work, I feel like we may need even more time with each other. Do you have any advice for how we can achieve this?"
"Sure thing Jack! While meeting virtually can help us achieve a lot, sometimes it's important for us to meet in person!"
Where?
What?
Jack and his community of developer began meeting in person. And while they were able to achieve a lot, they soon came across the last problem we'll discuss today...
"Travis, our meet ups are going well, but we having a hard time making decisions and keeping track of what they are. Can you help us out?"
"Ahh yes, this is perhaps one of the trickiest parts of managing an open-source project: consensus. It's important that you have a clear way to make decisions and record what they are."
"Thanks for the great explanation on how this stuff works! I just have one more question: who actually sits on the steering councils?"
"Great question Jack! The steering council membership is normally determined by your project's governance model. In conda's case, we restrict membership to a maximum of two people per major funding source to make sure one funding source doesn't dominate the decision-making process."
"Jeez Travis, that governance stuff sounds super boring! But, I guess it's important!"
"Yep Jack, it is definitely boring! But, it's important that everyone has clear expectations during the decision making process, so we can avoid conflict and confusion."
Two years have passed since Jack's last conversation with Travis. He decides to call him once more to check in...
"It's nice to talk to you again!
ArgPaws now has:
"Nice βοΈ π"
Thus concludes our story of Jack and his adventures in communication and consensus building in the world of open-source.