你打算如何处理迁移到Python 3?
你打算如何处理迁移到Python 3?
我相信这对大多数Python开发者来说是一个关注的话题,考虑到Python 3即将发布。以下是一些问题,帮助我们朝着正确的方向前进:
- 你是否会同时维护Python 2和Python 3版本,还是仅提供Python 3版本?
- 你是否已经开始了或计划立即开始?还是打算等到最终版本发布后才全力投入?
这是Twisted的一般计划。本来打算写篇博客的,但想了想:既然能通过此次提交获得积分,何必写博客呢?
-
等到某人关心此事。
现在,没有人使用Python 3.0。我们不会花费大量精力,除非至少有一个用户出现并说:“我需要Python 3.0支持”,并且有除了‘看起来很新颖’之外的充分理由。
-
等到我们的依赖库迁移完成。
像Twisted这样的大型系统有许多依赖项。其中包括:
- Zope Interface
- PyCrypto
- PyOpenSSL
- pywin32
- PyGTK(尽管这个依赖项目前很轻,但是等到迁移时,我希望Twisted有更多的GUI工具)
- pyasn1
- PyPAM
- gmpy
有些项目有它们自己的一系列依赖项,所以我们还要等待。
-
等到有人关心并提供帮助。
现在,大善人约有5人涉足Twisted,我说“大善人”是比较客气的,因为那包括我的身影,而我已经好几个月没进行过提交了。我们现在有 1000多个开放的任务,在将它迁移到语言的新版本之前,修复一些问题、添加一些功能,让Twisted成为一个更好的产品,这是很好的。
这个过程可能包括赞助商提供足够的资金资助我们完成,但我希望有更多关心3.0支持并想帮助推动社区发展的志愿者加入。
-
遵循Guido的建议。
这意味着我们不会不兼容地更改API,并且我们将遵循Guido去年发布的 过渡性开发指南。这始于拥有单元测试,以及对Twisted代码库运行2to3转换工具。
-
报告2to3工具的缺陷,以及提交针对该工具的补丁。
当我们实际使用2to3时,我预计未来将会出现许多问题。目前对Twisted运行它需要花费非常长的时间(我上次检查已经是相当长时间以前了),并且无法解析Twisted代码库中的某些文件,因此生成的输出无法导入。我认为在它真正对我们起作用之前,需要有许多小项目的成功案例和大量的工具测试。
然而,Python开发团队在响应我们的bug报告方面非常有帮助,对这些问题做出的早期响应是令人鼓舞的,因此我期望所有这些问题都将在未来得到解决。
-
在几年内维持2.x兼容性。
目前,Twisted支持Python 2.3到2.5。目前,我们正在开发2.6支持(显然我们必须在3.0之前完成!)。我们的计划是根据长期支持版本的Ubuntu(Ubuntu)来修订我们支持的Python版本。 包括Python 2.5的版本8.04将在2013年之前得到支持。根据Guido的建议,我们将需要放弃2.5的支持,以支持3.0,但我希望我们能找到一种解决此问题的方法(我们在版本兼容性方面非常有创意)。
因此,我们计划至少支持Python 2.5到2013年。两年后,Ubuntu将发布另一个长期支持版本的Ubuntu:如果它们仍然存在并按计划进行,则将是10.04。就个人猜测而言,这将作为/usr/bin/python的Python 2.x版本发布,可能是python 2.8,因为大量的Python软件已经打包到发行版中,更新这些软件需要很长时间。因此,从那时起的五年后,即2015年,我们可以开始考虑放弃2.x支持。
在此期间,我们将继续遵循Guido关于迁移的建议:对我们的2.x代码库运行2to3,并修改2.x代码库以使其测试在两个版本中均能通过。
这意味着,直到我35岁后很长一段时间,Python 3.x不会成为Twisted的源代码语言 - 它将成为我的Python 2.x代码的目标运行时(以及一组指南和限制)。我预计将在未来十年左右使用Python 2.x编写程序。
因此,这就是我们的计划。我希望在一年左右的时间内,它看起来保守得让人发笑;3.x转换非常容易,所有人都能够迅速升级。也可能会发生其他事情:2.x和3.x分支可能会融合,有人可能最终编写出3to2
,或者另一个运行时(如PyPy)可能允许直接在同一进程中运行2.x和3.x代码,从而使我们的转换过程更加容易。
然而,目前我们假设在未来的许多年里,仍有人们需要维护大型代码库(或者编写新代码使用尚未迁移的其他库),他们仍然希望在Twisted中得到新功能和错误修复。不久后,我预计我们也会有想要在Python3上使用Twisted的前沿用户。我希望为所有这些人提供尽可能长久的正面体验。