Podcast

039 - The history of Python

July 28, 2020

It's estimated that 8.2 million developers use Python. That's almost the population of Switzerland, and it's getting more popular by the day. Where did this language come from? Why is it so popular? Enjoy this deep dive into Python’s fascinating 29-year history.


If you enjoy this episode, please consider leaving a review on Apple Podcasts or wherever you listen.

Please send any questions or comments to [email protected].

Transcript

Hello, and welcome to All Hands on Tech, where today's leaders talk tomorrow's technologies. I'm Jeremy Morgan.

It's estimated that 8.2 million developers use Python. That's almost the population of Switzerland, and it's getting more popular by the day. Where did this language come from, and why is it so popular? That's what we'll be talking about today, so join me for The History of Python. 

I'd like to share with you a few guiding principles for designing software. Beautiful is better than ugly. Explicit is better than implicit. Simple is better than complex, but complex is better than complicated. Flat is better than nested. Sparse is better than dense. Readability counts. Special cases aren't special enough to break the rules, although practicality beats purity. Errors should never pass silently, unless explicitly silenced. In the face of ambiguity, refuse the temptation to guess. There should be one--and preferably only one--obvious way to do it. Although that may not be obvious at first unless you're Dutch. Now is better than never. Although never is often better than right now. If the implementation is hard to explain, it's a bad idea. If the implementation is easy to explain, it may be a good idea. And namespaces are one honking great idea--let's do more of those. This is what's known as the Zen of Python. Tim Peters wrote this set of principles way back in 1999, and those involved with maintaining Python still try to adhere to them. It's an impressive effort. When you develop enough in Python, you'll see these principles at work to this day.

But where did this language come from? Let's go back to December 1989, to Centrum Wiskunde & Informatica, or CWI, in Amsterdam. CWI is a research institute for math and computer science. A Dutch programmer named Guido van Rossum was looking for a hobby programming project to keep him busy over the Christmas break. He decided to create an interpreter for a new scripting language that had been on his mind for a while. It's based off of ABC, but something that would appeal to Unix and C hackers. 

So let's step back a little.  What is ABC? ABC is a general-purpose programming language and invented at CWI. It's a high-language similar to BASIC or Pascal. It was never meant for high-performance work or anything like that. It was used for teaching programming and prototyping. It was high level, and the code read like plain English, the perfect solution for someone teaching new programmers how loops, logic, and data works. You could also use it to whip up a quick application to see if it solves your problem, and then build that application later in C or something faster. Does this sound a lot like Python? Van Rossum worked on the ABC project for several years earlier, and it had a major influence on Python. Guido was quoted as saying, "I try to mention ABC's influence because I'm indebted to everything I learned during that project and the people who worked on it."

So on that fateful Christmas break back in 1989, he started working on his new scripting language. He named it Python because he was a big fan of Monty Python's Flying Circus. I mean, who isn't? So Guido worked on Python for a while, and he started developing this interpreted language. And in February, 1991 he published the code to alt.sources. Now alt.sources was a USENET newsgroup, which was somewhat similar to a mailing list. Newsgroups were a repository of messages like forums, where people would have conversations and share things. Alt.sources was a place where people shared their source code with each other. It was an early method of open-source development. Now at the time, newsgroups were the hot places to share open-source software. In fact, later that year, a college student about 500 miles away would be announcing a cool operating system he's working on. That operating system was Linux. The two projects later would go together like peanut butter & jelly. 

So version 0.9.0 was published and open to the world. Python was an interpreted language, meaning you write the text code to a file, and a parser, or interpreter, would read that file line by line and turn that code into instructions for the computer. By the time it was released in 1991, Python was pretty powerful. It contained classes with inheritance, exception handling, functions, and more. It had the same data types as ABC, fairly primitive but workable. Now ABC was a language developed to teach beginners how to write software. It's intended to easy to learn so that more people can learn it. Now this value was carried over to Python as well. The idea of making computing more accessible to everyone is a core value for van Rossum, and it's what motivates him through is career, as we'll see. 

