Hello there! I’m Pradyun, an undergraduate student in India, who volunteers his time to maintain critical digital infrastructure for the Python programming language. I’m a Python Software Foundation Fellow and a past Google Summer of Code student.
I work on quite a few things actually:
My initial involvement in pip was curiosity-based – I was curious about how “pip” worked and wanted to find out. It automagically downloaded things from the internet and made things work in a different program (IDLE). I wanted to know what the magic behind that was. I was still learning my first programming language then – Python.
One fine day, I landed on the GitHub page of pip and realized I could see the code powering pip. pip is written in Python, which meant I could try to understand how it worked. I tried and understood some things, but most of it wasn’t very clear. I looked on the issue tracker to see if there’s something I could understand. I found an issue titled “add an upgrade command” which seemed like a good way to “dive in”. I did just that, initially summarizing all of the existing discussions and then moving forward on the issue. It took a few months to resolve it, and I enjoyed the process because I was learning a lot. The folks were very interested in helping me, having a constructive discussion amongst themselves and it was an extremely positive experience for me overall.
My PyCon Korea 2019 keynote (my first ever conference talk!) goes into a lot more detail about the work I've done and how I’ve grown as a person since then.
As hopefully anyone who reads the “OSS Work Update” series on my blog knows, my availability varies based on academic workload + health + “life”.
There are 2 major streams of work in pip – the incoming issue tracker tickets and existing/inspired ideas for improving pip. I used to try to split my time between the issue tracker and development fairly evenly. A couple of months ago, I started actively trying to spend less time working on the issue tracker and more time on development.
I volunteer my free time to work on pip, so there’s a lot of variability. I’m still in college, so there is quite a lot of free time to devote. Right now, it’s probably close to 10 hours a week. Sometimes I’d spend only 20 hours in an entire month, sometimes I’d spend upwards of 80 hours in one week. The work I do is usually not time-sensitive, so this works out well.
I don’t know how much free time I will have after I’m out of college, but that’s a different topic.
There is a lot of technical debt in the codebase, i.e. design choices that were made to get certain features done that have made further feature development and bug fixes more difficult. A lot of the work I’ve been doing, beyond the firefighting of bug fixes and feature development, has been to pay down this debt to make it easier to maintain and improve pip.
Due to how large the user base of pip is, if there’s a code path within the codebase, chances are someone has written a script that depends on that code path. This has made it very difficult to make significant improvements to the tool since backward compatibility is very tricky and I sometimes feel shackled when trying to make changes. A lot of my time goes into keeping up with the issue tracker, again due to the number of users. This has meant a lot of the code improvements that I’ve wanted to do haven’t been feasible due to a lack of time available to do that. The availability of the other maintainers (also volunteers) also varies a lot and all of us are in different time zones.
I think this is the situation of many popular projects that depend on volunteered time to keep them afloat, except some don’t even have multiple maintainers – I’m not sure if that’s comforting or unsettling.
The optimist in me hopes that Python Packaging improves significantly over the coming few years through the efforts of a diverse group of talented individuals who would be getting compensated fairly for their work – work on digital infrastructure that’s critical for keeping such a large ecosystem functional.
I’m fairly certain that we’d continuously chip away on making technical improvements to the tools we have. To get closer to this optimistic goal, there’s a lot of stuff we’d have to figure out but, in my opinion, the main obstacles would be the socioeconomic ones. Nadia Eghbal’s excellent Roads and Bridges discusses the open source sustainability problem (and also mentions Donald Stufft, one of the maintainers of pip).
I'll second everything that Ines Montani said about this. In addition, I'd say one should read Brett Cannon’s excellent blog post on expectations on Open Source participation. There’s a video version of it too, linked from the blog post itself. In my opinion, that should be required reading for everyone engaging in Open Source.
pip, along with the other libraries Pradyun helps maintain are essential for the Python ecosystem. To help fund this great work, consider making a donation to the Python Software Foundation here or to funding Python packaging specifically here.
To find out more about Pradyun himself, you can check out his website where he blogs and has links to the rest of his social profiles.