ZF2的开发正在加速。我们已经有一段时间了,但主要是关注基础设施:转换为命名空间,重新制定我们的异常策略,改进我们的测试套件,以及改进我们的自动加载和插件加载策略以提高性能和灵活性。今天,我们正在积极致力于MVC里程碑,我们希望它成为开发人员开始在ZF2之上进行开发所必需的最后一个主要部分之一。
我经常收到的一个问题是:“我如何为ZF2做出贡献?”
将此视为您的指南。
进行设置
~~就像ZF1一样,ZF2需要同样的贡献者许可协议(CLA)。该协议有助于保护最终用户免受诉讼;基本上,你确保你是你贡献的代码的作者,或者你已经获得了你贡献的任何代码的权利。如果有人质疑来源,他们只能合法地接近你,而不是最终用户。~~
~~您可以传真您签署的CLA,也可以扫描并通过电子邮件发送给我们;我们更喜欢后者(电子邮件)。~~
~~作为CLA提交过程的一部分,d~~
注意:ZF2贡献不再需要CLA!
如果您还没有,请不要忘记在我们的问题跟踪器上注册一个帐户;如果有,请确保您的电子邮件地址是最新且正确的(您可以通过我们的Crowd实例这样做)。
ZF2开发未使用与ZF1相同的Subversion存储库。相反,我们已经切换到Git来满足我们的版本控制需求;我们的ZF贡献者的分布式特性非常适合分布式VCS,而Git是我们的贡献者最熟悉的VCS。
当我们托管自己的Git存储库时,GitHub的好心人已经设置了每天同步一次或两次的存储库镜像。因此,我们鼓励开发人员利用GitHub来托管他们的存储库。
您可以在http://github.com/zendframework/zf2找到ZF2Git存储库,以及关于分支存储库的说明。
在本地分叉和克隆存储库后,请更新您的git配置以确保您的作者电子邮件地址与我们的问题跟踪器中的匹配:
$ cd zf2 $ git config set user.email <email>
我们的wiki上也提供了上述信息的详细信息。
约定
现在您已准备好做出贡献,我们有一些约定。
首先,每个离散的错误修复或功能更改都应该在您的存储库的单独分支中完成。这使得评估和审查更改变得更加简单。
我对这些分支的命名建议如下:
hotfix/
,其中是来自ZF问题跟踪器的ID;例如,“hotfix/ZF-10989”。将此格式用于错误修复。
feature/
,其中是已开发功能的简短描述性名称;例如,“feature/translate_resource_es”。将此格式用于功能更改或新功能。
特别是,使用错误修复的问题跟踪器ID有助于评估修复是否适用于所报告的问题。
接下来,对于所有代码更改——无论是错误修复、功能更改还是新功能——都包括单元测试。如果不包含测试,我们会立即将拉取请求发回给您。
完成错误修复或功能请求后,请向我们发出拉取请求。同样,GitHub使这变得非常简单。确保在创建拉取请求时提供一个好的、简洁的标题,并在描述您所做工作的消息中提供足够的细节;这使得审核和优先级排序变得更加容易。
我们目前的位置
去年,我们起草了我们的要求以及里程碑列表。它们包括:
- 自动加载和插件加载(自动加载和插件加载的改进和补充,以及使它们在整个框架中保持一致)
- 异常(更新异常策略以使其更加灵活并删除依赖项)
- 测试(一致的基础架构、更好地使用现代PHPUnit功能等)
- MVC(更灵活的策略和架构改进)
- 国际化和本地化(性能和架构优化)
- 文档(一致的结构,包括更多示例并详细说明所有配置选项和方法)
迄今为止,我们已经完成了以下里程碑:
- 自动加载和插件加载
- 异常
我们已经提出了一个文档结构,但显然还没有完成文档里程碑(我希望这是最后完成的里程碑之一,尽管它应该与其他里程碑同时完成)。
此外,我们在测试基础架构方面进行了大量工作,但还需要进行一些更改以使结构统一且具有凝聚力。
我们目前正在致力于MVC里程碑,并且已经完成并接受了一组MVC接口提案;拟议实施的开发正在进行中,我们可能会在未来几周内提出进一步的提案,以及社区可以协助我们完成的具体任务。
你现在可以做什么
目前的大部分工作都由Zend的ZF团队牵头,我是该团队的项目负责人。但是,还有很多工作要做:
- 社区维护着一个组件维护者列表。如果您有兴趣在组件上工作,请联系维护者或任何列出的开发人员,并与他们讨论方向。如果您无法联系到任何人,或者该组件没有列出的维护者,请提出接管维护工作。
- 大多数服务组件目前都需要迁移到名称空间。这些列在上面链接的同一页面上,是一个很好的起点。
- 如果不出意外,仅运行单个组件测试套件并帮助修复测试问题总是有很大帮助。
- 审查提议的文档标准,并开始更新文档。
谢谢!
对于那些勇于尝试并开始贡献的人,我提前表示感谢!我们贡献者的努力使该框架对开发人员具有吸引力!
更新
- 修复了所有链接-感谢报告!
- 2012-04-17:删除了CLA信息;不再需要