So what problem was Python solving exactly? At the time, Guido developed Python for the Amoeba distributed computing system. If you wanted to develop software for Amoeba, you would either have to use C or the Unix shell. Writing code in C on this platform was complex and had plenty of restrictions. Guido wanted to sit down and build an application without worrying about hardware, memory management, or other complexities. He's quoted as saying, "Why don't I create my own language, stealing my ideas from ABC but reducing the project size from something that took 3 years to complete to something I can do on my own as a skunkworks project in 3 months. And thus, Python was born." 

Now it really did start out as just a fun project. Guido would often work on it in his spare time or while watching TV. "Programming is fun for me," he says. It was strikingly similar to Python code today. And some of these early programs might even still run with modern interpreters. While it was mostly a just-for-fun type project for him, his colleagues started using the language seriously. And in the early days, Guido didn't have high hopes that the language would really take off. Before the internet explosion, getting people to use a new programming language was quite a feat, and Guido had spent years in the 1980s traveling and promoting ABC by giving out magnetic tapes. It never really took off, and Guido didn't expect much from Python. While getting Python from USENET required an overnight download and complex setup, it was still easier than going door to door with magnetic tapes. Adoption started to grow. As it turns out, people started using Python for the same reason it was invented. It was far easier to develop than C, C++, Perl, or other languages at the time, and it was a language built for fun that was also fun to use. It was a hit.

Here's what Pluralsight Python author Douglas Starnes has to say about Python. "You can become dangerous in a weekend and useful in a week. Two thing that I heard about Python that kind of stuck with me, one is that it's close to the metal, meaning that you can, even though it's an interpreted language, there are ways to get very good performance out of Python by binding Python to native libraries. But the other one is more relevant to what we're talking about, is I can keep it in my head. In other words, I don't have to keep my nose in the documentation just in order to remember the syntax of certain things. Because it's very clean, very simple syntax. So the ease with which you can pick up the language is also a driving factor. But definitely, the very rich support that the Python community provides across many, many different disciplines is certainly a driving factor upon the adoption rate. 

In 1994, Python reached version 1.0. At this time, Python included lambda, map, filter, and reduce. These were added by a Lisp programmer who wanted them included in the language. Now an interesting side note, today Python is used heavily in the scientific community. AI, machine learning, and other sciences use it everywhere. Michael McLay could see the writing on the wall early on. He worked for the National Bureau of Standards, which is now the National Institute for Standards and Technology, or NIST. He discovered Python in 1994 and was very interested in using Python for scientific use. He felt many scientists were great at research and data but not necessarily great at coding, and Python was the solution to that problem. 

Now he wanted to get Python adopted at the bureau, so he invited Guido van Rossum to spend a couple months as a guest researcher. While at NIST, Guido met Bob Kahn, who helped develop the TCP/IP protocol, and that would change everything. This led to a job offer to work at the Corporation for National Research Initiatives, or CNRI. This was a nonprofit research group in Virginia. Now being pressured by CWI to complete a doctorate program, Guido was already considering his future. He wanted to spend more time on Python, and this was his chance. He took the job. Van Rossum is quoted as saying, "The prospect of having to switch to a PhD track at my age, I was 35 or so, didn't really appeal to me. earlier, also, as a result of Python, some other prospects had come my way where, after a bunch of phone calls and thinking, I had decided not to go for it. But here, I liked the people, I liked what they were offering me, the project, and I went for it." Their research was heavily network oriented, so this influenced many of the networking components that are still present in Python. He also met several people who ended up becoming core contributors to Python. Together they innovated on Python itself and created python.org, as well as a CVS server for Python and a set of mailing lists. These things all helped development go faster and move Python forward to the end of the millennium.

By this time, Python was gaining a following. Perl was considered a competitor to Python in the scripted language arena. At the time, the web was starting to take off, and Perl CGI scripts were basically the only way to make web pages interactive. This meant lots of adoption for Perl, while Python was still considered a toy language by many. While at CNRI, Guido van Rossum launched the Computer Programming for Everybody initiative. This was a DARPA project to teach basic programming literacy to anyone who wanted to get into programming. In the proposal it says, "What will happen if users can program their own computer? We're looking forward to a future where every computer user will be able to 'open the hood' of their computer and make improvements to the applications inside. We believe that this will eventually change the nature of software and software development tools fundamentally." 

