Today we’re talking Brett Cannon. Brett is Dev Manager of the Python Extension for VS Code, Python Steering Council Member, and core team member for Python. He recently shared a blog post The social contract of open source, so we invited Brett to join us for Maintainer Week to discuss this topic in detail.
Thank a maintainer on us! We’re printing a limited run t-shirt that’s free for maintainers, and all you gotta do is thank them, today!
InfluxDB – InfluxDB empowers developers to build IoT, analytics, and monitoring software. It’s purpose-built to handle massive volumes and countless sources of time-stamped data produced by sensors, applications, and infrastructure. Learn about the wide range of use cases of InfluxDB at influxdata.com/changelog
Retool – Retool is a low-code platform built specifically for developers that makes it fast and easy to build internal tools. Instead of building internal tools from scratch, the world’s best teams, from startups to Fortune 500s, are using Retool to power their internal apps. Learn more and try it for free at retool.com/changelog
CloudZero – For software-driven companies focused on growing margins, CloudZero is the only cloud cost intelligence platform that puts engineering in control by connecting technical decisions to business results. Visit cloudzero.com/changelog to get started.
Grafana Cloud – Our dashboard of choice Grafana is the open and composable observability and data visualization platform. Visualize metrics, logs, and traces from multiple sources like Prometheus, Loki, Elasticsearch, InfluxDB, Postgres and many more.
Click here to listen along while you enjoy the transcript. 🎧
Well, it’s Maintainer Week, which is awesome, and we love maintainers. Today we’re talking about the relationship between a maintainer and a user and this idea of the social contract of open source. Today we’re joined by Brett Cannon – I mean, Dr. Brett Cannon. Brett, how are you?
I’m good, thanks. How are you two?
First time I’m ever calling you a doctor.
What’s up with that?
Ph.D. in Computer Science, bachelor’s in philosophy… A long time in school. That’s the deal with that.
There you go.
Well, once you do the time, you have to do the crime, I guess. Or you have to get use of it. You’ve gotta get that Dr. on there, why not?
Yeah. And that’s the funny thing… You’re coming out of school after over a decade post-secondary, and it’s one of those like “Yeah, you have a Ph.D, you can be called Dr.”, and no one cares. Understandably… But it’s one of those weird things, right? It’s not on your credit cards anymore, it’s not on my boarding passes for flights… I use it whenever the form, like, your prefix, how to address you comes up. If it’s there, I use it. But honestly, most of them don’t even have it, so… The only time I ever use it is when I give a presentation. I stick it in front of my name on that title slide, and I don’t even say it when I announce myself, so…
Is that right?
Unless you’re in a public place and somebody’s having a seizure, and now they want a doctor, you know?
[laughs] “Is there a doctor in the building?!”
I keep my mouth shut.
Wrong doctor… Wrong type of doctor, at least. Not practicing in medicine, practicing in computer science, of course… Was it worth it, the effort? Did it pay off?
Are you happy with the time spent, or…?
Can’t even get “Dr.” on his credit card. That’s not paying off…
So the advice I always give to people when they ask me this in general is I say I’ve found the master’s degree worth it. The Ph.D. - you should only do it if there’s something you very specifically want to research to that extent, and you’re passionate about… Because there’s a lot of bureaucracy to a Ph.D. You need to do research, there’s a lot of stuff that you’ve gotta do that’s just kind of “Meh…” And unless you really wanna go into teaching, and become a professor or something, it doesn’t – at least in my case. Because I thought I wanted to do that, because I come from a line of teachers. I thought that was potentially what I wanted to do. And then I realized I actually didn’t wanna deal with assignments and finals. I just like teaching people… And I’m good. So I decided just to go to industry instead. I did meet my wife during my Ph.D. so I did get something good out of it…
But that was actually playing softball, that was not actually in a class, or anything, so…
It was during that time though, so you can at least attribute it to that…
So you became a doctor of love.
I don’t know if she would agree to that.
Dr. Brett Cannon Love.
[laughs] Well, we have you here because in addition to all this you have long time experience with Python. You’re on the Python Steering Council, a core team member, and been doing it a very long time. How long have you been involved with the Python project? Remind us.
Depending on your definition, I got my commit bits April 18th, 2003. But I joined the Python dev mailing list mid-June of 2002. So you can use either of those as the start points, but I typically just go with the commit bit, because it’s a bit more fun to be able to point to my very first commit in the repo, and say “That was it. That’s day one.” So it’s been over 18 years at this point.
So you’re pushing two decades…
Longer than my web career. You got me beat… At least on that.
Yeah, it’s a long time.
I didn’t start actually doing email and web until like 2005.
So you got your commit bit before I even pushed HTML to the internet.
Good way to make me feel old there, Adam. I appreciate that.
Oh, geez… Yeah, I remember my first 28.8k modem on EarthLink back in the day, and then being one of the first [unintelligible 00:06:06.14] who got a cable modem. I think that was like a 5 meg connection, which was major, because it allowed me to download the – I think it was the first Diablo Demo, that was 15 megs, and leave my modem running. It was on my modem; I had to leave my modem running all day long while I was at school in high school to download that 15 meg demo for the first time.
And it [unintelligible 00:06:24.22] the first time, so I had to do it a second time. But yeah, I remember my first blog on EarthLink, and uploading it to – you know, back when everyone had EarthLink.net/~ your email address, and all that stuff…
Good times. The good old days.
Yeah… They were days. I don’t know if they were good days.
They were actually bad days. I remember when I was trying to load IGN, which was – I think it’s still the same website, which is like video game reviews, and news, and stuff… And I was on – what’s the next one up from 28k? Like a 54k modem? I don’t know…
Yeah, 54k or 56k.
Yeah, somewhere in that–
56k, because it’s 28k times two.
There you go. It rings a bell. And there was a picture of a new Zelda game, or something… I remember being all about this picture. And it was loading in one line at a time, pixel by pixel… And I’m like “Here it comes… 30%.” I can see Link’s head.” And it just took minutes, probably 7-8 minutes to load in that picture… But I was super-stoked.
Well, the cool thing is that you’ve been around for a long time, and that’s sort of like part of your journey, too. What you’ve been doing – I didn’t realize you’ve got a commit bit to Python that far back… That’s like, what we’ve just said, more than my entire career.
Yeah, it was far enough back that – so I took a gap year between my bachelor’s and starting my master’s program, because jumping from a philosophy degree to computer science, I knew I was gonna have to kind of build up almost like a programming resume to prove to masters programs that I know what I’m doing… Because I took some CS courses – I did my undergrad at Berkeley, and I was able to squeeze in some courses. There’s a long story as to why I couldn’t even pull off [unintelligible 00:08:16.20] Anyway. I took a gap year to try to kind of build up a portfolio, so that when I applied to these programs, I could say “No, I do know what I’m doing. Please let me in without that bachelor’s degree.” And I was able to do this and get involved.
[00:08:33.15] So I got the commit bit, and then I showed up at my masters program and some people were like “Oh yeah, what do you do for fun?” and I was like “Well, I contribute to this open source project called Python.” And half the time people would go “What’s that?” and the other half would go “Is that that language where white space matters?”
I mean, nowadays I can’t remember the last time I ran into someone who didn’t know what Python was, so it’s very much an interesting and wild progression of popularity in my open source life with Python to see it go from people not knowing what the heck it is, to top three programming languages in the world.
Relying upon it. Helicopters landing on Mars because some of the underpinnings with Python.
Yeah, we have Martian helicopters, we get you your cat photos on Instagram… I don’t know the state, but for a long time all your YouTube videos were thanks to Python… Yeah, it’s crazy.
It’s a big deal.
So we wanna fast-forward to today and talk about a very interesting article. I think you have a keynote, you have a presentation, you’ve been talking about this social contract of open source. So you’ve been doing this for a very long time, you’ve been a maintainer of the Python language, and the community really, a participant in that community, and kind of a maintainer to the community to a certain degree, helping guide these new ways of doing things, with the steering council, and the voting… There’s just been lots involved there. And here you are, April 25th, 2021, talking about what you view as the social contract of open source. You’ve also talked about kindness on the show before, so very much - I don’t know if it’s the philosophical side, but it’s very much the human side of the open source scene that you have thoughts, you have opinions. Can you share with us the big-picture of what you think this contract is, and we’ll dive into the details?
Yeah. I should admit my wife Andrea is HR, which probably adds to my caring about community and how people are treated and how that works. My mother was a fourth grade teacher, so that also kind of ties into “Be kind to each other” kind of thing.
But yeah, the general philosophy is making sure everyone treats each other with respect, and just basically being kind to each other, because this grand experiment with open source does not work if we don’t treat each other well, both from a maintainer, contributor and user perspective… Because there’s cascading effects. If someone comes into a project and starts to chastise you, or be rude to you, or just basically abuse you - I mean, it really does come down to psychological views… And I know it’s a strong term, but it really can get pretty bad. At least to burnout.
Literally, people just have to walk away for their own mental safety, to be able to keep doing open source… Or not even do open source; that’s the problem - they burn out and they walk away and they stop. And then that has a cascading effect that users don’t get that software anymore, because guess what, they’re gone now. And same with contributors - if someone’s being abused as a maintainer, that typically can eat into them, becoming grumpier and not wanting to do open source, or being grumpy when they do do it, and feeling negative towards it makes them rude in terms of dealing with the community and all that… And it becomes a very nasty cycle of just negativity.
So for me, it’s a little frustrating to an extent that this still has to be said, but I think it’s just kind of inherent to the way this system works, that open source is just this huge, wide, broadly global thing that I think if we weren’t in, most of us just would never have this level of exposure to the rest of the world…
[00:12:04.00] Just learning how to interact with others from different cultures and different places, with different expectations has certain requirements. And part of that is being kind and setting proper expectations as well, because there’s interactions, and then there’s setting the expectation of it all. Because to me, open source is a gift, and it’s a perpetual gift. Every commit is a gift to the world that me as a maintainer have chosen to given out, because I just wanted to. For whatever reason.
But when you stop viewing that as a gift and viewing it as something that you are owed or expecting, it shifts your mental model and it leaves you feeling like people are in a position to be mad at you. Like, “I didn’t get a release out when I expected. I didn’t fix this bug. I broke something. I said I was gonna try and do something and I didn’t do it.” People get really agitated. And I get it, because some people are having a bad day, their company depends on the software or whatever, but I’m also choosing to do this either in my free time, or because I’m lucky enough to work at a company that puts some time into Python open source, or pays me to work on open source, because the Python extension [unintelligible 00:13:02.28] is open source as well… But that doesn’t mean people should feel like it’s okay to come in and be mean, and rude.
Trying to set this proper level of expectation of how to interact with each other and not basically get worked up is this message I’m trying to get out, so that hopefully we can all kind of step back a bit, realize that all these volunteers and all these maintainers are mostly doing out of the kindness of their heart, and how to make sure that we can foster that kindness so that they can continue to do this, so that we all benefit.
Maintainers get to keep doing what they love and enjoy, you just continue to get wonderful, free, top-quality software because they just want to, and contributors get to help mold and shape and move that software in the way that they need it to go, and just to also support the maintainers, and maybe eventually become maintainers themselves. But if we don’t basically make this (to be kind of cliché) a circle of love and appreciation, it won’t last… And I really want to make sure this continues to last. And I don’t want it to last because we manage to get enough fresh blood who are willing to put up with stuff to replace those of us who burn out. I’d rather have it be “Oh, everyone sticks around for as long as they feel motivated and up for it. Not because people burn them out, they just left because it’s just their time.”
Yeah. That’s why I like this idea that open source is a gift. These commits are a gift because that sets the expectation… And I wonder if whomever might be an abuser out there, to some degree maybe unintentionally, maybe it definitely moves into intentional, because maybe the clarity of the expectation from that user perspective, or it could be an organizational user, or it could be an individual user, to a community, to an individual maintainer, to the core team, to Python itself, or to any open source project - I just wonder if this idea that open source is a gift sets the lens, so to speak, that what is to be expected is literally a gift, rather than payment. Like, “I’m here as a user, I have needs of this project. You must show up because I have needs.” That doesn’t set a good expectation, and I wonder if this idea that as a gift it sets a more clear expectation of open source at large. That I show up and get used to this software, and that’s great as a gift. It’s not that because of that, or because of my need for it, or because of my business’ critical usage of this software now makes you have to show up every single day. You showing up every single day is the gift.
Yeah. The blog post that Jerod alluded to - I used the analogy that it’s like putting a bunch of USB flash drives on your front lawn, with a sign that says “Free.” Every commit to some project is gonna be on that flash drive. It’s the Git repo, right? And you can just come by and grab it and do whatever you want with it, and as long as I’m enjoying myself, I’ll keep refreshing that pile of flash drives… But does that give you the right to come to my front door and leave a [unintelligible 00:15:58.18] bag of something because you’re upset of how I did something? Or leaving me an angry letter, or standing from the street, screaming that “Brett Cannon makes horrible software and you should never listen to him. He ruined my life because he took away this API” or something.
[00:16:14.12] Now, that isn’t to say that – people could end up with certain expectations. Tidelift’s model of paying the maintainers, so that they actually do have a financial not only incentive, but almost expectation to do certain things - that makes sense, and I do understand that, and I think that’s great. But for a lot of people where they’re not being paid to work on this stuff, that expectation I don’t think carries over. I don’t think that expectation always holds, “Oh, good luck getting paid for it. I hope you do.” I think those are equivalent. I think the transaction here is different.
When you search or receive money for your open source work, which I’m totally accepting of, and support, and I think it’s great when it works out for people - that sets a certain expectation. But when it’s a volunteer, I think that completely shifts it. You don’t go to the soup kitchen and yell at the person [unintelligible 00:17:03.08] because you don’t like the soup. That’ not right. And this is not to equate open source to helping the homeless here, but the point is they’re all volunteers, and you need to recognize the fact that it’s just volunteerism. It’s taking away time from family and friends and whatever.
We are all here on this planet for a very finite amount of time… And I am choosing to spend a part of that finite amount of time creating software that I’m going to give out to the rest of the world… And that’s my decision. But be aware of the fact that that has a cost. People forget that. I am literally using up my time on this planet away from family and friends to do this, for whatever reason. I think if people kept that in mind more, there’d be a lot less agitation and anger and frustration at people when things don’t work out… Because otherwise, just don’t use the software. Or I can just yank it off. There’s nothing stopping this. There was a world before open source; it’s not like the world is gonna collapse if my software went away.
And that’s happened before., the yanking off, and taking away, and things like that. There is this backlash – and you know, this is Maintainer Week; this week is a collaboration between the community, GitHub, Tidelift… We’re obviously putting something out on Thursday. This is for upstream here in particular, but this week-long thing is mean to be a place for maintainers to gather, to share and to be celebrated. So I think part of what your post did was define that lens between maintainer and user. I think if you can have a clarity between relationships, you can have a clarity of expectation, too. What’s your role in this relationship? What’s a user’s role in this relationship? And what do both get equally from it, and what can be expected from either? Because then you can have a position to understand the necessary kindness, the necessary empathy to show up and to give freely as the volunteer, or to take freely as a user of free and open source to use this gift to the world.
Yeah. I think a good way to summarize that is there’s a separation between the person and the code, and I think a lot of us forget that. In the blog post I talk about Immanuel Kant’s categorical imperative [unintelligible 00:19:14.07]
There you go.
And part of what that says is “Don’t treat people as a means to an end, treat them as an end in and of themself.” Basically, what that means is don’t treat people as something to get from them, treat them as human beings, as they are on their own. Don’t go to a maintainer and say “Oh, you’re the way I’m going to get this open source software.” “I am treating you as just Brett Cannon, the human being. You happen to have this software over here, and that’s awesome, and I will talk with you and work with you to potentially get something changed maybe, maybe not…” But there’s a separation there of treating me as a human being, versus as just the way to get something out of me. And I think that’s also part of what’s lost here. Don’t treat maintainers and people as something to get out of you. I’m still a person. Just treat me as a person and just realize I happen to produce something that is useful to you.
[00:20:11.02] Once again, it’s all perspective. And I understand that not everyone necessarily thinks this way. Once again, if it wasn’t for this crazy world, the internet… I mean, even on the internet, how often do you interact with someone from another state, if you’re in the U.S…?
…or another province, like - I’m in Canada. We happen to, but if we weren’t in the tech industry and happened to have the outreach and the speaking we do, chances are you won’t talk to other people. So kind of slowly growing – ending up in this situation where you’re interacting with people in other countries, with different expectations, different ways of communicating, all this stuff… It’s new for a lot of people, and I think a lot of people never stop and think about “Okay, maybe the way I have learned to communicate within my family, or my circle of friends, or my neighborhood, maybe my state”, if you go that far, or if you happen to travel far for your university, or something, or not, what have you - your exposure level is gonna very much dictate probably how much you’ve potentially thought about this. But it’s something that I think a lot of people don’t think about, and understandably, but it’s one of those “Okay, what are the proper expectations for everyone on the planet? It’s not just my expectations…” And how do you deal with that? Because a lot of people just go like “Oh, this is how I communicate at home. This is how I communicate at work. And it’s okay there.” And people are gonna go like “Oh, well maybe that’s not the way to communicate with other people. And it leads to problems.” People also don’t think like “Maybe I wasn’t taught a nice way to communicate, and suddenly you have to go like “Look, this is not really a good way to communicate. To me, this comes off as this.” When I talk to people online, I always try to give them the benefit of the doubt, and assuming like “Okay, you come from some town somewhere where you just haven’t been exposed to other places, and only the people surrounding you have always treated you this way and you’ve learned that this is an acceptable way to communicate..” So I started to go “Hey, just so you know, the way this came off to me is this. I don’t think [unintelligible 00:22:04.21] meant it that way.”
“Assuming you didn’t, this is what I think you’re asking.” And I try to use it as a way to teach people at least once. Pass that if you’re not listening; then fine, you’re a jerk, and I have to wash my hand of you, because I don’t wanna burn out. I’d rather get to year 19 of contributing to Python, and not stop at 18.
So it’s a very interesting here of – it’s psychologically even just learning how to treat people as people. It’s not even just treating people as a means to an end in terms of software, it’s literally just learning how to communicate with human beings and how to treat people. As I said, I don’t fault people when they don’t get it right, but it is something that I think a lot of us don’t think about, that there’s a certain level of psychology here.
I’m glad you mentioned psychology. I’m curious if part of your philosophy degree if you had to do anything of psychology… Because it’s thinking, humanity… Because the one piece that I think is important to mention is that often in a digital interaction you’re missing some data. To treat a human as a human, it requires a human element. And often, that human element is removed. We have it here on Zoom, I can see your face, I know who you are, we have a relationship etc. It’s easier for me to treat you like a human, because my lizard brain doesn’t forget. Like “Hey, Brett’s still Brett. He’s still a human etc.”
But in most of our interactions on the internet, or in digital spaces, tend to have the human element removed. And like you said, it’s probably not the fault of them until maybe you say “Hey, the way you said this, I heard this this way” etc. But I think it’s important to remember and to point out that there’s a piece of data crucially missing for a real human interaction that is removed, and is missing, and it’s up to us to click and remember, or set a habit like “Remind myself, this is a human interaction. There is human beings over there. They do matter. They have families, they have moms, they have dads, whatever. They have people that they matter to. They have kids, they have whatever. There’s importance there.” And you forget that. That data piece is so crucial… We sort of forget about that.
Yeah, so I did not have specifically have any side-courses as part of my philosophy degree. This partially comes from my wife, who has a minor in Psychology, from my mother, who just being a teacher just innately taught me to think about how people might be coming to school for her, what [unintelligible 00:25:31.20] going through at home, and how that affects how they act at school, and why they might act out, and whatever…
I was just lucky enough – I happened to live in a situation in terms of who surrounds me to just have contemplated this and be able to piece that together as a potential reason as why people are the way they are, and how this affects this grand experiment of open source, and how this kind of just plays out.
Well, your career shows the grand experiment. I mean, since the time [unintelligible 00:25:59.10] the world’s software now sort of relies upon open source as its foundation. It went that way in the beginning of your career when you got the commitment, as you mentioned. You would say “I work on Python”, and people would say “What is that?”, white space, whatever… And now they’re like “Oh, Python! So cool!” Like, since your 18 years of that commitment you’ve seen a massive change in the way that the world relies upon open source software. And there’s that necessary component - user, maintainer, contributor etc. Foundation. Core team. All these things to sort of make this possible. And that just wasn’t the case. So I think over time we’re sort of maturing. And it’s talks like this and scenarios like this that bring out some of those points, like - we are just all humans, and to help understand those roles and break it down.
Yeah. And to that point, there’s structure you have to put in as projects grow and become more mature. And there’s two aspects to that, too. There’s the maturation of open source in general, which I think also is what kind of leads to some of this grumpiness… There seems to always be a tipping point in projects, where you’re small enough that the people participating generally are just kind of friendly and enthusiastic, and then you hit that tipping point where suddenly people start relying on you… And not just because they want to, but just because they need to. And that’s when you start to get more of the grumpiness and you kind of have to start dealing with that a bit more. And then the question is just “Are you able to deal with that?”
From a popularity and size perspective, there’s an absolute versus relative number here. Let’s say Python has ten million users. It’s probably more; I don’t know the numbers. Ten million is a nice, round number. Even if 0.1% or 0.01% of those users are real jerks - and we all know that number is way higher percentage-wise, probably, unfortunately - we’re still talking thousands…
…who all know how to get a hold of you.
It’s like the law of big numbers.
Exactly. It’s exactly the law of big numbers. And it’s one of these unfortunate things where you don’t get prepared for it [unintelligible 00:27:53.26] For Python, for instance, we’ve tried to deal with it. Python originally was Guido van Rossum as benevolent dictator for life. We went to him for final calls, everything else was basically just consensus, and you did what you wanted… And everything was done over the firstname.lastname@example.org mailing list. And it was a mirror between Usenet and the mailing list, back when people knew what Usenet was.
[00:28:17.25] Nowadays we have multiple mailing lists, from Python Ideas, to Python Dev, to Python Committers. We have a Discourse instance… Guido’s retired, and we now have the steering council that I’m on, we have [unintelligible 00:28:28.02] that wasn’t – it’s always been there since I’ve joined, but it was not originally there in Python’s history, because Python’s celebrating its 30th year of going open source and public this year, actually… February of 1991, funny enough before Linux actually got released as open source…
Yeah. And so it’s one of these things where –
Historically, what happened was Guido wanted a scripting language for the Amoeba Distributed Operating System that was being developed at CWI, which is a research lab in the Netherlands that he worked at. And he didn’t [unintelligible 00:29:03.15] knew the people who worked on the ABC programming language, also at CWI, and had learned some things from them, and talking with them… So he decided (in December 1989) like “You know what - I think I’m gonna try to write a scripting language for this OS.” And he created Python. He open-sourced it on [unintelligible 00:29:21.26] on February of 1991. And it’s been going ever since.
Yeah. So this leads to building and structuring how to deal with it, but it’s also one of those things that – there’s lots of growing pains. It’s when do you hit that inflection point to add some extra layer to deal with things… You never quite know. You do it too soon, it feels too onerous; you do it too late and you start to have growing pains… But from a general maturation of open source in general, I think one of these things that we’ve not dealt with is the fact that originally, open source with all these maintainers was a passion project for everyone, right? I don’t think a lot of us when we started expected to be mission-critical, “Let’s help make sure a freakin’ helicopter on Mars goes where it goes” kind of dependency. I’d never expected that in my life. It’s crazy - or, to be very specific, Python was on Perseverance, it handled the streaming of the video from the parachutes. So I never expected to have software on two planets. It still blows my mind to this day
But I didn’t get into this expecting that, and that also means I’d never - and I think for a lot of people… I didn’t get into this expecting people to have that level of dependence on me. And I think when people start to take that dependence is when the stress from people of not getting what they want really kicks in. It’s one of these things of “Oh my God, my company depends on this. What I do day-to-day at my job depends on this. I need to get this fixed. Why aren’t you fixing this?” That’s where I think the stress kicks in. And I don’t think anyone goes into this signing up with that expectation or knowing that that’s going to come.
I think as an industry we haven’t taken the time quite yet to really try to structure and basically modify our view of what open source is in terms of dependency. Realize open source runs the world. If Linux went away, the planet would collapse. If all open source went away, we’re really screwed. But I don’t think anyone stopped and thinking like “Well, is the open source community able to handle this? Are we setting ourselves up for success, both as users and as maintainers, to make sure that we treat each other to make sure [unintelligible 00:31:40.03]”
As a maintainer, I don’t have problems with you depending on my software to that level. But you [unintelligible 00:31:44.28] Once again, human being here; I can only handle so much stress. Don’t come to me saying “The nuclear plant is gonna melt down if you don’t fix this bug” kind of problem. I’m not set for that. If you need that – I mean, I think a lot of people forget; it’s open source. If I don’t fix it, you can fork it. You can vendor a copy and fix it yourself. Large companies do this all the time… And that’s fine. That’s why open source exists.
[00:32:10.17] People forget that [unintelligible 00:32:10.02] was not the free bit, it was the open parachute in case you had to fork it to get what you wanted. But when corporations started to really latch onto it and saw the free label, like “Oh, my God!” Python, which is probably worth millions and millions of years of development - I mean, it’s probably into the billions at this point, worth of software development for free… Free? Are you kidding me? I can’t write this kind of programming language from scratch. I’d rather do that instead of using C, or whatever. I’m just gonna randomly choose a language; not to pick on C. But it’s one of these things where I don’t think anyone stopped and thought about “Okay, how do we make sure that we don’t break this?” And I don’t think we’ve ever sat down as a community to go like “Okay, where do we need to draw these lines? Where do we need to start talking as a community out loud?”, why I do these blog posts and everything else, to say “Alright, we need to make sure that we treat these people appropriately, realize that they’re not here to give us free stuff, they’re just here to give us stuff in general, and we can use that however we want, but we should not go in with any expectations.” And instead, going “Oh, cool. There’s this free thing. I’m gonna keep using it and I expect it to lead to a certain thing.” No, it’s just - free thing, picked up off the street. If it works for you, awesome. If it doesn’t, don’t come bringing it back to me; just take it to the dump and just do it. Or if you need to modify the chair that you picked up off my front lawn, good on you. But that’s your chair now, don’t come knocking on my door.
Right. Thankfully, I think we’re starting to have these conversations. We’re slowing down. I think more and more people are becoming aware of the foundation, and the people who are building or have built or continue to maintain that foundation, and this discrepancy, and this problem of dependency and how important the foundation really is, and how we need to support that foundation.
If we go back to the gift as a framing - I think it’s the perfect framing for open source. I almost called it a metaphor, but it’s not. It’s literally a gift. The metaphor is the stack of USB disks, or – USB disks? What do you say – compact disks?
USB drives. Yeah, I almost said DVD drives, but I realized the kids wouldn’t know what the hell I was talking about, so I stuck with the flash drives.
Floppy disks. You should have used floppy disks.
I think that’s a phenomenal metaphor, honestly, the USB drives.
I guess gift is literal, so…
Gift is literal, but let’s analyze it a little bit, because it’s a fascinating gift, right? Because it is a snapshot in time… The gift you give - like you said, each commit, each thing released… That release is the gift, and that’s a snapshot in time, and then it’s received. You give it to the world, but it’s received individually or corporately, you come to it yourself and receive that gift… And it goes and lives on in a world that changes. You gift it a snapshot, but that has to live on in a sea of change. And the person who receives the gift, because of the value of the gift - I’m just empathizing a little bit with the angry users, to a certain degree… Because we have to see where they’re coming from as well. I think it’s valuable as maintainers to understand the angry customer or user, because it helps us not take everything personally and it helps us deflect. Why are they acting this way? I’m not giving any excuses to be a jerk or anything like that, I’m just trying to understand. If I receive this amazing, valuable gift, I start to build my house on top of it, right? I may not even understand it. Large corporations, experienced developers - we love open source because it’s open and modifiable, and I can go in there and fix that bug. Lots of people who receive the gift actually don’t have the skills to do that. So we find ourselves dependent and unable to do anything about it, and then we start to build our life around that gift.
[00:35:50.02] And then things go wrong, because maybe the gift didn’t change, but the world changed around it. Bit rot is a very real thing. It wasn’t a bug, but now it’s a bug because I updated this other thing, or somebody decided they’re not gonna use time zones anymore because of some sort of vote that happened in this part of the world… Crazy stuff happens. And now I’m just like “I’ve got nothing to do. What do I do?” Well, I just turn back to the gift giver and I’m like “Help!!” And that doesn’t always come out very well, because a) we don’t communicate well, b) like Adam said, we don’t understand the humanity, because all we’re seeing is the text area, or the GitHub issue, and then c) because we’ve got all other problems of our lives going on, like my boss is breathing down my neck, or my website is down, I’m losing money, or worse - I’m mining Bitcoin for some random stranger on my website. It gets real bad. So I think it’s not excusable, but it’s easy to see why the grumpiness happens, because you really do depend on this thing… Which has no strings attached, but you sure wish they did. You sure wish they did. It’s crazy.
Yeah, I think understanding the motivation is really important. To be very clear here, the vast majority of people are very kind, generous people, and I have absolute pleasure interacting with. I enjoy talking with people and helping with their problems and stuff, so I don’t have issues. It’s once again just the law of numbers here. It takes ten kindnesses to undo that one bad interaction, and depending on your reach, it might take really a lot of effort to get those ten kindnesses to wipe out that one bad. And you might never. If your project’s too small and you get that one grumpy user, it’ll just kill you instantly.
But yeah, understand that motivation – it’s a coping mechanism almost, to an extent… But it’s really understanding “Alright, deep breath… Why is this person upset?” As you said, Jerod, usually it’s someone’s breathing down their neck, bad day at work, kids could have just been acting up… Who knows. There’s a whole litany…
You never know.
You never know.
There does seem to be some entitlement that comes up a lot in these cases, where you’re like “Ehm, this person seems entitled.” And maybe it’s a lack of understanding of how the whole thing works. They need to go read that blog post. But…
Yeah. “I work at a big company, so you should give me what I want, because I’m important.” It’s like, “Sorry, buddy. No.” Or gal.
Or you work at a big company and they pay you to take care of it, and why aren’t you doing it, kind of thing.
There’s a lot of assumption happening, right? And I think it’s because it’s a lack of connection. Anytime there’s a conflict, the number one way to resolve conflict is more connection. You’re not gonna get it from less connection. It’s more connection. And connection is understanding. Connection is me understanding what you’re going through, you understanding what I’m going through, why I’m the angry user, why you’re the hurt maintainer… I almost said “butthurt”, but I’m gonna rewind that…
I didn’t say “butthurt”, but I almost said “butthurt.”
Now you said it.
The hurt maintainer. You know, you’ve got your feelings hurt; you’ve got ten awesomes but one negative, and that negative is just way heavier than the awesomes.
It’s always the worst, totally.
And that happens. But it’s more connection that resolves conflict.
Yeah. And I wish this stuff was taught in school. I wish people who learn this stuff–
Open source? Or interactions.
Both. I wish there was a class in high school that just taught people how to be decent human beings, along with how to balance a checkbook.
You’re on to something here. I think if there could be like a “I’m gonna participate as a user or a maintainer or anything in open source.” “Here’s some prerequisites.”
Understand that there are maintainers out there, understand that there are core teams, understand that there are foundations, and they have these roles and these responsibilities, and this is a gift. And that it doesn’t change the fact that you use it in a dynamic world, this static gift, and that things change, but here’s the scenario. It’s almost like – I almost think that should exist. I agree with that. That should be somewhere. We should put that down somewhere.
Yeah. Speaking in general, like, I would hope you would learn this in kindergarten kind of stuff… But at least at the university level you would hope undergrad courses, just general software engineering, where they talk about open source, just explained how the system works and what it represents and what it means, and it would hopefully get kids while they’re undergrad, before they go out into the working world, the right mindset of how to view and approach this, and understand how to work with it, because it’s now become such an integral part of our industry and our jobs as software developers that you can’t ignore it. It’s gonna be there. So let’s have that conversation at that point, where you need to explain to kids just like “Here’s how to be successful in using open source.” Not even contributing or making, just using.
[00:40:21.01] We teach kids how to [unintelligible 00:40:21.15] APIs and SDKs, and how to do this stuff, so why don’t we teach them how to actually use it? And part of that is gonna be using open source, because guess what, that’s where they’re getting all their SDKs and APIs.
It’s true. My only pushback would be you learn whenever you have use in, and your brain is open to learning, so maybe not en masse that you are teaching this, let’s just say, the younger folks that are going to university… Maybe those that are getting into the tech spaces. I’m tinkering with an Arduino, or I’m learning an SDK or an API - maybe then it would make sense to say “Hey, at some point you’re gonna interact with GitHub.com, and GitHub.com basically is all of open source.” I mean, there’s some non-open source on it that’s freely available to see, source available, so to speak, or some license attached, but you can see the code, you can interact with the community… But if you are on this website, for the majority of it, it’s gonna be open source, and there’s certain rules in this land. You know, here’s some of the lay of the land, so to speak. That should be a thing, right?
I just had an awesome idea. Adam loves when I have awesome ideas live on the show. Are you ready for it?
I’m ready. Is it more T-shirts?
Open Source School with Dr. Brett Cannon
Oh, man… No pressure.
Well, the pressure’s on me.
It puts you back to your roots. Your mom’s a kindergarten teacher.
That’s true, yeah.
I mean, honestly, great idea on the spot [unintelligible 00:41:41.22] I wish I could almost have like a contributor license agreement that requires “I certify that I have read Nadia Eghbal’s Working In Public and I understand the concepts in there and I agree with them”, almost. One of these things of just like–
That’d be great for book sales.
It’d be great for Nadia and her book sales.
[laughs] She would be down with that.
I will fully admit, Nadia is an acquaintance, she’s a great person, and I actually bought copies – she sent me a copy because I’m actually quoting the book a couple of times, but I actually bought copies for my in-laws and my parents to read, to help explain what the hell I do…
…but also for them to understand why did I sometimes act grumpy on the phone sometimes when they called and said “How are you doing?” Like “Aaaargghhh!” It’s like “Now you get it.”
But my in-laws have been reading it – my parents live in the States, I live in Vancouver, and my in-laws are here, so I get to talk to them when they’re reading, and it’s like “Oh, I’m getting him now. Now I understand.” It’s almost like [unintelligible 00:42:33.10] “Please set your expectations appropriately.” This isn’t just code of conduct stuff. It’s not just how to treat me. I want you to come in with a proper set of expectations of what to expect out of me and this software. As you both said, it’s a gift. Here’s the commit you’re pulling from. That’s your gift. Don’t keep expecting more gifts necessarily. It may or may not happen. This is not a subscription services that I gave you for free.
No strings attached.
You know, a gift with strings attached is a bribe, really. Or extortion, I guess, in some cases.
It is. If you give someone a gift and you’re like “By the way, now you owe me one”, that’s not a gift.
That is not a gift.
It’s not a gift. It’s a favor.
But you’re right though, Brett, that outside of the technical chambers there’s not much of an understanding to what open source is and the value it brings to the world or the importance that it plays on the progress and innovation of the world. Like we said, with your career and since your tenure as having a commit bit on Python, the world’s changed in terms of open source. The requirement of it, and the enjoyment of it, and the reliance upon it has totally shifted in that 18 years. That’s a dramatic shift for all of the world in 18 years. That’s massive. That’s more than a 180. Can you do more than a 180? That’s like 360.
That’s like going back the same direction, but…
Well, you go back to where you were, so it’s not – it’s a 180.
It’s a massive shift, essentially, is what I’m trying to say.
Yeah. And we just never had this conversation, right? It just happened gradually and honestly kind of quickly. I think it’s one of these movements of people and thought that you just don’t see coming and that you don’t sit down and have a thought about. It just kind of waves over you… It feels gradual, but in the grand time scale of software and all that it’s pretty recent… And I think we’ve just never really all sat down and going like “Yeah, this is how we think this should be thought of, and treated, and agreed on…” Because it’s not. Like, when I tweeted out my blog posts, some people came out and said “Yeah, I don’t agree with this.” Not just from the way I phrased things, but literally like “I don’t agree–” Like, one person said “I don’t agree – basically, as soon as you have a website and you start pushing it out on social media or whatever and saying “I have this thing”, they view it as “I have now established a contract with the world as “That is how it’s going to go.” Now, I personally disagree with that view, because that’s still best effort.
If I say “My [unintelligible 00:47:04.29] policy is this”, I’m gonna do my best to hold myself to it, but it might not work out, and it might break… And as my wife would say, “You don’t know me [unintelligible 00:47:13.09]” so that’s kind of weird that you thought I’d hold myself to that, necessarily. Not to make it sound like I’m a bad person or anyone else is gonna automatically break their promises, but it’s best effort, really, when you think about it.
Once again, free here. Please set your expectations accordingly.
Well, that’s what I think the deal is, the expectation setting. I think as open sourcers, when we do open source, we should set expectations explicitly, in whatever ways that we can. And honestly, if you do say “This is free, and I’m gonna maintain it for free for five years”, then I expect you to do that. I don’t think it’s unfair for me at that point to say “Well, you did say “I’m gonna maintain this –” I don’t know who’s doing that, but for instance, if you said something like– if you were that bold in your statement of like “I’m gonna work on this for five years non-stop”, now, I may be foolish to believe you when you say that, but I don’t think I’m insincere to say “Okay, you said that. Now where’s your best effort?”
[00:48:11.23] But if we set the expectation exactly like we ought to, or what we believe it is at the time - and I think we can probably develop better tooling, better ways of doing this. I think a shared nomenclature on what kind of – you know, Brett, you’re a listener of the show, you know a lot of times we ask “What kind of open source project is this?” Because they aren’t all the same. In fact, very few of them are the same. Nadia did a pretty good job of providing some taxonomy around the kinds of projects… But if we can be explicit as open source people to say “Here it is. Here’s my gift to the world, and here’s the license, and here’s the expectations etc.” then I think it’d leave less ambiguity for people to make assumptions that are incorrect.
Yeah, and I don’t know how to communicate that out.
That’s the tricky bit. So for me, there’s community open source, and there’s corporate open source, and I work on both. Python is community open source. There’s no single corporation behind Python. Python is very much run by volunteers in the community, and we are just starting to get people funded to work on stuff… But it’s like, companies either hiring people directly and giving them the free time to work on it – like, Microsoft gives me at least 20% of the time over a week to work on Python however I see fit. But that doesn’t mean Microsoft is in control over Python itself.
We now have sponsors giving us enough money – we’re actually gonna be hiring our first dev in residence, so we’re gonna have our first hired person to help work on Python.
Yeah, it’s great. But once again, community-run – the Python Software Foundation is the person doing that hiring. The people who gave us the money, Google specifically, isn’t getting to direct what that person does. The steering council is actually gonna do that. So there’s very clear separation.
Compare that to my work on the Python extension for VS Code. We’re open source, we still take pull requests, we’re solely driven by the community, but I am paid to help keep that running. My teammates and me and everyone else involved get paid to work on this, so the expectation is different. Microsoft has a vested interest to keep this going. Same with VS Code, or anything else coming from Microsoft, or Google, or any of these other large corporations that are doing open source.
So I think it’s reasonable to say – you should still treat them nicely, by the way. This is not to get people [unintelligible 00:50:22.14] being rude… But the expectations of “This is going to be around for a while” I think make sense, right? If your company produces a programming language, chances are they depend on it, so chances are they’re gonna keep it going, and they’ll keep it healthy. So I think expecting that to be around, and placing your bet along that…
But that doesn’t meant that they’re gonna take it in the direction that you like, right?
Oh, yeah, right?
Yeah. So there’s lots of facets to these decisions.
They’re gonna take it in the direction that they think makes sense, just like Python’s gonna be taking the direction that the dev team thinks makes sense, and everyone’s gonna do it their own way. And I don’t wanna say that you can’t rely on community open source versus corporate, but you can know the motivations behind it and what that means for you. You might be able to convince people more in community just because the discussions might be more in the open, or they might just not have any pre-planned anything and you can just come in [unintelligible 00:51:14.18] Versus corporate, where you don’t know about some planning that might be happening every quarter, or semester. We try to plan out the quarter and semester and we communicate it out as best we can… But stuff comes up, and we work with it, and it just means we have different priorities potentially from what you may expect, and that’s just part of life. They both have pros and cons, but that’s very different.
But even community-based, you have people who are getting GitHub sponsorships to keep stuff going, or Patreon potentially, or Tidelift, or whatever… Which, once again, also potentially changes things. Tidelift is very explicit about what that means. GitHub Sponsors - the person you’re sponsoring says they will do because of this, but it very much varies. And there’s no standard at all. I don’t think that there probably will be, because it’s a very squishy – how do you say, like “Oh, I’m corporate-backed, so I am not going anywhere” versus “I am community-based” or whatever. Or “I publish everything publicly and there’s nothing behind closed doors that you will never know about” versus “We have certain things that will come up that we’ll have to prioritize. Sorry” versus “I’m getting paid to make these promises versus not.” There’s no way to really communicate any of this well, so you kind of have to do your research.
And I know a lot of people go “Well, I can’t do that, I don’t know.” Like, if you’re in the Node world, “I can’t go through my 365 dependencies to see what their promises are.”
[00:52:42.14] Right. Especially your transitive dependencies that you didn’t even – you didn’t even opt into those. You opted into somebody who opted into them.
Yeah, it’s hard. It’s tricky. And I’m not saying there’s a good answer to any of this to be able to understand this. But this is also why almost regardless of all that taxonomy I just said, if you just went in with the expectation that this is a gift, one time, and [unintelligible 00:53:01.27] you won’t be disappointed.” You have the gift, it works today; if you might have to tweak it to keep it going… As Adam said, maybe or maybe not, you might not have the technical know-how, but it still was way cheaper for you to start with this than develop the complete thing from scratch probably.
And sometimes I wonder if we have to work out a balance here of how much open source does a company pull in versus “We just have to hire someone to do it, just because it’s that critical.” You don’t always have to go that way. But if there is a way to make it work with the open source project and have someone on staff who contributes and becomes more of a maintainer, that’s awesome. That actually happened to me. We thought we were gonna have a need on the Python extension for something, and Python packaging; actually the packaging project, which is a little poorly named, because it’s hard to say “I work on the packaging project in the packaging community of Python.”
Yeah, exactly, right? We thought we were gonna have a need, so I went to the project and said “Hey, we have a need for this thing”, and I worked with the team there, and I got it up, and now I’m a maintainer of the project. So I’m able to help out and get what we need from the project. But it’s one of those – we gave back because we saw it as a good thing. But I also happen to be paid to make sure we get the software we need, whether it’s open source or not. And I sometimes think companies forget that. It’s like “Free, free, free, free.” It’s like, “No, no, no.” There’s the technical debt to that; that’s not technical debt to that in terms of you refactoring code, there’s technical debt in terms of that project might go away some day. So how do we manage that type of technical debt?
I just realized that’s a reasonable analogy, and I wish I had come up with that years ago… The open source technical debt of maintaining that is still there, right? Open source from a cost might seem free to you, but there’s still a cost to me in terms of my life, literally in terms of time.
There’s also to you a technical debt of what happens if that project never gets another commit, ever again?
Blog post coming soon. You just created one right there.
There’s always a cost.
I have to save it for the new podcast, “Dr. Brett teaches you open source.”
That’s right, there you go.
Well, there’s always a cost, and it just shifts. There’s always a cost to somebody…
Yeah, there’s no free lunch…
…to the organization, to the individual…
…just someone else pays for your lunch.
There’s never a free lunch, yeah. Is that what you’re keying off of? There isn’t. There’s always a cost, and it’s paid by somebody… But the premise of open source isn’t necessarily just simply free as in money, but free in always - free to contribute, free to work, liberal licenses, very permissive etc. But there is a cost paid somewhere along the line by somebody, or a small group of people, to do something or other. And that just shifts around, to some degree.
Yeah, I mean - ideally, the best situation is the “You pull down this code, and your technical debt was literally just integrating that code the one time, and it’s perfect for the rest of that code’s days in your project, and you never have to pull another version again, and it’s perfect, and it’s there, and life’s great.” Life is grand, oh, to live in that world.
After that, maybe Dependabot or something else comes along and says “Yeah, we’ve gotta pull a new version.” Either a security hole, or stuff that runs faster, or whatever, and you just tweak a thing, and you pull down a newer version, and everything just works… Great.
[00:56:16.19] Maybe its integration and new version breaks some things, so now you have to update your APIs. It varies. But it can go all the way up to project’s gone, maintainer’s gone, code’s gone… Right? It could have been deleted. This is why major corporations who have the staffing mirror the hell out of all the open source they pull down, and you have to state “I use this open source” so that they can get that tarball of source code and have it on disk in case they need it for some reason.
And code’s gone, the maintainer’s gone, something broke, and now we’ve gotta fix it. And that is potential technical debt that I think everyone who takes on open source has to be ready to deal with, regardless of who backs it. Because life happens, stuff happens, companies go out of business. Who knows. There’s no guarantees in life, and that goes with open source.
Companies shift. They don’t even have to go out of business, it could be “I’m just done. I’m just done. Moving on.”
Right. And these aren’t hypotheticals. I’ve been an open source user long enough, I’ve been through every one of those scenarios as a user. Like, project changes to a direction that I don’t like, or project ceases to exist, code is gone, or bug just remains open forever, and they ignore me…
License change… I’ve been through them all. And sometimes you’ve gotta take different action, but you’ve gotta do something. Because once you receive the gift, you own the code. It’s your problem now. I received the gift from you, it was a gift; I’m not gonna look the gift horse in the mouth… Maybe I don’t like the gift anymore, but it’s mine now, and I have to deal with that. So these things do happen. Technical debt is real, and you’ve gotta pay it off at some point.
So - very good point there. Let’s change gears slightly here at the end. It’s related - so you have your 18 years plus, you’re hitting up on your two decades involved in Python… And we know we’ve had the BDFL retire. I’m just curious - you did face burnout at one point; you can go back and listen to our episode with you, we’ll link those up in the show notes. You’ve been on the show a couple of times, great conversations. You seem like you’re doing pretty well now, today… It just seems like you are; maybe you can disagree with that. But I’m curious if you have an end game. Is there an open source end game, or do you imagine that you’ll just keep doing what you’re doing now into perpetuity, until you retire from public life, or what do you think in that way?
So yes, thanks, I’m doing better than I have in the past, on occasion. It’s one of these fluctuating things, basically. I did not have anything negative happen to me in open source today, so I’m good…
[laughs] Okay. Today was a good day.
Today was a good day. The hairball from the cat was yesterday, so that’s all good. [unintelligible 00:58:45.24] so things are in a good trajectory. Yeah, end game - the joke I’ve been making lately is the dev manager at Microsoft to pay for my open source addiction… So the end game is to get to retire from work, so I can do more open source.
[laughs] Okay… Open source retirement. I like it.
Yeah… To be honest, that’d probably be what I’d do, just because I do this because I enjoy it. Once again, this is a passion thing for me, right? I went to Microsoft because they gave me that 20% time that I wanted to get to do what I wanted. Plus, I get to work on open source the other 80% of the time. I was very lucky to be in a privileged enough position to make sure that I got to have that as my work life. And I still manage to steal time during the week to work on other projects in my spare time, and I still get to work on what I wanna work on, and all that… And my wife tries to be as understanding as she can be as a non-developer right now, although she’s starting to learn a little bit of coding… Why the heck did someone find this so much fun that they’d wanna do it in their spare time on top of work time? Like…
[00:59:56.21] I know plenty of developers who still think I’m bonkers when I tell them that. But yeah, I’d like to think that I will get to the point where I don’t burn out. And honestly, even if I did, what I would probably do is I would just do code dumps. One of the ways I’ve learned to cope with it – I’ve developed a couple of coping mechanisms that really helped. I take at least one day every week off, where I do not touch anything that requires me to interact with people from the open source community. And that’s a defense mechanism to make sure I don’t get that [unintelligible 01:00:27.24]
You need a buffer.
I need a buffer. I need that guarantee that I’m not gonna read that email or that issue or anything like that that’s somehow gonna be a trigger of someone being mad. Because when it hits, my wife sees it on my face and goes “What’s wrong?” So it’s very visible that it ruins my day, or at least it ruins a couple hours of my day. So I have that one month a year outside of work hours; I don’t do any open source that would, once again, cause me to have to interact with other people. I’m allowed to code, and I can push code, but I don’t really deal with anything else otherwise.
And I’ve actually started to be a bit more opinionated in my projects… Because by having an opinion, it makes it easier to say no, because that also helps set expectations for people that “This is going to go the way I want it to go. If it works for you - great. You’re welcome to come along on the ride and get what you want out of it. But if it doesn’t meet your needs, that’s okay, too. You’re welcome to go fork it, go create whatever you want. You don’t have to use this software.” It’s a free gift, but just realize I’m going a very specific direction with this, and don’t expect me to add stuff just because it might solve a problem for you… Because if it doesn’t solve it for me, I’m not going to support it, and maintain it, and keep it going.”
That’s helped a lot too, because as I said, saying no is a lot easier now. It’s a little unfortunate, I’d like to be able to potentially be more helpful, but it simplifies my life enough that it allows me to keep doing this.
Well, you need that protection. I think that your coping is a version of protection, right? How you cope with the threats of the world, to your physical being, your mental health etc. How you think of the world today because of what you’ve dealt with; the cat ball, as you mentioned. The furball, or something like that. That’s a version of protection. So it seems like you’ve put a lot of thought into how you cope…
It seems like you’ve put a lot of thought into how you – because Jerod asked you about end game… I’m curious how – can you get specific? Maybe what would a day in retirement in open source look like for you? Would you be advising on the community, would you be writing code? Give me an example of the things you’d love to do in open source.
What’s my perfect Sunday?
…to quote Hot Fuzz. Specifically for open source, to keep it focused - I don’t know, it kind of runs the gamut. Coding is great. I enjoy creating, and all that stuff. I love teaching and helping people. I actually enjoy giving talks and doing these podcasts with the two of you, and those other folks who I also speak to on podcasts…
[laughs] Wait a second, there are other podcasts?
Yeah, occasionally inviting me over to have a chat…? I’m sorry to say, there are…
I don’t believe it.
Yeah. I’m not gonna – yeah, anyway…
Say their names, please. I’m just kidding.
They’re all friendly folks, it’s okay.
[01:03:05.08] Of course, yeah. You know what - on that note, for real, we love other podcasts.
The place is better because there’s more than just us.
Yeah. We legit do. We wanna see everyone thrive. We’re not a “Hey, come listen to our shows only [unintelligible 01:03:15.03] so just to be super-clear about that. I’m joking, but I wanna be clear.
Yeah, yeah. No, totally fair.
We love our community.
And I’ve never been on a podcast where anyone has suggested that “Yeah, don’t mention that other podcast you were interviewed on a week or a month ago.”
Yeah. We would never do that.
No one’s ever done that. You two, or anyone else. I’m joking amongst friends, just for everyone who don’t know that I talk to Jerod and Adam. Anyway… Yeah, and just helping out, and stuff. I would like to not have to deal with code of conduct issues ever again. That’s another thing I’ve done as a coping mechanism, which is a little weird, is I’m on the Conduct Working Group for the Python Software Foundation, so I try to do what I can to help with our code of conduct for the PSF and Python in general, and try to engender and create that welcoming, inclusive environment that I would want to have be there if I was starting out… And to help those who are not as lucky as I am based on my position of privilege as being a very tall, white Canadian male. [unintelligible 01:04:18.17] it’s stressful, but it does let me help make sure that things are going the way I feel they should and need to be going so that these problems that I happen to come across don’t perpetuate going forward.
I’m doing that as a coping mechanism to make sure the environment ends up the way it needs to be, but retirement-wise, I would love to not have to do that anymore. But yeah, just kind of more or less what I do today…
With complete freedom.
To say no or to say yes.
Or to say yes a lot more than you say no, because you can now. Because it’s not 20%, now it’s 80% or 100%, or whatever the number is you assign yourself.
Exactly. Whatever strikes my fancy today.
Yeah. That’s good. Brett, I’m glad that you have thought through those things, to think about coping, to think about your end game… I think it’s important. Something I like to think about often is “What are you optimizing for?” Because it shows what you wanna do; it gives you the opportunity to have that opinion, to say no, like you said before… And a lot of people don’t think what they’re optimizing for. They sort of just do. And it’s sort of like haphazard to some degree. Not everybody. I’m just saying - if you think about what you’re optimizing for, it gives you a chance to have that opinion, so that you can say no, so that you can work on the things you want to work on, not what others want you to work on, and you can have a healthy balance or approach to the work you do.
But Brett, you’re a friend of ours, we love having you on the show. This special thing for Upstream and for Maintainer Week is – obviously, open source software maintainers are near and dear to our heart; we literally love open source maintainers and we show up because we have that love, and that’s why we produce the shows we produce, so we do this in our business. We came for the tech and stayed for the humans, is what I like to say… Because we literally love humans, and we wanna see everybody thrive.
Brett, you’re awesome. Dr. Brett Cannon, you’re awesome.
We appreciate you.
Our transcripts are open source on GitHub. Improvements are welcome. 💚