考虑到Python 3即将推出,我确信这是大多数python开发人员的主题.一些问题让我们朝着正确的方向前进:
你是否会同时维护python 2和python 3版本,或者你只需要一个python 3版本一旦完成?
您是否已经开始或计划很快开始?或者你打算等到最终版本出来全面展开?
Glyph.. 90
这是Twisted的总体计划.我本来打算写博客,但后来我想:为什么博客会在我获得积分的时候得到它?
等到有人关心.
现在,没有人拥有Python 3.我们不会花费大量精力,直到至少有一个实际用户出现并说"我需要Python 3.0支持",并且有充分的理由除了这个事实之外3.0看起来很闪亮.
等到我们的依赖项已迁移.
像Twisted这样的大型系统有许多依赖关系.对于初学者,我们的包括:
Zope接口
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开发团队在响应我们的错误报告方面非常有帮助,对这些问题的早期响应一直很令人鼓舞,所以我希望所有这些问题都能及时修复.
多年来保持2.x兼容性.
现在,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的支持率.
在此期间,我们将继续遵循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中的新功能和错误修复.很快,我希望我们也会有想要在python 3上使用Twisted的前沿用户.我想尽可能长时间地为所有这些人提供积极的体验.
这是Twisted的总体计划.我本来打算写博客,但后来我想:为什么博客会在我获得积分的时候得到它?
等到有人关心.
现在,没有人拥有Python 3.我们不会花费大量精力,直到至少有一个实际用户出现并说"我需要Python 3.0支持",并且有充分的理由除了这个事实之外3.0看起来很闪亮.
等到我们的依赖项已迁移.
像Twisted这样的大型系统有许多依赖关系.对于初学者,我们的包括:
Zope接口
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开发团队在响应我们的错误报告方面非常有帮助,对这些问题的早期响应一直很令人鼓舞,所以我希望所有这些问题都能及时修复.
多年来保持2.x兼容性.
现在,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的支持率.
在此期间,我们将继续遵循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中的新功能和错误修复.很快,我希望我们也会有想要在python 3上使用Twisted的前沿用户.我想尽可能长时间地为所有这些人提供积极的体验.
Django项目使用该库six
来维护一个在Python 2 和 Python 3 上同时工作的代码库(博客文章).
six
通过提供一个兼容层来实现这一点,该层可以智能地将导入和功能重定向到各自的位置(以及统一其他不兼容的更改).
不需要为Python 2和Python 3提供单独的分支
没有转换工具,例如2to3.
2.6的主要思想是提供3.0的迁移路径.因此,您可以一次使用from __future__ import X
缓慢迁移一个功能,直到您将所有功能都固定为可以移动到3.0.许多3.0功能也将流入2.6,因此您可以逐渐缩小语言差距,而不必一次性迁移所有内容.
在工作中,我们计划首先从2.5升级到2.6.然后我们开始一次缓慢地启用3.0功能一个模块.在某些时候,系统的整个子部分可能已准备好用于3.x.
唯一的问题是图书馆.如果永远不会迁移库,我们会坚持使用旧库.但我非常有信心,我们将在适当的时候为这一部分提供一个很好的选择.