Now the plan had three components: develop a new computing curriculum suitable for high school and college students; create better, easier-to-use tools for program development and analysis; and build a user community around all of the above, encouraging feedback and self-help. And of course, Python was at the center of this initiative. The goal was to create a solid programming curriculum and a very user-friendly environment to do so. Eventually, when critical contributors to the project, including van Rossum himself, left CNRI, funding was scarce, and the project became inactive in 2007. But the spirit of bringing programming power to the non-programmer lived on in Python. 

In the 90s, there were a few languages attempting to be the go-to language for easy development. Perl, as we mentioned earlier, was in the top spot. Tcl/Tk was also close. And Python was arguably third place. Now Perl was the language of choice for CGI, but it wasn't the only one. Python was also used for web applications in the 90s. In 1995, a company named Zope was established, and they specialized in developing a classified advertisement engine for the internet. They created the Principia web application server, and in 1998, they released it as the Zope framework. It was open source and available for download. In many ways, Zope was ahead of its time. It was a web application server that delivered rich functionality to websites. It was loaded with features and included everything you needed for rich internet applications. Rather than files stored on a server and pushed out, which was how most web servers worked, it used an object model. It pulled these objects from the database to create dynamic web pages. It was written in, you guessed it, Python. This was one of the major drivers for Python in the early days, and some argue it's what put it on the map. The company was led by Python developers, and in 2000, Guido van Rossum joined the Zope Corporation.

By this time, Python had really grown into something big. Around this time, van Rossum was given the title benevolent dictator for life. He was the inventor of the language and controlled its development. This is pretty common with programming languages, when the original developer guides the flow of development and makes key decisions for the language. Now ironically, van Rossum isn't much of a dictator. He's well known to this day as being open to suggestions and very balanced about the direction of the language. While others in this position might be known for scalding criticisms, curse-filled emails, and stubborn defiance, van Rossum is known for being a generally nice guy and very open. While he certainly has opinions about the direction and fights for them, he's open minded and encourages suggestions and changes from the community. This sort of openness could've contributed to the explosion in popularity that would come later.

The year 2000 was a busy year for Python. The Python core development team moved to BeOpen.com and formed the PythonLabs team. CNRI requested a version 1.6 be released to share the work up to the point before the team left CNRI. There were some problems with the licensing. This new license with CNRI was governed by the state of Virginia. The Free Software Foundation, or FSF, claimed that it was incompatible with the GNU General Public License. Eventually, BeOpen, CNRI, and FSF negotiated changes to make it GPL compatible. Guido van Rossum was awarded the 2001 Free Software Foundation Award for the Advancement of Free Software for changing this license. In October of the year 2000, Python 2.0 was released. This was a major release for Python, but it was very similar to Python 1.6.1, as there wasn't much time between the releases. Some cool things in this release were list comprehensions and a garbage collector. Now 2.0 would be the only release from the BeOpen team. Shortly after this release, Guido and the Python team moved to Digital Creations and worked on a new license for the language. 

And by this time, things were moving quickly for Python, and the community was beginning to grow. In 2001, the Python Software Foundation was created. It's an American nonprofit organization that's devoted to the Python language. The mission of the foundation is to develop and maintain Python, as well as foster the community around it. It's also in charge of the Python conference, PyCon. PyCon is held in 40 countries, and it was one of the first languages to develop and adhere to a code of conduct, something that's thankfully common today. PyCon also runs in conjunction with groups such as PyLadies and Django Girls. 

With the Python Software Foundation came a new license, the Python Software Foundation License, or PSFL. The PSFL is a BSD-style license, which is fully compatible with the GNU General Public License. It was modeled after the Apache Software Foundation license. With the formation of the foundation and the new license, Python 2.1 was released. This started a new era for Python, and it would kick off massive growth throughout the early 2000s.

Python 2 was the version that really gained steam for the language. It grew wildly in the system sector, as programmers could find creative ways to automate their processes. Web development flourished as well. Frameworks like Jinja, Flask, and Django popped up and developed big communities almost immediately. 

