Han Shot First ![rw-book-cover](https://wsrv.nl/?url=https%3A%2F%2Fcdn.changelog.com%2Fstatic%2Fimages%2Fpodcasts%2Fmaster-original-3922a5ce5ede81d973adc3cd618f7e64.png&w=512&h=512) ## Document Notes ## Highlights - **Rewatching Star Wars With New Eyes** - Brett Cannon watched the Star Wars movies chronologically with his son and reflected on how order changes the experience. - He finds Rogue One visually superior and values remastered home theater presentations like 4K discs. Transcript: Jerod Santo We're skipping that. We're skipping that. Maybe even a little bit of Andor, you know. Andor. Brett Cannon Yeah, I actually watched Andor specifically to come back on for, I think, backstage before you stop doing it. Jerod Santo And we're not doing that at all now. You know what i'll mention that uh i've had the pleasure since the holiday break like summer december january and then obviously we're here in february now uh my son my oldest son has Gotten into star wars and so we've watched all nine of the main movie shows you know the main movies yeah you know and then now which order did you do well chronological so this is this is A really interesting phenomenon i think that was is it really a phenomenon maybe it's not maybe it's just a luxury um is that you know we grew up in an era where we got we had to watch them Out of order and so we kind of watched uh you know episodes four five and six with a lot of context missing and a lot of mystery right if you watch them in chronological order you watch four Five and six with all that context and all that mystery ruined essentially yeah which is kind of a sad thing but it's kind of cool in a way too so i appreciate the the watching from two different Angles but we watched them chronologically. You know, we knew that, spoiler alert, okay, sign the horn, that Anakin is Darth Vader. Okay, if you don't know that by now, then what rock, okay? What rock? But, you know, you kind of didn't really know, but there was mention of Anakin Skywalker a couple times in episodes four, five, and six that we never really probably pin back to a person That mattered in the story, although they were mentioned because we didn't know that Anakin was Darth Vader. Unless maybe you were like a super crazy critic and you just knew this stuff. But anyways, we've watched them and now we're watching Rogue One, which I believe is the best. The best. Brett Cannon Yeah, the best Star Wars movie of all time is is yeah the best wow awesome awesome but not the best yeah i'll say it's awesome but not the best maybe the best of the modern era well ([Time 0:02:31](https://share.snipd.com/snip/8abfbd43-5087-41a0-aac5-f60138918c3c)) - **Small Edits Alter Character Arcs** - Changing small film moments can ripple through a character's arc and audience perception. - The "Han shot first" edit softened Han Solo's redemption and frustrated long-time fans. Transcript: Brett Cannon Wow. Okay. So there's two things here. First, the redos, George Lucas destroyed a lot of the original copies. So you can't really go back and get them. Because he claims that the remakes, the special effects he did are the actual versions he wanted to do. He always complained that Mos Eisley didn't meet expectations for him in his head. It was supposed to be a really busy star port. He didn't have the budget, but he was able to CG it in later. Adam Stacoviak I'm more sympathetic to that than the actual change of the storyline or the characterization. Brett Cannon Yeah. So do you want to tell Jared or do you want me to do it? Adam Stacoviak No, you go ahead. You've got the... Brett Cannon So there's a famous controversy that if you look at the original versions of episode four, in the cantina in Mos Eisley, Han Solo shoots Greedo first, right? Like when they're the whole talk and all that, you see him cock the hammer on his blaster. Jerod Santo And then he just, he had it on the table, right? He had it on the table, right? Brett Cannon Han shot first. Lucas didn't like that and thought it said the wrong message. So he changed it so that Greedo shot, missed Han past the head, and then Han shot simultaneously. Adam Stacoviak He turned it into self-defense. He turned it into self-defense. Which softens Han Solo's character. Brett Cannon Exactly. And it doesn't give him kind of that redemption arc of being that scallywag, as it were, or rogue person who suddenly kind of realizes that there's more to life than just me, me, me, and Chewbacca. And there's more to it and becomes a member of the Rebel Alliance, blah, blah, blah, blah. So that arc kind of gets taken away. Adam Stacoviak Yeah. So this became a huge thing. There's t-shirts like Han Shot First t-shirts by people who are just mad at George Lucas. Well, because you changed the movie that we loved in small ways, but small ways have big ripple effects, you know? ([Time 0:14:13](https://share.snipd.com/snip/4d558765-2fca-46c3-acb6-c76dfaf41c66)) - **Lock Voice Use With Clear Licensing** - If a person wants their voice used after death, specify strict licensing and usage constraints in writing. - Enforce conditions about context, scope, and supervision to avoid misrepresentation. Transcript: Adam Stacoviak Uncanny. Oh, it's insane. Now here's a, here's a question of future morals and ethics so here's a guy whose voice i know where this is going well you guys are thinking it too weren't you i'm just gonna say it well Brett Cannon And we can tie this go ahead and i know where this is going and i have a star wars tied back for this okay cool yeah yeah there i know where you're going with that so we have hours and hours of Adam Stacoviak Just like lossless, amazing quality recordings of the guy's voice. And we can deploy those into the future at better and better usages to the point where right now you can still tell, but 10 years from now it's going to be indiscernible. I assume from his, his actual person. Cause you've never seen it. I mean, I know what he looks like, but you don't have to see his face. You just hear his voice. I can hear his voice in my head right now. I can't picture his face. Same here. Would what happens when he dies at him i mean couldn't his foundation you know license that out and the world could continue to benefit from this guy's amazing pace and vocals well now We're getting into i just want to throw one more thing in there brad because i think you might like this too now we're getting kind of into ready player two's territory if you watched or Jerod Santo Read Ready Player One, great film, fun, yeah, nostalgia, but the book is better. And Ready Player Two goes into really great, well, really interesting places, let's just say. Brett Cannon James Earl Jones did recordings of his voice with a Ukrainian company, actually, for Disney, so that they can keep using his voice for Darth Vader specifically. And I think that's an interesting distinction here of David Attenborough, the person versus a character. And so for me, I don't think I'd want to hear an AI-generated David Attenborough. It just isn't the same. I know it's the voice and the intonation and the pacing is what we all associate with that, but it's not going to be the person. If it was really just the voice, we would not care whether this person was alive or dead. But the point is we do. We care about David Attenborough, the person, for what they have done and accomplished and given to the world. So for me, it's more than just the voice. For Darth Vader, as a fictional character, I'm less bothered by it, especially and specifically because the actor has given permission to do it. So if the actor is given the permission to say yes disney you can keep using my voice for darth vader for whatever you need it for i'm okay with that i get that and i won't personally have Problems with it because it's a totally fictional character to begin with and the actor said okay dave and atber though i don't know this has a weird different feel when it's literally The person and not a fictional character so i i'd rather just hope someone else kind of comes up through the works and kind of becomes the next great BBC nature voiceover person. Versus just, let's just keep reusing David Attenborough forever and never have a human being ever do this again. Because it'd be tempting, let's be honest. Like, do you really want to try something new with someone or just stick with what you know, especially if it's internationally recognized? That everybody loves. Adam Stacoviak We already know everybody loves it. Yeah. Now, what if they and Adboro did the same thing? He said, I want my voice to live on in perpetuity. I love nature docs. So, you know, whatever permissions you need from now on after I die, my last will and testament is use my voice for any nature doc you want. Go have fun. Now, would you listen? Would you not listen? Would you care? Would that change your perspective? Brett Cannon I mean, I wouldn't stop me, but I'd, yeah, I still would prefer a person, but I wouldn't be upset about it if you said sure. But I don't know. It still feels a little weird. Jerod Santo Do you know what, man? I don't know. I'm really, I'm really, this is a really fine line that we're, we're, we're presented with and potentially crossing because I don't know if I care, I guess. I just don't know if I care. I think in particular, if that was true, if David said, Hey, super fan of my work, perpetuity, all that good stuff. If it was his wish, then I wouldn't, I certainly wouldn't care at that point. But if it was against his wish then i would certainly care same yeah you know so like if he was for it he's like i donate in all the ways to an audio lab that can do this stuff and do it in a way That presents his desires and those desires kind of have a license or a criteria set to it And they're always, it's always used in that criteria and that license. I'm for it. I'm for it. If the man wants to live on, I mean, he's earned it. By all means, I'm going to enjoy it. Cause if it's David and they can kind of like kind of keep it in the David way, the personhood of David shoot for the moon, man, go for it. We can't stop this stuff. ([Time 0:30:40](https://share.snipd.com/snip/23d4c0e8-031b-4020-909b-cf6e06b842d2)) - **Databases Need To Understand Agents** - Agent infrastructure strains traditional stacks with vectors, embeddings, and conversational data. - Tiger Data proposes combining model context servers, hybrid search, and zero-copy forks into one Postgres-native engine. Transcript: Jerod Santo Strange times. This is the year we almost break the database. Let me explain. Where do agents actually store their stuff? They've got vectors, relational data, conversational history, embeddings, and they're hammering the database at speeds that humans just never have done before. And most teams are duct taping together a Postgres instance, a vector database, maybe Elasticsearch for search. It's a mess. Our friends at Tiger Data looked at this and said, what if the database just understood agents? That's agentic Postgres. It's Postgres built specifically for AI agents. And it combines three things that usually require three separate systems. Native, model context protocol servers, MCP, hybrid search, and zero copy forks. The MCP integration is the clever bit. Your agents can actually talk directly to the database. They can query data, introspect schemas, execute SQL without you writing fragile glue code. The database essentially becomes a tool your agent can wield safely. Then there's hybrid search. TaggerData merges vector similarity search with good old keyword search into a SQL query. No separate vector database, no elastic search cluster, semantic and keyword search in one transaction. One engine. Okay, my favorite feature, the forks. Agents can spawn sub-second, zero-copy database clones for isolated testing. This is not a database they can destroy. It's a fork. It's a copy off of your main production database, if you so choose. We're talking a one terabyte database fort in under one second. Your agent can run destructive experiments in a sandbox without touching production, and you only pay for the data that actually changes. That's how Copy on Write works. All your agent data, vectors, relational tables, time series metrics, conversational history lives in one queryable engine. It's the elegant simplification that makes you wonder why we've been doing it the hard way for so long. So if you're building with AI agents and you're tired of managing a zoo of data systems, check out our friends at TigerData at TigerData.com. ([Time 0:42:10](https://share.snipd.com/snip/45ac31ad-80e4-49f7-b8e7-6a609d642dac)) - **Stepping Down For Turnover And Family** - Brett Cannon stepped down from the Python Steering Council to create guaranteed turnover and focus on family. - He has no regrets and misses the community conversations but values letting new contributors lead. Transcript: Adam Stacoviak It's been two two years since you've retired from the steering council any regrets you ever went back in how it working out? Regrets. Brett Cannon Regrets. No. I mean, so I was on the steering council from its inauguration through the first five years of its existence. That was great. It was great seeing friends of mine every week and having an excuse to hang out and to help out and all that stuff. But when we were choosing our governance model, one of the things I suggested is that we had term limits, specifically so we had guaranteed turnover. I didn't win that argument and there was enough going on. We were trying to make those decisions. I didn't press it. It was more of an idea. But I decided to stick to it, plus potential get on the way. I was like, yeah, this is just a good time to just step back and let someone else come on and have that guaranteed slot to be open. So no, I don't have any regrets. Would I ever do it again? Possibly, given enough time. Once again, I think the kid would have to be a little older and just, I'd be able to focus a little bit more on it. Cause it's one of those things that's kind of always, I don't know about YouTube, but my brain never shuts off. So it's always going, the stuff's always going back in my head. And so right now it's a lot of kid stuff and I want to make sure that it's not pushing kid stuff out of my head. So I want the kiddo to be a little older before I do that. But like I do miss hanging out with the people in the streaming council because I'm luckily know most core devs personally at some extent. So it was just a great excuse to hang out and just talk every week. Yeah, no, I don't, no regrets. Yeah, it was just a thing. I just stopped doing it. And it was no weird anything. It's not like I felt like, oh my goodness, I don't have the power anymore. It's Adam alluded to. I mean, even when I was on it, I still had to go through the same process as everybody else. So it's not like I was in any way privileged for the stuff I wanted. The closest I had a privilege is I could ask my other steering council members, I have this idea for something. What do you all think? And they could shoot it down on maybe a little earlier than somebody else, but everyone else can also still email the steering council and ask the same question. So it's still not that privilege. I might just get response time that's faster. So yeah, no, it's, it was, it was fine. Um, it was over too stressful to begin with. It was just, just took time. ([Time 0:45:57](https://share.snipd.com/snip/302dcb4a-23a3-4174-84c4-9f9ab98b395d)) - **Governance Emerged From A Void** - When Guido stepped back, Python had to invent governance from scratch, exposing the complexity of choosing voting systems. - Picking a voting system required intense community discussion and 'soft power' to reach consensus. Transcript: Brett Cannon Mike, we've never had to worry about this. Jerod Santo The bear is sticky with honey. Brett Cannon Yeah, exactly. When you've never had the system in place, because you always just propagated things up to Guido to make a call, we didn't have anything in place. There was no concept of voting on the Python core team because we never had to vote for anything. It was just Guido might ask for our hands or just people would say like plus one, plus zero, minus zero, minus one, but there was never like a formal way to do it. And voting systems are one of these things you can really geek out on if you want, because there's a whole bunch of literature about how certain voting systems lead to certain gamification And stuff versus not. Like first past the post, which is how governments like North America are typically voted on, versus whoever gets the most votes. But that can lead to games with stuff. And then there's approval voting, where it's more like you just say, I like this person or I don't. There's a whole bunch of stuff. So that took a long time just to choose how we were going to choose how to govern ourselves. How long, nine months? Jerod Santo A baby level? Brett Cannon No, it was July until November, I think. October, maybe. But the deal was there was a lot of strong opinions. Really strong opinions. And it was one of these times where it didn't look like we were going to reach agreement. And because there was no way to even choose that system, it had to be kind of just general feeling consensus. Because there's no way to really know, right? There's no way to know, like, yeah, we've all agreed. How do you know that? You just had to have a feel on a mailing list or maybe at a core dev sprint. Just kind of a room feel that we all kind of basically agree and we think this is going to go and no one's going to throw a fit and cause a big stink over this. So even that was hard, right? The way I always said it is there was a lot of soft power being thrown around by some of us core devs who had been around for a long time and had respect of enough other people to go like, okay, I think we all have this going. What do you all think? And kind of like push and force people to make it kind of vocally say yes, no, or stay silent as an abstain and just kind of get a feel of the room. Like, okay, okay, everyone good? Everyone good? And just kind of like declare, okay, and move on and hope no one throws a fit, right? It was really weird, but it was stressful too, because you never knew. You never knew if someone was going to come forward and go, I don't like it, right? Because it's not like we're in an office where we're all chatting at the water cooler all day long. It's just emails. So it's like sometimes you're talking to someone, sometimes you're not. And someone can just disappear and not say anything. And so they just drop in and say something. Where if you were in an office, you could totally see it in their eyes. Like, oh yeah, they're not happy. Something's going on. So it was hard. And it was really stressful. And a lot of it was around voting systems and choosing how we were going to choose that voting system. ([Time 0:53:21](https://share.snipd.com/snip/46945823-7350-4f8a-9e9b-1ad0a6a6ad4a)) - **Express Nuance With STAR Voting** - Use STAR voting to express nuanced preferences: score candidates 0–5 and let automatic runoffs pick finalists. - Avoid blanket approvals; rate true favorites high and spread lower scores to reveal real priorities. Transcript: Brett Cannon So we originally started with uh approval voting where basically you just said here are all the people i'd be happy if they ended up on the steering council so if you had 10 candidates For five seats you didn't weren't limited to five votes you could vote for 10 people or nine or eight or seven. And basically it kind of makes you go like, okay, you're just basically saying, I approve, I don't care if anyone I approve gets on, it's just these are the people I want. But it kind of waters down your vote in a bit because you can't really say, I really hope this person gets on, but I'd be okay if this person gets on. So I might really want Adam to be on, but if JR gets on, I'm okay, right? There's no kind of like expression of preference with approval of voting. So star voting, and it's all caps for star, so I think it's an acronym. Star voting actually lets you rate. So here's my favorite, here's my least favorite, but you can rank them anywhere you want on a range of zero to five, where zero obviously means like, no, no thank you there's a meaning Jerod Santo Behind this you want the meaning behind star voting sure would it add context i don't know i don't know if wikipedia is accurate or trustworthy but let me just let me just say that's the Source okay star voting is an electoral system for seat or sorry single seat elections the name and allusion to star ratings stands for score, then automatic runoff, referring to the Fact that this system is a combination of score voting to pick two finalists with the highest total scores followed by an in quotes automatic runoff in which the finalist who is preferred On more than on more ballots wins. It is a type of cardinal voting electoral system yeah would you guys do the automatic runoff part yeah we did so what happens is basically you rank all your candidates from five to one Brett Cannon And or zero right if you don't want them at all but the interesting thing with this is you really want to rank the people you really want on as five and the people you're just okay with but Or totally don't care about being on as one and then spread everyone else across like peanut butter right so you really do want to show a preference you don't want to put everyone at five Because it's like no no difference you really want to show a preference which is the big shift from approval but yeah it just does a runoff and it goes like okay who's above in all these Ballots at this point and then okay well it seems these are the top two if we just have these two run, what does that look like? Oh, okay, this person wins. They're on. Take them out of the ballots. Now we do it all over again. And then just keep slowly kind of pulling it down to see where people's preferences land in terms of, well, this person got all the fives. Like, because there's a balancing of each other. Like, oh yeah, this person got fives, but only got like 10% fives versus someone else who got like 30% fours and just how that all, all the machinations of the numbers and the math and all That work out. But it was just interesting that we did that shift to really kind of let people express that preference, right? It's just like, it's not just a binary on or off the, on the council and say, no, I want you on versus yeah, I really want you on too. I'd be okay. I won't be upset. But if you don't get on, I'm not going to cry either. And that was the big shift. And that all just happened in this last election. ([Time 0:57:13](https://share.snipd.com/snip/f0dcfad0-c178-4fae-ab5c-920041798138)) - **Years To Standardize Lock Files** - Brett spent six years iterating on a Python lock-file PEP and built a proof-of-concept installer to prove feasibility. - Early community pushback (no source-only restriction) forced redesign and deep tooling work. Transcript: Brett Cannon So actually, no, because the steering council has devolved power for packaging to select people. So this is another kind of side effect from when Guido did things. So Guido did never cared about packaging. It was not his thing. He's just like, no, not my thing, but the community handled it. So the community handled it. And what ended up developing was kind of, I mean, not camps, but basically just groups of people who were working on packaging outside of the core dev team. Now there were people like me who were core devs and working on packaging stuff, but it's always been a separate group of people. And so when the steering council got set up, there's a PEP that says, for packaging decisions, we perpetually defer to these select people to make calls for anything related to packages. So technically the steering council still gets final say, but they've just said, yeah, but these people are the experts in the area, so we're going to let them do it. And this happens sometimes. They're called PEP delegates, where the steering council goes, we don't have the expertise in this area, you do, we're going to let you make the call. Now, it doesn't happen too much with the steering council. It's happened more under Guido, just because the steering council is broad enough. Usually across the pipe, people can get enough information to do it, and they'll just ask expertise, opinion, and help. But with that, they just said, yeah, forget it. Over there. You all can handle it. You've been doing it this long. You keep doing it. So I had to make Paul Moore, who's one of the perpetual pep delegates for packaging, happy. So that's actually who I had to make happy in the end. Adam Stacoviak Okay. And that took you four years. Brett Cannon Yeah. Six, if you measure from when I first mentioned it on Twitter. Okay. Yeah. I mentioned that. Back when it was called Twitter probably. It was. Yeah. Six years ago. Yeah. We're actually getting close to, we're coming up on seven now actually based on these timelines. Okay. Adam Stacoviak So yeah. Well, as my, as the guy who built our house always used to say, it's just stuck with us. It's a long and windy road, Brett. It's a long and winding road. Yeah, it is. Sounds like this has gone a long ways. Now, we're talking lock files. So couldn't you just look at what MPM did and just be like, lock files. They got to figure it out. Do they, though? Just cargo cult that thing. Brett Cannon I don't know. If you ask the yarn people, I don't know if they had a degree back way back. Yeah. Okay. Adam Stacoviak So maybe the cargo cult isn't the move. What was the move? How did you figure it out? And what'd you figure out? Brett Cannon Well, so when I, so after the Python two to three transition, right, I had a goal during that time to try to make, make it so that anything that was in language that changed would either Be an error or be a warning, or there would be tooling to help you just make the transition for you and you wouldn't have to worry about it. Right. If they'd agree. So there would always be some way where you didn't have to magically look at things. Something would warn you or your code would just make it happen. When I got that done, I looked around for other projects to work on. You know what, packaging's a thing. People always complained about packaging and Python being hard, blah blah blah granted this is well over a decade ago obviously so I'm like, okay, I'm going to go help up packaging people, So I went over and started to participate over there and I viewed it as kind of trying to make things a choice and not a requirement when it came to tooling so setup tools, for those of you Who know Python packaging and all, was the long-time tool everyone used to package up stuff for Python. But it was the only thing people used to package up for Python, because it just kind of was there. It just continuously was there in the thing everyone used. And so what happened was everyone just through convention just assumed set of tools was there and that's what you had to use. So it had a lock on everything, not necessarily by design or choice, it was just there, which kind of sucks for the set of tools people because we can't change anything. We're going to break the internet. It's one of those, we do something and everything's going to go awry because we're just everything everyone uses for this stuff. And so we worked towards making it so that setup tools was a choice and a requirement. So if you know Python packaging, there's a thing called pyproject.toml that I helped create with a bunch of other people. And inside of that, you can specify your build system. So you can say, I want to use this tool from this version requirement to build my package or build my project. So that kind of separated out setup tools. And so that put me down the road of realizing that the artifacts are really the key thing you really care about. It's the things that get produced, not what tool you use to produce them. That's the real commonality and the compatibility layer that you really care about. I sort of look around at the next thing of what was locking people into PIP. What were some of the things that PIP was doing as an installer that wasn't shared by the community, that was very PIP-specific? Not because the PIP developers were trying to trap people in PIP, but it was just convention of what they had done. And it just kind of got pulled forward and everyone would use it. And requirements.txt files, if you're familiar with those, was one of those things where you just kind of write down line by line what your requirements are. And that was it. But it had no structure. It was PIP-specific. And it just had some quirks to it and all that stuff. So I was like, yeah, you know what? I'm going to try to tackle lock files. Because also at that time, tools were starting to come out. They were managing workflows. And they all started to do their own lock file format. I was like, okay. So if you want to deploy to your favorite cloud host, and they want to do the install for you, how do you make sure they support the tool you want to use? Well, you can't. You have to list. I am going to support this tool, this tool, this tool, because your lock file that says what to install is only made for that project. That kind of sucks. So I said, okay, you know what, I'm going to try to solve this one. And so I tried. And it failed initially, because I tried to lean in really hard on security, which cut out building from source. Because for anyone who tries to build from source and you don't know what compiler you're going to use, it might compile on Tuesday, but good luck having it compile on Wednesday. So I said, I don't want that headache. So I may only use wheels, which are the binary artifacts for packaging that Python has versus source distributions, which is the source thing. And I did it and the community said, nope, don't want it. If you can't do source distributions, not going to work for me. And Paul went like, yeah, enough people are saying that they don't want this without this, that I'm not going to take this. So it killed that first version. So I went back to the drawing board and I'm like, okay, I had some coauthors on that pep. I felt bad that we did all this work and it got canned. I used their time up to do this. So I'm going to try again on my own. And as part of that, I'm going to try to develop my own tool, basically almost a PIP competitor as a proof of concept to show how this would work. So I started to have to kind of re-implement PIP from the ground up, which is ([Time 1:06:07](https://share.snipd.com/snip/e5ccb232-ae99-47cc-9457-ba5b93316e66)) - **Python Packaging Is Uniquely Complex** - Python's packaging differs from Node/Rust because it supports compiled binary wheels and a flat namespace. - That complexity prevents simply copying other ecosystems' lockfile designs. Transcript: Brett Cannon The reason we couldn't just use package lock dot JSON and all that is Python's packaging story is complicated because we allow you to use Python as the glue of the internet. The fact that you can ship pre-built binaries of C code that you pull into Python, Node doesn't have this. If you look at any node package that has pre-built binaries, they have their own little hack in their install script to like, I'm going to go download this custom thing based on what I Think you're running on. But Python packaging solves that for the community overall. And so there's a lot of complexity around that. How do you handle that? How do you make sure you grab the right thing on Mac versus the thing on Windows, or things that are only on Mac that you care about but not on Windows, right? Because that happens too. And then there's got version compatibility and all this stuff, and it's a lot of stuff to have to keep track of, right? To the point that we're starting to see people try to shove stuff on PyPI that are not Python related just because we've solved these problems already and their community hasn't. So they're trying to piggyback on PyPI. Now, I would suggest you don't do that because the discussion is suggesting legally it might not be a good idea. At least for PyPI, right? Because it's legally specified only for the Python community. Don't take this as an idea. Please don't do this. But if it's Python related, go ahead. Anyway, it's being discussed, but that's why it's complicated, right? And we can't just steal someone else's approach, right? Like Rust has their nice thing with Cargo, but they just compile everything from scratch. You can do it by nice. Same with Go, right? Node's a little different because you can have multiple versions of different things. As we know, node modules can get really big with a position of copies of the left pad. With different versions. We don't have that. We have a flat namespace. You've got to have one version of anything ever installed at once by choice. It just leads to different decisions, different complexities. It just took a lot of work to get everyone on board and get it all lined up and make sure everyone who had a log file was mostly happy. UV was kind of one feature shy of being happy, but the thing that they weren't happy with is not standardized. And I was not about to be the one that standardized it. So I'm kind of waiting to see if they ever propose workspaces, basically, kind of for monorepos, like workspaces from Rust for Python, because they said that was the one big missing Thing. So I'm hoping someday they'll do that, get that into the spec, and then they'll actually even use the standard as their primary, instead of their uv.lock. But everyone else is on board and doing it. ([Time 1:14:50](https://share.snipd.com/snip/db9653e4-a5c3-4f89-811d-9f0972a8c485)) - **Use Workflow Tools To Run Python** - Use workflow tools like UV, PDM, or Hatch to run Python apps with one command instead of manual installs. - Favor tools that manage Python versions, virtualenvs, and installs to simplify onboarding. Transcript: Brett Cannon Because I think my version of my PEP for LockFiles came out July. And I was like, and it was totally taken by surprise. I was like, I've been working on my own resolver and this stuff and some of the features you have for like a year by myself here. And suddenly it just on me like, oh, where are you doing that? Hence why I know the date. Yeah, so one of the things that UV, I think, popularized but actually predates them is the idea of workflow tools whose focus is to get your Python code running, not getting your Python Interpreter running. It's a very succinct distinction, but it's a key one. So PDM, Hatch, are the other two big ones next to UV. What happened was, there was a project called Python Build Standalone that does pre-built Python binaries that are relocatable. So they could drop the target, I don't know what, if it's GZ or XZ or whatever, on your desk anywhere and it just works, right? So what happened was, is projects realized, oh, you know what, if I can auto install Python, because that's one of the big complaints that some people have, is installing Python is a Pain because we don't come in box and OSes anymore like we used to. And the installs are different per OS. So people are like, there's no universal explanation on how to do this. And there's a lot of little details on how to get things working. We have virtual environments, which is our isolation mechanism. So when you install stuff, you don't stomp on other things in your machine. And so it's like, all right, you've got to get Python somehow. Get that installed. Okay, now I've got to create a virtual environment. Okay, now I've got to get everything installed into my virtual environment. Now I can run my project. Lots of little steps. And what UV popularized in Hatchapdm, the decent job that they did prior, was go like, you know what, we're going to give you a unified tool that does all that for you. So like UV run, Hatchet run, PDM run, they all do the same thing. They go like, all right, you need Python version something based on the metadata of your project. Do you have it? Now, okay, I'm going to go download it from Python Build standalone, which is an astral project at this point, because the maintainer didn't want to run it anymore and astral graciously Took it on for the community. Download Python, install it on your machine. Now that you got it, okay, going to create a virtual environment in your project. So that's done. I'm going to figure out what needs to get installed based on what you said, which could be nothing, just the default install, whatever, or you maybe added extra fields for extra stuff. Install that, and then you said run, now I can get the Python I just installed through the virtual environment that has old things. Run your stuff, get your code running. And just one command, all done. And that's a breath of fresh air for a lot of people. Because as you heard, that's a lot of little steps that are easy to miss for people and AI to throw shade at everybody. And UV really popularized it, right? Because UV got such a big splash when they came out with UV due to the performance numbers that they were getting. That everyone went, oh my god, this is amazing. And then they did it. It's like, oh my goodness, and it does all this stuff. And so total credit to them. They're great at marketing. And they landed at a good time. Their performance is exquisite. And they are really good about launching new features when they land in the packaging ecosystem. And so they get out really fast with them and people see it. ([Time 1:21:48](https://share.snipd.com/snip/fbccbec5-72bd-4992-becb-1ec79f08b9ab)) - **Performance + Adoption Create Risk** - UV's speed owes as much to algorithmic choices and resolver design as to Rust implementation. - Community adoption creates dependency risks, so standardize basics to reduce vendor lock-in. Transcript: Brett Cannon But the concern, I mean, the reason we brought this up is does we're not having concerns. And so this is the usual, it's great, but QV is a VC-backed company. They have to make money. Not that I think there's any ulterior motive here, but that might implode. I hope they don't. As I said, I know the company. I know people who work there. I hope they also have jobs long into the future, and I hope they're very successful. But there's always that concern. We've all seen tech just kind of have problems, right? I know some people do not love how certain things in the node community happen behind companies because of how they manage things, right? It's a concern. And once again, you never know what the future is going to hold. You never know if it's going to be somehow money pressures are going to cause them to have to make a decision. As I said, I fully expect that that'll never happen, but there's always that risk. And when everyone's instructions are using, use UV, it's a bit of a, it's a slight concern. It's not a huge concern. Like I don't think anyone's panic, but I do know people, for instance, who flat out refuse to use UV specifically because if it goes away on them, it's going to suck to have to transition Everyone else to other stuff so they'd rather just use their own thing so brett's doing his thing of all right how do we help push things in a way that there's kind of agreement among the Adam Stacoviak Workflow tools of how things should work right standardized so that other things can do the same things and that we don't have epic lock-in in case of a massive failure. Now, UV is open source, right? So... Brett Cannon MIT licensed, even. Adam Stacoviak Yeah, MIT licensed, so very permissive. There's probably, you know, company things that are required. I imagine it's, I mean, does it touch server-side stuff that's like Astral-run server-side things? Or I don't know. Brett Cannon They've announced that I think they have an enterprise thing. Adam Stacoviak Yeah, that's right. Brett Cannon That they will run on your behalf as an index server for serving on Python files. So that's what they have. And it's designed to tie directly into UV. So this kind of plays into it, right? Like UV has stuff specifically for their enterprise products i mean it's typical freemium right which i don't think i was gonna balk and be upset with no but you know how you know props Adam Stacoviak By the way to astral for picking up that what you say it's called pdb or something this project that was no longer maintained uh the acronym is pbs python build standalone python build Standalone so that's cool you, like that guy didn't want to do it anymore. It couldn't. And so here comes somebody else. And so hypothetically, and probably even practically UV as a project could be the exact same thing in the case that Astral fails, like somebody else could pick up and run with it. Right. Brett Cannon Yeah, exactly. And this is why some people don't worry at all. Right. You have some people going like, whatever. I don't care if it, if they misstep, we'll just fork immediately because it's MIT and we'll just maintain it ourselves. Although granted, it is in Rust, not in Python. So the talent pool for taking it off from the community is not as broad as if it was in Python. But other people are like, yeah, but I don't want to have to worry about that step to begin with. And the longer they go as the leader, the more more ingratiated they get and the harder it's going to be to switch right right so maybe me i'm trying to make sure that the stuff uv is doing Uh from a very baseline experience is kind of less less special not special because there's things they all do. It's just trying to get them to all kind of go like, yeah, this works. And if you do this, everyone kind of agrees in some way, right? So like I'm currently working to try to get python.org to be the producer of these prebuilt binaries, not just Python build standalone, right? Like there's nothing magical they're doing. They've got some patches that I'm working with them to get upstreamed, which they've always said they want to do. It's just a lack of time. This is one of the things. Startup, they only time crunch all the time. They're trying to slowly get them up and I'm helping them as best I can. Props to them for trying to help that. They honestly want us to own it because it's way easier for a whole group of people to own how these builds work versus just them. ([Time 1:25:21](https://share.snipd.com/snip/e9bd2a59-ab6d-4950-bb35-0f300815a7a8)) - **Standardize Binaries And Virtualenvs** - Advocate standards for prebuilt Python binaries and virtualenv discovery to keep tooling swappable. - Encourage python.org to produce relocatable builds so any workflow tool can adopt them. Transcript: Brett Cannon The other thing is I have another pep that I are talking with some people behind the scenes, including them, about standardizing virtual environments and where they go. Because weird problem here, because everyone kind of sticks virtual environments wherever they want, tools like VS Code or your editor, whether if you're a sublime text user like Jared, I assume you still are, maybe you're on Zed now. I can't keep track. Adam Stacoviak I'm on Zed. I finally made the switch and it stuck for the first time. Brett Cannon So whether you're VS Code or Zed or whatever, your tool doesn't know where to find this virtual environment that's so critical to your project. Because every tool does it their own way. So I've written a pep to try to standardize where it goes, or at least have a marker file to tell you where to go to get it so that all the tools can know where to go to look to find the thing. Because it's such a fundamental thing for discovery. But it's little stuff like that that I'm just trying to clear up so that if I recommend using UV and for some reason it doesn't work out, you just have to say, go use Hatch. It's going to flow through and just work nicely together. So that's where I'm taking it from. And it's not because I want to take away from enterprise or anything from a company perspective. It's just the baseline. Everyone in the community wants experience, should be universal enough that swapping tools is small. And then when you want the enterprise special stuff, totally get attached to UV, totally go in with it. You can totally just attach to the hip to it and go for it. That makes total sense to me, working at an enterprise company. The way it is, enterprises have such special needs that that's not something we're ever going to standardize. But for the stuff for kids, educators, hobbyists, when your models write you a little Python script and you're just like, okay, I just need to run this real fast. UB is totally a good, reasonable thing to say and use right now. And as I've tried to be very clear, I have no problems with that being the thing is that I want to make sure that that never becomes a problem and just hedge our bets really is more of the thing. So that's, that's kind of what my current big project is, right? Cause I want my little, my little kid when they go to school and if they learn Python in school, I don't want them coming home and say, daddy, why is it so hard to get Python going? I want to make sure I can say like... Amen. Amen. So I want to make sure that they have, and everyone on the planet subsequently, has a good experience getting Python running. And I think that was one of the big things that happened in 2025, was the community going like, you know what? I like this workflow. I like this tool that I just say, run my code, Python code, and it does all the other little details to get my code running. That was, I think, the big thing. That's what I want to work towards making the norm and doing what I can to help UV and these other tools out to make it so it's acceptable to more and more people to do because it doesn't lead To weird issues with your cloud provider or your tooling. It's not going to plug in with Zed. It's like, well, no, no, Zed just plugs into the standards. You could totally use PDM, you could totally use Hash, you could totally use UV, and it's just going to work. And no one gets left behind either. Because I always like to help projects thrive because they all have little innovations that help with their projects or anything else. And that kind of helps build up. And then people try workspaces, right? If UV helps and then they try it out and we get a good experience because everyone's trying to learn things and now we can standardize that, right? ([Time 1:29:54](https://share.snipd.com/snip/76ab28d5-26bb-43fb-b8e7-418407fee4bc)) - **A Personal Launcher Born From Frustration** - Brett wrote a Python launcher for Unix in Rust to auto-select the newest Python or the nearest virtualenv. - It became his personal workflow enhancer and a precursor to modern workflow tools. Transcript: Adam Stacoviak I remember this, a long time ago. Brett Cannon Because I wanted this on Unix to have this command that automatically search your path and find the newest Python 3.whatever version and use that. And then on top of that, I added a little nicety where if it finds a virtual environment in a.venv directory from your current directory up to your parent, it would automatically select That instead of trying to find Python on your path. Which has a nice benefit where when I start a project right now, I just go pi-m And that's the command to create a Python environment using the newest version of Python I have installed. And then from that point forward, I just type pi, and it just always picks it up, and I don't want to think about it. I don't even have to activate my virtual environment in my shell. It always is just a thing in that project, and I'm done, and I don't even have to think about it. It was kind of my little prehistoric precursor to workflows, tools, doing this way more involved. But this is why I'm jokingly saying to Adam, I did it first because I wrote that in Rust before. You were bold, Brett. You were bold. ([Time 1:43:54](https://share.snipd.com/snip/9fb87f5f-a77e-4fa6-bb36-a2e0570ccdc1)) - **Help Upstream Prebuilt CPython** - Contribute patches and scripts to the pre-built CPython project to help make universal binaries ship with releases. - Focus the work on upstreaming CPython patches and automating release-time build steps. Transcript: Brett Cannon Running it uh okay so if you go so i have a pro so there's a project to kind of coordinate stuff go to github.com/python slash i believe it's pre-built dash c python but it's on the python Org right yeah it's under the python org um basically it's all discussions really there of just like here's the goal and then talk with the stakeholders who care and just trying to work Stuff up. I'm trying to work with Python Builds standalone to get their key patches upstreamed that they apply when they do builds. I said they're busy, so it's a bit slow, but they're working with me slowly through them. Once those are all up, then we're going to figure out exactly what needs to happen for a build to patch or tweak or whatever five-day script to make the actual build happen. So it's no longer just tweaks to source, it's actually the steps to do the build. And then at that point, the release managers will just do it as part of their releases. It'll just happen. So I'm going to say it's being worked on. Whether or not it is a 2026 thing or a 2027 thing i don't know because i'm kind of depending on other people on being the experts and i'm just being acting as product manager in a way for this Stuff to kind of make it happen so i'm driving it but i'm not i have to ask other people for help so i can't just make it happen all on my own um so it's it's at the speed of me and other people Jerod Santo Being able to work together get stuff done but if you need some with the actions part of it and the build pipeline part of it, I got some wisdom. If not all of it, some of it, because I've been tinkering on this front here and I'm knee deep in solving a problem right now. Brett Cannon I mean, we can talk when it comes time if you want to contribute to Python somehow. I would love to. Right now, I'm at the stage of just trying to make it so that if you did a build on your own machine, it would work. Then we can talk about what it's going to look like on get up actions. Cause that's when we talk about like, okay, like what Linux distro do we use to make sure we get an old enough version of GLib C that it runs everywhere we want to run on and that kind of thing. And it's probably going to be all in the Linux, I think. Jerod Santo Cause that's already what, what if you could build it yourself? Contain it up, brother. Contain it up, man. Contain it up, brother. Let's talk later. We're going too far in the weeds. I love it though. Gosh it's the best get up.com/python slash pre-built dash c python that's the url right yep i think so so we're talking about if you pulled it up that's it yeah that's what I got. I went to the Python org. I searched for pre, found pre-built dash CPython. Brett Cannon That's it. So it's in the getting patches upstreamed. And then after that is getting the scripts so that it can be done as a release. And then it's getting it in as a release. ([Time 1:55:03](https://share.snipd.com/snip/8d6881d4-fc84-47a9-9040-5d2acfe660b3))