PyDev of the Week: Barry Warsaw

This week we welcome Barry Warsaw (@pumpichank) as our PyDev of the Week! Barry works on the Ubuntu operating system for Canonical and he’s the project leader for GNU Mailman. He also used to be the lead maintainer for the Jython project. If you have the time, you should check out his website. Barry’s Github page is also worth a look to see what projects he finds interesting or you can check out his personal projects on Gitlab. Let’s take a few minutes to find out more about our fellow Pythonista!

Can you tell us a little about yourself (hobbies, education, etc):

I work for Canonical on the Ubuntu Foundations team, so we take care of the plumbing layer of Ubuntu. Roughly, it’s stuff like toolchains (interpreters, compilers, language runtimes, etc.), image building, installers, and general archive goodness. I try to keep the Python stack happy and over the last few Ubuntu releases have really been concentrating on switching Ubuntu to Python 3. I’m also a Debian Developer, so a lot of the more general work on Python happens there first, and then gets imported automatically into Ubuntu. We get especially busy when new Python versions are released, ensuring that transitions go smoothly. At work I’m also responsible for the “system image updater client” which is the piece of the Ubuntu Touch flavor that performs the atomic system upgrades on Ubuntu phones and tablets.

On the side, I’m a semi-professional musician, playing bass in several local bands, doing studio work for local artists, and writing in my own home studio. I’m also a tai chi practitioner for the last 15 years or so, studying Yang style short form, sword, push hands, and more recently qi gong.

Why did you start using Python?

In 1994 I had just started working at the Corporation for National Research Initiatives in Reston, Virginia. We were doing work with mobile software agents called Knowbots. We started out using Objective-C on NeXT machines. Earlier in my career I had worked at the National Institute of Standards and Technologies, and in late 1994 some former colleagues of mine from there invited me to attend a small workshop hosted at NIST. A Dutch developer was visiting, and the topic of the workshop was this relatively new object-oriented language he’d invented.

The language of course was Python and the developer was Guido van Rossum. The workshop was fantastic and we came away with a plan to work on an Objective-C to Python bridge to support our project. One of our CNRI colleagues suggested we try to hire Guido, and as it turned out, Guido was interested in coming to work and live in the States. Once at CNRI, Guido quickly convinced us that we could do the entire project in Python, without the need for Objective-C! I had the honor of working closely with Guido for the next 8 or so years, through three companies, until he moved out to California to work for Google.

I fell in love with the Python language early on, and over those years, our little team moved a lot of the Python project infrastructure from the Netherlands to the USA. We worked on Python, and used Python in lots of projects, and I served as the release manager several times. Looking back, the Python project and community has grown unbelievable over these last 20 years, probably more than any of us would have dared to imagine, but not more than we’d hoped!

What other programming languages do you know and which is your favorite?

I’d always enjoyed learning new programming languages, and was (am?) pretty proficient at many of the old school languages like C, C++, Lisp, FORTH, Perl, and so on. But I recognized pretty quickly that Python was special. For me, it’s the most direct translation from what’s going on in my head to working code. I still enjoy occasionally dropping down into C, tweaking my Emacs Lisp, mucking about with JavaScript, or learning the new goodness such as Go. But if I’m starting a new project or looking for something fun to work on, Python will be my first choice.

What projects are you working on now?

Outside of work, I am the project leader for GNU Mailman, a mailing list management system. This is a project with a long history, and it’s fueled the Python mailing lists since the late ’90s. Although I didn’t invent it originally, I’ve been leading the project for a long time, concentrating these days on improving version 3, which modernizes everything including really nice new web interfaces for list and subscription management (Postorius) and web-based archives (HyperKitty). Postorius and HyperKitty are Django applications which are really lead by other fantastic developers on our team. The are better web developers than me, and I enjoy working on the core management engine, which of course is written in Python 3.

Which Python libraries are your favorite (core or 3rd party)?

In Mailman, we use the email library from the stdlib, which I originally wrote back in the Python 2 days. These days, it’s been very much improved and extended in Python 3 by R. David Murray and others. I’m also quite a fan of the stdlib contextlib library, and relatively recently I got a chance to dig into the new asyncio library. That’s pretty braintwisty but really cool once you get the hang of it.

For third party libraries, I really love Falcon, which is a REST API library. Mailman 3 has a distributed architecture, with components like Postorius and HyperKitty talking to the core over REST, and Falcon is what powers this for us. It’s an amazingly cool library.

In Mailman we also make heavy use of zope.interface and zope.component, two mature libraries for providing component based composition of complex programs. SQLAlchemy for the ORM layer and nose2 for testing are also favorites. I have my own little suite of flufl libraries that provide some nice utilities as well.

Where do you see Python going as a programming language?

I think Python’s future is bright. The size of Pycon certainly attests to its continued popularity, and I think there are a lot of interesting ongoing developments. We have a number of implementations of Python, and ones like PyPy show constant improvement in speed, compatibility, and innovation. I’m excited to hear about some of the work regarding JITs, optional static typing, and other performance and multi-core work going on in the community.

I’m very happy that Python 3 adoption is strong and growing. It’s no longer the case that we have to convince people to support it, but it’s more like a known bug if you *don’t*. The notable exceptions are dwindling and we’re really in the long-tail of porting to Python 3. I’ve been using it almost exclusively for many years now, and don’t miss Python 2 at all.

Is there anything else you’d like to say?

At the time of this writing, Pycon 2016 is exactly one month away, and my colleague Larry Hastings and I are once again chairing the Language Summit. Every year around this time I get so fired up about not just the amazing things happening *in* Python, and not just the incredible things people are doing *with* Python. More than anything, I can’t wait to once again hobnob with the most incredible open source community in the world. We had 20 people at the first Python workshop back in 1994, and I’ve heard that Pycon this year will host about 3000 Python enthusiasts. There’s nothing in my technical career that can compare with being in a conference center with so many amazing people, attending inspiring and mind blowing talks, capped off with 4 days of sprints with friends and co-developers. I can’t wait!