Lessons from the Trenches: rewriting and re-releasing virtualenv

Bernat Gabor

Packaging Virtual Env python

See in schedule Download/View Slides

virtualenv is a tool that builds virtual environments for Python. It was first created in September 2007 and lived most of its life being a single file project with an increasing amount of (scary) workarounds within. It managed to grow until it was 2,700 lines of code. Maintaining this project became increasingly more troublesome, to the point where, we had more than 500 open issues at one point. In July 2019, I started working from scratch on a rewrite, with the goal of not just increasing the project's maintainability, but also to make it faster and add some new features that were just impossible or too hard to do in the existing code base. Fast forward six months to January 2020, when we released the first beta, with the first full release coming out on 10th February. It took a bit more than a month to squash all the open bugs tickets, but April started without any remaining open bug tickets. This talk will cover the lessons I've learned while on this journey.

Type: Talk (45 mins); Python level: Beginner; Domain level: Beginner


Bernat Gabor

Bloomberg LP

I work at Bloomberg, a technology company with more than 6,000 software engineers around the world – 2,000 of whom use Python in their daily roles. I'm part of the company's Python Guild, a group of engineers dedicated to improving the adoption, usage, and best practices of Python within the company. Over the past two years, I've given multiple presentations to various groups (each with 100+ attendees): twice at EuroPython, once at PyCon US, twice at PyLondonium, and once at the London Python Meetup. I've been using Python since 2011 and have been a busy participant in the open-source Python community. I am the maintainer of the virtualenv package (tool allowing the creation of Python virtual environments for all Python versions and interpreter types, including CPython, Jython and PyPy). I also maintain the tox tool (allows for easy testing to ensure Python code works under multiple Python versions/library versions) and have contributed to various other Python packages.