本文讨论新的 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 交付开源应用程序的公司(按字母顺序):
- Elguji
- IBM
- Lotus911
- Pavone
- Prominic
- PSC
- Snapps
- Teamstudio
- vinceschuurman.com
参与级别
共有四种参与级别:
- 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 用户可以贡献代码,但他们也可以采用其他的方式参与,比如论坛。可以采用两种模型来管理使用不同贡献机制的代码:托管和遗留。建议使用托管模型,而遗留模型有可能会随时间慢慢淡出。
- 托管模型。新的 OpenNTF 联盟利用 ALv2 尽量提高代码的可重用性。OpenNTF 强烈建议成员以 ALv2 为准则发布所有代码。新的目录只包含符合 ALv2 的代码,这样用户可以非常方便地在 OpenNTF 上查找可重用代码。要对 OpenNTF 上的代码使用 ALv2,需要谨慎行事。贡献者需要遵循入站贡献流程。
聪明成员意识到并非所有的贡献都可以在 ALv2 下完成。例如,基于 Eclipse 组件、通过 Eclipse Public License (EPL) 许可的贡献可能需要保留在 EPL 中。联盟将通过一个知识产权机制来处理这些异常。
- 遗留模型。过去,OpenNTF 贡献者可以选择喜欢的许可,或者根本不选择。这种模型缺乏标准性,从而导致所使用的许可过剩,并且未使用许可造成代码下载者的合法性变得模糊。
现在,我们鼓励代码库中已有项目和代码片段的所有者依照 ALv2 重新贡献代码,但在此工作完成之前,已有代码将继续按照当前许可条款提供。
OpenNTF 划分了两类贡献者:
- 提交者是实际提交代码的特殊贡献者。
- 非提交者的贡献者可以,比如说,为缺陷编写修复并与提交者共享此代码,然后由提交者来决定是否提交代码。
贡献流程
要为 OpenNTF 上的代码使用 ALv2,贡献者需要遵循入站贡献流程。他们需要确保联盟拥有明确的贡献权限。这种保障意味着代码必须具有完整性,或者贡献者在贡献中包含从其他供应商获取的任何代码时必须拥有明确的许可。在贡献中包含从其他供应商获取的代码的一个例子是,贡献修改版本的已有 ALv2 许可 OpenNTF 组件。依照知识产权策略,贡献者为 OpenNTF 提供使用、销售、导入以及以其他方式传输代码的永久的、在全球范围内的、非独占性的、免费免税的专门许可。知识产权仍然归代码作者所有。