Python

The Maverick Meerkat Big Python Page

Meerkats and Pythons are best friends, and this page is the central place to go to follow how well the two will get along for Ubuntu 10.10. We had several sessions at UDS-M concerning our plans for Python in Maverick; see below for links to the relevant blueprint pages. We'll summarize the decisions here, and track progress for the community on these pages. Note that since these decisions also impact Debian, folks from that community are welcome to participate as well.

Blueprints

Here are links to the relevant blueprints discussed at UDS-M. Note that due to scheduling issues, several smaller blueprints were combined but we'll likely track progress in the individual blueprints. Everything's linked so you should be able to find what you're looking for. The schedule blueprints contain a gobby transcription of the session, and of course, the sessions were recorded and should be available online if you want to watch them (link?).

Python versions

There are several competing views on which versions of Python should be included in Meerkat. OT1H, Lucid was an LTS, so we should be bold (some would say "maverick") in our choices now to blaze a trail for future releases. OTOH, we need to consider the impact of our choices on Debian and ensure that we don't just dump a bunch of work on their lap. My own view is that we should lead an aggressive charge to the latest versions of Python for Maverick, but we should back that up with lots of testing and data gathering so we will have a high degree of confidence of success, both for Ubuntu and Debian.

Ideally Maverick would support Python 2.6, 2.7, and 3.2 (beta), with Python 2.7 as the default. Python 2.7 is currently schedule for final release on July 3, 2010, which should fit in nicely with the 10.10 release cycle. Python 3.2 will not reach final release until after 10.10 is released, but it will be in beta by then and we can issue SRUs to get Ubuntu on Python 3.2 final when it's ready. (We should get pre-approval for these SRUs.)

I want to emphasize that we need to take great care not to impose a technical debt on Debian. With the excitement of a bold decision for Ubuntu comes responsibility that we take on the bulk of the work to get there. Thus we should also do our testing against the Debian archive as well. Of course, we invite, encourage, and gladly accept participation and input from the Debian community to help us accomplish this.

In order to get there we need to know how Python 2.7 will impact the main and universe packages that depend on Python 2. What impact will switching to 2.7 have on packages that are currently ported to Python 2.6? A first place to start is with the What's New in Python 2.7 document. My initial scan of this indicate there might be a couple of small incompatibilities, but it should be nowhere near the difference moving from Python 2.5 -> 2.6. Remember that Python 2.7 is the last scheduled release of the Python 2 series, so it should be quite stable, backward compatible, and well supported for many years to come.

Because there are still few packages written and compatible with Python 3, we think moving to Python 3.2, while aggressive, is pretty safe and is in the best interest of developers, by providing the latest and greatest Python 3 version to encourage development and porting activities. Python 3 is clearly the future as far as upstream is concerned, and we want Ubuntu to be leading the charge.

Testing

The current plan is to utilize existing infrastructure, and build new infrastructure where necessary, to heavily test the transition to Python 2.7 and 3.2, and to gather data to guide the final decision. Our guiding principle: if we can demonstrate 100% build and import success on Python 2.7 before Maverick feature freeze on August 12, 2010, then we will make the switch. If not, then still the effort is not wasted as we'll make the switch for Maverick+1. It is vitally important than any and all changes necessary to get to 100% success be pushed as far upstream as possible, i.e. to the upstream packages and to Debian. Debian is expected to enter freeze possibly by June 2010, so Python 2.7 is not an option for them. However, if we can lead the effort, provide metrics, and push changes upstream, we can greatly reduce the impact on them for their next release.

Coordination

Where best to discuss and coordinate this ongoing work? Because of the reach to both Debian, and the upstreams of Python and the individual packages, there does not seem to be a good, single place to discuss this work. Here are some options and communities I plan on engaging:

If you can think of any additional (or better) places to discuss this work, please add it here.

MaverickMeerkat/TechnicalOverview/Python (last edited 2010-05-24 19:07:40 by barry)