Languages and formats
Python
Summary
Python is a general-purpose, interpreted programming language created by Guido van Rossum, who started it at CWI in Amsterdam in December 1989 and first released it on February 20, 1991. On the web it runs server-side code through frameworks such as Django (2005), Flask (2010) and FastAPI, connected to web servers by the WSGI and ASGI standards. Python 2 reached its end of life on January 1, 2020, and Python 3.15 was released on October 9, 2026.
What Python is
Python is a general-purpose programming language. Its own documentation describes it as an interpreted, interactive, object-oriented language with modules, exceptions and classes, which also supports procedural and functional styles of programming.1
Interpreted means a Python file can be run directly, without first being turned into a separate program file.2
The feature most people notice first is indentation. In Python, the spaces at the start of a line decide which statements belong together, where many other languages use braces.3 A block inside an if statement is simply the lines indented under it.
The name has nothing to do with snakes. When Guido van Rossum began writing the language he was reading the scripts of Monty Python’s Flying Circus, the BBC comedy series from the 1970s, and he wanted a name that was “short, unique, and slightly mysterious.”1
Much of Python’s reach comes from add-on packages. The Python Package Index, known as PyPI, is the public repository from which the pip tool installs them. As of October 22, 2026, PyPI lists 922,561 projects.4
On the web, Python is used for server-side code: the part of a site that runs on the server, reads a database and builds each page or API response before it is sent to the browser. It is a much smaller presence there than PHP. As of October 22, 2026, W3Techs finds Python on 1.1% of websites whose server-side language it can identify, against 69.3% for PHP, 8.1% for JavaScript, 7.1% for Ruby and 5.4% for Java.5 Among developers, its share is far larger. In Stack Overflow’s 2026 survey, 58.0% of respondents said they used Python, close behind JavaScript at 62.0%.6
Origins at CWI, 1989 to 2001
Van Rossum started Python in late December 1989 at CWI, a research institute in Amsterdam, and had a working version in the first months of 1990.7 He wanted a higher-level language for writing system administration tools for the institute’s Amoeba project.7
He had earlier worked on ABC, a language built by his group at CWI, and he credits it as “the key inspiration for Python.”7 Python’s own license history calls the language a successor to ABC.8
On February 20, 1991, he posted version 0.9.0 to alt.sources, a Usenet newsgroup for sharing source code.79 Version 1.0.0 followed on January 26, 1994.9
The project then moved several times with its author:
- 1995. Van Rossum continued the work at the Corporation for National Research Initiatives (CNRI) in Reston, Virginia, where he released several versions.8
- May 2000. He and the core team moved to BeOpen.com and formed the BeOpen PythonLabs team.8
- October 2000. PythonLabs moved to Digital Creations, the company that became Zope Corporation.8 Python 2.0 was released that same month, on October 16, 2000.9
On March 6, 2001, at the ninth Python Conference in Long Beach, California, van Rossum announced the Python Software Foundation (PSF), a nonprofit modeled on the Apache Software Foundation that would hold Python’s intellectual property.10 The PSF holds the copyright on Python 2.1 and newer.1 Python is released under the Python Software Foundation License Version 2, and every Python release has been open source.8
Python 2, Python 3 and the end of Python 2
Python 3.0 came out on December 3, 2008.9 Its release notes call it “the first ever intentionally backwards incompatible Python release,” which meant code written for Python 2 often would not run on it unchanged.11
Two changes affected almost every program:
- Print. The print statement became a print() function, so a line such as print “hello” had to become print(“hello”).11
- Text and bytes. Python 3 separates text from binary data. All text is Unicode and uses the str type, while raw data such as an encoded web request uses the bytes type, and the two cannot be mixed.11
The second change mattered most on the web, where every request and response arrives as bytes and has to be decoded into text.
Python 2 was maintained alongside Python 3 for more than 11 years. Python 2.7, the last 2.x version, was released on July 3, 2010.12 The core developers announced in 2008 that Python 2 would be retired in 2015, then extended that in 2014 to 2020.1312
Python 2 reached its end of life on January 1, 2020. From that day the core developers stopped improving it, including fixes for newly found security problems.13 A final release, 2.7.18, gathered the last fixes and came out on April 20, 2020.12
Web frameworks moved earlier. Django’s 1.11 series was the last to support Python 2.7, and Django 2.0, released on December 2, 2017, ran only on Python 3.14
Python on the web: from CGI to WSGI
The early web ran server programs through the Common Gateway Interface, or CGI, in which the web server starts a new program for each request. Python’s standard library gained a cgi module in 1995.15 It was later judged inefficient “because every incoming request is handled in a new process,” and Python 3.13 removed it from the standard library.1516
By the early 2000s Python had many web frameworks, ready-made sets of code for handling requests, pages and data. PEP 333, written by Phillip J. Eby and dated December 7, 2003, names Zope, Quixote, Webware and Twisted Web.17 A PEP, or Python Enhancement Proposal, is the design document in which changes to Python and its standards are proposed and recorded.18
PEP 333 described the problem this way: a developer’s choice of framework limited the choice of web servers, and the reverse. Java, by contrast, had a servlet API that let applications built with any Java framework run on any web server that supported the API.17
The answer was WSGI, the Web Server Gateway Interface: one agreed way for a server to hand a request to a Python application. In WSGI, an application is simply something the server can call with two arguments: a dictionary describing the request and a function for sending back the status and headers. The application then returns the body of the response.19
PEP 3333, dated September 26, 2010, updated WSGI to version 1.0.1 for Python 3. Its main change was to spell out where native strings and where bytes must be used.19 Applications that followed the original PEP 333 under Python 2 remained compliant.19
WSGI is why Python web code can be moved between servers. Django’s documentation explains that most web servers do not speak Python natively, so an interface is needed. It lists Gunicorn, uWSGI, Granian and Apache with mod_wsgi among the WSGI servers that can run a Django site.20 Such servers often run behind a front-end web server: Django’s deployment checklist uses Nginx in its example of rejecting requests for unknown host names before they reach Django.21
Django, Flask and FastAPI
Django
Django was built at a newspaper in Lawrence, Kansas. Its FAQ says World Online, the paper’s web operation, had to build complex web applications on newsroom deadlines, often with only hours from concept to launch, and decided in summer 2005 to release the software as open source.22 Simon Willison, who had spent a year at the Lawrence Journal-World, announced the release on his blog on July 17, 2005.23
The framework is named after Django Reinhardt, the jazz guitarist, and its FAQ gives the pronunciation as “JANG-oh,” with a silent D.22
Django 1.0 followed on September 3, 2008. In the announcement, Jacob Kaplan-Moss wrote that he and three colleagues had first released the code about three years earlier, and that roughly half of the code added since then came from people outside the core team.24
As of October 22, 2026, the newest version is Django 6.1.2, one of three security releases issued on October 6, 2026.2526 Version 5.2 is the current long-term support release, with security support until April 2028, and 6.2, planned for April 2027, is the next one.25
Flask
Flask began with a joke. For April 1, 2010, Armin Ronacher published a fake framework called “denied,” made by bundling the Werkzeug and Jinja2 libraries and simplejson into one file of 160 lines. His April 3 write-up reports that its screencast was downloaded more than 10,000 times.27 His site describes the joke as what later led to Flask.27
Flask 0.1 was released on April 16, 2010.28 Version 1.0 did not arrive until April 26, 2018, and 3.0 followed on September 30, 2023. The newest release as of October 22, 2026 is 3.1.3, dated February 18, 2026.28
Flask calls itself a microframework. Its documentation says “micro” means the core is kept “simple but extensible,” and that Flask leaves choices such as which database to use to the developer. It relies on Werkzeug for the WSGI layer and Jinja for page templates.29
FastAPI and the API era
Much Python web code now serves data rather than pages: an API (application programming interface) that returns JSON to a JavaScript front end or a mobile app. FastAPI describes itself as a framework “for building APIs with Python based on standard Python type hints,” built on Starlette for the web layer and Pydantic for data.30
Developer surveys show how the three compare. In Stack Overflow’s 2025 survey, 14.8% of all respondents used FastAPI, 14.4% used Flask and 12.6% used Django.31 For comparison, 48.7% used Node.js and 13.6% used WordPress in the same survey.31
Asynchronous Python and ASGI
WSGI was designed for one pattern: a request comes in and one response goes out. That does not fit long-lived connections such as WebSockets, which keep a channel open so a server can push live updates, chat messages or notifications to the browser.32
ASGI, the Asynchronous Server Gateway Interface, describes itself as “a spiritual successor to WSGI.” It lets an application receive and send many events over one connection, and an ASGI server can still run older WSGI applications through a wrapper.32 An ASGI application is written as an async function that receives a scope describing the connection, plus one function for receiving events and one for sending them.32
Django 3.0, released on December 2, 2019, began what its release notes describe as a gradual move toward full support for asynchronous code, starting with support for running as an ASGI application.33 As of October 2026 Django supports both interfaces. Its documentation calls WSGI the main standard but says it only supports synchronous code, and lists Daphne, Granian, Hypercorn and Uvicorn as ASGI servers.20
Python can also run in the browser itself. Pyodide is a port of CPython, the standard Python interpreter, to WebAssembly, a format that lets browsers run compiled code next to JavaScript.34
Governance and releases today
Guido van Rossum served as Python’s Benevolent Dictator for Life (BDFL) from the language’s start until July 2018, and all design authority ultimately came from him.3518 On July 12, 2018, after the long dispute over PEP 572, he wrote to the core developers that he was giving himself “a permanent vacation from being BDFL.”36
The core team replaced him with a committee. PEP 13, created on December 16, 2018, sets up a five-person steering council, with a new council elected after each feature release.35
Since PEP 602, written by Łukasz Langa in 2019, a new feature version of Python arrives every October. Each one gets five years of support. From Python 3.13 on, that means two years of bug fixes followed by three years of security fixes only; versions 3.9 to 3.12 had about 18 months of bug fixes.37 The status of each version as of October 21, 2026:38
| Version | First released | Status | End of support |
|---|---|---|---|
| 3.15 | October 9, 2026 | Bug fixes | October 2031 |
| 3.14 | October 7, 2025 | Bug fixes | October 2030 |
| 3.13 | October 7, 2024 | Security fixes only | October 2029 |
| 3.12 | October 2, 2023 | Security fixes only | October 2028 |
| 3.11 | October 24, 2022 | Security fixes only | October 2027 |
| 3.10 | October 4, 2021 | End of life | October 1, 2026 |
Recent versions have worked on Python’s best-known limit, the global interpreter lock (GIL), which lets only one thread run Python bytecode, the low-level instructions the interpreter executes, at a time.2 Python 3.13 added an experimental build with the GIL disabled, and Python 3.14 made that free-threaded build officially supported.1639
Python 3.15.1, released on October 21, 2026, was an expedited security release. It updated the bundled pip and certifi packages in response to the eMudhra and emSign certificate incident.40
Timeline
- Python 3.15.1 ships as an expedited security release40
- Python 3.15.0 is released38
- Python 2.7.18, the final Python 2 release, comes out12
- Python 2 reaches its end of life13
- Django 3.0 adds support for running as an ASGI application33
- Guido van Rossum steps down as BDFL36
- PEP 3333 updates WSGI for Python 319
- Flask 0.1 is released28
- Python 3.0 is released9
- Django is announced as open source23
- PEP 333 proposes WSGI17
- The Python Software Foundation is announced10
- Python 2.0 is released9
- Python 0.9.0 is posted to alt.sources7
- Guido van Rossum begins writing Python at CWI7
What it means for your website
Most small business sites never touch Python. Hosted builders run their own code, and WordPress is written in PHP. Python matters when a developer builds you a custom site or web app with Django, Flask or FastAPI, or when a site you inherit was built that way.
- Check that your hosting can run it. A Python site needs a WSGI or ASGI server such as Gunicorn or Uvicorn, not just a folder of files, and Django’s own development server is not meant for production.20 Ask the host before you sign up. Our web hosting definition and domains and hosting guide cover what to ask.
- Ask which Python version the site runs. Python 3.10 stopped getting security fixes on October 1, 2026, and 3.11 follows in October 2027.38 A site still on Python 2 has had no fixes of any kind since January 1, 2020.13
- Keep Django on a supported release. As of October 22, 2026, the supported versions are 6.1, 6.0 and the 5.2 long-term release.25 The October 6, 2026 security releases fixed four CVEs in those versions.26
- Turn debug mode off. Django’s checklist says debug must never be on in production, because it leaks excerpts of source code, local variables and settings. Running manage.py check –deploy catches some of these mistakes.21
- Update pip in existing environments. Python 3.15.1 shipped a newer pip and certifi after the eMudhra certificate incident, and its release notes advise upgrading pip and uv in existing virtual environments too.40 Our news report explains the incident.
A custom Python build gives full control but leaves you responsible for these updates. If you are weighing that against a builder or WordPress, see our guide to builder vs WordPress vs agency.
See also
References
- General Python FAQ. Python documentation, Python Software Foundation. accessed October 22, 2026.
- Glossary. Python documentation, Python Software Foundation. accessed October 22, 2026.
- Lexical analysis: Indentation. The Python Language Reference, Python Software Foundation. accessed October 22, 2026.
- PyPI: The Python Package Index. Python Software Foundation. 2026-10-22. accessed October 22, 2026.
- Usage statistics of server-side programming languages for websites. W3Techs. 2026-10-22. accessed October 22, 2026.
- 2026 Stack Overflow Developer Survey: Technology. Stack Overflow. 2026. accessed October 22, 2026.
- Personal History, part 1, CWI. Guido van Rossum, The History of Python. 2009-01. accessed October 22, 2026.
- History and License. Python documentation, Python Software Foundation. accessed October 22, 2026.
- A Brief Timeline of Python. Guido van Rossum, The History of Python. 2009-01-20. accessed October 22, 2026.
- Python Software Foundation launched. Python Software Foundation press release. 2001-03-06. accessed October 22, 2026.
- What's New In Python 3.0. Python documentation, Python Software Foundation. accessed October 22, 2026.
- PEP 373: Python 2.7 Release Schedule. Benjamin Peterson, Python Enhancement Proposals. 2008-11-03. accessed October 22, 2026.
- Sunsetting Python 2. Python Software Foundation. accessed October 22, 2026.
- Django 2.0 release notes. Django documentation, Django Software Foundation. 2017-12-02. accessed October 22, 2026.
- PEP 594: Removing dead batteries from the standard library. Christian Heimes and Brett Cannon, Python Enhancement Proposals. 2019-05-20. accessed October 22, 2026.
- What's New In Python 3.13. Python documentation, Python Software Foundation. accessed October 22, 2026.
- PEP 333: Python Web Server Gateway Interface v1.0. Phillip J. Eby, Python Enhancement Proposals. 2003-12-07. accessed October 22, 2026.
- PEP 1: PEP Purpose and Guidelines. Python Enhancement Proposals. accessed October 22, 2026.
- PEP 3333: Python Web Server Gateway Interface v1.0.1. Phillip J. Eby, Python Enhancement Proposals. 2010-09-26. accessed October 22, 2026.
- How to deploy Django. Django documentation, Django Software Foundation. accessed October 22, 2026.
- Deployment checklist. Django documentation, Django Software Foundation. accessed October 22, 2026.
- FAQ: General. Django documentation, Django Software Foundation. accessed October 22, 2026.
- Introducing Django. Simon Willison, Simon Willison's Weblog. 2005-07-17. accessed October 22, 2026.
- Django 1.0 released. Jacob Kaplan-Moss, Django Weblog. 2008-09-03. accessed October 22, 2026.
- Download Django. Django Software Foundation. accessed October 22, 2026.
- Django security releases issued: 6.1.2, 6.0.9, and 5.2.18. Sarah Boyce, Django Weblog. 2026-10-06. accessed October 22, 2026.
- April 1st Post Mortem. Armin Ronacher, lucumr.pocoo.org. 2010-04-03. accessed October 22, 2026.
- Changes. Flask documentation, Pallets. 2026-02-18. accessed October 22, 2026.
- Design Decisions in Flask. Flask documentation, Pallets. accessed October 22, 2026.
- FastAPI. fastapi.tiangolo.com. accessed October 22, 2026.
- 2025 Stack Overflow Developer Survey: Technology. Stack Overflow. 2025. accessed October 22, 2026.
- ASGI Documentation: Introduction. ASGI project. accessed October 22, 2026.
- Django 3.0 release notes. Django documentation, Django Software Foundation. 2019-12-02. accessed October 22, 2026.
- Pyodide. Pyodide project. accessed October 22, 2026.
- PEP 13: Python Language Governance. Python Enhancement Proposals. 2018-12-16. accessed October 22, 2026.
- Transfer of power. Guido van Rossum, python-committers mailing list. 2018-07-12. accessed October 22, 2026.
- PEP 602: Annual Release Cycle for Python. Łukasz Langa, Python Enhancement Proposals. 2019-06-04. accessed October 22, 2026.
- Download Python: Active Python releases. Python Software Foundation. 2026-10-21. accessed October 22, 2026.
- What's New In Python 3.14. Python documentation, Python Software Foundation. 2025-10-07. accessed October 22, 2026.
- Python 3.15.1. Python Software Foundation. 2026-10-21. accessed October 22, 2026.
Web Building Encyclopedia. First published October 22, 2026. Last reviewed October 22, 2026. Every fact on this page is linked to a source we opened. Spotted an error? Write to [email protected].