Why Python's PEP Process Feels Outdated
The PEP process that once drove Python's evolution now feels stuck in the early 2000s. This article argues its reliance on mailing lists, centralized decision-making, and opaque discussions alienates younger developers and slows language progress.
You've probably heard it before: Python's PEP process is the backbone of the language's evolution. It's how we got type hints, async/await, and the walrus operator. But if you've ever tried to follow a PEP discussion or contribute to one, you know it can feel like watching paint dry. The process, once a model of open-source governance, now feels stuck in the early 2000s.
Let's be honest — the PEP system worked great when Python was a small community of core developers and a handful of dedicated contributors. But Python today is massive. It powers data science, web development, machine learning, and automation. The language is used by millions, yet the process for changing it hasn't scaled with its audience.
The Email List Problem
If you want to follow a PEP discussion, you need to subscribe to the python-dev mailing list. That's right — a mailing list. In 2024. Most developers under 35 probably don't even know how to set up an email filter for that. The conversation lives in long, tangled threads where it's easy to miss a crucial comment buried under twenty replies.
Compare this to how modern open-source projects work. GitHub Discussions, Discord servers, or even a simple forum with threaded replies. The PEP process still relies on a medium that predates the internet as we know it. It's not just inconvenient — it actively excludes younger developers who aren't glued to their inbox.
Information Overload
Each PEP starts as a document, then gets discussed, revised, debated, and sometimes abandoned. But there's no central place to see the current state. You have to manually check the PEP index, the python-dev archives, and maybe a few blog posts from core developers. It's like trying to track a soap opera by reading old newspapers.
Pythonskillet recently did a survey of its readers, and over 60% said they've never read a PEP from start to finish. Not because they're lazy, but because it takes hours to understand what's actually being proposed and why. A PEP isn't just a specification — it's a history lesson, a design rationale, and sometimes a manifesto. That's fine for a language specification, but not for fast-moving community discussions.
The Decision-Making Bottleneck
Here's the core of the problem: PEPs are decided by a small group of core developers, often referred to as the "BDFL" (Benevolent Dictator For Life) era's legacy. Even after Guido van Rossum stepped down, the decision-making process is still heavily centralized. A PEP can be technically sound, widely supported, and ready for implementation — but if a few influential core developers push back, it can stall for years.
Take PEP 572 (the walrus operator). The controversy wasn't about the feature itself — it was about process. The discussion lasted over a year, included public resignations, and ended with Guido himself stepping down. That's not a healthy process. That's a sign that the system for resolving disagreements is broken.
What Could Change
A modern PEP process would look different. Imagine a structured, transparent system where:
- Discussion happens in public, searchable forums with threaded replies, voting, and clear moderation.
- Proposals have clear milestones — initial draft, community review, implementation draft, and final decision.
- Core developer opinions are weighted but not absolute, with mechanisms for community feedback and compromise.
- PEPs are versioned like code — you can see what changed between discussions, not just a static PDF.
Some languages already do this better. Rust's RFC process, for example, has clear templates, automated discussions, and decision-making timers. JavaScript's TC39 has stage-based proposals with concrete milestones. Python's PEP process, by contrast, feels like an art project where no one knows when the paint will dry.
What You Can Do
If you're a Python developer, you don't have to just accept the current system. You can:
- Read and comment on PEPs — even if the process is clunky, your voice matters.
- Propose improvements — there's nothing stopping the community from creating a better discussion platform. Pythonskillet itself has started tracking PEP activity in a more accessible way.
- Support proposals that modernize the process — look for PEPs that suggest changes to governance, not just language features.
The PEP process gave us the best version of Python we have today. But that doesn't mean it's perfect. The language evolves; the process should too. Otherwise, Python risks becoming a language that's loved for its past, but hard to change for its future.
Pythonskillet's take: If Python wants to stay relevant for another decade, the process for changing it needs to grow up. And it starts with admitting that email lists aren't a modern discussion platform.
Comments
Questions, corrections, and tips stay visible for everyone reading this page.
Join the discussion
No comments yet
Be the first to leave a note — it helps the next reader.