Brett Cannon Brett Cannon

Brett Cannon @brettcannon

  • Project Python
  • Location Vancouver, BC Canada
  • Day job Principal Software Engineer, Microsoft
Brett Cannon
Brett Cannon made his first open source contribution more than 15 years ago. Now a Software Engineer at Microsoft, he’s still a core contributor to Python, a project he has contributed to for more than a decade.

Backstory

I first reached out to the Python development team (aka python-dev) when I emailed the mailing list on June 17, 2002 about accepting my patch to add time.strptime() to Python’s standard library.

I quickly caught the open source bug, and decided to start curating email digests for the group. They gave me a great excuse to ask for clarifications about a topic, but more critically I was able to notice when someone pointed out something that needed fixing.

Fast-forward to April 2003: I had been regularly submitting patches for months when I said I would happily write some documentation as long as someone committed the patch. Guido [who authored Python] replied, "Do you have a SF userid yet? Then we can give you commit privs!" I gained my commit privileges like people still do today on the Python project: I consistently contributed good patches and eventually a core developer noticed and asked if I wanted to join the team.

"I gained my commit privileges like people still do today on the Python project: I consistently contributed good patches and eventually a core developer noticed and asked if I wanted to join the team."

Daily tasks

  • Anything and everything :)
  • Follow up on issues (for example, checking in on the progress of a patch to connect GitHub pull requests to bugs.python.org issues)
  • Write code (that makes our CLA bot’s messages a bit nicer, for example)
  • Come up with designs (I have a project in my head that has lasted years to centralize all of Python’s import data into a single object instead of hiding away in the sys module)
  • Help others write and review code

I'm lucky enough that Microsoft lets me spend one day a week on Python, plus any spare work time I may have or if some emergency creeps up. So unless I'm under some extreme deadline, I take every Friday to work from home on Python.

Rewards

I have always said that the Python development team taught me how to truly program. I had taken courses in university and taught myself things to fill in the gaps, but diving into the guts of CPython and being involved in Python’s development process taught me how to code in C well and to care about API design, as well as the importance of code maintenance.

The Python community has developed a reputation as being a welcoming, tolerant, understanding group of people and I'm truly proud to be a member of a group of people to have garnered that reputation. I’ve also been lucky to have made many great friends around the world over the years in this community.

"I have always said that the Python development team taught me how to truly program."

Challenges

Maintaining an open source project can be emotionally rough. When people call you or the team you’re part of incompetent, arrogant, or any other of a myriad insults I have heard, it really wears you down. It takes a long while to undo the emotional damage through the kindness of others.

I actually reached a point where I needed to take a month off from contributing to any open source project in my personal time and it was somewhat sad how much calmer and happier I was during my time off. I ended up writing a blog post about the near-burnout I suffered, and I realized that everyone in open source is doing everyone else a favor to varying levels of commitment. We should treat one another accordingly.

"Everyone in open source is doing everyone else a favour to varying levels of commitment. We should treat one another accordingly."

Favorite moments

I actually have three:

  • The first time someone started a conversation with me just to say thanks. Someone at PyCon US noticed my nametag. Then under their own volition and initiative thanked me for my blog and the work I had done for Python.
  • The time I earned points with my wife Andrea. Early in our relationship, Andrea told a friend getting her bachelors in computer science what I did. The friend described it as "epic!" :)
  • The blog post that went along with receiving the Frank Willison Award in May 2016. While I proudly display the award in my home office, what was said about me in the Python Software Foundation’s post was extremely touching. The superlatives used still make me blush, and the post gives me something to continually strive for (since I sure as heck don’t think I live up to that description).

Good advice

  • Learn how to say no, nicely but firmly. To every person who has ever reported a bug or submitted a patch, their problem is inevitably the most important thing to them. You’ll need to learn how to tell people that something simply won’t work for the project or that it isn’t a priority right now.
  • Realize that when you are volunteering that absolutely no one has the right to make demands of you. If you have given someone the opportunity to calm down and redeem themselves and they continue to be rude, you have every right to ignore or block that person for your own sanity.
  • Know what to watch for to keep your emotional health positive. This will go a long way toward making the experience of open source more pleasant and long-lasting for everyone involved.

"To every person who has ever reported a bug or submitted a patch, their problem is inevitably the most important thing to them. You’ll need to learn how to tell people that something simply won’t work for the project or that it isn’t a priority right now."

What will your story be?

Learn how to run a successful project

Open source is made by people just like you. Learn how to contribute, launch a new project, and build a healthy community of contributors.

Read Open Source Guides


An easier way to contribute to open source

Every Friday, invest a few hours contributing to the software you use and love.

Contribute on Open Source Friday


Meet other maintainers

Henry Zhu

Henry Zhu splits his time between working on Adobe’s Behance team and Babel, a popular JavaScript compiler used by companies like Facebook, Google, and Netflix.

Russell Keith-Magee

Russell Keith-Magee created BeeWare to fill a gap in his own process. Today, BeeWare is the go-to project for supporting Python on every platform.

Ariya Hidayat

When Ariya Hidayat is not a VP of Engineering, he maintains PhantomJS, one of the most popular tools used by companies to write automated integration test for web applicaitons.

Get started for free

Public projects are always free. Work together across unlimited private repositories for $7 / month.

Sign up for GitHub

Subscribe to GitHub Open Source updates

Add your email address to get occasional open source updates in your inbox.