 And we're back on the conference track. Those of you who have been here this morning have missed the canceled sackheadfields.talk stop writing tests. We have managed to find a new place for that, and it is starting now in conference number six in Silly Walks. And that talk will also be available as a recording so that you don't have to watch it right now. But if you were waiting for that, that's where you can find it. And talking about Silly Walks in the spirit of Monty Python, I can now say, for those who have just missed Mark-Andre Lamberg, here he is again. Hi, thank you for the introduction, Markin. Yeah, and we're short on time, so I will let you take over right now. OK, thanks. Bye. OK, so I'm going to talk about thoughts on the future of Python. These are my personal thoughts, of course. So there's nothing official behind this. But I'm going to go through a couple of things that I think where Python is, where Python could be in the future, and hope you find this interesting. The talk is actually, it was written for 45 minutes, so I have to compress a bit. I won't go through all the details on the slides. I will post the slides after the talk. So a bit about myself, I'm Mark-Andre Lamberg. I've been using Python since 1994, so quite a long time. It also tells a bit about my age. I studied mathematics. I have a consulting company. We're doing Python projects, and I'm working as a consulting CTO and senior software architect. I'm also the Euro-Python Society Chair at the moment. I'm the founding fellow of the PSF, Python Core Developer. And I am based in Düsseldorf. So what's on the agenda for this talk? First, I'm going to go through the Python development. Then I'm going to have a look at the growth in the market. Perspectives for the future, I'll give you a few ideas about my wish list for Python, and then perhaps we have some time for discussion. It's more probably that we're going to have those in the breakout room afterwards. So let's head on into the overview of the Python development. So setting the stage. Python has been around for a long, long time. Is it still evolving? So let's have a look at the history of Python. It all started in December 1989 when Guido van Rasm started to write Python. He was working on the ABC team at that time. And he thought, well, I would like to do things a bit differently. So he started writing Python. In the 1990s, basically everything was done on Usenet. So he posted things there. There was a lot of development. It was a very, very small community at that time. And over that decade, basically Python grew. Then in 2000, the zero years, what happened is that the development opened. So we had more developers come in. We had people who got access to the repository. The Python Software Foundation was initiated to own the licensing and to own the IP rights. And then in the 10s, what happened is we moved to a different repository system. So first we had to start with CFS. Then we had Subversion. Then we went to Mercurial. And then we went to Git, eventually. And we started the Python 2-3 transition, which is over by now, luckily. More recent developments, I'm just highlighting a few things here, which are very important. I think the most important development are type annotations. So what we have now in Python is you have the possibility to say, OK, this variable is going to be an integer. This variable is going to be a string. Or you can even, you know, there's a way to also define more complex types. In Python, you can use those type annotations in several different tools. You can have type checks in your IDEs, for example. You can use them in data classes to define the variables. And then data classes make it possible by using the type information to more efficiently store the information. The other big development is async.io. So async.io is about basically putting an event loop into Python and then managing that event loop in Python to have parts of your code run as coroutines, meaning that they run for a certain time. Then they give up the task. They say, OK, I'm going to have to wait on something. They give the control back to the event loop. The event loop then takes the next coroutine, runs that, until that, again, says, OK, I have to wait. So please go to the next one. And that makes it more efficient to run Python code where you have lots of waiting going on. Let's say, for example, WebSocket code. Other developments are context bars, which are local variables, but for async code. So that's like it goes along with the async.io. A very important development was to have the build in dict be an ordered dict. So it preserves the insertion order. That made a lot of things that we had to do using meta classes, for example, in ORM classes, made those go away. So basically, they got a lot simpler. They could remove the meta classes and now we have access to the order in which attributes, for example, were added to a class dict directly in there. And data classes are already mentioned. It's an inefficient way to store records. We also have a number of new operators. I'm just picking out a few. So we have a new dict merge operator. We have the well-versed operator because it looks a bit like a well-versed. It's basically assignment inside expressions, which makes a couple of things a bit easier. There were long discussions about this. I won't go into detail, but you can read it up on the mailing list if you like. A very nice development was f-strings. So you can format things directly in. Well, you can do sort of like templating inside Python with the direct access to locals. These are not only nice to write. They're also efficient because they've executed faster. And this was a vastly successful thing. We have positional keyword-only parameters. These were basically back ported from the CIPI, which had them for a longer time already. And now they're available in Python as well. There's a new parser called PEG. This allows us to add new keywords to the language without disrupting the complete code base because they are context local. And then in 3.10, we're now getting the switch and match statement. This is for structural pattern matching. You can also match on type and objects. This is something that's new. And it still has to be seen how well that's going to be picked up. We also had some organizational changes in Python. So we have a new release cycle. We have yearly releases now. We have a steering council that took over after Guido stepped down as the BDFL and retired. Then after a while, Guido got tired of being retired. So basically he started working again. And he's now working at a team at Microsoft and with the idea to improve the performance of CISPython, which is very nice. And very recently, we also have the first PSF developer in residence. So the PSF now actually has a higher developer helping us to reduce the number of open PRs. What's currently under discussion? Like I said, there is a strong discussion about improving CISPython performance. This is not new. This has been ongoing for years and years, but now we have a dedicated team to work on this. And they are working on a specialized adaptive interpreter and also adding many small improvements. So you will see some improvements in terms of performance over the next few releases and years. We will have enhanced error reporting. So instead of just reporting on which line something went wrong, Python will also be able to report on which column or in which column something went wrong, which is going to improve the error reporting, especially for newbies and also in some cases, of course, for experts because it's not always obvious where an error occurred if you have longer lines. There's a development to add subinterpretors to Python. The idea there is that to work around the guild limitations, the global interpreter lock limitations in Python, which makes it hard to run multiple threads with Python. The idea with subinterpretors is that you can have one subinterpretor per thread and then have those run on a per thread basis. We are also working on the C API. So the C API is being basically, let's say it's being resorted. So more of the APIs that we have are moved to internal. So they're not going to be published anymore to extensions. The complexity is supposed to be reduced. There are a couple of projects on the way to help with all of this to also maybe change the garbage collector and to introduce something called a Python handle instead of using pointers. So lots of work is being done to improve Python. So I think in terms of the original question, is there still development going on? Is evolution still happening in Python? So definitely the answer is yes. So there's lots and lots of stuff coming. So it looks quite good on the Python development side. So now let's have a look at the Python growth in the market. If you look at the history, everything started in 1989 and then very slowly things got released to the news groups. The academic world started picking up Python a lot. We had the first workshops here. We had the first company, eShop use Python for eCommerce. We even had a browser implemented in Python, which was something, it was a pet project of Guido at the time. And you can see down here, numeric was started. So people in science were trying to use Python for their tasks. What happened in the next couple of years is that Python started very much embracing the web. So the first development was the Zope environment to publish to the web. That was very much object oriented. Zope was considered to be a bit too complex for especially for users. So what happened is that Plone was on the rise. Plone is a CMS system and you can use it for basically also for contact content management and knowledge management in the enterprise. In the end, Zope, Plone was built on Zope. And so the complexity in the underlying code was still there. So if you wanted to extend things, you still had to go into Zope and do stuff. That was considered not to be a good thing for especially for new developers. So Django entered the stage and Django made things easier. Down here on the access, you see what happened in the community. So there was a Python consortium built and created to support Python. The PSF was founded in 2001. EuroPython started, Pycon started in the US and things were going well in terms of community building. After a while, Python started entering the mainstream. So more and more people were using Python. You had, when you went to customers and you told them about Python, people actually knew what Python was, which was exciting to, you know, if you went to as a consultant to a company and told them that you were using Python, then they said, oh, yes, great, I know that language. You didn't have to tell them, okay, this is a new thing. It's gonna be a bit risky for you, but we can still try it. I'm gonna tell you, it's definitely gonna be worth it. That was the discussion that we had in the early 2000s. So you can see down here that in the science area, lots of development started to happen. And this is actually the next big thing that came after Django. So you have a huge list of libraries and projects pop up in the data science space. And this is where we are right now. So if you look at the development of Python and how Python is being used in the industry, nowadays it's mostly being used in data science. Of course, we still have a use in web. That's not going away anytime soon, but data science is the big driver that we have at the moment. Now, question is, what's gonna happen in the future? And this is basically what I'm gonna try to make a few suggestions for in this talk. So let's see where we are. So like I said, Python is still big in web, but web works differently now than it worked a decade or two ago. Web is definitely no longer just about publishing content to the websites. It's nowadays, it's mostly about providing an API, a REST API ideally, to provide data to the front end. And then the front end is typically developed in JavaScript using one of the many frameworks that you have in JavaScript. We also see async IO being used a lot in the web to make things run faster. And so all of this is going in the right direction. Python is indeed very well positioned in the web, not only because of Django, but also because of, you know, like clone, like the CMS or Django CMS, but it's also well positioned in terms of API backends. So we now have fast API, which works based on the async IO framework. We have Django and Flask REST frameworks, which works synchronously, but now they also are getting an async support. We have libraries that help you with GraphQL. So you have Graphene, Ariadne, Strawberry, Totiflet, and several others that help you, you know, push data to the front end. And so I think the story for the web is pretty good. It is already very big in data science. So Python and R are basically the two main languages that you can use in data science. And this has really dramatically increased the scope and the market share of Python overall. And what I'm seeing now in the market is that, like we had in the keynote, the heat framework, nowadays everything is about distributed computing. So we are moving away from having just one application sit there, maybe use multiple threads to run something. And we're replacing that idea with moving to multiple processes or even multiple machines, clusters working together to solve a problem. And that's where everything is moving. And so the Python Guild discussion that we had in the last couple of decades is actually less important at this point because the Guild only runs in one of the processes. If you have multiple processes running already and you have clusters running multiple machines, then the Guild is not so much of a blocker anymore. So we have two markets covered. So what's the idea in the enterprise world? What's happening in the enterprise, and this is what I'm seeing as, you know, CTO of companies, I'm seeing that Python is entering the enterprise via data science. So it's no longer the case that Python is just being used for implementing websites. It's also that Python is actually powering very important parts of enterprises nowadays because everything is moving towards being data-driven. Data-driven means that you take the data that you have, you try to analyze it as fast as possible, and then you try to build your decisions, the business decisions on the results that you get from analyzing the data that you have. And Python has a very strong footing in that area. So we have, for example, Apache Airflow, which is being used for workflow. You have SuperSet being used for business intelligence. So, you know, dashboards, graphics and stuff to put directly on the web and to run fast analytics. You have Apache Spark, which is a data platform which is distributed and it runs PySpark scripts. So we are actually well positioned in that market as well and this is gonna grow. So question is, is Python really ready for the enterprise? Well, my take on this is not quite there yet. You know, we still have to do some work on that. And this has to do with a couple of things. Now, putting on the CTO ad here, where you basically have to, you're responsible for developments that you're doing in the company and so whatever decisions you make, you have to tell your shareholders, you have to tell your CEO, this is the right thing to do, right? So there are a couple of things that are a bit worrying when you look at the Python development from the CTO site. So one is the yearly release cycle, for example. You get one and a half year support for every release now with the new cycle. You do get faster access to new features, but what's gonna happen in companies is that they will probably not switch to new releases for every single release, they will skip releases. And so because you only get one and a half year support for each release, what will happen and what we will have to see and we will have to have companies in the Python ecosystem providing this, we will need commercial support for Python. So that after those one and a half years you get support from the core development team, you can then switch to commercial support that you get from companies. So it's not, maybe I put it a bit wrongly, so it's not that bad a thing to happen, but you need to find a different strategy to basically back up your decision to use Python for this. Now, how is the core development helping in this? Core developments are good. We've added type safety, for example, type annotations, this is something that's very much liked in the enterprise. People have always had an issue with not having type safety in Python, so this got added now. And you can write code using type annotations and in fact in the enterprise this will become more and more of a standard, so you will see type annotations all over the place. So the developments happening in core development are actually a good thing and adding new features is a good thing in Python. It's not so good for UBs because Python has grown very fat over the years, so for example, I just looked at a book in the last couple of weeks to just cover the, you know, basically try to cover everything that's in Python, and it has over 700 pages. So that's where we are at the moment. When I looked at the tutorial, when I started to learn Python, I don't remember exactly how many pages it had, but it was definitely a lot less, so probably like 50 or 100 pages. But this is just core development, and so core development is not the only contributor to what Python is. We also have a huge data science community. We have a huge web community. We have a DevOps community. So for example, Ansible or Saltstack are implemented in Python. We have several other communities in niche markets, so Python is growing all over the place, and we have many, many people working on Python's success, so it's not only the core development team that provides new features, it's also all these other communities. And what's happening is that lots and lots of industry leaders are using Python nowadays, and so you can reference those. We have companies like Airbnb, Netflix, Google, Microsoft, all of these have written applications and they have open sourced their solutions and given them back to the community, so that's great. So could Python be seen as the cloud language? Well, I would say yes, but only to some extent. There's lots of competition out there, so especially Node.js is one of the big competitors in that market. We do have lots of APIs to all kinds of cloud libraries to cloud solutions. You can write a serverless code in Python, like AWS Lambda or Google Cloud Functions, other functions, you can write all those in Python. It runs in the browser. OpenStack, for example, is a complete cloud solution which is written in Python, so we're in good shape, and we have market awareness. So could Python actually be the new enterprise language? Well, of course, there's strong competition from Java and C++ and Csharp to some extent, depending on where you go. The problem there is you have to say, nobody ever got fired for choosing IBM or nowadays it's more like nobody ever got fired for choosing Java, and so that's what's happening. If you see the enterprise software development market, then still most of the things are being developed in Java, and you can also see that if you go to, for example, the Apache Project Directory, most of these big applications that they have are actually written in Java, so only very few are written in Python. Now, how can we enter this market? It's difficult, I could tell you. People love type languages, they love the security that they get from type languages. Now we have type annotations, so things are getting better, but I think that we still have to use this Trojan horse kind of card to get into the enterprise. There's lots of potential that we have. These are just a few acronyms that you may or may not know, I put the wording behind these, so but if you look at the blue entries in here, we only have very few areas where we actually already have a solution written in Python. There are lots of areas in here where we don't have anything and this is a huge market, it's billions of dollars in market size. I have a separate talk on that, you can look it up, I held that in 2018. So I think we will get there, it just takes a bit of time and effort and of course people to use these ideas and then go ahead with them. So this is my wish list for Python, I have two slides on this, one at the language level and one at the application level. So the first one, again, from the CTO kind of perspective, what I would very much like is a Python LTS version. So something where we can say, okay, we will have this version out, it's gonna be supported for five years and then perhaps you can even get another five year security fix it. That would be a great thing, that would be a big selling point in the enterprise for Python. The other things are not really that major. So of course everyone wants to have a faster Python, we would like to have mobile app support but that's coming, people are working on that. It would be excellent to have a syntax for parallel execution. Now that we have async IO already for the asynchronous execution, we're still missing a bit on the parallel execution. There are some tools which help you with this and try to automatically run things in parallel. But it would be nice to have a syntax for this directly in Python. We don't have that yet. We still have to rely on multiprocessing, MPI, DAS, these things. It would be nice to have something directly in Python. And of course, Python without a gill would be fantastic. This is gonna take another few years to achieve. And because we don't want another two to three transition, it's gonna be hard because Python without a gill is actually gonna break a lot of extensions. So we have to have a good path towards that. Now on the application side of things, I think what we need is, we need better rapid development solutions. We have good IDEs for Python, but those are not really rapid development solutions. So you still have to do a lot of boilerplate development regardless of which area you choose. And the tooling that we have there is not all that ideal. So we need more polished libraries. We need business graphics. We need business UIs, dashboards. We need these things to be backed by companies and not only open source, or only is not the right word, but not just backed by open source communities. Those open source communities should have companies within them to provide things like support backup, maybe extended solutions. We need more paid offerings. We need more startups that enter the market and provide easy access to consultants, for example, to provide SLAs, which is something the enterprise always needs. We need something that makes it easier to develop applications in Python. Anaconda is already going in the right direction for the data science part, and they have very well integrated tools. They have a nice IDE. They have deployment tools. They have an app store. That's fantastic. But it's too much focus on data science. So we need that in other areas as well, especially if you want to enter all these different acronyms that I showed on the previous slide. So where are we right now? Python has a bright future ahead and things are only gonna get better and it's gonna be exciting and it's gonna be fantastic and this is the end of my talk. Thank you so much. Okay. Yeah, thanks a lot for the talk. We've had some activity in the chat, but there was not really questions about this. I think you managed to shut them all up. People have been discussing, for example, Python in the browser and mentioned Python. But I think if you can continue this in the breakout room, if there is any more direct questions to you and so I'll just take the opportunity to thank you again for presenting the future of Python. Thanks. Okay, bye-bye. I'll hop over to the breakout room now and then we can maybe discuss a bit there. Thanks. Bye.