Django's future, and Python 3

With Django 1.4 so close to release, it's also time to start talking about Django 1.5. Not many details have been finalized, but one very important announcement was made Sunday during the PyCon lightning talks session.

Perhaps the most common question about Django's future, for some time now, has been "when will Django support Python 3?" The answer is that porting code is relatively straightforward, but migrating a community the size of Django, with a large install base running on a variety of platforms, is rather complex. Following the recommendations of the Python team, our goal has been first to deprecate older 2.x releases until our minimum requirement is Python 2.6, then to take advantage of the compatibility features in 2.6 to carry out the actual porting and achieve Python 3 support.

Django 1.4 will drop our support for Python 2.4, establishing a minimum requirement of 2.5. Django 1.5 will then drop Python 2.5 support, setting the minimum at 2.6. Additionally, Django 1.5 will begin the process of porting the codebase, and will -- through the 2/3 compatibility features in Python 2.6 and 2.7 -- experimentally support Python 3 (we hope to be targeting up to Python 3.3, which is expected to be released in roughly the same time frame as Django 1.5).

The full details of that porting process and the level of support (i.e., whether Python 3 incompatibilities will become blocking bugs much as incompatibilities with alternate implementations like PyPy already are) are still being worked on, but Python 3 is the future of the Python language, and in support of that the Django project is and will remain committed to achieving Python 3 compatibility.