Eclipse开源政策系列 – 01 – 关于孵化状态

1. 什么是孵化

原文参考:

http://wiki.eclipse.org/Development_Resources/Process_Guidelines/What_is_Incubation

参考Eclipse开发流程中的 “6.2.3 Incubation Phase” 。

在项目被创建之后,让项目处于孵化状态的目的在于构建一个全功能的开源项目。在这里孵化是指对流程、社区、技术的发展。孵化是一种阶段,而不是一个场所:新的项目可能会在一个已经存在的顶级项目之下进行孵化。

孵化表示Eclipse社区正在帮助对应的项目走上正轨,逐步变成一个高品质的可扩展框架和示范性工具。在从孵化状态毕业变为成熟状态之前,项目一般会经过一到两年的时间。

将一个项目分类到孵化阶段的依据并不是其代码——它的代码很可能是很好的(实际上,Eclipse开源项目通常都是很优秀的),也可能不够好——就如同很多其它开源项目一样,这取决于你自己的判断。围绕项目需要建立三种社区(开发者、采用者、用户),孵化状态更多的是表示项目团队正处在建立社区的过程中。

关于孵化阶段的更多信息,请参考《Eclipse开发流程》(原文见 Eclipse Development Process )和《孵化阶段指南》(原文见Guidelines for Incubation Phase

2. 孵化阶段指南

原文见:

http://wiki.eclipse.org/Development_Resources/HOWTO/Incubation_Phase

2.1  孵化阶段指南

参考Eclipse开发流程中的 “6.2.3 Incubation Phase” 。

在项目被创建之后,让项目处于孵化状态的目的在于构建一个全功能的开源项目。在这里孵化是指对流程、社区、技术的发展。孵化是一种阶段,而不是一个场所:新的项目可能会在一个已经存在的顶级项目之下进行孵化。

什么是孵化?

让项目处于孵化状态的目的在于构建一个全功能的开源项目。许多Eclipse开源项目被具有广泛和成功软件开发经验的个体提议和发起——孵化阶段不是要改变这些成功的实践,而是要继续发展更多的实践经验来创建一个开放、透明、受欢迎并且可预测的开源项目。

将闭源开发变成开源开发看起来似乎是很容易的(难到不就是开放源码库吗?),Eclipse的历史表明需要通过不断实践来学习由社区定义的以Eclipse为中心的开源过程,并且构建活跃的用户、插件式开发者、代码提交者社区。

当然,除了学习按照“Eclipse方式”开展工作,新的项目团队必须继续那些典型的软件工程管理任务:识别关键用例、开展概要设计、设置一个发布工程系统、编写自动单元测试等等。

初始代码和开发

新的项目团队通常迫切地希望尽快开始写代码和构建工具。这是一个非常令人敬佩的品质,但是还有一些需要记住的东西:

  • 知识产权尽职调查(IP Due Diligence).所有的代码贡献,包括初始代码贡献,都必须通过Eclipse知识产权政策(Eclipse IP Policy)的审查,如同《尽职调查指南》(原文见Due Diligence Guidelines )中所完整阐述的内容(你可能还需要了解知识产权审核过程流程图,原文见:IP process flowchart poster)。幸运的是,孵化阶段的项目可以使用并行知识产权审核流程(原文见:Parallel IP process  )来加快初始代码捐献的提交审批。
    • Eclipse基金会会严格地执行知识产权尽职调查流程,因此一个新项目最不应该犯的错误之一就是忽略知识产权政策,并且进行一些与之相悖的操作,例如check-in未经批准的代码。对于孵化阶段的项目来说并行知识产权审核流程是一个很强大的工具,但是要记住“你永远没有第二次机会来形成第一印象”,因此何不多花几分钟来了解并行知识产权审核流程和Eclipse知识产权政策呢?在向代码库提交代码之前需要满足一些先决条件,这些条件都在前面提到的并行知识产权审核流程说明页中进行了阐述。
  • APIEclipse开源项目存在的意义在于为Eclipse社区提供可在其之上进行扩展的平台级高品质API集(原文见:platform quality APIs)。高品质的API的创建需要付出大量的努力工作。因此所有新的Eclipse开源项目在开始向其源码库提交代码时都需要执行严格的API设计、规范制定和代码评审流程。
  • 框架。Eclipse开源组织是一个可扩展框架和可仿效的工具的聚集地——注意关键点是其顺序(框架是位于工具之前的)。许多新的Eclipse项目团队过于关注构建最终用户的工具,而不是关注框架。这样会导致项目无法尽快从孵化状态毕业,因为Eclipse生态系统(采用者和用户)更容易受框架驱动,而不是工具。尽管两者都很重要,但是由于对于大多数开发者来说,构建面向终端用户的工具看起来更容易,因此新项目会倾向于过度关注工具而不够关注框架。
    • 框架应该放在首要位置而工具则应该是对如何使用对应的可扩展框架的示范。优良例子也好、伟大的例子也罢,都是框架的一个应用场景——Eclipse对构建生态系统的关注远超对提供免费工具的关注。
  • 定期里程碑。成功的Eclipse开源项目使用一个敏捷的开发流程,通过定期里程碑将项目引导到主要版本的发布。重要项目都有一个为期六周的里程碑规划,每个里程碑都包括了完整的软件开发生命周期:设计、编码、测试、集成、发布。Eclipse项目尝试过瀑布式的“编码完成”、“功能完成”、最后是bug修正的串行流程,但是很少获得成功。我们建议新项目在启动之初就创建并维护一个充分具有预见性、可靠的里程碑规划。
    • 也许里程碑风格的开发方式能产生更为成功的Eclipse开源项目的原因在于里程碑更有助于构建一个社区:定期发布完成了的新功能对于形成用户、采用者、开发者社区具有强大的驱动力。
  • 临时发布版。孵化阶段的项目可能也会有发布版。所有主要版本和小版本的发布必须都通过发布评审(原文见:Release Review)。
    • 孵化阶段的项目的临时发布版一般带有一个在0之前的版本号,但是这并不是强制要求。主要需要考虑的是1.0这个版本号会不会使社区产生对应项目是否还处于孵化阶段的困惑。
  • 毕业。孵化阶段的项目最终会毕业,这表示项目的代码基已经稳定并且项目团队对Eclipse开发流程已经非常熟悉。
    • 毕业评审一般与一次发布评审同时进行。
    • 对于具有比较大的初始代码基的项目,我们建议在尝试进行毕业发布之前至少有一次临时发布。在结束了编码、测试和文档编写流程之后,要满足项目发布标准还需要收集所有的知识产权文档,准备发布文档等,参考前面提到的发布评审。
社区

参考Eclipse开发流程的 “2.5 Three Communities 部分。

Eclipse基金会的重要目标是围绕每个项目构建三个相互联系的社区,而孵化阶段是开始构建这些社区的最佳时机:

  • 贡献者(Contributors)和提交者(Committers——-一个繁荣、多样和活跃的开发者社区是任何Eclipse开源项目的关键部分。理想情况下,这个社区应该是一个开放、透明、包容且多样的提交者和(非提交者)贡献者社区。吸引新的贡献者和提交者到开源项目中来是一件非常消耗时间的事情,并且需要积极的招募,而不仅仅是消极被动的“开放”。项目的领袖需要采取一些合理的措施来激励和培养新的贡献者。
    • 项目必须有多样化的目标,确保具有多样化的思考,避免仅依赖任何一个公司或组织。
    • 多样性是达到目的的一种手段,而非目的本身,因此多样性目标将会因项目而异,并基于项目的其它成就之上。
    • 有证据表明具有一个拥有专注、高度社会化团队的单独公司是启动一个具有挑战性的新项目的好办法。我们不想阻止这种启动方法,但我们希望确保一个项目能进入成熟阶段,具有一个广泛的提交者社区。
  • 用户(Users——一个活跃而忙碌的用户社区是说明对应项目的典型工具好用并且具有需求的确凿证据。此外,广泛的用户社区是围绕Eclipse开源项目创建一个有活力的生态系统的关键要素之一,因此鼓励更多的开源和商业组织加入用户社区。与所有美好的事物类似,一个用户社区的成功建立需要付出时间和努力,但是一旦被建立,它将能自我维持。
  • 采用者(Adopters——一个活跃而忙碌的采用者/插件开发者社区是证明一个Eclipse开源项目提供了可扩展的框架和工具的唯一方式,这些框架和工具信息可以通过API文档获得。在对项目作出贡献的公司内部重用对应的框架是必需的,但是这还不足以展示一个采用者社区。此外,在项目的开发者之外创建、鼓励并培育一个采用者社区需要项目的领袖付出时间、能量和创造力,但这对项目的长期开源获得成功必不可少。

希望在孵化阶段的项目在建立这些社区的过程中取得长足的进步。如果没有以上三个社区,Eclipse社区标准会使得从孵化阶段毕业变得非常困难。

运营与后勤

除了在学习Eclipse社区的工作方式这一方面,一个孵化阶段的Eclipse开源项目的日常操作与成熟阶段项目几乎一样。请查阅以下内容:

孵化阶段的项目的不同之处在于需要按照孵化阶段商标一致性要求(Conforming Incubation Branding)显示孵化阶段图标。

从孵化阶段毕业

详情请见:

孵化阶段商标

所有孵化阶段的Eclipse开源项目都要加入并行知识产权审核流程(Parallel IP process)。

请参考孵化阶段商标一致性要求(Conforming Incubation Branding)。

打赏一下
支付宝
微信
除非注明,博客文章均为原创,转载请标明文章地址
本文地址: http://www.javafxchina.net/blog/2015/11/eclipse-policy-01-incubation/
百度已收录