Last month, programming language Python celebrated its 30th anniversary. But without a team to maintain it, the language would likely have never have become as popular as it is today.
To find out more about the Python community, TechRadar Pro spoke to Pablo Galindo, a Bloomberg software engineer and one of the five members of the Python Steering Council.
He told us about the Python development model, the role of a CPython core developer, and how he sees the language progressing in the years to come.
What led you to Python and what has made you stick with it?
I have a background in Physics. As part of my Ph.D. studies in Granada into rotating black holes, I found myself doing a lot of work with computer simulations. I ended up getting deeper into the software side of things that way. Years later, I found that, in fact, physics and finance both utilize many similar high-performance computing techniques.
While I had experience with C, C++, and Fortran, what led me to Python was that it is so easy to start experimenting and doing things with the language. If you learn one piece of the programming language, you can connect it to the rest very easily. You can also expose some existing programs written in C, C++, and Fortran to Python as well. As the community participates in such a close feedback cycle with the language itself, it is constantly iterating.
What does being a CPython core developer involve?
And what do you consider to be your most significant contribution to the language?
Being a CPython core developer involves a considerable amount of responsibility. You are in charge of implementing new features, reviewing proposals from contributors, fixing bugs, taking care of infrastructure, and making sure that each new release is as stable as possible. In addition, you are also responsible for adhering to the values of the Python core development team and creating a diverse and respectful community. This last point is quite important and involves many “non-technical” skills in order to understand different points of view, backgrounds and cultures.
In my day job, I am part of the Python Infrastructure team at Bloomberg, which helps take care of the Python experience for the more than 2,000 engineers who are using it to code a variety of functions and analytics across the company’s products. In fact, we have over 100 million lines of Python code at Bloomberg.
Our engineers also participate in the Python ecosystem, contributing and even maintaining some open source projects, speaking at conferences, and even hosting events.
Alongside my work at Bloomberg, I was also recently elected onto the Python Steering Council, and I serve the Python community by contributing to the future of the language that way.
What is the job of the Python Steering Council?
Does it work in tandem with the Python Software Foundation?
The Steering Council’s role is to champion Python as a language, ensure its future and to make contributing to it as accessible and inclusive as possible.
We are a set of volunteers, with the exact group changing after each major release of Python. Ultimately, most of our work is as a sounding board and conduit for changes and improvements that come from Python’s prominent and passionate community.
In terms of the Council’s relationship to the Python Software Foundation, the PSF exists to hold and manage the Python brand, support the wider community and ecosystem through things like grants, the back-end services everyone relies on, as well as the largest annual gathering for the Python community, the PyCon US Conference. Meanwhile, the Council focuses on the current and future state and direction of the language itself.
Briefly describe Python’s development model for someone not familiar with the process
A PEP is a Python Enhancement Proposal, which is a technical design document describing new features for Python, or for its process or environment. The main audience that these are created for are the core developers of the CPython reference interpreter, those on the Python Steering Council, and those developers working on other implementations of Python’s language specification.
Anyone in the community can submit these PEPs, but often vetting and discussing an idea publicly before formalizing it as a PEP can help save time and frustration. Discussions can take place on the community’s newsgroups around whether a potential idea is original, or might be rejected based on feedback given previously, for example.
From there, rounds of editorial review take place and final approval sits with the Steering Council. Provided it meets minimum criteria, we will reach a verdict and, if approved, the proposed changes are included in future versions of the language.
When it comes to the Council’s power in relation to PEPs, we have the broad authority to accept or reject these changes. However, we aim to use these powers as little as possible and instead focus on finding consensus where we can. We always try to gather as much information and viewpoints from the community and the core dev team as possible. In some instances, it is impossible to make a decision that will fit every viewpoint. It is therefore very important that the Steering Council consider all the available information so it can make decisions that will benefit the Python language at large, with a consistent vision for the future.
Apart from your work with CPython, you run a lot of simulations with the language related to your background as a theoretical physicist. What do you think makes Python a good language for this?
For many of these simulations, the core is normally written in a compiled language such as C or C++, usually using some accelerators such as CUDA, OPENMP, etc. Unlike compiler languages, Python doesn’t require you to wait while your code is compiled and to get feedback later. Exposing the core so it can be used in Python makes it much easier to iterate, test and experiment.
The language also integrates very well with third party code libraries. For example, if you have a library that is already written with a fast language, Python will work with it so you can communicate with other tools. This integration has often led to Python being called a ‘gluing language’– it can powerfully bridge between different applications and code libraries. Python also allows you to create automatic tests, as well as visualizations in a very efficient way, which is quite important when you are dealing with numerical simulations.
How do you see Python progressing in the future?
The data science tasks performed by mathematicians, physicists, and scientists all over the world often relies on Python. The usage of Python in the back-end of web services and other service-oriented architectures is also a very popular choice, and I can only see that growing in the future. The language not only offers new functionalities to help with these kinds of tasks with every iteration, but the syntax itself also changes to adapt to these usages. A good example of this is when Python added a new infix operator to make matrix multiplication much easier. It is quite difficult to predict how usage of the language will grow over time, but it seems that the adoption of Python for science and data engineering is still growing significantly, and the ecosystem of libraries is growing as well.
At the same time, it is also a very important gateway language for people who are being introduced to software development for the first time. Like any other developer community, the Python community often splits on issues. The needs and wants of different groups in relation to the language sometimes conflict with each other. An important part of my role is to understand these needs and helping to chart a course that best serves the needs of everyone – as well as the language itself.
To make sure that the language stays competitive in all of these areas, is important that we, the core developers, keep the language efficient and fast and make sure that the syntax evolves in a way that makes the language flexible and expressive, without being detrimental to those users who are learning the language for the first time. We go to significant efforts to make sure that Python remains as fast as possible – a particularly challenging problem given how dynamic the language already is – by implementing different sophisticated optimizations. We must also keep in mind that the language needs to remain as approachable as possible to newcomers, which we do by improving syntax errors and documentation.