# Pradyun / SourceSort interview ### Hello, who are you and what are you working on? 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: - tooling for packaging and installing Python based software - member of the Python Packaging Authority - moderator on the Python Package Index - maintain [pip](https://pip.pypa.io/), the Python package installer - maintain [virtualenv](https://virtualenv.pypa.io/), a tool for creating isolated Python environments - maintain [packaging](https://packaging.pypa.io/en/latest/), an underlying library for tools like pip and virtualenv - (more packages omitted for brevity) - maintain [TOML](https://github.com/toml-lang/toml), a configuration language that's used by a lot of software, from configuring Minecraft servers to managing Python software distributions ### How did you get involved with pip? 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 understanding 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"](https://github.com/pypa/pip/issues/59) which seemed like a good spot way to "dive in". I did, initially summarizing all of the existing discussion 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][1] keynote (my first ever conference talk!) goes into a lot more detail about the work I did since, and how I've grown as a person since. [1]: https://www.youtube.com/watch?v=dvN3XH2Jtr4 ### How do you manage the workload and the community? > *Prioritising and distributing work, managing conflict, dealing with end users, etc.* As hopefully anyone who reads the "OSS Work Update" series on [my blog](https://pradyunsg.me/blog/), 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 issue tracker and more time on development. ### How much time do you devote to pip? > *Are you part-time or full-time on it? Is it difficult finding enough time for it? Do you wish you could devote more time?* 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. Right now, it's probably close to ~10 hours in a week. Sometimes I'd spend only 20 hours in an entire month, sometimes I'd spend upwards of 80 hours in a week. The work I do is usually not time-sensitive, so this works out well. I don't know how much free time I would have after I'm out of college; but that's a different topic. ### What are the biggest obstacles you've had to overcome? > *Can be a technical obstacle, personal motivation, or anything else* There is a lot of technical debt in the codebase, i.e. design choices that were made to get done with certain features 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 the nature of 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 not make significant improvements to the tool since backward compatibility is very tricky and sometimes feels like shackles when trying to make some 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 a different time zone. 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. ### What are your hopes for the future of pip? > *Both for the project and for you personally.* 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, main obstacles would be the socioeconomic ones. Nadia Eghbal's excellent ["Roads and Bridges: the unseen labor behind our digital infrastructure"](https://www.fordfoundation.org/media/2976/roads-and-bridges-the-unseen-labor-behind-our-digital-infrastructure.pdf) report discusses the open source sustainability problem in an excellent manner (and also mentions Donald Stufft, one of the maintainers of pip). ### What advice do you have for other open source contributors? > *Can be for open source contributors or developers in general too.* Read [Brett Cannon's excellent blog post on expectations on Open Source participation](https://snarky.ca/setting-expectations-for-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.