"I always tell people Django is absolutely fantastic if Django will do what you need. And actually, the support for doing things besides your typical forms over data information delivery type of applications has improved, but I was already entrenched with Flask. So I use Flask most of the time. Flask is a micro-framework, so it kind of stays out of your way. Whereas Django is rather prescriptive and makes some assumptions for you. Flask more or less stays out of your way."

When the 2000s began, Perl, PHP, and ASP dominated the dynamic web market. Sure, Python was making waves with Zope, but it didn't have the mass adoption that the others did. But as the years went on, it quickly gained popularity in the web field. Python Pluralsight author, Piotr Gaczkowski:

"At that time, I was also writing articles for a website, basically. There were quite a few people, but the CMS that we were using required HTML for formatting, and for me, HTML was fine. But for most of the other editors, it was like something, you know, an alien language, basically. So I decided to write a rich text editor in Python that people could use to input the text they wanted. And on the output, they would get the HTML formatting that the platform allowed because, of course, it didn't allow the full spectrum of HTML text. So I was thinking, okay, I have the idea for a project. What should I use for it? And I decided, yeah, this Python thing looked really cool. I think I'll start with that. So I just started looking into different resources on Python, on how to approach it, how to write user interfaces in it, and, yeah, that was my first project. I really liked Python for that, and it basically stuck with me ever since."

By 2010, there were first more competitors for dynamic websites. It would take three more podcasts to list them all. But Python-based frameworks were definitely in the top 10. Python has really taken off in the mid-2000s. For example, on the TIOBE index, in the year 2000, Python was the 20th most used programming language, a respectable position, for sure. But by 2005, it was number 6, a significant jump. It's currently number 3, right behind Java and C. It's in the TIOBE hall of fame for the "Programming Language of the Year" in 2007, 2010, and 2018. 

In December of 2008, Python 3.0 was released. Now this was a big release for Python. It was designed to rectify many of the perceived flaws in the language. Python 3 was not compatible with Python 2, creating a lot of tension for developers. There were certainly two camps when it came to developing in Python. You were either writing it for Python 2 or writing something for Python 3. The guiding principle of Python 3 was "reduce feature duplication by removing the old ways of doing things." 

In 2005, Guido van Rossum went to work for Google. He created a code review tool named Mondrian and worked on the Google App Engine, which runs Python programs in the cloud. Python was looking to the future. 

Many startups were using Python for their projects in the 2000s. The ease of use, rapid development, and low cost to host it made it very attractive to scrappy, low-budget operations. As the tech startup craze took off, so did Python. But it didn't do quite as well in the enterprise. Trusted solutions like ASP.NET and Java kind of ruled that arena. Even PHP made some inroads in the enterprise development, but Python wasn't much of a consideration. That changed in the late 2000s. An MIT student named Drew Houston forgot his USB flash drive for his class one day. He started to think about a better solution for sharing files. File services at that time were plagued with problems with latency, security, and usability issues. Houston started a company named Evenflow back in 2007 with a single product named Dropbox. Arash Ferdowski viewed a demo video for Dropbox and was so impressed, he reached out to Houston and they formed a partnership. Dropbox software enabled people to create a folder on their computer that's automatically uploaded to a service in the cloud, and it's automatically synced to all the devices that the user has installed Dropbox on. The company grew fast. They reached a million users by April of 2009. By the end of 2009, they had 3 million users. 

Dropbox was written in Python. After seeing Python scale so well, it paved the way for people to start considering it for their enterprise business. Dropbox soon became a case study for enterprise-grade Python. An interesting note here. Dropbox was originally written in Python 2. In 2013, Guido van Rossum joined Dropbox, where he was responsible for converting the software at the company to Python 3. He worked for Dropbox until his retirement. 

