Hi Launchpadders, At UDS-O, we had some conversations about helping Launchpad make the migration from 10.04 LTS to 12.04 LTS, and in particular our decision (hopefully to be sustained at UDS-P) to drop Python 2.6 from the archive.
As you know, our data center only runs LTS releases, so the Launchpad servers must be able to upgrade from one LTS to the next. Also, we decided to drop Python 2.6 in Ubuntu either when Debian switches to Python 2.7 as the default[1], or during toolchain updates early in the P-cycle. We want to do this for two reasons: first, because including Python 2.6 in 12.04 would mean that we'd have to support it for long after upstream's maintenance commitments end, and because every Python package must be built for all supported Pythons, thus increasing their size[2]. The Launchpad requirement is this: operationally, we do not want to upgrade both the OS version and the Python version at the same time. This means either we provide a way to build and run Launchpad against Python 2.7 in Lucid, or we provide a way to build and run Launchpad against Python 2.6 in 12.04. The plan we hatched at UDS-O was to back port Python 2.7 and a few dozen packages that Francis identified to a Lucid PPA. Then, the Launchpad servers could add that PPA while they were still on 10.04 and switch to Python 2.7 before they upgraded to 12.04. Francis tells me that Launchpad already runs fairly well on Python 2.7 + Oneiric on developer machines, with just one or two test failures. Great plan, except for one thing: I suck. I've had a very difficult time getting that PPA up and running. The biggest problem is that there's a huge dependency stack that ends up needing to be built as well, and determining that stack is a manual, error-prone, and time-consuming processes. For each dependency, we have to decide whether to rebuild the Lucid version of the package (if there is one) or back port the Oneiric version of the package *and* all its dependencies too. Sometimes the package doesn't exist in Lucid; other times the Lucid version of the package doesn't yet support Python 2.7. After some discussion with Francis and Steve Langasek, I think a more fruitful approach will be to forward port Python 2.6 to a P-series PPA, and then make this available to Launchpad, so that it could continue to run on Python 2.6 even after it upgraded to 12.04. Then at its leisure, Launchpad would make the switch to Python 2.7 and get rid of the PPA. I *think* this will work out much better, because we already know that Launchpad runs on Oneiric, so forward porting will be mostly a matter of re-enabling Python 2.6 in the PPA, and rebuilding packages we know already build and work with both 2.6 and 2.7 (i.e. the Oneiric versions). At least at first P will be pretty close to Oneiric, so in theory, that should be a much smaller jump than from Oneiric all the way back to Lucid. Steve brought up one good question, which is whether, after upgrading the LP server to 12.04, you will also rebuild Launchpad. Another question is whether LP needs Python 2.6 to be the default Python, or just a supported version. I think LP can fairly easily specify which version of Python to build against, so ideally, after the LTS upgrade, you'd just enable the PPA and do a manual rebuild of Launchpad against the non-default Python 2.6. Definitely let me know of that's *not* the case. Any and all feedback will be greatly appreciated. I'll commit to working on this once 12.04 opens up, we've removed Python 2.6 from the archive, and rebuilt enough of the P-series archive to have a valid PPA overriding it. Of course, if we backtrack on removing 2.6 from 12.04, then the whole issue is moot. <wink> Cheers, -Barry [1] The Debian switch had to happen before Oneiric feature freeze for us to even consider it. It didn't happen, so we'll wait until P opens up, but it does look like Debian isn't too far from switching to Python 2.7 as its default. [2] Note that once we remove Python 2.6 from the archive, it will *not* be available in Universe. If it were in the archive at all, we'd still have to build all our Python packages for both versions, since we don't have separate Python packages per major version (we have a separate Python 3 stack, but I won't even go there... yet :).
signature.asc
Description: PGP signature
_______________________________________________ Mailing list: https://launchpad.net/~launchpad-dev Post to : launchpad-dev@lists.launchpad.net Unsubscribe : https://launchpad.net/~launchpad-dev More help : https://help.launchpad.net/ListHelp