3 Kivy Python 2 Support Timeline
matham edited this page 2017-07-04 14:21:40 -04:00

Overview

This document lays out how and when Kivy plans to drop Python 2 support from its codebase and only support Python 3.

Although Python 3 continues to steam ahead with new features frequently added such as asyncio, the usage of these features is often difficult or impossible in a codebase that still has to support python 2. Similarly, support of Python 2 and 3 simultaneously often requires the writing of convoluted code, especially where strings are involved.

Historically, few libraries supported Python 3, so supporting Python 2 was a must. However, as Python 2 end of life (EOL) is in under 2.5 years and support for Python 3 is now widespread, talking of ending support for Python 2 in the kivy codebase makes sense.

We would like to encourage kivy users to start switching to Python 3 so that when we do drop Python 2 support, it will cause the least amount of pain. To that end we are announcing well in advance given our normal planning timeline that we plan to make the last Python 2 compatible release around January 1st 2019.

January 1st, 2019 is not a hard date, but rather a date that we will try to target if all else works out. Until then we plan to introduce more Python 3 features to make it more attractive to switch to Python 3. We will also start to accept features that work only in Python 3, e.g. asyncio, as long as it doesn't disrupt the Python 2 code.

You can find a similar statement from other Open Source projects here.

Timeline And TODO list

  • Make py4a fully Python 3 compatible (openssl).
  • Make kivy-ios Python 3 compatible (contributions are welcome).
  • Make last Python 2 release, estimated around January 1st, 2019.