Sponsored Link •
Frank Sommers: How do you decide what goes into the standard library? If I have a suggestion and decide to develop my own library, what's the decision process?
Guido van Rossum: Python is a language, but it's also a community. The community works in a certain way that seems to affect how the language evolves, like the decision on what does and does not go into the standard library. I used to accept contributions from almost anybody, as long as I thought they had a certain cool factor.
Bill Venners: The contribution was cool or the person making the contribution was cool?
Guido van Rossum: The contribution. I usually didn't know the people. Until 1994, I had hardly met any Python person outside the Netherlands face to face. The majority of users were in the US by then. No, I've always tried to judge contributions by merit and not by personalities.
In the early days I was fairly quick to adopt new ideas, and then I realized the community was growing and that meant more and more contributions. I had to be more selective. My first step was always saying no. Then, if people didn't take no for an answer, I would ask for arguments. Why do you think this is useful not just for you but for a large number of Python users?
If you are writing one particular approach for a popular application area, but there are lots of different ways of doing it, I won't put your particular way in the standard library if I can help it. But if there's one obvious way, clearly one best approach, I'm much more likely to put it into the standard library.
Application APIs are usually less likely to end up in the standard library than APIs that support many different application areas. At some point I think I made the mistake of including too much multimedia stuff. Some of the multimedia APIs are now withering away, because I lost interest in multimedia and because they're no longer relevant to what people are doing with multimedia now. There's no MP3 support, for example, but there's some support for old-style audio files that are probably not particularly useful anymore.
On the other hand, the standard library's Internet protocols, for example, are useful for many people. We also have a small collection of useful mathematical algorithms that aren't implemented by our basic data types. For example, if you have a sorted array, you can do a binary search or a binary insert into that array.
On occasion, a large group of users in a particular area will suddenly vocalize what they feel we must support, because it's going to be the next buzzword. Or maybe it's an application area where Python is going to be really useful because the area involves a lot of tinkering and experimenting and prototyping before you get it right. A big example is XML.
Python has a lot of XML support, because at some point a lobby of people said XML is going to be big, and Python is such a good language for dealing with XML. They asked for standard XML support in Python's standard library, because they didn't want to depend on a third party. So I suggested they create a third-party XML support library for Python. It matured through several revisions of user testing, feedback, and improvement, and then became part of the standard library. And that is still growing. There are still some parts of XML that Python doesn't support, but there's third-party support that will eventually make its way into the standard library.
Come back Monday, February 24 for the first installment of a conversation with Pragmatic Programmers Dave Thomas and Andy Hunt. If you'd like to receive a brief weekly email announcing new articles at Artima.com, please subscribe to the Artima Newsletter.
Python.org, the Python Language Website:
Introductory Material on Python:
Python FAQ Wizard:
Guido van Rossum's home page:
Other Guido van Rossum Interviews: