Python the Bad Parts
This is a modal window.
The media could not be loaded, either because the server or network failed or because the format is not supported.
Formal Metadata
Title |
| |
Title of Series | ||
Number of Parts | 115 | |
Author | ||
Contributors | ||
License | CC Attribution - NonCommercial - ShareAlike 4.0 International: You are free to use, adapt and copy, distribute and transmit the work or content in adapted or unchanged form for any legal and non-commercial purpose as long as the work is attributed to the author in the manner specified by the author or licensor and the work or content is shared also in adapted form only under the conditions of this | |
Identifiers | 10.5446/58781 (DOI) | |
Publisher | ||
Release Date | ||
Language |
Content Metadata
Subject Area | |
Genre |
00:00
AuthorizationSoftware developerMereologyCore dumpData miningMultiplication signFormal languageSoftware bugDependent and independent variablesBitTerm (mathematics)TwitterParallel portQuicksortUniverse (mathematics)EmailPlanningPeer-to-peerSlide ruleDifferent (Kate Ryan album)FrictionLevel (video gaming)CollaborationismView (database)Projective planeOpen sourceProgramming languageMaizeSpeicherbereinigungElectronic mailing listSelf-organizationPiMachine learningGroup actionImplementationQuadrilateralPoint (geometry)Observational studyFamilyVideo gameDivisorProcess (computing)Extension (kinesiology)Canonical ensembleSocial classMathematicsCovering spaceDecision theoryExecution unitStudent's t-testProof theoryLibrary (computing)Set (mathematics)Module (mathematics)Subject indexingStandard deviationCurveCycle (graph theory)Software maintenanceProgrammer (hardware)Virtual machineHybrid computerProgramming paradigmWeb 2.0Expert systemCASE <Informatik>Computer hardwareRevision controlAreaPrototypeStreaming mediaThread (computing)Block (periodic table)PredictabilityCountingConfidence intervalProduct (business)Commitment schemeStaff (military)Computer programmingInterpreter (computing)Limit (category theory)Chemical equationMedical imagingCodeTouchscreenGoodness of fitExterior algebraPhysical systemECosParameter (computer programming)Fluid staticsReflection (mathematics)SoftwareKey (cryptography)Mathematical analysisMeeting/Interview
00:56
MereologySlide ruleMultiplication signBitMereologyMeeting/InterviewComputer animation
01:45
CollaborationismComputer animation
02:24
Core dumpSoftware developerDirectory serviceSpeicherbereinigungFormal languageSocial classCovering spaceStudent's t-testSoftware developerCore dumpTerm (mathematics)VotingGroup actionBitRight angleMultiplication signPlanningSelf-organizationExterior algebraImplementationPerturbation theoryComputer animation
07:39
SoftwareFormal languageComputer programmingProcess (computing)Formal languageFamilyComputer animation
08:24
Formal languageCore dumpVideo gameSoftware developerExpert systemComputer animation
09:49
TensorDataflowFormal languageExterior algebraLibrary (computing)Machine learningImplementationTerm (mathematics)Computer animation
11:18
Vector potentialFormal languageVector potentialDifferent (Kate Ryan album)Multiplication signCore dumpView (database)Goodness of fitReflection (mathematics)Software developerDecision theoryParameter (computer programming)MathematicsComputer animation
14:11
MKS system of unitsCodeCodeFormal languageVideo gameWeb 2.0Software developerAuthorizationLibrary (computing)Machine learningSet (mathematics)Programming languagePrototypeKey (cryptography)Mathematical analysisMultiplication signTerm (mathematics)Computer animation
16:38
Core dumpFormal languageMultiplication signThread (computing)ImplementationTerm (mathematics)TwitterExterior algebraCycle (graph theory)QuicksortParallel portRevision controlDifferent (Kate Ryan album)Computer hardwareSpeicherbereinigungLibrary (computing)Right angleElectronic mailing listAreaView (database)Module (mathematics)Standard deviationEmailProgramming paradigmGoodness of fitInterpreter (computing)Hybrid computerCountingDependent and independent variablesSoftware developerOpen setComputer animation
24:59
Dependent and independent variablesQuicksortSoftware developerSoftware bugLatent heatTerm (mathematics)Core dumpFormal languageMultiplication signProjective planeImplementationDecision theoryModule (mathematics)Extension (kinesiology)Peer-to-peerRight angleSpeicherbereinigungPoint (geometry)DivisorLevel (video gaming)Computer animation
33:20
SimulationIdeal (ethics)Core dumpOpen sourceFormal languageSpeicherbereinigungSoftware developerMereologyCommitment schemeLibrary (computing)Term (mathematics)Self-organizationComputer programmingDecision theoryPlanningStaff (military)Chemical equationEmailCore dumpMultiplication signConfidence intervalProjective planeModule (mathematics)Extension (kinesiology)Point (geometry)Computer animation
41:41
AutomationFormal languageSpeicherbereinigungModule (mathematics)QuicksortLibrary (computing)Core dumpDifferent (Kate Ryan album)CountingHybrid computerSoftware maintenanceTouchscreenOnline chatCurveStandard deviationStreamlines, streaklines, and pathlinesExpert systemPredictabilityCycle (graph theory)Point (geometry)Lecture/ConferenceMeeting/Interview
46:12
Multiplication signGoodness of fitMeeting/Interview
Transcript: English(auto-generated)
00:06
All right, folks, we are at the last keynote of EuroPython 2021 and it's with great pleasure and an honor to introduce Joanna. Joanna is a very well-known member of our community.
00:27
She was originally born in Uganda, Africa, and she now, I believe, lives in Canada. She is a Python Core developer. She is a publish author and a director of the Python Software Foundation.
00:49
She is going to tell us about Python, the bad parts. So I would really like to welcome Joanna here.
01:01
Thank you so much, Joanna, for taking the time to prepare your talk and to be here with us. And I leave you the stage. I'll add your slides. This is a 45-minute talk and we are all very excited about it and wish you the best of luck in delivering it.
01:25
Take it away, Joanna. All right. Thank you. Thank you, everyone. As they've already told you, my name is Joanna and today I'm going to give a talk about Python, titled Python, the bad parts.
01:45
I'll start with a bit of stuff that has already been said because I'd already planned for it. So I'm originally from Africa in a country called Uganda and in a city called Kampala. So I had to put Africa because most people think Africa is a country. Africa is not a country.
02:04
Uganda is a country. And I left Uganda two years ago to come to New Brunswick in Canada where I'm currently staying and do my Ph.D. in collaboration with IBM and the University of New Brunswick.
02:25
In terms of other things, I'm a Python Core developer. I've been for around 1.9 years, 1.9, one more month until I become two years as the C Python Core developer. I'm director of the PSF and I will be talking a little bit about my work and my plans for the Python community.
02:50
But I would love to first take the time to thank everyone that entrusted me with their vote to be a director of the PSF. I do not take it lightly, so I really appreciate the trust you put in me to be a director for this year.
03:08
And I'm excited for all the many things that we are going to do during my term as a PSF director. In my other life, I hinted that I'm doing a Ph.D., so my research is on garbage collection in Python.
03:26
And I look at both the garbage collection in general for the reference implementation that is C Python, but also alternate implementations like PyPy. I am funded by IBM and the Center for Advanced Studies at the University of New Brunswick.
03:46
I authored Python 2 and 3 compatibility some years ago, probably when the subject was very hot. I don't know if the subject is still hot right now, but you can check out the book if you want.
04:04
I'd love to first start by saying I'm really honored to be here, and I would love to thank the organizers of EuroPython. This is my first time to attend a Europe best Python conference, or even speak at one for that matter.
04:23
I've spoken at a Ruby conference that's called Euroco like so many years ago, but I'd never spoken at any conference in Europe. I'm a Python person, so I'm really honored to be a speaker or on the speaker lineup for this year, and I don't take it for granted.
04:47
So let's start with why are we actually here? Why do we attend conferences? Specifically, why do we come for PyCon? I started to attend PyCon in 2016, and my first PyCon was in South Africa.
05:06
It's called PyCon South Africa, and it was held in Cape Town. That was my first encounter at a PyCon, and I didn't know why I was going for a PyCon anyway.
05:23
So anyway, I reached there, and I talked to so many people, and I asked them, why do you come for PyCon? Why do you come for PyCon? Why do you even attend conferences in the first place? And a group of people that were there, of course, they were Python users.
05:41
It was a whole Python community. They're not united by the fact that they use Python. They're also friends in general, and so my conclusion after my very first PyCon in Cape Town in South Africa was that I think we all come to PyCon or we attend PyCons to celebrate the awesomeness of Python.
06:07
Python as a language in different ways. Sometimes we come as a trip. It could be a vacation, but if we end up in a Python convention in a PyCon hall,
06:20
we are usually there to celebrate how awesome Python is and the great things Python as a language has or as a community or as an ecosystem has accorded us the different things we are able to do with the language. So we celebrate Python's awesomeness first as a language.
06:42
I started to use Python in 2013, and actually 2010, when I was an undergrad student. And then I had different reasons for using Python, but the first reason was initially I was just forced to use the language.
07:02
It was taught in class, so I was given assignments in Python. It was not fun then because the whole class failed. The professor taught it very hard, so the whole class failed the assignments. However, after failing two assignments in the class, towards our final exam,
07:20
I read the whole Python book from cover to cover, and then I was able to pass the final exam. That's a story of another day, but I just fell in love with the syntax, the simplicity of the language, and I do not share this belief or notion alone. So many people have talked about how Python is awesome as a language, how it's used everywhere,
07:47
how it's beginner-friendly. I think I initially identified with the second reason. The first reason, as I became an expert, I started to appreciate why people say that. But also the community and then Python as a language has helped us personally.
08:05
I can speak for myself, but also many people in the audience, it has helped you find a job just because you know your skill and you're able to pay your bills in your family because you know Python or because you're using Python as a tool for your career or for your employment.
08:25
Python as a community is also awesome, as many people have said. And most popularly Brett Carnot said he came to learn Python the language or he was interested in Python the language, but he ended up staying because of the community.
08:43
And so many of us can attest to that. Personally, I also started getting very... I started as a user. I wasn't very interested. And I started getting so much into the language because I had some sort of research.
09:03
However, I stayed because people in the community were interested in what I could... in my contribution to the community, but also the language as a whole. Personally, I was mentored by Victor Steiner to be a Python core developer. And he helped... his mentorship did not only help me to be an expert as a Python core developer,
09:26
but it also helped me to be in my professional life in general. And they have made so many friends, not just on a technical level, but in general, just genuine friends in the community. So the Python community, aside from the language or the technicalities of the things we talk about,
09:46
the Python community is awesome as well. Python as an ecosystem is also awesome and I and probably you can attest to it because we are able to use Python the language mostly because of its ecosystem.
10:03
Its ecosystem in terms of the different libraries. Python is a very popular language right now with so many libraries, literally simplifying our work in industry or academia or anything we're doing. A vast majority of Python libraries in scientific programming,
10:25
a vast majority of things like alternate implementations like PyPy, PyStorm and so many other things. Libraries for the most famous or the niche or cutting edge technologies like machine learning and deep learning.
10:44
So the Python ecosystem has empowered us, its users, with great tools that are simplifying our lives in our work and in our projects and in our businesses.
11:01
And so, again, at PyCon and in our daily lives as Python users, we also celebrate the ecosystem because of how awesome it is and how rich it is and how big it is and how useful, for example, it is. However, today, I would love, I want us to take a step back
11:26
or I want us to talk about a different view of Python. I've talked about its awesomeness and how it's been a great language and we cannot say there is no argument about that.
11:41
Python is already good even as it is now. It's a good language but I want to talk about some of the things we could improve as most especially as a language but also as a community in general. So my original title was Python, the bad parts, and then I thought about it.
12:01
Well, I had already submitted the title, so I wouldn't change it. But then I was making my talk. I said maybe this title is actually going to trigger some people, mostly maybe Python core developers because my talk is mostly about the language itself. So I said, okay, I'm going to probably change it a little bit.
12:25
So instead of us looking at my talk or whatever I'm going to talk about and really criticizing Python or airing a Python 30 long dream, maybe we could change this title and start to look at it like instead a reflection on Python's potential.
12:50
Python is already doing interesting stuff, but today I want you to join me in us reflecting on what Python can be in this time and age.
13:04
Python is about 30 years old and I'm sure probably Guido van Rossum probably started working on Python before I was born. So again, I may not be the right person to be criticizing it. And I'm sure Guido van Rossum had the best ideas for the language
13:25
because as time went on, we were using it because he made very many good decisions then. However, 30 years have gone since then. And right now, I think it's also a good time to start talking about what Python can be
13:42
and what new things or what path Python could be taking right now. It's not necessarily the criticism. I think it's good love because I'm an avid Python user and I believe all of you are. So the intention of this talk is not to talk down on the people that put a lot of effort in the language.
14:03
It's to have just a quick reflection of what could it be? What more could Python the language be? I'll start by a brief discussion on what successful languages are. The best of a paper that was written a couple of years ago by these two authors, Leo and Elio,
14:23
they did an empirical analysis of programming languages and they gave us some insight. And they said successful programming languages are not successful because of new features or the complex features that are always released every day.
14:41
Surprise! Instead, there are three key ideas or things that make a language successful. One is accessible libraries. And Python is a successful language. It's a popular language because it also has accessible libraries.
15:00
PyPI, the Python index, the Python cheese shop, where all our libraries are, is a very rich set and collection of Python libraries that developers of Python have always used and continue using. Languages are successful because there is proof of usage.
15:21
According to the authors of this paper, there is no denying that Python is successful. Again, it meets this goal because there is Python code running everywhere. There is Python code now running on Mars. NASA is using Python code. There is Python code in machine learning. Python code is being used in all walks of life for web and scientific programming, things of all kinds.
15:46
So there is proof of usage. So, again, by this definition, Python is already a very successful language. Also, there is experience.
16:01
Sorry. Sorry for that. So successful languages are also successful because of the experience they give to their programmers. Again, Python has been hailed for its simplicity in terms of syntax
16:20
because it's allowed beginners to easily experiment but also rapidly prototype ideas and bring up solutions in a very short amount of time. So by this definition, Python is popular and very successful, so we cannot argue with that.
16:41
However, the success we've attained or the success that Python has can only be sustained by relevance. So like I said, the problems we're solving 30 years ago are probably not the same problems we are solving now.
17:02
So as a language and basically maybe as a core team of the Python language or as its users because Python is open source, so everyone has a responsibility to probably make it better. We need to be looking at how relevant the language remains as time goes by
17:22
and as things change, as different hardware changes, as technology changes, as our needs evolve, the success of Python is only going to be sustained by how it grows to be relevant with the times.
17:42
Forty years from now, we should not probably be having the same version of Python, and I have hope that we are always evolving. But today I want to talk about a few challenges that Python is facing, and I want to talk about all of them because if I wrote out a thread on Twitter and asked people,
18:11
why do you hate Python? There will probably be a million reasons why people hate Python. Also today I will just talk about five things that I find where Python could be improving
18:22
and informed by my own understanding and some discussions that have been on different mailing lists. I don't promise to give an idea of every problem, and I don't think these are the only priority problems right now. Also I have to preface is that it's in my view. I'll have to start with performance.
18:43
Now Python is not C, so we are not expecting C-level performance in Python. However, being a dynamic language and an interpreter, it has also its limitations, but I believe there is still room to improve the performance of Python.
19:06
Python is in a paradigm that it shares a paradigm with other languages, and I believe we can borrow from a lot of research that has been written specific to dynamic languages and find a way of improving the performance that Python is able to give its users right now.
19:30
There is work in the community, and I would like to shout out to the core developers that work at Microsoft. They've been spearheading a lot of efforts in ensuring that we have a faster Python interpreter,
19:48
especially C Python, the reference implementation. And because of some of the challenges, we also saw some alternate implementations have been motivated by,
20:01
I mean, the not so good performance of Python to come up with things like JITing, for example, with other concepts like JITing and better, probably, garbage collection. They've been motivated by this same aspect of performance. So if we are to be relevant as a language and spearhead or be more with the times,
20:30
we have to be, I think right now is a very important time to be looking at where the Python interpreter could be improved.
20:40
Again, I know there is, of course, a lot of work happening, even on the reference implementation and alternate implementations. I think this is priority. I think there should be some sort of priority given to performance right now. I mean, we could be better. I'm not saying we can be like C.
21:02
We could be better so that we do not lose some of our users, obviously. Again, Python was not built to be a language for everything, but we can do something about it. The other challenge that has been talked about has been the standard library. So my first language summit was in 2019 when I came to PyCon US,
21:26
and one of the heated discussions we're having was the standard library. And so very many talks and discussions happen around the standard library on very many mailing lists. And usually, most people are talking about, okay, we have to trim the standard library and make sure we just remain with what we need.
21:50
But I think, yes, I think that's valid. I mean, there is an aspect that we're still having very old things in the standard library and things that are not useful right now.
22:03
However, most of the problem in the standard library is because we are not, what should I say, improving or maintaining the batteries we have in there. I mean, we can trim it as much as we want. But I think we need to, even whatever we remain with in the standard library, we
22:23
need to find a way of making sure we improve the modules that we still keep there because we are not solving any problems. So what happens? Again, 10 years from now, we still just keep trimming off things from the standard library all the time. I think we should just have a pathway towards instead improving some of those, the libraries we feel are important.
22:47
I'm not against trimming it further, but I think we should also make sure we handle the underlying problem, which is they are maintained in some sort of way.
23:02
The other aspect is garbage collection. Now, garbage collection as a topic or as a paradigm has lasted for 60 years now. And it has aged, it's as old as six years right now, 60 years.
23:20
Python is about 30 years. However, and without downgrading anybody, and I know most people know about the challenge, I think we should be looking at moving probably to tracing garbage collection and generational garbage collection because the industry has moved. A lot of research has shown, so Python is based on reference counting.
23:42
We could call it a hybrid because reference counting does not collect cycles. So there is a sort of a tracing-like GC that handles cycles. So GC researchers showed us that tracing garbage collection does well in terms of performance, and we can improve it.
24:05
We can further even optimize it with parallelism and so many other things. So if we are to be relevant and go with the time, I think we should be looking at improving some garbage collection for C Python, the reference implementation at some point.
24:24
And then this is something that has been discussed for long. It's posed so many, there are so many questions to answer in terms of supporting this. But I think this is a good time to start thinking about garbage collection. Because again, if we are to be relevant, I mean, maybe we should be thinking about moving to tracing garbage collection.
24:47
Maybe generational, because as it stands, it looks like we are almost 20 years behind the landscape or behind innovation or behind research. And I accept the challenges we are still facing, but I still think we can do more in this area.
25:09
The other interesting aspects that I also touch on in my research, but also in general, has been the C API.
25:21
So we've hailed alternative implementations that have come up. First of all, they've been motivated by performance of the reference implementation. However, they've all been blocked by the aspect that they cannot efficiently support the Python extension modules. So the C API was built to be very simple.
25:42
And if we looked at the if we look at the implementation of the C API, you compare it to the design at the time that Python was built, they made some good decisions at the time. But now, I don't think some of the design decisions in the C API, as we've seen, it's evolved to be unmaintainable,
26:08
but alternative implementations cannot efficiently support it. I think it's only PyPI that has tried to maybe successfully support the C API. But the way they support it has also come with some performance degradation.
26:30
And if you go to the PyPI documentation, you can read about all the challenges they're facing by virtue of how the C API was designed. And could talky things come into mind, it's just that it exposes too many things.
26:44
But it also tied so many things like VM implementation details, like garbage collection exposing. So it's been a blocker to so many alternative implementations to successfully support it.
27:04
I've been reading a couple of papers. And from the time I think blue hours was implemented, they've been using the Python C API as an example of how not to implement a C API. So many people have learned from us in terms of how not to implement a C API, according to those papers, which is unfortunate.
27:26
And I'm not criticizing anybody. But I think this is something we can also I think right now, start looking at it and try to see if we can find a solution. So that's those are my key things about the language in general.
27:44
But I would also love to talk about maybe one thing about the Python ecosystem that some people have probably been grumbling about. And it's core development in general.
28:01
And when I talk about core development, I'm talking about how the language is managed to maintain in general, in terms of receiving bugs, how bugs are triaged, how development is managed, the response to pull requests, and generally the response to
28:25
contributions, first of all by the core team, but also from contributors in general. So when you look at core mentorship, recently, so many core developers have tried to, because the core team, it's not as big.
28:43
But also the active core developers are not as many. So it's too much work for very few people. And I know that there is a lot of effort by core developers like Victor Steiner, even Gudu Van Rossum and other people that have been mentoring very many new members to join the core team.
29:05
But there is still friction around. Right now we're having like 1400 pull requests that are still open on the C Python project. And most of them are actually never reviewed.
29:22
And this is an open problem. It still remains to be open. And I don't know how we will effectively solve it. However, right now, I think it's, it's very, in my view, from my two years of joining core
29:41
development, I'm seeing like, so many people are grumbling about the whole how core development is, is managed the idea that people are willing to submit peers and people are not there to, to, to review them. And I'm not even blaming the core team because I mean, no one is paid besides people have families and stuff.
30:03
And they do other things after work. And besides the core team is very small, so I'm not even blaming anybody. And then there are other factors. Even if you had time as a core developer, you cannot review every pull request because we also every core developer, we have varying, we have varying levels of expertise.
30:26
So it's unrealistic to expect one person to be reviewing everything. I think my point here is that it's a very difficult topic. And, but we need to be looking at it, because so many people are grumbling and talking about it.
30:43
So I think it's high time we started to talk about it because it's it will affect how people look at the language because if they think they're submitting bugs and no one even triages it or even looks at it or responds to it after 10 years, then it starts to be a problem.
31:01
Probably people will look for other better places to be, which is not a problem to any specific individual. But I guess it's something we need to talk about. So what is the way forward? I don't think I have any I don't think I have solutions to all these problems. And I've just talked about just a few of them.
31:24
And I don't promise that any I don't even know if anybody has a single solution for for all those challenges. But I think the solution or the way forward is, is in some way among us.
31:41
In some way, the solution to all the problems the Python as a language or ecosystem is facing in some way, the solutions live in its community. We just need to uncover them in some sort of way. I don't know. EuroPython, I think, is having about 1000 attendees. PyCon US usually has so many thousands of attendees as well.
32:04
And I think as a collective unit, we have a solution. The solutions are somewhere in us. We just need to find a way of tapping into them, organizing ourselves towards having some sort of solutions. And if we think more about some of the problems we're having, we could find a way for them.
32:25
I just have a few tips that I'm going to talk about today. The challenges Python is facing as a language are not unique. Some new languages, like I told you, especially Lua, because I've read so many papers that have been written, especially by the Lua core team.
32:44
When they started to build Lua, they first of all looked at Python and tried to avoid its problems. But also, we can learn something from them, especially in how they evolved and changed specific aspects of especially Lua.
33:06
And I'm trying to say Python's problems are not very unique. For example, I've been following the story about Lua's CAPI, and they've made drastic changes, even changes that we are fearing to make. Some of them that we are fearing to make right now as Python.
33:24
But we could learn something from them, especially on how they evolved the CAPI. They made so many radical decisions in how Lua's CAPI changed. Maybe we could learn from them. And again, I take my advice with not so much thought, because again, we need to look at other things.
33:44
There are some things we cannot totally compare, but I'm saying we can learn from some of these new languages, languages like V8 and Rust. The way C8, the V8 garbage collection especially works for both the normal JavaScript, but also C extensions for garbage collection.
34:06
They use handles, I think something that HPI does. Again, there are things we could borrow from some of these new languages. They've written a couple of papers where they're actually using Python as an example. They're using Python's problems so that they don't design languages that look like that have the same challenges as Python.
34:27
So the first place we can look at these languages and we see what we can do borrowing from some of the ideas. Now, I talked about the CAPI, how it's problematic and problems like garbage collection and maybe other performance related problems.
34:48
It's not going to be easy to change the CAPI or to change to tracing garbage collection. And those ideas are very radical. But what we can do is if we can have researchers like me and other people, if you're probably doing your PhD or considering to do your PhD.
35:03
And you could decide to work on some of these problems. Because I think what we need is people simulating some of these radical ideas that are probably the core team is still afraid to try.
35:20
And then from the insight that these researchers are simulating, we can find a way to see if some of these ideas will actually flow well with the language. That's one thing we could try, because, for example, for compatibility reasons, there is a big fear of totally changing the CAPI, even if we have the solutions.
35:41
But if we have people simulating and creating insight, then probably we'll have some confidence in the core team trying to gradually borrow some of these ideas. And some that can be merged into the core, into the project as they are.
36:02
I mean, it wouldn't be bad if they don't pose serious compatibility or serious problems. I think the idea is that we need to create insight if your researcher probably should look at simulating some of these radical ideas. And I have already talked about my whole issue about the standard library is that just trimming stuff is not going to improve
36:25
unless we have a pathway to saying that even the staff will keep in the standard library if we commit that we shall improve. We have a commitment to improving. Otherwise, we are not solving the problem.
36:40
Will we delete or trim the standard library until we only have if, else, for only? I mean, it won't make sense at some point. I think as we trim, let's find a pathway towards it. And I think the question is, if you're trimming stuff and telling people to go to
37:01
the, to go to PyPI, let's have a clear path of where these deleted modules are going. I think that's going to put some confidence in people. Otherwise, if we just delete stuff and we don't have a good way of where to place those things that are going to live for users.
37:24
That's my thing. Again, there's so many efforts around. So when we talk about these problems, very many people engineering solutions. However, I think this is a time to take caution because over engineering is not, over engineering does not always come with performance or solver benefits.
37:45
Let's prioritize guided engineering. And so I think I've read, I've read stories elsewhere in another language, in a language I won't, I won't mention right now. So they over engineered something and, and, and removed it later.
38:03
So over engineering is not helping. I mean, I think the engineering should guide it, should be guided by the problems we are currently facing, at least priority wise. So if it's, if something is a performance related fix, let's, I mean, let's wait and see if it's really giving us the benefits with claiming it has.
38:29
And if it's not, however, even if it's running on top of cutting edge technology, I think we shouldn't be merging. So let's have a balance between not engineering for the sake of engineering.
38:41
I think that applies to the core team. And Python has done a lot of work in, right now, we have a developer in residence that just works on C Python. So that has been a good step. But I also encourage so many other companies to, to probably think about
39:03
sponsoring and financing developer in residence roles so that we have more people. This will improve the language. Because if you're running on Python, and we are not investing a lot in it, then we are probably building on to crumbling infrastructure per se.
39:25
So, like I said, I would love to, before I end the talk, I'd have to say that the solution to all the problems, all the bad parts of Python, the solutions live among us. And if we cooperate, it does not care.
39:40
It doesn't matter, because Python is open source. And any one of us, if if even if even if just 2000 of us wanted to get a solution, we are enough to make Python to improve or make Python better. I think I we just need to cooperate and be willing to share all ideas.
40:02
And if we have time, putting the time and for companies, if you have money, if you can't put in time, then you can put in money to support all the programs that the PSF has in ensuring that Python, the language is relevant in terms of all the activities that surround the language and its ecosystem.
40:25
And if you want to talk about some of the things you can cooperate on as part of my plan for being a PSF director is I want to highlight some of the research we have in our community. And so if you are if you if you do research in Python, I would love to talk to you.
40:45
I have a couple of plans I have for us. And if you do Python in education, you can talk to me after or during the during the conference. And if you're interested in the ambassador program, you can also talk to me and we can discuss more about some of the plans I have as an individual.
41:08
And that we can work together with the PSF to achieve the languages and the community. I would love to end by saying the solution is within us in some sort of way.
41:21
We just need to find a way of voicing our solutions in in a more practical way per se. Thank you. These are my emails if you want to talk about anything. Yeah, thanks very much. I'd love to hand over to the organizers for any questions I may have.
41:46
All right. Thank you so much for the great talk. We just loved it. And I'm seeing lots of questions in the question and answer chat. So I will try to write down the questions so that they appear on the screen and
42:03
it will be easier for you also to to read them out and to to answer them. So we got one question, very interesting question. It's about the standard library. You mentioned that the standard library has been sometimes seen as a problem.
42:22
But what is actually the problem with it? Is it because it's too large or what else? OK, so the different discussions that have been had around the standard library has been that first of all,
42:41
the problem is they are old modules, but most importantly, most of the modules live in the standard library, but they're actually not maintained for some reason, for different reasons that I can't pinpoint even myself. But it could be because of resources. Some modules up to now don't even have an expert.
43:01
Like nobody knows, understands them at all. So it's too big, but also too big for people to maintain. At some point, it's grown bigger than us. But also some things are obsolete. They are old. Again, we are not the only people. Python is not the only language that has the same problem.
43:22
I think even Ruby, its standard library has grown to some point to be that it has old stuff, but also they found that having things in the in the language itself, it does not have maintainers. And the learning curve to contribute to the core language itself is harder compared to if the library, for example, was on PyPI.
43:48
So I think it makes more sense if we had a more streamlined standard library and we have a path towards having more modules on PyPI that could probably maybe we will have that have that could have better maintenance there.
44:05
So, again, it's too big having obsolete stuff, but it also maintain poses a maintenance burden. So PyPI is better in that case. All right. Thank you. Great answer. Great question and great answer.
44:26
We have another very interesting question in the chat. What is the reason for switching from refcounting to a tracing garbage collector? If it were performance, what would be the difference that you would expect from such a switch?
44:51
So, based off research and again, I do research in garbage collection. And if you have if you are not burdening anybody to read or to have an insight into existing research,
45:07
most people, we move away from reference counting for performance reasons because issues like maintaining reference counts itself can be composed and overhead. And the fact that we need to have a hybrid sort of approach to solve all our problems regarding garbage collection, I think is not very ideal
45:27
because we need some sort of tracing garbage collector to manage our cycles per se. I have no prediction of how much difference we are going to have in Python that you can never make.
45:41
I think predicting performance in such as I said, you can never make right now. But what I think is that based off research, there are things tracing garbage collection could give us sort of parallelism, that something that we can't do with reference counting. But we are confident that from insight we've heard in other languages and existing research,
46:02
we are sure tracing garbage collection can give us better benefits than reference counting. OK, Joanna, fantastic. Thank you so much for your answer. You know, very good question and fantastic answers, just like before.
46:22
And we are running a little bit out of time. And so I'm afraid we have to stop here. But I would like to thank you for taking the time to prepare this talk and delivering it. We really enjoyed it. Thank you so much, Joanna.