PyDev of the Week: Russell Keith-Magee

This week we welcome Russell Keith-Magee as our PyDev of the Week! Russell is a core Django developer and former president of the Django software Foundation. He has been a contributor to the open source community for quite some time. You can see some of his contributions over on Github. He is also the founder of the Beeware project, which is a collection of projects that can be used to help develop, debug and launch Python software. Let’s take a few minutes to get to know Russell better!

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

I’ve been tinkering with computers since I was 7, when my father bought one of the first Commodore 64s in Australia. I studied Physics as an undergraduate at university, but then transferred to the Computer Science department to complete my Honours degree and a PhD. While I was completing my PhD, my supervisor and I came to a mutual understanding that my future did not lie in research, and so I headed out into the world and have been working at various tech startups ever since.

I spend a lot of my spare time tinkering on computing stuff, but I’m also a huge LEGO fan, and I do a bit of photography as well. A relaxing weekend is binge watching a bunch of TV with a good toasted cheese sandwich and bottle of Speyside single malt by my side.

Why did you start using Python?

Originally (this was back in the Python 1.5 days), Python was just a system integration language for me. I started using RedHat quite early on, and many of RedHat’s tools were written in Python. Initially, coming from a C background, I had a fairly visceral dislike of the indentation-based syntax. But over time, I came to appreciate that it was really just enforcing good code style by making “bad” style invalid syntax.

Around the mid 2000s, I was starting to tinker around with the web, and I found Django – at which point, I pretty much pivoted to using Python full time.

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

In approximate order of learning: BASIC, C, C++, Pascal, FORTRAN, x86 Assembler, Java, Bash, Prolog, Common Lisp, Scheme, Python, JavaScript, Ruby, Objective C. I’ve tinkered with a bunch of others, but never to a level that I’d consider myself adept.

Python is far and away my favourite language. I have a soft spot for C as the UR-tongue of most modern languages – although I’d very much like it to be replaced as the “default systems language” by something with better fundamental protection against basic memory and security issues. I’ve also got some respect for Java – there are some serious quirks in the language itself (which they’ve been slowly ironing out over time) and the legal situation around the language (which Oracle been slowly making worse), but the virtual machine architecture is really elegant.

Javascript is the language I love to hate. There’s so much *wrong* with it as a language at a fundamental level – but a lot that is very, very elegant as well. But, whatever its flaws may be, it can’t be avoided, because it’s essentially the *only* language that works on the web. Thankfully, the last couple of years have seen a bunch of improvements that have made Javascript a lot more bearable, and there is some hope on the horizon that we might be able to use other languages in the browser.

What projects are you working on now?

Most of my personal project time is currently focussed on BeeWare – a collection of tools and libraries for building native user interfaces using Python. This includes:

  • VOC, used to compile Python to Java bytecode, so it can run on Android
  • Batavia, a Python virtual machine implementation written in Javascript, so you can run Python in the browser
  • Toga, a cross platform user interface toolkit that supports deployment to mobile, desktop, web, watches, and more

BeeWare originally started as a project to write a debugger. Eventually I’m hoping to get back to that…

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

In the standard library: I’m a big fan of ctypes. The ease with which it allows integration with native library code borders on magical.

Outside the standard library: I’d be hard pressed to pick a single library. Django is an obvious candidate, not because it’s especially exciting, but because it’s the font from which so much other goodness (and so much of my career success) flows. Requests is also a regular pip install, and has similar levels of “just works” magic baked in.

If I had to pick a hidden gem of PyPI – I’d say “check-manifest”. It’s a tool you use when you’re packaging code for release to PyPI. It inspects your source control to see what is checked in (and what isn’t); and compares this against your definition to make sure that the source distribution generated when you run `python sdist` won’t be accidentally missing any files. As someone who produces a lot of PyPI packages, and has produced more than one point release with the release note “Added files missing from last release”, it’s an invaluable tool.

Where do you see Python going as a programming language?

