Date: Mon, 19 Aug 2019 16:00:00 -0400
<div class="wp-block-jetpack-markdown"><h3>Summary</h3> <p>PyPI is a core component of the Python ecosystem that most developer’s have interacted with as either a producer or a consumer. But have you ever thought deeply about how it is implemented, who designs those interactions, and how it is secured? In this episode Nicole Harris and William Woodruff discuss their recent work to add new security capabilities and improve the overall accessibility and user experience. It is a worthwhile exercise to consider how much effort goes into making sure that we don’t have to think much about this piece of infrastructure that we all rely on.</p> <h3>Announcements</h3> <ul> <li>Hello and welcome to Podcast.__init__, the podcast about Python and the people who make it great.</li> <li>When you’re ready to launch your next app or want to try a project you hear about on the show, you’ll need somewhere to deploy it, so take a look at our friends over at Linode. With 200 Gbit/s private networking, scalable shared block storage, node balancers, and a 40 Gbit/s public network, all controlled by a brand new API you’ve got everything you need to scale up. And for your tasks that need fast computation, such as training machine learning models, they just launched dedicated CPU instances. Go to <a href="https://www.pythonpodcast.com/linode?utm_source=rss&utm_medium=rss">pythonpodcast.com/linode</a> to get a $20 credit and launch a new server in under a minute. And don’t forget to thank them for their continued support of this show!</li> <li>You listen to this show to learn and stay up to date with the ways that Python is being used, including the latest in machine learning and data analysis. For even more opportunities to meet, listen, and learn from your peers you don’t want to miss out on this year’s conference season. We have partnered with organizations such as O’Reilly Media, Dataversity, Corinium Global Intelligence, and Data Counsil. Upcoming events include the O’Reilly AI conference, the Strata Data conference, the combined events of the Data Architecture Summit and Graphorum, and Data Council in Barcelona. Go to <a href="https://www.pythonpodcast.com/conferences?utm_source=rss&utm_medium=rss">pythonpodcast.com/conferences</a> to learn more about these and other events, and take advantage of our partner discounts to save money when you register today.</li> <li>Visit the <a href="https://www.pythonpodcast.com?utm_source=rss&utm_medium=rss">site</a> to subscribe to the show, sign up for the newsletter, and read the show notes. And if you have any questions, comments, or suggestions I would love to hear them. You can reach me on Twitter at <a href="https://twtiter.com/Podcast__init__?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">@Podcast__init__</a> or email <a href="mailto:hosts@podcastinit.com">hosts@podcastinit.com</a>)</li> <li>To help other people find the show please leave a review on <a href="https://itunes.apple.com/us/podcast/podcast.-init/id981834425?mt=2&uo=6&at=&ct=&utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">iTunes</a> and tell your friends and co-workers</li> <li>Join the community in the new Zulip chat workspace at <a href="https://www.pythonpodcast.com/chat?utm_source=rss&utm_medium=rss">pythonpodcast.com/chat</a></li> <li>Your host as usual is Tobias Macey and today I’m interviewing Nicole Harris and William Woodruff about the work they are doing on the PyPI service to improve the security and utility of the package repository that we all rely on</li> </ul> <h3>Interview</h3> <ul> <li>Introductions</li> <li>How did you get introduced to Python?</li> <li>Can you start by sharing how you each got involved in working on PyPI? <ul> <li>What was the state of the system at the time that you first began working on it?</li> </ul> </li> <li>Once you committed to working on PyPI how did you each approach the process of identifying and prioritizing the work that needed to be done? <ul> <li>What were the most significant issues that you were faced with at the outset?</li> </ul> </li> <li>How often have the issues that you each focused on overlapped at the cross section of UX and security? <ul> <li>How do you balance the tradeoffs that exist at that boundary?</li> </ul> </li> <li>What is the surface area of the domains that you are each working in? (e.g. web UI, system API, data integrity, platform support, etc.) <ul> <li>What are some of the pain points or areas of confusion from a user perspective that you have dealt with in the process of improving the platform?</li> </ul> </li> <li>What have been the most notable features or improvements that you have each introduced to PyPI? <ul> <li>What were the biggest challenges with implementing or integrating those changes?</li> </ul> </li> <li>How do you approach introducing changes to PyPI given the volume of traffic that it needs to support and the level of importance that it serves in the community?</li> <li>What are some examples of attack vectors that exist as a result of the nature of the PyPI platform and what are you most concerned by?</li> <li>How does poor accessibility or user experience impact the utility of PyPI and the community members who interact with it?</li> <li>What have you found to be the most interesting/challenging/unexpected aspects of working on Warehouse? <ul> <li>What are some of the most useful lessons that you have learned in the process?</li> </ul> </li> <li>What do you have planned for future improvements to the platform? <ul> <li>How can the listeners get involved and help out?</li> </ul> </li> <li>How was this work funded?</li> </ul> <h3>Keep In Touch</h3> <ul> <li>Nicole <ul> <li><a href="https://twitter.com/nlhkabu?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">@nlhkabu</a> on Twitter</li> <li><a href="https://whoisnicoleharris.com?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">Website</a></li> <li>If you’re using CI to upload to PyPI and would like to speak with Nicole please book a time <a href="https://calendly.com/nlhkabu/pypi?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">here</a></li> <li>If you’re using assistive technology and would like to speak with Nicole please book a time <a href="https://calendly.com/nlhkabu/pypi?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">here</a></li> </ul> </li> <li>William <ul> <li><a href="https://feeds.fireside.fm/pythonpodcast/twitter.com/8x5clPW2">@8x5clPW2</a></li> <li><a href="https://feeds.fireside.fm/pythonpodcast/yossarian.net">Website</a></li> <li><a href="mailto:william@trailofbits.com">Email</a></li> <li>Please get in touch if you’d like to work with Trail of Bits on your next security project!</li> </ul> </li> </ul> <h3>Picks</h3> <ul> <li>Tobias <ul> <li><a href="https://en.wikipedia.org/wiki/The_Expanse_(TV_series)?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">The Expanse</a> TV Series</li> </ul> </li> <li>Nicole <ul> <li><a href="https://www.netflix.com/title/80117542?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">The Great Hack</a> documentary</li> </ul> </li> <li>William <ul> <li><a href="https://www.goodreads.com/book/show/90822.Abraham_Lincoln?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">Abraham Lincoln Autobiography</a> by Carl Sandburg</li> </ul> </li> </ul> <h3>Links</h3> <ul> <li><a href="https://feeds.fireside.fm/pythonpodcast/pypi.org">PyPI</a></li> <li><a href="https://github.com/pypa/warehouse?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">Warehouse</a> <ul> <li><a href="https://github.com/pypa/warehouse/issues?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">Issue Tracker</a></li> <li><a href="https://github.com/pypa/warehouse/labels/good%20first%20issue?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">Good First Issues</a></li> </ul> </li> <li><a href="https://people-doc.com?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">PeopleDoc</a></li> <li><a href="https://www.trailofbits.com/?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">Trail of Bits</a></li> <li><a href="https://osquery.io/?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">OSQuery</a></li> <li><a href="https://www.djangoproject.com?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">Django</a></li> <li><a href="https://www.ruby-lang.org/en/?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">Ruby</a></li> <li><a href="https://www.python.org/psf/?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">Python Software Foundation</a> <ul> <li><a href="https://wiki.python.org/psf/PackagingWG/Charter?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">Python Packaging Working Group</a></li> <li><a href="https://www.pythonpodcast.com/python-software-foundation-episode-217/?utm_source=rss&utm_medium=rss">Podcast Episode</a></li> </ul> </li> <li><a href="https://caremad.io?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">Donald Stufft</a> <ul> <li><a href="https://www.pythonpodcast.com/episode-54-pip-and-the-python-package-authority-with-donald-stufft/?utm_source=rss&utm_medium=rss">Podcast Episode</a></li> </ul> </li> <li><a href="https://en.wikipedia.org/wiki/User_experience_design?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">UX (User Experience) Design</a></li> <li><a href="https://www.opentech.fund?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">OTF == Open Technology Fund</a></li> <li><a href="https://getbootstrap.com?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">Bootstrap</a></li> <li><a href="https://tools.ietf.org/html/rfc6238?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">TOTP</a></li> <li><a href="https://webauthn.io/?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">WebauthN</a></li> <li><a href="https://www.yubico.com/products/yubikey-hardware/?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">Yubikey</a></li> <li><a href="https://changeset.nyc?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">Changeset Consulting</a></li> <li><a href="https://www.harihareswara.net?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">Sumana Harihareswara</a></li> <li><a href="https://www.w3.org/TR/WCAG20/?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">WCAG (Web Content Accessibility Guidelines) 2.0</a></li> <li><a href="https://ai.google/research/pubs/pub41892?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">Macaroon Security Tokens</a></li> <li><a href="https://docs.docker.com/compose/?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">Docker Compose</a></li> <li><a href="https://www.mozilla.org/en-US/moss/?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">MOSS = Mozilla Open Source Support</a></li> </ul> <p>The intro and outro music is from Requiem for a Fish <a href="http://freemusicarchive.org/music/The_Freak_Fandango_Orchestra/?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">The Freak Fandango Orchestra</a> / <a href="http://creativecommons.org/licenses/by-sa/3.0/?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">CC BY-SA</a></p> </div> <img alt="" height="0" src="https://analytics.boundlessnotions.com/piwik.php?idsite=1&rec=1&url=https%3A%2F%2Fwww.pythonpodcast.com%2Fpypi-improvements-episode-225%2F&action_name=Security%2C+UX%2C+and+Sustainability+For+The+Python+Package+Index+-+Episode+225&urlref=https%3A%2F%2Fwww.pythonpodcast.com%2Ffeed%2F&utm_source=rss&utm_medium=rss" style="border: 0; width: 0; height: 0;" width="0" />