A lot of things happened for tech in the 2000s. Social media exploded. Web applications abandoned the Perl/CGI script model and became real applications. These social media had data and lots of it. Python quickly became the language of choice for accessing that data, especially in the startup world. During the financial crisis of 2008, automation took over the financial world. Financial institutions began looking at data to spot patterns, make decisions, and manage operations. There was an intense focus on reducing risk. These companies had plenty of data but no great way to access it. A few projects popped up to help, such as pandas. This feature performed quantitative analysis on financial data using Python. Other packages such as NumPy, scikit, and Matplotlib flourished, and Python was flourishing right alongside it. Where previously statisticians and analysts used R for these sorts of things, they found Python to be much more palatable for those folks without a heavy development background. Python soon became the top choice for data science, which leads us to where we are today. 

Python is now the leading choice for languages in data science. Tools like TensorFlow make visualization and machine learning accessible to anyone. From about 2010 until now, it's the go-to language for data science. And there's another big driver for Python in the 2010s, the boot camps. At its roots dating back to the early 90s, Python is a learning language. During the mid-2010s, web development exploded, as did boot camps. And what is the first language taught in many of these boot camp programs? Python. High schools and colleges all around the world began teaching coding as a core skill, and much of that was Python. It's just so easy to learn. Now if you want to become a full-stack developer, you need to know how to develop front-end software, as well as back end. Instructional programs have found that the transition from JavaScript to Python is very smooth, even though the languages are different. So if you're a front-end developer working on JavaScript or one of the big web frameworks, you interact with an API. You may know JavaScript inside and out, as well as CSS, HTML5, etc., but creating a back end for these applications can seem pretty daunting until you give Python a try. Frameworks such as Flask and Django offer web-ready solutions for developers who want to build more back-end software and create powerful APIs to interact with. 

In 2015, Python 3.5 was released. From this time up till now, there have been many feature enhancements, and many issues are being fixed. Users are now expecting better performance from Python, so an intense focus on things like latency and concurrent processing is happening now. Just-in-time compilers like PyPy help improve Python's performance.

In October of 2019, Guido van Rossum officially retired. He also stepped down as the benevolent dictator for life for Python. This was spurred by infighting within the Python community, specifically his disagreements about introducing assignment expressions to Python, PEP 572. Van Rossum faced great criticism over this move. He's quoted as saying, "It wasn't exactly a revolt, but I felt like I didn't have the trust of enough of the core developer community to keep going." There's also a desire to scale the language development itself, and his understanding that it's grown too large for a single person to make all the decisions. He's quoted as saying, "It's probably also the fact that the Python community is so much larger. It's harder to reach any form of consensus, of course, because there's always fringe dissidents, no matter which way you decide." However, Guido van Rossum is still heavily involved with Python. The core developers of Python have created a steering council to make decisions about the language, and van Rossum was voted as one of the members. The council was formed around the idea that Python is so large at this point, and the community is so large that it may be too much to rest on one person's shoulders. 

From its humbled beginnings as a project over Christmas break to one of the most popular languages in the world is quite a journey. Many of the core principles behind Python are still present in the language and define its path moving forward. While Python is enjoying increased popularity and has taken over the data science field, there are challenges ahead. Mobile devices are far more common than PCs these days, and Python doesn't really have much representation there. Multi-core processors are also incredibly common, and Python needs to adapt to that and spread work across cores better. Python is seeing a much more diverse user base as it becomes sort of a glue language to other technologies. Programmers are pushing the boundaries of it every day, but the future looks pretty bright.

"So I would say that currently Python is mostly strong at the back end of various web solutions because usually the artificial intelligence projects are also the back end for some web application that gathers the data, processes it, and serves it back. Also the glue code, not all of the time, of course, but usually is just to handle the deployment of the web stuff or make sure that this web stuff runs properly. So currently, I would say that a lot of people may think that Python is back end and that's all, which is not quite accurate. Python can do much more. But still, I think the focus is mostly here."

We'll end this with a quote from Tim Peters. "I've seen Python criticized as 'ugly' precisely because it doesn't have a trick-based view of the world. In many ways, it's a dull language, borrowing solid old concepts from many other languages and styles: boring syntax, unsurprising semantics, a few automatic coercions, etc. But that's one of the things I like about it." -Tim Peters

Thank you for listening to this edition of All Hands on Tech. You can find transcripts and more at pluralsight.com/podcast.