 Hi there, so change of plans like it turns out this this slot is after lunch But before coffees are gonna be all asleep. So it'd be too boring for us to talk about Python So instead we're gonna be doing like a piano competition between those people here No, like there's gonna be a Cordef panel. I'm Moukash. I'm the core developer in residence also called the janitor of the core team Which is why I'm just talking asking questions. They're gonna be answering we have with us Steve Dower, Mark Shannon, Pablo Galino-Salgado, Batu Hantaskaya, Ken Jinn and Irrit Katriel The thing is this like I would like you to be involved in this panel We're not gonna talk amongst each other What I would like you to do is just ask questions, which you can do here And if you're watching this remotely, where's the camera here? You can also ask questions So do and if you do like we're gonna pass them on to the team So they can answer and before you start lining up like let me just warm up the thing by just asking a question To everybody here Hi, can you tell us something about yourself and the area of Python that you are? Well responsible for Sure, my name Steve Dower. I'm originally from Australia, but I live in Scotland these days because it's so awesome there And I love it within Python, I mostly focus on Windows related things and I'm also really Yeah, trying to try to spend more time caring for the security side of things and also embedding Okay, I'm Mark Shannon. I live in the UK. I was born in UK as well. So haven't moved very far at all I'm the tech lead of the faster see Python team. So making Python faster I'm Pablo Alindo. I come from Spain Living the UK now. I'm released my year 310 311. I'm also in the team council for this past two years and I work mainly on the parser and the DC Yeah, my name is but one I come from the southern part of the Turkey I mainly work on the parser and the Python compiler as well as some other libraries like ASD and tokenize and such Hi, I'm Ken. I'm from Singapore and I work on typing and I also help make Python faster Hi, I'm Irith Kotherell. I'm based in London. I Work on the interpreter. I implemented exception groups and accept staff for 311 and then worked on a number of other projects related to exceptions and Recently and I joined Faster see Python team in Microsoft. So I'm working with Mark Shannon a lot All right, cool. Nice to meet you all The mic is there if you do have questions to ask us if you don't so far I do have one for you. Like do you remember your first contribution and when you started contributing to Python? First contribution, I remember my first bug report because Just because it got fixed so quickly by this guy named Benjamin Peterson And it was years and years ago which probably meant he was about six at the time I think but it was definitely him that fixed it But I was just really impressed with like a project that I had Downloaded and was using for free. I was and found something that didn't quite work I posted the details and about six hours later the this person who I didn't know at that point It's like it was just a name came up and said yeah, this is fixed and eventually I met him years later I'm like aren't you still in high school Yeah, yeah, he was but I think my first first contribution I Came into this weird because I kind of came in like I You know I already work at Microsoft. I already know Windows. Well, can I help with the installer and about Two days after I kind of suggested that the person who maintained the installer at that point said I Need to step back from this and so everyone kind of found me again is like yes the job's yours go for it and Yeah, the rest is rest is a lot of work I mean history rest is history Right I don't remember my first contribution, but I do remember my first bug report like Steve I think it was to do with addition in Python The way addition works as you get the done the ad and then there's a done to our ad and I remember there was something Wrong with that but I can't remember what the what actually was I think was mark Dickinson fixed it And again, I was impressed with how fast it was fixed First contribution, I actually looked this up recently and I forgot Memory leaks Pablo I think my first contribution was some some documentation thing But I was checking the other day and I think I have the Dubious honor to be the core developer that broke all the billboards in the least amount of PRs my My third my third commies merchants if I don't block everything and my fourth fix everything, so That one yeah, I made like a couple feature suggestions before I started contributing I never like, you know made that suggestions a reality because they were like dumb stuff But my first contribution was something around lip two to three which is not deprecated But I made some like tiny change in there Ken My first contribution was in pickle, but that PR was never merged even till today So I kind of gave up on that I gave up on that part of CPyton I later found an undocumented part of CPyton that people wanted documentation being Wanted someone to write documentation for so I'm not sure you've heard about it. It's pet 604 Union type syntax Basically means in typing you can have a union by saying typing that union then the types in 3.10 you can say The type then have the pipe operator to say you want to create a union and I wrote the documentation for that as my actual first contribution Eric my The first time I checked out the Python source code I was working at Bank of America and I was maintaining a We had a system that a huge system written in Python with extensions and so on we were upgrading it from 37 to 38 and one of our unit tests SIG faulted and When I looked at that test there was a comment there saying that that test Test sorry some bug that existed in Python 2.6 So that that's some case that used to crash in 2.6 and 3.9 it was crashing as well and we had a test in the CPython Test suite didn't so I reported that there's been a regression there and So I got a check out to kind of get by sec and find out Which committed was and it was a change in in the garbage collectors trash can mechanism that brought back an old an old bug if you have a Very very long linked list and then you kind of decrypt the first item then the whole list needs to be decrypt So there's something that makes sure that the garbage collector doesn't request too deeply and There was a bug there All right, so now let's start answers from the other side of the chair of the table So like back then like did you already think about like all like I'm gonna be contributing more than just this one thing Or like you know, like how did it how did it pass that you're a core developer now? How did it happen? So Yes, let's start from this. There's another table. I Was I was just trying to get us on three eight and then actually my manager at the time said, you know what? You know, you've gotten touch you you're talking to them. So why don't you spend a day a week working on Python? This was during lockdown We're working at home and it was all fine And so he said a day a week. He didn't say which day every day's a day You know, it's very confusing in lockdown. It's like, you know, groundhog days every day. I I think it's my Python day and Long story short, I work for Microsoft full-time worker on Python Yeah Go Ken Yeah, so at the start Because I was working on typing I was noticed by Guido and he decided to start mentoring me later on I decided to run short to other areas of CPyton and fortunately enough Pablo started mentoring me also So that's how I eventually became a core developer Yeah, but one so I was like really enjoying playing with Python internals, you know at that time And then I started sending a few PRs to libtutory AST and that sort of stuff It went very slowly and you know, I was doing like very low amount of PRs You know just making stuff up for myself or just taking up the bug tracker And one day I see like an email in Python dev from Pablo on AST on parts You know, I'm going to add this what do you think and I sent him an email Okay, can can we work this on like can we work together on this and he said yes and then we start like an We had like an informal mentorship which evolved to a like a formal mentorship and that led me to become a core developer Thanks Pablo After I reached the pinnacle of my career breaking everything I say wow breaking things is cool How many things I can break I Think actually at that time Like when actually I broke everything. I was talking with Victor Stiner. It's another core developer And he actually says you're good at breaking things What about if I mentored you to not do that and and I say oh that would be very good And you know, he's French. I'm Spanish. So apparently we we go together And yeah, she's been a been a quite a ride Mark Well, I was working on I actually did a PhD in Implementation of virtual machines for dynamic languages. So working on CPython or Ruby or something kind of was a natural follow-on And Python was just the best choice. It's the best language and it's also most interesting and challenging to optimize So all around the best option Well Steve yeah, yeah, like I said I had this this wild idea that I could make one contribution and improve something and then walk away and and it would just be better And it turns out that no, you're not allowed to walk away It's yours and and there's always more ways to keep making making things better So I you know, I didn't intend to kind of find a full-time commitment But but I found it and as long as there's more to do then I'm you know, I'm in Yeah, very cool. We have a question from the audience Hi, I'm Jolt Let me turn the heat up a little bit and ask this question So what do you think of auto formators and when Can I break them? I actually did He knows it. Yeah. Yeah, go ahead. I mean, I don't want to answer the question necessarily Oh, you already started. So how much hate can I take a lot? Look at the room. Do you like black? I break it Yeah It's true like I mean out of the joke like when we Like when when Liz Andres, Guido and myself wrote the new PEC parser one unintended consequence is that we break black because the technology that black was using and many other tools was based on the old parser and in the new parser we can do all these funky things And yeah, but then but to hand found how to do a bunch of hacks and now black survives with lollipop sticks and glue Yeah, at least until 312 then we'll see what you come up with more lollipop sticks But it works, I mean who cares how how it works, right? Pablo broke an auto formator like anybody here that like, you know has strong opinions on auto formators besides me. I Love having a formator that doesn't lead So so within Microsoft for our work I spend a lot of time trying to help a lot of teams successfully use Python and for a long time the first question They're all like which rules in in you know other linters should I enable to help us get our style, right? And it's actually really nice to just be I say just use black and and like all of these arguments and debates Just no longer exist and I'm not stuck maintaining like a 300 page long style guide So I like it from that point of view Any counter argument but one another counter argument, but like I was going to give an example So when I'm like right like I know something bigger than like hundreds lines of code in C Python, I just put it to another file format it with black and then paste it back I don't know Because it is the easier way and it looks good. So I Personally would love to have black, but you know, there are a lot of other challenges. So yeah I'm going to say that Yeah, so sorry Joe like bad audience for for actually training the heat on this particular question But we have another question. So another try as actually wondering if you would be discussing black for C code Given that most of Python or C pythons written in C But my question is nevertheless, so first and foremost, thank you for your contributions I'm thinking about Getting out of the Python ecosystem and the packaging problem, let's say and say embedding and that's In the industry a solved problem with containers on the server side Let's say we can solve it easily when we talk about deploying a Python application to common users on the desktop or mobile You'll be talking about that tomorrow. The challenge is I think it's still open And nowadays if I'm not mistaken, we are distributing an embeddable See Python distribution for Windows only If I'm not mistaken, it does not include central library. So it requires some effort from packages What about Mac What about Linux? I know these are different technical challenges. They're more like building and linking challenges and packaging issues more than the core language But they're as important as the language itself if we can't deploy Software to end users and of course the future is mobile. So the question stands. So How can we reach a deployable embeddable out of the Python ecosystem because end users don't care The about the technology that the software is built on Anybody wants to take this Well, I mean the web assembly work is kind of key here. I think Especially for if it's mainly UI stuff, then, you know, we're walking at human speed and the performance hit You get from the web assembly translation is is not really an issue And then you just bundle it with the you know, like any as you bundle a JavaScript app for the For the device if performance is an issue though, then then yeah, those are problems Yeah, I mean as as the person who put together the embeddable distro for windows it was possible because of the way windows does its binaries and and does kind of How it finds the the other binaries at runtime and it's a system that just doesn't transfer to mac and linux So so yeah, I did it for windows because that's my area and it was easy and I knew how to do it And I kind of said well, you know the the mac and linux experts can figure it out over there and and some people have some people have so there's a project out there that's Was it static python or python static builds or something? There's there's a couple of attempts out there to make Relocatable python builds the challenge is it's not just in python at that point It's pulling in more dependencies and you get a bigger thing, but there's there's definitely work going on for that Um, but yeah as as mark says I think the the web assembly and the fact that that largely runs on already designed to be portable machines means we can Kind of once go through c python and say well, guess what subprocess is no longer available everywhere Because we support web assembly now So you can't assume that you can start another process and run it And once we actually go through and do that cleanup Then it becomes a lot easier to to make kind of the more core pieces more portable Because if you've ever tried to write code that launches a sub process that does spawn or exact Across all three platforms you've failed If you have succeeded come and find me but but you probably not I think one of the other challenges that that you will find and It's quite Like we are absorbing it into c python because like okay It's python but like compared to other languages that should have this support like lua For instance, this is one of the big example that people bring like look, it's super easy to invent Like c python is playing very much deeper into the ecosystems. For instance So like c extensions are set objects And now you have to play with the rules of l files in linux And my co s much all files and whatever windows does and the things that Those have Much bigger constraints like for instance You cannot just load a set object from from the same file So you will never be able to have at least in manila Lipsy linux A single file that is your application That is what a lot of people will want because you cannot just say oh my extensions live inside Myself and I will load from memory right that that cannot be done Like google does this but because they fork Lipsy and they have their own funky You know deal open from memory whatever But normally you cannot do that right in a portable version and this is just a consequence that we just expose more Stuff and we are much more flexible. So And I think the other the applications that you were mentioning is pie installer and b-wear has some briefcase b-wear has has some tooling for it There's definitely because of some gregory Gregory saw that's it has has the the project. I mean they were like Relatively well, I think they they do work well, but it requires kind of owning your entire application stack You take responsibility for a lot more I would definitely say if that's an area that you're interested in making work well across platforms Check out blender. Check out obs studio because they do this already and they are multi-platform Uh to varying extents You know in the feature set but people can do it But it is considerably more work than than simply saying you must have already installed python so we can use it All right, thanks another question from the audience, please Hi, my name is pavel Do you think python is going in the right direction in terms of like new features being added and Regardless of that, what should be the direction for python? Who wants to take this Steering council member. I mean it would be weird if I say no, right? I mean, I think it's going in the right direction in the sense that You need to understand there is no a direction Because python right now being one of the most popular languages by certain ways of looking at this Has a super different use base right and what you may think is is important and nice and small and super My language fits in my head or whatever Like you may have like another big user group that doesn't think like that Right, like for instance the people that are very excited about typing Normally don't play well with the people that are teaching python because like, you know, they they normally look at types and say Why is this right, but it turns out that Those people then go to other places and then they change their views and now they think like I'm typing is just an example here That is awesome and they want to learn it right so so there is many different We use your groups and there are many different needs and For us we cannot just say all the direction is this one and this is the one that we want to follow Like we need to take into account everything with the decisions that normally affect the whole language All everyone and it's always a difficult balance And the thing about balances and compromises is that there is nothing that is going to make purely one user group happy Because as you know, like this time we reject this Super complicated type in features. So all the people that think that we have too much syntax are happy But then the next day we accept something else Because it's very useful for the people like for instance section groups, right? Because it's going to be super useful for people using asyncio And it's normal that if you don't do asyncio you say like oh, wow, this is insane Like why will anybody complicate the language now I need to learn about all these many things But um, so this will happen with like big languages and python has 30 is a 30 year old language Right. So like we are accumulating a lot of this Um, so yes, I personally think we are doing at least we're not doing a horrendous job and um, and uh The key here is that we don't look at a direction We look at our community and our use base and then we try to do our best for the future of the language Not only of the implementation All right anything to add Yeah, I mean the ideal python is one that has all the features you need and none of the features you don't But um and consequently You know whether a new feature is accepted depend is good depends on whether you want it or not But it's kind of hard just to I mean You kind of want a sort of coherent vision of where the language was going but unless you're omniscient that isn't going to happen So it's kind of a You know many minds is the best approximation to sort of a perfect mind So yeah, there's sort of you know community sort of decisions and so on I mean I mean my worry is that features are accepted Or rejected to a certain degree and sort of like who shouts the loudest um So I think probably having more You know if even if you'd sort of like you have an interest in python, which I assume you do is why otherwise you wouldn't be here You know if there's a a pep and you think about it It's like well, I don't like that for a reason or I do like it or whatever I mean, you know say something so at least you should have like Stand up and be counted Cool Thanks before we move on to another of those questions like do we have any from the remotes? Okay. No carry on So I think it's pretty well established by now. We won't be seeing a python 4.0 anytime soon But if you had the choice, where would you like to horrendously break backwards in compatibility? Where do we don't want to Okay everywhere all at once because if like python 4.0 is such a drastic thing we're not even imagining it and You know if it was then it would be such a new thing that like Only the pure python code would survive because Like we're never gonna do it And it would have to be like world-ending to do it and so everything just gets destroyed We rewrite and rust probably Eric do you have an opinion on what you want? What would you want to break in python if you could? Um, yeah, personally, um, I would like the gill to be gone And I think that's a pretty um common request But I'm not I don't think that will warrant a 4.0. I think it depends on what how we approach that problem Eric Well, yeah, there are the big things like the gill and and the things that we all know about from the point of view of someone who Worked intensively on exceptions um for about a year There are a number of things in exception chaining that are not There are some edge cases that I would iron out. I would change that mechanism in a way that it's probably very hard to do now Um And um, I think there are a few issues around scoping of variables that are a bit weird That I would tidy up All right, now we have another question Speaking of new features Um, some other languages have the concept of null coalescing and not no aware operators There have been some attempts at apps for python for non-aware operators What are your views on that because personally, I would really like to see them. I really like them other languages Yeah, I mean I I withdrew the pep that I wrote on that So I'd like to hear other people's opinions before I explain my reasoning I don't have a strong opinion on this matter So so for people who aren't familiar with that the the idea you may have seen it I believe it was added to javascript recently It's been in c sharp for a while But essentially if you have a variable and you're going to do like variable dot attribute Then you need to do a none check first. You need to say if this is none I don't want to do that attribute because I know it's just going to fail And so the idea is you have a special operator a question mark dot where if the value is I'll say if the value is none, but that was a point of contention if the value is none Then don't bother looking at the attribute. Just just return none Essentially, so it's like if the if the value is none give me none If it's not none look up this attribute and what it lets you do is is it lets you create like long chains of Like looking up attributes on attributes on attributes on attributes without having to have this really long chain of Is this one none? Is this one none? Is this one none? Is this one none? And so you can get in in that situation You can get kind of a nice single line expression that handles all of that The coalescing operator is a question mark question mark typically that says if the value on this side is none Give me the value on this side In python we often use the or operator for that which says if this value is false or looks false Give me the value on this side And that was also an interesting discussion because none looks false. So if you have none or some other value, you'll get the other value The reason I eventually kind of withdrew that is I had I had a real interesting discussion with reyman hettinger at one of our core dev sprints where where he basically laid out it's like But the features that go into the language Actually change the way people program and it has far more of a flow and effect than just how that particular thing gets written It's going to affect how the rest of the code is written So for example right now if you're going to append a value into a list You may check that it's you're not appending none And you'll say if I have a good value, I'll put it in the list But if you know that when you go to get values out of the list, you're going to none coalesce everything You're not going to be worried about that and so you'll happily throw, you know Garbage values into a list and then they get carried around passed around and and show up all over the place And they may get serialized and pickled and and all sorts of stuff because when you come to use it that's when you know you're going to handle it and And basically, you know I had this conversation. I thought about it some more and I'm like I don't want to encourage that kind of coding in python. I don't think that Like I think being able to trust the value that you have been given wherever it came from is kind of a core part of python and we don't defensively double check everything before we use it Because we we have kind of the the code laid out in a way that You know we check it when we first get it and then use it and that gives us nice kind of straight line readable code that doesn't have Conditions and checks and exception handling all over the place apart from a few specific things we know about So I didn't like the idea of If I get this feature in Everyone's going to start Putting nuns in lists everywhere and you know instead of one two three or have one non non non two non non non non three because that Yeah, so I didn't like the the implication of what what coding might turn into with that feature there So 10 years back. I had like a lightning talk at euro python. It was in Florence at that year About how I regret nothing and you cannot judge me with like bad examples of bad things I did with python One of which was Implementing the null pattern, which is kind of non-collessing But like going further so like replacing Dictionaries with null dictionaries that also allow you to like, you know find keys that are not there without raising exceptions And so on and so on So I just like did my lightning talk it had memes in it. So if people laughed, you know, we left Florence And now 10 years later this null package that still is on pipi gets like some scary number of downloads Meaning like somebody is using it So yes, like Hiram's law like every observable Part of like, you know a system is going to be dependent by somebody So we have to be careful about what we add because we can never remove it afterwards If I can if I can add on another recommendation like that as well, don't don't use his package But but there is so there are match statements now, which I believe will handle this properly Where if it has, you know, if one attribute is none and you're trying to match longer than that Then it's just going to say it doesn't match and it won't be an error So match statement is a is a good way to do this. I believe I haven't tested that one But there's also a package out there called glom, which Effectively lets you write the lookup pattern as a string. It's imagine that it's like regular expressions for navigating object hierarchies That's a really neat way to do it because that lets you have You know all the control to say look up this expression, you know And it's attributes and indices and parameterized and and all of that cool stuff But handle it in this way if this bit hasn't worked out So that's a neat way to kind of compress all of you know What might be 30 lines of ifs and and accept key errors and everything to make that night, you know, nicer to use Cool Anthony has a question Um, will we see a jet and see python? Uh And if we will what would it look like and what would the boundaries be? Anthony wrote a jet for i'm not i'm not selling mine. I'm just picking still pigeon. Is that Mark Will there be a jet for python and how will it look like in c python c python? Yes, will there be a jet a jet? Oh Oh So So, uh, if jit is a general magical term for makes it go faster, then we've already got one because it's already faster um If you mean specifically do we have something that translates? Uh, something the bytecode into machine code at runtime Probably 313 maybe 314 How it look like like how how it'll be different from what you're doing with a big pile of c code How will it look how long have we got? Uh, we've got half an hour. Okay right, so So there are two types conventionally of just in time compilers Uh, one is tracing, which is what pi pi does And the other is method of time, which is what the jvm does and a whole bunch of other examples um pigeon And cinder and piston are all method at a time jets Um pi pi is a tracing jet Basically, the difference is tracing and method of time is what region of code you choose to compile as a single unit Uh, pi pi looks for Um loops, although it can handle cases where it can't find one um and tries to Compile basically just the loop and that will inline some function calls within it The method time just compile the whole function um Neither are ideal But the problem with any sort of dynamic optimization is you need to do it quickly and you need to do it only knowing the past You can't know the future obviously So you have to make guesses as to what sort of are good regions to compile um there is Approaches that use smaller regions basic blocks, which are basically just a few bytecodes in a row uh, hhvm, which is a php compiler facebook does that and the Yjit, which is I think a root part of c ruby um done by people at shop if I Does what's called basic block versioning, which is just runs a basic block A basic block is a unit of code without any branches in it um at a time and those are simpler and also sort of promising because uh, they're smaller units of compilation, which means lower pauses and They're much simpler to handle because there's no flow control issues within the units of code So we'll probably start with something like that um Hhvm also then does tries to form larger regions of code once it's the The trace list which is a small or basic block type units of compilation have sort of Got themselves hot You might try and find a larger more region which will probably look something like a method with a few in lines um Method time again, you can inline stuff. There's there's loads of ways doing it. So we'll probably start simplest um Now because pythons is such a dynamic language most of the much of the speed up even for conveying to machine code is actually just removing some of the dynamic stuff and sort of things like what's called guard coalescing, which is If we expect something so suppose you look up the length of a list We have to look up the global variable len and then we Then we check that it is in fact the len function And then we check the type as a list and then we compute the list of it um, we can expect a lot of those things Currently with the optimizer we have in c python 3 11 We'll essentially be doing those checks for each bytecode It's still faster than just not doing the checks at all and having overly general code But we are doing quite a lot of repetition as we optimize bigger regions. We can start removing those checks If you know you're going to have a just-in-time compiler You can generate a sort of intermediate representation Which is a sort of lower level than bytecode perform that analysis and remove those checks and then direct machine code But as part of my phd what we do I did was Do that in the bytecode so you actually you can do those stuff and still interpret the output And that still gives you a speed up. So that's a sort of next step so probably something like that will show up in 312 and then Depending on how well that works we push that further or if that shows the potential for the optimization But doesn't give the speed up and the reason that might happen is that We trade removing one overhead for another Basically because we're lowering the code We have more overhead of just managing in smaller bytecodes and doing more interpretive stuff Even though we have to do less sort of dynamic look up If that works we'll push that further if the speed up sort of is non then that becomes like a we just keep that as a sort of like a hold as a That's our intermediate step for the just-in-time compiler But either way yeah, we would expect a jet in 313 314 How to say but the important thing is being like that the client code the user code stays the same You don't have to change your code, right? Like it's just just as dynamic like from the view of it right like as it was before That was a yes Yes, that was a yes I mean it's important to understand that the cost of the jit is not just writing it is It's a balance right like like the jit normally makes for instance startups low So it means that if if you always have the jit activated or means most jits, right? Like it means that you you have a command line application It's going to be slow like for instance. Bye bye. It's lower to start on c python Pie pie is just slower than c python in if you remove it if you turn off the jit And you see pie pie. It's considerably slower than c python. It's slower start because it's just slower There's no reason why having a jit I mean it bulks out the codes as the interpreter might take fraction of a millisecond longer to To load, but if you don't use it, it shouldn't really affect the code I mean a lot that like java applications are deemed to be slow start because the jvm is huge and does take a long time to load But there's also the issue of just perceived slowness if you're used to it being fast because it's just in time compiler It will seem slower at startup And just to be fair to to pie pie there there slower until the jit kicks in and when the jit kicks in it's Significantly faster It depends of what areas do you care about like you may not care about that your application will be very very fast But you want your command line application to be a snappy Also the wagon is interesting because like when you have the jit and then you start the wagon your application through the wagon Or you just attach like gdb or something like that. You need to either Like return the uncom compiled version Or now you need to make sure that your jit has frame pointers So gdb come back through the through the compile code. So he's not just the jit. It's all the machinery around it I'm making sure that the experience doesn't get worse Yeah, all right If I can add a comment on the jit topic Yeah, there are also like two problems. First of all is that if you start with jit You will basically go infinitely deep with it because well, you can optimize everything until Probably and spend infinite amount of money and time on it. That's basically what chromium did they like spend A really really millions of dollars on like making turbo fun That's their jit. They have like super fast and like make j s efficient and you can even go So much deep that you can even like look at the ranges of the values that are being returned from functions So for example in javascript if you are doing something like string dot index of some character in the string You know, this can return either the index or or a negative value and the jit can like Know that this function always produces Values from minus one to some maximum string length value and it determines Like how this result is then used and like can optimize if conditions So that's that the big issue there that you can basically go infinite deep with it and the second thing is like security Like as you said, you may have also bugs in jit and that's the thing that's happening in chromium for example and firefox and The webkit that safari one as well and if you start with jid you will you may end up with some like very hard to detect issues and Hard to debug as well because well jit that code is not necessarily easy to debug So if so maybe that's my small request if you go with the jit approach Maybe try maybe at least think about going to rest with it because that would probably be At least more secure than using c for it. But yeah Thank you I guess once you generate machine code like it doesn't much matter like whether you generated it with rostor would see But like I see what you're saying and this is for example one reason why apple just kind of just doesn't allow you to use jitter code like on ios Yeah, because like There can be holes in it. We don't know do we have any questions from it? Okay Let's let's have another from here Thanks I was wondering if you could share some ideas of the faster c python project that you Are thinking to explore Oh, so besides jit You have a talk on this right? Yeah. Yeah come to the talk tomorrow. Yeah, great. Yeah. Thank you Thank you. The talk is kind of mostly about what we've already done rather than what we're gonna do But it does cover what we're gonna. Yeah, pretty perfect. I wasn't playing out of the conference already. So that's good then Yeah, yeah If we do still have talks like for for those of us who didn't have one yet like come to our talks Yes, you'll learn stuff like I mine is on ios. Yeah Let's have another question Core developers are also humans Controversial opinion Which aspect of your work with python filled you with joy like what's a good day for you? Let's start from that that end of the table erit Wow, it feels like I need a really good answer for this Okay When I started kind of when I took the role I had at bank of america and I was Looking after a library that about 4 000 people were using it would blow my mind That I'm writing code that 4 000 people are using And Now I work on python and I think when I commit code I sometimes think how many times a day will this line of code run You know it could be like one or two lines in a pull request and I think and that totally blows my mind So it's the impact When I take a step back and think about you know the context of what I'm doing otherwise You know the team is is You know it's an extremely strong team of Software engineers, and it's just fantastic to be working with people like that And there's there's an incredible amount of collaboration and respect and and energy That um, I think we're kind of pushing each other forward Ken there's a lot of like, um, well joy and typing right? Yeah, can you talk talk something about like what you make what makes you take? Okay. Yeah, so um Kind of like how if it mentioned about the impact, um when I first started on typing I thought that this is just something that people use for annotations then one day, um There was a bug in typing that was caused by I think me and Suddenly like I have 15 messages on that pr like complaining about the bug and people from numpy pandas and other libraries Were just like blasting my inbox and I was meant and I realized that Like oh shit typing is actually pretty important and it's used by a lot of people so um Like It's just yeah pretty mind blowing that so many people use the code that I write and the other thing is that um The typing sorry the people behind c python So the core team has actually been quite inviting because I'm actually one of the newest core developers here on this panel I'm not I haven't been a core developer for that long and Most of my experience um has been that people are quite welcoming to me Um on my journey to become a core dev Anything to add anybody else? I I I have a story. Uh, yeah go ahead with your story. I didn't I didn't know if everyone had a high point or did you just know that like He doesn't like doing it. Is that You don't want public to tell us this high point. No, I just opened up like, you know Anybody that wants to share story can't So so yeah, uh great question As everybody said, you know that the impact is just amazing because you know the code you wrote is like used by hundreds of thousands of people Uh, I I felt this when I was like, you know doing some minor Argument parsing improvement on print function, you know, like the print is like the core of the language And like I was touching that but it felt amazing But what what what what I really enjoy is seeing people like Seeing seeing People like the features that we put so much effort in like the new error messages that Pablo and I and others are doing You know people are sharing it. They're saying oh, this saved us hours and hours of debugging. Okay, that's like that that that's really Uh, that really makes me happy Yeah, if you'd asked me 10 years ago to describe my dream job, I think it would be basically what I'm doing now So that's pretty good Um, but yeah, the impact is just amazing. Yeah, that's the feel that and people, you know, there's You still hear, you know, why do you read stuff? You know, why do you talk about, you know, what we're doing? It's just yeah, that make that feels really good I think I'm going to with cheesy answer and say that actually I I my favorite part is the interaction with people like, you know, I have made very good friends on the core team Like we are going to Spain next week Like it's quite ridiculous. You think about it because you normally think that uh, you know I'm going to do this thing because the impact and whatnot and just start like that. But but it turns out that Um, many of my best friends are now in the core team, which is I think that's awesome. And that's what gives me Into into it Yeah, so a few years back at euro python. Um, I was sat, you know sat down chatting with a guy And he you know, he kind of asked, you know, what's what's your what sort of things you work on? I told him, yeah, I've been you know, helping maintain python on windows and redoing the install and he's like, oh that was you like Okay, okay. Am I about to get in trouble? Yeah, it's 50 50, right? It's like half the time I get in trouble He's like, okay, listen, I I do a lot of teaching and I do a lot of teaching around the world and Particularly in Africa. It's like that's a really important It's a really important thing to to to this guy and it's like I do a lot of teaching in Africa And a lot of the students there the high school students don't have computers They don't they don't have access to computers. The schools don't have them And and so he's trying to teach them python and they're showing up with whatever they can get their hands on and he's got 12 13 year old kids showing up with their their mom's 12 or 13 year old laptop It's got an external ps2 keyboard plugged in plugged into the side because the the keyboard in the laptop doesn't work anymore and and he said This last time I went out was the first time So many of them could install python on these windows machines because typically they're locked down. They're restricted for For from, you know, the parents work. Whatever they're doing. They don't have admin privileges There's just limits on what they can do. There's things that didn't work that's not all like simple five letter ascii usernames and and he said The work that's gone into the installer has made it so these kids can actually use python for the first time. It's just like that Was completely unplanned But but amazing so Yeah, those are some good stories Rodrigo has a question Lucas knows my name Okay, no, sorry Yeah, um, yeah, so the Non non core developers are also humans And we are much less experienced. So if we want to make our first contribution, how do we Make it less likely to take too much of your time and more likely to be accepted I think I can take this because I I review a lot of PRs these days as my job so Just fix something that is broken in the code that you're using so I give you're like Have an idea to just proactively start contributing and it's a very generic idea But you don't know where to start like start with something that you're already heavily using and there's something wrong with it Like there's much More likelihood of you understanding the context behind, you know, some api then There's a lot of changes where people want to want to change something just because they don't really understand How the api is constructed so that that takes a lot of time because we also don't want don't want them to just Go away without their change being approved. We want them to know why So that takes a lot of time We do appreciate even simple changes like, you know to the docs and whatever like, you know, kind of you find the type of Yeah, we'll accept it But there's a lot of changes like these and they're like relatively kind of low impact Like if you read some docs and you know, one word has flipped, you know vowels and it, you know, doesn't really matter that much Um, so unless it's a part of a bigger change like we tend to kind of avoid those fixes ourselves Which is why we don't fix every Every type of ourself. So yeah, like what I would do is just start at a place where you're already a user of it So I don't know like if you're working a lot with any files And you know, you just don't like how config parser does something like Just go ahead and you know fix something about that. Like this is how I stored it Um, like same with async.io or whatever else like, you know, some part of python that you're already using Yeah, and and then just, you know, now it's easy. There is issues on github prs are on github So just follow what everybody else is doing around you in the project and you'll be fine And it's also a terrible suggestion I hate making it because it's a really mean thing to say to someone But look up what other work and discussion has gone into the idea before Most things have been discussed and it's a horrible thing because it's really hard to find And as a new contributor, you've got very little chance of actually being able to find it But if you're able to do that if you're able to kind of look through mailing list archives and mail.python.org You can find links to the posts anything that's on github. We copied all of the old bug site onto github. So it's all there Uh anything you can find because we do have people will come in and say I want to make this change And it will take Someone who's been around for 10 plus years to remember. Oh, we discussed that before And decided against it for some reason but we like that kind of research But it is incredibly hard to do so the the more of that that you can know that you've done the better but You know, I don't don't spend too much time on it eventually Eventually I couldn't find it. Here's here's the idea anyway Yeah, I wanted to add this that Whether you're joining the c python team or a new team at work You really want to spend some time and think what do they need? What is it that they need don't come with an assumption that you know What people need because it seems like a lot of people assume that what we need is more pull requests And actually what we really need is help reviewing pull requests. So You know like Once you realize that The first thing to do is to spend maybe a couple weeks just reviewing pull requests And through that high quality code reviews are a very quick way to get the right kind of attention in an open source project It's very quick It's quicker than producing Good pull requests because then you're waiting for somebody else to do a high quality pull code review So If you could kind of review other people's prs Kind of Give the cord of a bit of information like what what what did the person do? What's good about what's bad about it kind of Help the process along you will learn about it because then you will see which ones Eventually get merged, which ones don't what kind of other feedback people get so I would suggest to start contributing though This is a good suggestion. I also like if you do create a pull request and it doesn't get reviewed like often it's like either Nobody just looked at it among the other 50 that appeared that week Or uh, it's actually not that obvious what we should be doing So there's you know some thinking that people are doing maybe they should just respond on a pull request They don't do uh do that every time But you know kind of don't take it personally when your your stuff is not expected it like, you know, like everybody Uh on the team also knows is that you know that there's A small number of us and a lot of amount of change So, you know, not everything can happen quickly, but you also don't want that you don't want python to change Like too quickly Uh one thing I would add to the You know, please review pull request. Yes, please do that But those reviews appear on github as those like gray ticks Uh, so if you do that, please review So please write us what you did and what you found right like if you just click I reviewed it and I approve it and it you know appears as a gray Tick it's not really actionable to anybody like, you know, if you're a new contributor Like we we don't know like what you did like whether you just stamped it without looking or you spent two days on it So if you're reviewing like just put it on the pull request, it's free like, you know What did you do? What did you try? What did you find out? Yeah, we're we're down to five minutes, but like we have uh another what three questions. So If we if you're focused we we should be able to go through all of those um, maybe this is going to be a bad one for five minutes, but um Not non-technical questions. So my superficial understanding is being a core developer means you're working on c python You have like push religious and whatnot, but I feel like the Python kind of experience or the community is way more than just c python Like there's all these very important things like pip ipi. I don't know maybe sphinx like all these other things um, and I'm curious if You guys have discussed those projects as much as You as much as I don't know you guys promote yourself or whoever else whoever is promoting you So like you guys get lots of face time and panels like this, but I've never seen or know about the pip Developers for example or pipi um Okay, this is a great idea like so what I can tell you is uh, like we also didn't kind of promote ourselves with this panel What happened is uh, just the organizers of your python connecting me specifically saying like hey like do you have an idea? Like who could be in a panel and then it turned out that by asking me They just kind of implicitly asked me to to also be on the stage for this like to ask questions Uh, so yeah, like maybe it's a question for like kind of community organizers for event organizers to also reach out to pipi a so like the packaging authority Kind of maintainers there's a quite a bunch of them and whatnot. So absolutely we we we are Super inclusive like we like to just say like this is this community is huge right you have scientists that you know like Uh put telescopes uh in space and then use python for them like there's people in the medical community There's teachers and whatnot what what we're happy to like have all of them same with like jango pipi a and whatnot I don't I don't think we should be really responsible for like whether they get like Same amount of I don't know screen time like as we do like Yeah, okay, yes Okay, so there is an education panel. I'm hearing and there is uh A diversity one as well, uh, which is also something that apparently you can see it for yourself Like we're not awesome at but we're trying we're trying to like improve the situation Um, so yeah, it's a process. Okay So I was wondering how much freedom do you have in your core development work and how much influence Does your company work for puts into you in terms of like your focus? Oh That needs to be answered by somebody who works a bit controversial. Yes, steve. Let's go um, I I get a pretty serious amount of freedom really um, and that I think has has largely come down to kind of microsoft recognizing that we You know, we we have a platform to care about we have a cloud to care about and that's a place for developers to come and do their best work And and and you know, certainly things have changed since I started doing this because when I started doing this It was you're from our point of view windows windows windows And so anything that I touched that made the windows experience for python developer better meant that Our platform was more attractive But but at this point because You know because microsoft now cares cross platform. It's like anything that makes see python better Makes that developer experience better And and we're certainly not in any kind of position to like Keep that like keep that private like we couldn't possibly do it. It just fundamentally wouldn't work And so so it you know, they have very little influence Occasionally I get some opportunities because I'm at microsoft to do things for example If you look at the windows store right now one of the kind of highlighted front page apps on the store is python And that was an opportunity that came up because they could find me And and say oh you're internal you work here We can figure out how to promote this app and and and you know just have this big Python logo in the app store for everyone on windows who looks at the app store right now And so I get some opportunities like that I can track down the windows developers and say hey, I found a bug that affects python Can you fix it, please? Which is a great, you know great that I that I love doing But but they don't really Like no one has ever really said we you know we need this change added into python in a way that That that I wasn't able to kind of push back and argue until it turned into a benefit for everyone Okay, thanks How about bloomberg? right The finance boring world. I I'm quite lucky. I've been working at bloomer for five years and this past year I used to have 20% of my time to see python The way we arrived to that arrangement is because like it was quite clear that the work that I was doing Like was also benefiting developers inside the company, right? And although we have never I have never received a Prioritized bug that I needed to fix it was like many of the things that I was doing on my own We're already being like praise inside the company. So they say, okay It makes sense to you know, like put more effort and this year Actually, I've been even more lucky because they like I'm working 50% of my time with the fastest python project Part time with microsoft, which sounds very weird to say Like bloomers is still paying my whole salary, but I don't know it's quite a wild war To so yeah, I'm quite quite happy that you know But it's all about trust and also there is some issues that people don't think about when you have this kind of arrangement Because like if you also want like, oh, I want a nice evil, right? But like now you have 50% of your time that is opaque to your managers So because like, okay. Yeah, you're having fun there But like what are you doing? How is that really useful or more useful than if you do this other thing? So you need to have a very good relationship not only with your company So the higher ups allow it, but also you need that way to Not sacrifice your career just because you're doing this So you need to communicate and like make them understand and like be transparent So it's a lot of trust involved and that is normally gained through the years Yeah, I could say exactly the same as Or what Pablo said I used to work for facebook So like on day one when you're being hired by facebook They say like hey, don't don't get into bar fights Like at least don't get into them anymore because now you're not like who got into a bar fight You're a facebook employee got into a bar fight So if anything the kind of the pressure that you get from working at a big corporation is that like You are now representing like a big corp that you know might get sued or whatever So you actually have to have more discipline that you would otherwise have like otherwise There was never any pressure to do anything because it's all open source. Everybody else could see it if it happened Right. Uh, we reached Our time pretty quickly. In fact, like I found it very interesting. Thanks all for coming. I hope it was useful It was fun. Uh, and now there's coffee break so you can wake up Yeah, come to our talks