Python has proven itself to be a very capable language – suitable for serious computing applications like running major high-traffic websites, but also sufficiently accessible that you can teach the fundamentals in a day (for example, in DjangoGirls workshop), and accessible to non-computing domain experts. It’s a major language in the scientific and education communities, which has resulted in a huge body of knowledge and expertise encoded in Python libraries. This sort of codebase takes a long time to develop. While the computing community is always looking for the new shiny thing (Is it Node? Is it Go? Is it Rust? Is it Elm?) non-computing communities are a lot more conservative, and a lot less likely to abandon solutions that work really well for them.

That’s why I’m very bullish on the future of Python. It’s no longer the new, cool player – it’s a stable, reliable workhorse. To echo the language of the question – Python isn’t *going* anywhere. I don’t mean that to suggest the language is stagnant – far from it. It’s deeply entrenched in a number of subject domains, and I think we’re only just seeing the start of the potential applications for its use.

I’m hoping that the work I’m doing in mobile user interfaces will open up a whole new world of possibilities, enabling domain experts outside computing to build mobile apps that matter to them. We need to make sure we’re skating to where the puck is going, not where it is right now – which means paying attention to new computing platforms, new UI paradigms, and so on – the ways everyone is using modern computing devices, not just the ways that computing people have historically used their devices.

What is your take on the current market for Python programmers?

This one is difficult for me to answer. I get the impression that the market is booming in the US; but that’s not something I’m seeing locally in Perth. That said – Perth is a very conservative tech market, with no real startup scene. I’m eternally grateful for the fact that the internet allows me to work with and for anyone on the planet. I’m certainly not afraid of my Python skills going to waste any time soon, even if I *do* remain in Perth.

Is there anything else you’d like to say?

Firstly – some advice: Never, *ever*, play leapfrog with a unicorn.

But seriously…

As much as I love the Python community and FLOSS in general, as a community, I think we have a some big issues that we need to deal with – many of which stem from our community’s relationship with money.

I’ve been actively involved in the international Python FLOSS community for over 10 years, and in that time, I’ve seen countless people burn out – sometimes spectacularly – over the pressures that FLOSS development places on individuals. Free Software advocates are keen on saying “free as in freedom, not free as in beer”. But the reality is that many FLOSS projects turn into “Free as in puppy” – something you happily adopt when they’re cute and fluffy, but 5 years later, they’re a hulking behemoth who needs to be walked every day, rain, hail or shine; who sometimes poops on the hallway rug; and who you have to either take on holiday with you, or find someone to babysit. The “Freedom above all else” mantra is a serious blind spot that is hiding some serious structural and social issues in our community.

As Nadia Eghbal’s “Road’s and Bridges” report pointed out last year, we are an industry that is predicated on availability of key pieces of infrastructure, but we don’t have systemic approaches in place to provide critical maintenance for that infrastructure. And as a result, we sometimes see some spectacular failures in that infrastructure. Heartbleed is the obvious example to point at here, but there are countless others.

We’ve been stumbling along relying on a constant stream of enthusiastic volunteers, selling the dream of the “exposure” you get for maintaining FLOSS projects. But if we want to stop causing irreparable damage to members of our community, we’re going to need to find a way to collectively fund the research, development and maintenance of the tools that we rely on as the foundation of our industry.

The money exists – there are companies that have made *millions* on a foundation of FLOSS. What is lacking is a way for these companies to spend money on their infrastructure in a way that is consistent with their accounting requirements. If we can find a way to direct a tiny proportion of these profits back into FLOSS development, we would have the resources to tackle any number of issues facing FLOSS communities at present.

FLOSS has shown it’s huge potential from a purely technical perspective. But that technical success can’t be at the expense of the people who produce it. I’m eager to find a way to break this burnout cycle, and get FLOSS the resources it needs to survive and thrive. It’s a difficult conversation – but it’s one I think that we have to have.

Thanks so much for doing the interview!