<!-- mobian-agent-page publisher="dailydev" canonical="https://daily.dev/posts/the-move-to-python-3-begins-ripvndnq9" -->

---
title: The Move to Python 3 Begins | daily.dev
description: EVE Online&#x27;s developer CCP (Fenris Creations) is beginning a multi-stage migration of its 2.4 million line codebase from Python 2.7 to Python 3, after running...
canonical: https://daily.dev/posts/the-move-to-python-3-begins-ripvndnq9
twitter:card: summary_large_image
twitter:site: @dailydotdev
og:type: website
og:site_name: daily.dev
og:title: The Move to Python 3 Begins | daily.dev
og:description: EVE Online&#x27;s developer CCP (Fenris Creations) is beginning a multi-stage migration of its 2.4 million line codebase from Python 2.7 to Python 3, after running...
og:url: https://daily.dev/posts/the-move-to-python-3-begins-ripvndnq9
og:image: https://api.daily.dev/og/posts/RIpVnDNQ9.png
og:image:alt: The Move to Python 3 Begins
og:image:width: 1200
og:image:height: 630
og:locale: en
---

> ## Documentation Index
> Fetch the complete documentation index at: https://daily.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# The Move to Python 3 Begins

**[Lobsters](https://daily.dev/sources/lobsters)** · 7 min read · 2 upvotes · 0 comments

## Summary

EVE Online's developer CCP (Fenris Creations) is beginning a multi-stage migration of its 2.4 million line codebase from Python 2.7 to Python 3, after running on Stackless Python 2.7 since 2010. Stage 1, already deployed, uses Python-Future (built on 2to3) to make code compatible with both versions, targeting mechanical syntax issues like old print statements, long literals, deprecated exception syntax, and the <> operator. Of ~20K files, 95.9% already compiled under both interpreters; about 3,300 blocking lines remained. Stage 2, the harder phase, will address roughly 20,000 lines that parse fine but behave differently (e.g., integer division), requiring human review since the numbers involved represent damage, ISK, or coordinates. The team points to EVE Frontier already running on modern Python 3 via the Carbon engine as proof the migration is achievable.

## Full article

daily.dev links to this article rather than hosting it. Read it at the original source: <https://www.eveonline.com/news/view/the-move-to-python-3-begins>

## Questions this post answers

### Why is EVE Online migrating from Python 2 to Python 3?

EVE Online's codebase has run on Stackless Python 2.7 since 2010, and staying on Python 2 increasingly limits performance gains, access to modern libraries, debuggers, and profilers, and developer productivity. Python 2.7 reached official end of life in 2020. EVE Frontier already runs the same Carbon engine on modern Python 3, proving the migration is achievable.

_Track how large legacy codebases plan Python 2 to 3 migrations on daily.dev._

### What tool is being used to migrate a Python 2.7 codebase to be compatible with both Python 2 and Python 3?

Python-Future is being used, a tool built on the same code-rewriting machinery (2to3) that Python itself shipped for this kind of migration. It applies automated fixers that each rewrite one obsolete pattern into a modern form accepted by both Python 2.7 and Python 3, forming the first of a multi-stage migration process.

_Developers planning similar migrations follow real-world tooling choices like this on daily.dev._

### What kinds of legacy syntax issues show up when scanning an old Python 2 codebase for Python 3 compatibility?

In a scan of EVE Online's 2.4 million line codebase, about 3,300 blocking lines were found, including roughly 1,500 old-style print statements, 800 long number literals like 123L, 600 exception clauses using deprecated syntax, and 50 uses of the archaic not-equal operator <>. Only 95.9% of ~20,000 files initially compiled under both Python 2.7 and Python 3.

_See how teams quantify and tackle Python 2 to 3 technical debt on daily.dev._

## Community take

How the wider developer community reacted, aggregated from 2 discussions and 27 comments across lobsters, hackernews (as of 2026-08-26).

**TL;DR:** Discussion focuses on the technical mechanics of the migration (Stackless/greenlets, the `<>` operator trivia, comparisons to Dropbox's and Google's Python 3 migrations) with a mix of amazement, mild mockery for still running Python 2.7 in 2026, and genuine curiosity about how the harder Stage 2 will be handled.

**Sentiment:** 15% positive · 55% mixed · 30% skeptical

**The case for**

- The incremental Python-Future/2to3 approach lets most code stay dual-compatible with only small shims, unlike a full rewrite.
- Comparisons to Google's and Dropbox's large-scale Python 2-to-3 migrations show this kind of project is well-trodden and achievable.
- CPython 3 exposes internals well enough that greenlets can be added as a native extension, resolving the original reason Stackless existed.

**The pushback**

- Some feel the devblog's technical explanation is superficial and lacking background on why Stackless was needed and what replaces it.
- Skepticism about still running a 2.7/Stackless codebase this late, framed as long-overdue technical debt.
- Doubts about whether scale comparisons to other rewrites (e.g., Bun's Zig-to-Rust) are meaningful given Python's dynamic typing versus statically typed languages.

**By community**

- lobsters (mixed): Detailed technical thread covering Stackless/greenlet history, comparisons to past large migrations, and a long tangent on the obscure `<>` operator.
- hackernews (skeptical): Short thread expressing surprise the codebase is still on Python 2.7, with some noting similar legacy Python use at major banks.

**Hottest debate:** Whether comparing this migration's scale to unrelated rewrites (like Bun's Zig-to-Rust) is a fair or misleading way to measure difficulty.

**Open questions**

- What exactly will replace Stackless-style concurrency, and how closely will it match the old greenlet-based model?
- How much, if any, AI-assisted code generation will be used in the migration?

**Highlights**

> The devblog could use a little more explanatory background, I suppose. As I recall, they've decided to become active contributors to python-greenlet (https://github.com/ccpgames/greenlet, forked from the python-greenlet project) so they can continue to use the greenlet pattern without being pinned to an older interpreter version. As I recall, at the time that Stackless was created the CPython interpreter did not expose its internals in such a way that Greenlets could be added as an extension, hence Stackless being a different interpreter. CPython3 resolves these issues so that Greenlets can be added as a native extension.
> — [mysteriouspants on lobsters · 4 points](https://lobste.rs/s/e1oalq/move_python_3_begins#c_hpvcya)

> Wild to see this headline in 2026. The last big Python3 migration I remember is [Dropbox in 2019](https://dropbox.tech/application/incrementally-migrating-over-one-million-lines-of-code-from-python-2-to-python-3). Scale-wise, EVE has 2,400 kloc of Python 2.7. That's double Dropbox's desktop client (1000 kloc) and 2-5x more code than the recent Bun rewrite (535 kloc Zig to 1,000 kloc Rust). Python's dynamic typing makes that harder to wrangle than the static typing in Zig and Rust, especially because Python 2.7 doesn't have any native type annotation support. Python's modern type annotation system actually got a big boost from the Dropbox migration. Dropbox [employed the Mypy core team](https://dropbox.tech/application/our-journey-to-type-checking-4-million-lines-of-python) at that time.
> — [pbronez on lobsters · 4 points, 2 comments](https://lobste.rs/s/e1oalq/move_python_3_begins#c_ojxenb)

> This is going to be a fascinating project, I hope they keep reporting how it is going. Some big questions for me: * What becomes of Stackless? Python3 async should do the same thing but it's so different in implementation. * How are they using AI codegen?
> — [nelson on lobsters · 1 points](https://lobste.rs/s/e1oalq/move_python_3_begins#c_stasuv)

> I was part of google's migration from 2.7 to 3.6. it was long and tedious, but also a fascinating project. I primarily worked on the type checker (ensuring code type checked under 2.7 was an extraordinarily valuable step on the way to migration) and on automated refactoring tools. the refactoring tools were very specific to the task at hand and were discarded afterwards, but the typechecker continued to be valuable long after the migration was done. I think it is to date the only typechecker that attempted whole-program type inference and analysis of *unannotated* python code.
> — [zem on lobsters · 1 points](https://lobste.rs/s/e1oalq/move_python_3_begins#c_dagt8u)

> > and 2-5x more code than the recent Bun rewrite (535 kloc Zig to 1,000 kloc Rust). This is not a good comparison. The Python 2 to Python 3 migration often just requires small modifications whereas most of the code can remain exactly the same. In addition to that, you can do it piecewise by modifying the code such that it works for both Python 2 and Python 3, which only requires a few shims.
> — [BenjaminRi on lobsters · 1 points](https://lobste.rs/s/e1oalq/move_python_3_begins#c_0owtwi)

**Source threads**

- [lobsters](https://lobste.rs/s/e1oalq/move_python_3_begins) · 93 points · 20 comments
- [hackernews](https://news.ycombinator.com/item?id=49433328) · 21 points · 7 comments

## Similar posts on daily.dev

- [Hackaday Links: August 30, 2026](https://daily.dev/posts/hackaday-links-august-30-2026-2ishvi7tg) · Hackaday · 0 upvotes · 0 comments
- [Parity before cutover](https://daily.dev/posts/parity-before-cutover-o9ipdziob) · Programming Digest · 5 upvotes · 1 comments
- [pandas 3.0 Lands Breaking Changes and Other Python News for February 2026 – Real Python](https://daily.dev/posts/pandas-3-0-lands-breaking-changes-and-other-python-news-for-february-2026-real-python-k4uvlmggx) · Real Python · 22 upvotes · 0 comments
- [Python's JIT Faces Some Challenges and Other News for July 2026 – Real Python](https://daily.dev/posts/python-s-jit-faces-some-challenges-and-other-news-for-july-2026-real-python-quau8y20z) · Real Python · 3 upvotes · 0 comments

---

Tags: [#python](https://daily.dev/tags/python), [#game-development](https://daily.dev/tags/game-development)

[View this post on daily.dev](https://daily.dev/posts/the-move-to-python-3-begins-ripvndnq9)

```json
{"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://daily.dev/#organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180},"sameAs":["https://twitter.com/dailydotdev","https://github.com/dailydotdev","https://www.linkedin.com/company/daily-dev-ltd"]},{"@type":"WebSite","@id":"https://daily.dev/#website","url":"https://daily.dev","name":"daily.dev","publisher":{"@id":"https://daily.dev/#organization"},"potentialAction":{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://daily.dev/search?q={search_term_string}"},"query-input":"required name=search_term_string"}}]}
{"@context":"https://schema.org","@type":"TechArticle","headline":"The Move to Python 3 Begins","url":"https://daily.dev/posts/the-move-to-python-3-begins-ripvndnq9","mainEntityOfPage":{"@type":"WebPage","@id":"https://daily.dev/posts/the-move-to-python-3-begins-ripvndnq9"},"datePublished":"2026-08-25T20:02:07.689Z","dateModified":"2026-08-26T07:32:10.468Z","description":"EVE Online's developer CCP (Fenris Creations) is beginning a multi-stage migration of its 2.4 million line codebase from Python 2.7 to Python 3, after running...","image":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/117f87c9b37a0e9bb3ac328611b4cbd5?_a=AQAEuop","thumbnailUrl":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/117f87c9b37a0e9bb3ac328611b4cbd5?_a=AQAEuop","isAccessibleForFree":true,"articleSection":"Lobsters","inLanguage":"en","publisher":{"@type":"Organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180}},"author":{"@type":"Organization","name":"Lobsters","logo":"https://media.daily.dev/image/upload/s--tl8v_Fku--/f_auto,t_logo/v1698841318/logos/lobste.jpg","url":"https://daily.dev/sources/lobsters"},"commentCount":0,"discussionUrl":"https://daily.dev/posts/the-move-to-python-3-begins-ripvndnq9","interactionStatistic":[{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":2},{"@type":"InteractionCounter","interactionType":{"@type":"CommentAction"},"userInteractionCount":0}],"keywords":"python,game-development","timeRequired":"PT7M"}
{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://daily.dev"},{"@type":"ListItem","position":2,"name":"Lobsters","item":"https://daily.dev/sources/lobsters"},{"@type":"ListItem","position":3,"name":"The Move to Python 3 Begins"}]}
{"@context":"https://schema.org","@type":"FAQPage","@id":"https://daily.dev/posts/the-move-to-python-3-begins-ripvndnq9#faq","mainEntity":[{"@type":"Question","name":"Why is EVE Online migrating from Python 2 to Python 3?","acceptedAnswer":{"@type":"Answer","text":"EVE Online's codebase has run on Stackless Python 2.7 since 2010, and staying on Python 2 increasingly limits performance gains, access to modern libraries, debuggers, and profilers, and developer productivity. Python 2.7 reached official end of life in 2020. EVE Frontier already runs the same Carbon engine on modern Python 3, proving the migration is achievable. Track how large legacy codebases plan Python 2 to 3 migrations on daily.dev."}},{"@type":"Question","name":"What tool is being used to migrate a Python 2.7 codebase to be compatible with both Python 2 and Python 3?","acceptedAnswer":{"@type":"Answer","text":"Python-Future is being used, a tool built on the same code-rewriting machinery (2to3) that Python itself shipped for this kind of migration. It applies automated fixers that each rewrite one obsolete pattern into a modern form accepted by both Python 2.7 and Python 3, forming the first of a multi-stage migration process. Developers planning similar migrations follow real-world tooling choices like this on daily.dev."}},{"@type":"Question","name":"What kinds of legacy syntax issues show up when scanning an old Python 2 codebase for Python 3 compatibility?","acceptedAnswer":{"@type":"Answer","text":"In a scan of EVE Online's 2.4 million line codebase, about 3,300 blocking lines were found, including roughly 1,500 old-style print statements, 800 long number literals like 123L, 600 exception clauses using deprecated syntax, and 50 uses of the archaic not-equal operator <>. Only 95.9% of ~20,000 files initially compiled under both Python 2.7 and Python 3. See how teams quantify and tackle Python 2 to 3 technical debt on daily.dev."}}]}
```

