考虑到Python 3即将问世,我确定这是大多数python开发人员都会想到的主题。一些使我们朝正确方向前进的问题:
您将同时维护python 2和python 3版本,还是在完成后仅拥有python 3版本?
这是Twisted的总体计划。我原本打算为此写博客,但后来我想:为什么在我可以为此获得 积分的情况下 写博客呢?
现在,没有人拥有Python3。在至少一个实际用户说“我需要Python 3.0支持”之前,我们不会花费很多精力,除了有以下事实之外,还有充分的理由3.0看起来很有光泽。
像Twisted这样的大型系统具有许多依赖性。首先,我们的产品包括:
* [Zope界面](http://www.zope.org/Products/ZopeInterface) * [PyCrypto](http://www.dlitz.net/software/pycrypto/) * [PyOpenSSL](https://launchpad.net/pyopenssl/) * [pywin32](http://sourceforge.net/projects/pywin32/) * [PyGTK](http://www.pygtk.org/)(尽管现在这种依赖关系非常轻巧,但是随着迁移的进行,我希望Twisted会有更多的GUI工具) * [pyasn1](http://pyasn1.sourceforge.net/) * [PyPAM](http://www.pangalactic.org/PyPAM/) * [脾气暴躁的](http://gmpy.sourceforge.net/)
其中一些项目具有自己的依赖项数组,因此我们也必须等待。
慈善地,有5个人从事Twisted的工作- 我说“慈善”是因为这很重要,而我几个月来都没有做出承诺。我们目前有1000多个开放票证,在花一些时间将其移植到实质内容之前,最好先修正其中的一些错误- 修复错误,添加功能,并通常使Twisted成为更好的产品。语言的新版本。
这可能包括赞助商关心得足够为我们付费的赞助商,但我希望会有大量关心3.0支持并希望帮助推动社区前进的志愿者涌入。
这意味着 我们不会不兼容地更改我们的API ,并且将遵循Guido去年发布的过渡性开发指南。首先要进行单元测试,然后在Twisted代码库上运行2to3转换工具。
当我们达到实际使用的程度时,我预计2to3将来的运行会出现很多问题。现在在Twisted上运行它需要花费很长时间,并且(最后一次检查,是我前一段时间检查的)无法解析Twisted存储库中的一些文件,因此不会导入结果。我认为,在小型项目对我们真正起作用之前,必须有大量来自小型项目的成功案例,并且需要大量投入。
2to3
但是,Python开发团队在响应我们的错误报告方面非常有帮助,并且对这些问题的早期响应令人鼓舞,因此我希望所有这些问题都将得到及时解决。
目前,Twisted支持python 2.3至2.5。当前,我们正在开发2.6支持(显然,我们必须在3.0之前完成!)。我们的计划是基于Ubuntu的长期受支持版本修订受支持的Python版本- 包括Python 2.5的8.04版将受支持到2013年。根据Guido的建议,我们需要放弃对2.5的支持才能支持3.0,但我希望我们能找到解决方法(我们对版本兼容性黑客颇有创意)。
因此,我们计划至少在2013年之前支持Python 2.5。在两年内,Ubuntu将发布另一个长期受支持的Ubuntu版本:如果它们仍然存在并按计划进行,则将为10.04。我个人认为这将随Python 2.x(也许是python 2.8)一起提供/usr/bin/python,因为该发行版中打包了很多Python软件,更新所有这些都需要很长时间。因此, 从那时 起五年后的2015年,我们可以开始考虑放弃2.x支持。
/usr/bin/python
在此期间,我们将继续遵循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代码直接处理,使我们的转换过程更加轻松。
3to2
但是,目前我们假设,多年来,我们将一直在维护拥有大型代码库的人(或者正在编写要使用尚未迁移的 其他 库的编写新代码的人)。 Twisted中的新功能和错误修复。很快,我希望我们还会有一些尖端的用户,他们希望在python 3上使用Twisted。我想为所有这些人提供尽可能长的积极体验。