级别: 初级 Niklas Heidloff, 高级软件工程师, IBM Steve Castledine, 顾问软件工程师, SDI Corp.
2009 年 7 月 31 日 本文讨论新的 OpenNTF 联盟的治理和知识产权模型。它还阐述了如何在 OpenNTF 上查找代码,以及向它贡献代码。最后,概述了关于 OpenNTF 增强和扩展的一些想法。
“OpenNTF 旨在帮助世界各地的组织和个人协作创建 IBM Lotus Notes/Domino 应用程序,并将它们发布为开源软件” —— 这是来自 OpenNTF 的任务说明。
OpenNTF 是 IBM® Lotus Notes® 和 Lotus® Domino® 社区成员在 2002 年发起的。从此之后,60,000 名用户注册了 OpenNTF,并开始下载代码。其中涵盖 250 多个开源项目和 800 个代码片段。
2009 年 1 月,IBM 在 Lotusphere® 上宣布,IBM 已同意发起与 OpenNTF 之间的新的协作。IBM 的目的是提供各种资源来发展社区,贡献模板和示例,以及在广泛接受的开源社区许可条款下让代码可用。自从这次宣布之后,IBM 已经与 OpenNTF 的主席联手定义了一个新的治理模型和知识产权(IP)模型来实现此目标。
治理和知识产权模型
新的 OpenNTF 联盟于 2009 年 3 月建立。该联盟是由一组能力相当的成员组成的团体,他们的共同目标是提供基于 Lotus Notes 和 Lotus Domino 的开源应用程序。该组织毫无官僚作风,但是将制定流程通过适当严格的知识产权策略来有效地管理开源内容。
该联盟的第一批成员是一些有意为 Lotus Notes/Domino 交付开源应用程序的公司(按字母顺序):
参与级别
共有四种参与级别:
-
OpenNTF 用户。每个人都可以使用 OpenNTF 中的代码。在 Apache 许可之下使用目录中的代码不需要注册或身份验证。
-
OpenNTF 注册用户。OpenNTF 鼓励用户 注册,因为注册用户可以与 OpenNTF 站点上的其他人进行交互。例如,他们可以报告缺陷、发表问题,等等。
-
成员。经过指导委员会的批准之后,任何组织都可以加入 OpenNTF 联盟。成员可以影响 OpenNTF 的战略和方向,并且 OpenNTF 站点上将提供一个专门的页面来描述它们。成员有义务向 OpenNTF 联盟做出贡献;贡献的形式包括代码、实物捐赠、财政捐助,或指导委员会认可的其他捐助。要成为官方成员,请联系 OpenNTF 指导委员会。
-
贡献者。贡献者可以向 OpenNTF 贡献代码。贡献者不需要任职于 OpenNTF 的成员公司。有关如何成为贡献者以及如何贡献代码的信息,请阅读 “贡献者” 一节。
指导委员会和技术委员会
OpenNTF 联盟由指导委员会管理。技术委员会拥有技术基础设施和 OpenNTF 的其他技术方面。如果需要,可以动态定义更多的委员会。图 1 显示了 OpenNTF 联盟的组织。
图 1. OpenNTF 联盟
指导委员会负责 OpenNTF 的战略和财务。它包括由所有成员选出的七名成员。每个家族公司在指导委员会最多只能有一名代表。每年都会选举三名新成员。主席由此委员会的成员选出。
技术委员会负责为 OpenNTF 联盟提供技术指导。它维护 OpenNTF 基础设施,确定社区的技术需求,确保符合知识产权策略,等等。指导委员会可以任命技术委员会成员。
知识产权模型
OpenNTF 联盟希望尽可能简化代码在各种用途下的重用。Apache License version 2 (ALv2) 不仅是商业世界中最广为认为的开源许可,它还准许在商业软件以及免费和开源代码使用代码。没有义务将修改后的代码发回 OpenNTF。
OpenNTF 强烈建议在所有未来的项目中都使用 ALv2。OpenNTF 上已有代码的拥有者将被鼓励向 ALv2 更新。新目录(参见下一节)仅包含符合 ALv2 的代码,以尽可能简化使用者在 OpenNTF 上查找可重用代码的工作。为 OpenNTF 上的所有代码提供一个公共许可非常重要,这样公司就不需要对来自 OpenNTF 各代码片段执行合法性估计。
要对 OpenNTF 上的代码使用 ALv2,需要谨慎行事。贡献者需要遵循入站贡献流程。他们需要确保贡献的是自己的代码,并且有权限允许 OpenNTF 分发代码。但是,代码的作者仍然拥有代码的知识产权。
目录
多年以后,OpenNTF 一直在维护一个 项目集合 和一个 代码段存储库。项目主要为成熟的 Lotus Notes 和 Lotus Domino 应用程序(数据库或模板)。OpenNTF 提供了各种工具和一个基础结构来管理这些项目。较简单的项目片段可以发布在代码库中。这些代码片段不受制于任何代码管理或生命周期流程。
过去,使用者难以找到正确的示例和优秀的示例版本。由于这方面的困难,OpenNTF 中添加了一个 新目录。这个目录的主要目的是提供一组高质量的示例,以及帮助使用者查找最适合其商业问题的示例。它的目的不是取代项目的站点或代码库,而是在可以添加到目录中的这些存储库中提供到优秀条目的链接。目录将不会包含 OpenNTF 中的所有代码。列入 OpenNTF 目录的示例必须具备以下条件:
- 使用 ALv2(除非 OpenNTF 批准了替代许可)
- 包含完整源代码
- 至少经过第三人或第三方的一次测试
- 提供良好的说明和屏幕截图
最后,所有者和创作者需要请求 OpenNTF 目录所有者添加一个条目。对于项目来说,它只包含经过测试的最终发行版。对于控件来说,只有可完全编译的代码才能添加到目录中。
目录针对不同类型的群体:
- 开发人员,可以从包含源代码的示例中获益。
- 希望理解各种功能以及展示 Lotus Notes 和 Lotus Domino 和的价值的任何人。一些 Web 应用程序和项目可以在目录中实时运行。可以使用拖放方法和本地运行在 Lotus Notes 中安装富客户机组件。
您可以通过各种方式查找示例:
- 使用全文本搜索
- 使用视图(包括用户评级,按提交人查找,按最新添加查找)
- 使用标记
图 2. OpenNTF 目录
如图 2 所示,共有三种不同类型的示例:
富客户机组件
用户可以利用富客户机组件:可以将这些小组件和插件安装到 Lotus Notes 中,方法是浏览目录并将组件拖放到 Lotus Notes 中。组件可以显示在 Lotus Notes 的侧栏中,作为可由活动文本触发的弹出窗口,或者任何其他更加复杂的 Lotus Notes 扩展(例如,菜单贡献)。对于开发人员来说,将提供这些组件的源代码。
例如,目录中有一个 新的邮件通知组件,可以通过拖放图标到 Lotus Notes 中来进行安装。然后,组件显示了一个可配置的新通知窗口,如图 3 所示。
图 3. 新邮件通知窗口
虽然新邮件通知组件是一个 Eclipse 插件(需要配置),但较为简单的富客户机组件的小组件也可以从目录中方便地进行安装。例如,搜索 Lotus Domino Designer wiki 小组件 允许您搜索 Lotus Notes 中的选中文本。如图 4 所示。
图 4. 搜索 Lotus Domino Designer wiki 小组件
项目
对于希望展示 Lotus Notes 和 Lotus Domino 的价值的开发人员来说,各种模板 (NTF) 和应用程序(NSFs 或 Eclipse 特性)可以展示复杂的技术功能以及 Lotus Notes 和 Lotus Domino,将它们作为应用程序开发平台的价值。项目在此目录的外部管理。目录包含项目的最新发行版及其描述。
一些作为 Web 应用程序的项目可以在线运行,而不需要安装任何程序。一些项目将他们的文档作为 wiki 托管在 OpenNTF 上。如图 5 所示。
图 5. XPages wiki
例如,这个项目是一个基于 Lotus Domino XPages 的 wiki 应用程序。
图 6. XPages wiki 文档
可重用控件
您可以利用可重用控件创建自定义应用程序。可以下载这些控件的源代码并在 Lotus Domino Designer 或任何基于 Eclipse 的 IDE 中使用。可重用控件可以是一组设计元素或 Eclipse 项目。
例如,此控件是一个可以添加到其他应用程序中的 自定义 XPage 控件,它允许登录并显示通过身体验证的用户的名称,如图 7 所示。
图 7. 自定义 XPage 控件
贡献
OpenNTF 用户可以贡献代码,但他们也可以采用其他的方式参与,比如论坛。可以采用两种模型来管理使用不同贡献机制的代码:托管和遗留。建议使用托管模型,而遗留模型有可能会随时间慢慢淡出。
现在,我们鼓励代码库中已有项目和代码片段的所有者依照 ALv2 重新贡献代码,但在此工作完成之前,已有代码将继续按照当前许可条款提供。
OpenNTF 划分了两类贡献者:
- 提交者是实际提交代码的特殊贡献者。
- 非提交者的贡献者可以,比如说,为缺陷编写修复并与提交者共享此代码,然后由提交者来决定是否提交代码。
贡献流程
要为 OpenNTF 上的代码使用 ALv2,贡献者需要遵循入站贡献流程。他们需要确保联盟拥有明确的贡献权限。这种保障意味着代码必须具有完整性,或者贡献者在贡献中包含从其他供应商获取的任何代码时必须拥有明确的许可。在贡献中包含从其他供应商获取的代码的一个例子是,贡献修改版本的已有 ALv2 许可 OpenNTF 组件。依照知识产权策略,贡献者为 OpenNTF 提供使用、销售、导入以及以其他方式传输代码的永久的、在全球范围内的、非独占性的、免费免税的专门许可。知识产权仍然归代码作者所有。
特别是,要依照 ALv2 贡献代码,贡献者需要提供以下信息,并遵循以下步骤:
- 所有贡献者都需要通过 注册。
- 如果贡献者的雇主是 OpenNTF 成员,请将带有您签名的遵循 贡献流程和指导方针 的证明发送给 IP-manager@openntf.org。
- 如果贡献者的雇主不是 OpenNTF 成员,请将同意您向 OpenNTF 贡献代码的 雇主说明 和带有您签名的遵循 贡献流程和指导方针 的证明发送给 IP-manager@openntf.org。
代码贡献的类型
OpenNTF 上包含三种类型的代码:
-
项目。项目是 OpenNTF 上最复杂的代码类型。与其他类型的代码相反,项目拥有完整的项目管理基础架构。查阅此 示例代码。
项目有初始发行版,并且通常在随后会有更新。项目的提交者是项目的所有者(也称作 chef),并且可以选择是否使用贡献者(也称作 cook)。用户提交缺陷、写推荐书、提交需求、与贡献者进行讨论,等等。
项目所有者只能在由于某些原因不适合使用 ALv2 时才能选择其他许可,比如项目包含使用 EPL 等不同开源许可的代码。
登录 这个页面 之后,OpenNTF 用户可以创建新项目。
-
可重用控件。OpenNTF 用户可以在 OpenNTF 代码库 中提交较为简单的代码片段。可以在 这个页面 中创建新条目。
目录中的所有未来条目都将遵循 ALv2。建议贡献者同时遵循贡献流程(托管模型),因为只有这样才能在目录中显示这些条目。
-
富客户机组件。富客户机组件存储在 OpenNTF 上的一个 Eclipse 更新站点数据库中,并且全部列出在目录中。查阅此 示例。
只有遵循贡献流程(托管模型)的贡献者才能添加富客户机组件(可以在 Lotus Notes 客户机中使用拖放操作进行安装)。
要贡献富客户机组件,向 IP-manager@openntf.org 发送一封包含以下信息的电子邮件;有关详细信息,请访问 OpenNTF 站点:
- 说明:一行描述,一个页面,附加一个或两个屏幕截图。
- ZIP 文件形式的代码(已应用 ALv2),包含 Eclipse 项目及更新站点可用的资源。
- 元数据信息,比如提交者、所有贡献者和测试平台。
非代码贡献
除了贡献代码之外,还可以通过其他方式参与 OpenNTF。
任何人都可以为目录中的条件提供建议,方法是向 catalog-owner@openntf.org 发送电子邮件,其中包含到 OpenNTF 上的已有项目或代码库条目的链接。电子邮件应该包含以下信息:
- 说明,一行描述,一个页面,附加一个或两个屏幕截图。
- 关于此代码在哪个平台上运行的确认信息。
任何通过身份验证的 OpenNTF 用户都可以对目录中的条目评级,以及直接在目录中添加评论。
通过身份验证的 OpenNTF 用户还可以使用 IdeaJam 创建新的想法,以及投票和评论其他想法(请访问 http://openntf.org/ideajam/ideajam.nsf)。
可以在 OpenNTF 论坛上发表普通评论或问题。
OpenNTF 始终在寻找人员帮助扩展和维护 OpenNTF 技术基础架构,也就是更新网站的用户界面。如果您希望提供帮助,请直接联系本文的作者(niklas_heidloff@de.ibm.com 和 steve.castledine@uk.ibm.com)。
未来
OpenNTF 联盟定义了一种新的管理和知识产权模型,作为发展 OpenNTF 站点的战略。OpenNTF 始终在寻找新的公司成员、代码贡献、想法、其他帮助,等等。在接下来的数周和数月内,新的指导委员会将设定未来的发展方向。此处列出了一些需要考虑的事项:
-
重新设计 OpenNTF.org 站点。几周前,OpenNTF 将 IdeaJam 添加到了其站点中,以便社区能够就应该如何改善 OpenNTF 的问题进行投票。初次投票表明 OpenNTF.Org 网站应该在哪些方面进行改善。草案计划 描述了这些扩展。任何人都可以就这些想法发表评论,或者帮助进行实现。
-
“红色” 项目 OpenNTF 希望将有兴趣提供新开源应用程序的人组织在一起,以发起一些新项目。其主旨是在较短的时间内构建一些初始发行版。OpenNTF 希望扩展其结构架构,这样人们便可以就项目更广泛地进行协作。例如,OpenNTF 正在评估为 Lotus Notes 和 Lotus Domino 设计元素以及 Eclipse Java 代码提供代码控制系统的各种方案。
-
开发比赛。为了激励更多的人来贡献代码,OpenNTF 希望组织一些开发比赛。可以针对不同类型的示例,比如示例小组件、复杂 Web 应用程序、Eclipse 应用程序等。在最理想的情况下,可以定期举办这类比赛。
结束语
在 IBM 的努力下,OpenNTF 已扩展成为真正的社区事业,它由 Lotus Notes 和 Lotus Domino 市场中的若干 IT 公司进行管理。新的基于 Apache 许可的知识产权模型允许最大限度地以各种方式重用 OpenNTF 中的代码,包括在商业应用程序中使用。在一个公共、默认的许可模型下,使用者不需要评估不同 OpenNTF 项目的许可。新的目录便于查找高质量的示例。
OpenNTF 是一项社区事业。因此,OpenNTF 的成功需要各公司和社区人员的密切帮助。如果您希望提供任何形式的帮助,可以使用 IdeaJam,或者直接联系本文的作者(niklas_heidloff@de.ibm.com 和 steve.castledine@uk.ibm.com)。
参考资料
作者简介  | |  | Niklas Heidloff 在 IBM 的 Lotus Notes 及 Lotus Domino 开发团队工作。在过去的几年中,他一直负责各种与应用程序开发相关的事项,包括复合应用程序。目前,他负责推广 Lotus Notes 和 Lotus Domino 社区(通过发展 OpenNTF.Org 开源项目)。在此之前,他曾致力于 IBM Workplace Client Technology、WebSphere Process Choreographer Workflow 和 Lotus Workflow。 |
 | |  | Steve Castledine 是 IBM 的一名顾问软件工程师。他是 Software Group 的一员,并且是面向 IBM Lotus Notes 客户机的 PIM 应用程序、Web 应用程序和社会软件(尤其是博客和 wiki)的开发人员。他曾与用户界面设计师 Margo Ezekiel 一起致力于将 Personal Journal 升级到新的 Notebook 应用程序。 |
对本文的评价
|