Steering Council Nomination: Pablo Galindo Salgado (2020 Term)

Nominated by: Paul Ganssle

With his permission, I would like to nominate Pablo Galindo Salgado to the Steering Council for the 2020 Term. This may be somewhat surprising given that Pablo is one of the newer core devs, but in the ~1.5 years since he got his commit bit, he has had a tremendous impact on many aspects of the project, and to me he seems like a perfect fit for the steering council.

Afilliations

Pablo works at Bloomberg (my former employer) on the Python infrastructure team in London.

Background

Pablo has been a core developer since 2018-06-06, and has been contributing to CPython since at least 2017, which is around when I met him. Since the very beginning, he has been a whirlwind of activity and many of us who have had the privilege of working with or near him have been charmed by both his intelligence and his empathy. Despite his relatively short tenure as a core dev, his accomplishments are too numerous to mention in exhaustive detail, so in this section I will attempt to provide a brief summary of some of the highlights that I feel make him most suitable to the position.

He has been very active in CPython development, adding many new features like os.posix_spawn, math.prod and the infamous PEP 570: Positional-only arguments. He also makes many less visible improvements, such as performance enhancements, adjustments to the grammar and the interpreter and bugfixes. In fact, since his promotion, he has become the 4th most prolific committer to the repository. He is one of just a few core devs who are true generalists.

Possibly more important than his contributions to the code base are his contributions to many “meta” aspects of the project. Most prominently, he, Victor Stinner and others do a great deal of work maintaining and improving the Buildbots and CI. This is an important but thankless job, particularly because it involves the somewhat unpleasant job of reverting changes committed by other core devs due to broken buildbots; by putting in place an automated or semi-automated system with clear rules for when reversions will occur, Pablo and Victor dramatically cut down the mean time to fix and have made the process more transparent and easier on everyone involved (more information can be found in this blog post covering Pablo’s talk at the Language summit, of particular interest is this improvement to the GH workflow).

Similar to his work with the buildbots, he has been working with Victor on speed.python.org, which tracks performance benchmarks for CPython. This is similarly important work for finding performance regressions, and also creates a record of clearly measurable improvements we’ve been making to CPython along one specific dimension. (As an aside, one of the most plausible ways I’ve seen to sell corporations on funding improvements to CPython is by showing benchmark improvements, because they often pay for compute resources and resource consumption improvements can actually be quantified in monetary terms.)

Finally, those of us who attended the CPython Core Dev sprint in London are probably already aware of how much effort Pablo put into it. Pablo worked with the PSF and Bloomberg on the details of the sponsorship, getting the guest list put together and general coordination (plus he found time to put together a little PR leaderboard to add a bit more fun to the sprint). This is just one of his more notable contributions to Python community events. He also has been involved in the organization of PyLondinium and PyCon Spain for the past few years.

Concluding Statements

The size of the Python project and the ecosystem that is affected by the decisions made here means that a lot is asked of Steering Council members. I believe that because of the breadth and depth of his knowledge and the strength of his personality, Pablo would make an excellent addition to the council. His knowledge of so many aspects of both the project and the community means that his input to design decisions would be invaluable.

One way that Pablo can make a unique contribution to the Steering Council is that as a relatively new core developer, he bring a different perspective to balance out the council. It is very rare to find someone like Pablo who can boast the he has both a fresh perspective on CPython development and a deep expertise in many aspects of the project.

13 Likes

Having worked with @pablogsal, I know he is motivated, competent and persistent. Still, I would like to have his own declaration on what his directions and priorities would be if he were elected.

1 Like

First of all, I would like to thank @pganssle for the generous and detailed introduction! :slight_smile:

Directions and priorities

Thanks for asking for the information and apologies for not posting it before (I was unavailable these past days). Here are the priorities (in no particular order) I would like to pay special attention if I get elected:

  • Performance: This still is one of the most request and widespread improvements for CPython and an area that I have spent considerable time. This term serves as an umbrella for many different regions (improvements in raw speed, concurrency story, C-API specific issues, memory usage, wasteful object creation for operations…) and therefore it will imply different solutions for every aspect. Testing for viability and prototyping in every mentioned area often takes a considerable effort than usually cannot be achieved by one single person, and this very often acts as a blocker for many of the ongoing efforts. For this reason, I would like better coordinate existing and new initiatives on these projects and to explore how we can better collaborate with the PSF to sponsor some of them.

  • Maintainability, reduction and automation of maintenance tasks. Currently, there is a tremendous amount of work required to keep the lights on. These tasks are often very time-consuming and prevent core developers from spending more time reviewing code or producing it (hurting especially “big projects” that require high dedication). These tasks involve aspects like issue triaging, bug triaging, maintenance of several servers (like speed.python.org and buildbot frontend server among others), maintainace of the buildbot fleet (and related tasks)… These tasks also can be very tedious and lead in some cases to burnout so reducing or distributing the burden can be very beneficial. This also may include some improvements in the testing suite to minimize regressions that happen after merge.

  • Minimize user impact when upgrading to newer versions of the interpreter (especially important in my opinion after PEP 602 has been accepted). Now that we are going to deprecate Python 2, is especially important that the feeling of a hard transition is not repeated. This may be especially challenging when considered together with the performance improvements and will require careful consideration of different tradeoffs and to be sure that we align with the interest of the Python community as much as we can.

  • Improve the promotion and mentoring of new core devs and maintaining a diverse and welcoming core development team. I think I can apport a valuable perspective on some ways to improve the promotion process given that I have experienced the process recently both as a core dev being promoted as well as a core dev proposing new people. Having a good process that results in people not losing interest on the long run is crucial to the survivability of the project, to a better reviewing and triaging experience as well as developing “big” new features. This process has been formalized a bit recently but I think it can be further improved.

  • Better synchronise with the community and major 3rd part projects. We have recently experienced how some users were suffering some negative experiences due to the fact that some CPython processes were not correctly synchronized with big 3rd party packages (as an example, think of the many synchronization problems regarding Cython and the modification and deprecation of several C-API interfaces).

  • Help to define a vision for the Python future. The current steering council is already working on this so this work probably involves ways to make sure that the proposed vision can be executed or help to finish pending work and discussion if needed. This point also includes continuing any pending work and already initiated projects of the current steering committee.

Although these are the main points that I think I can help with, I will be very open to listening to other people’s opinion on what the priorities need to be to adapt as much as possible to the current situation. I am far from knowing everything so I consider fundamental the ability to delegate and update views and priorities when the situation changes or new information appears.

As @pganssle mentioned in the introduction, I think I can help complement/balance a steering council formed of senior core developers with my experience as a relatively new core dev.

My time and availability

Although I dedicate a considerable amount of my free time (sometimes too much :wink: ) my employer (Bloomberg) allows me to spend 20% of my time on Python (this number may increase in the future).

If anyone requires more information or clarifications regarding these points or has other questions, I will be pleased to answer them or provide more extensive information.

8 Likes