有一个关于我计划实现的开源项目的问题(托管在 Codeplex 或 Sourceforge)。
简而言之,该项目将包含一个 XSD 文件,用于定义要遵循的 XML 文件架构,以及一些用于处理这些 XML 文件的 C# 代码。
但我不确定我应该给它什么许可证,尤其是 XSD 文件。该项目将主要是一个类库,所以我很想使用 LGPL,这样它就可以被免费和专有软件使用。
但有一件事是,我不希望 XSD 文件能够被更改,因为我正试图建立一个特定问题域的数据共享标准,而我认为这没有意义做一个标准的开源,还是?
或者我应该将 XSD 作为一个单独的项目发布吗?不确定什么是正确的方法...
感谢您对此事的任何建议。
马修
我认为你犯了一个大错误。事实上,我认为 XSD 文件应该在更自由的许可下发布。
如果有人想创建一个专有版本的 HTML 并 fork Firefox 来使用它,他们只是在为自己做不必要的工作。大多数情况下,它不会给 Mozilla 或 W3C 带来任何问题,因为没有人会关心或使用它。诚然,Netscape 和 Microsoft 曾一度试图添加专有的 HTML 扩展。微软最终意识到了浏览器互操作性的值(value)。 Netscape 的持续时间还不够长,以至于它不再重要。
如果您对架构设置限制性许可,您将降低任何人采用您的标准的可能性。许多开发人员受到他们可以在项目中使用的组件的许可证的限制。除非它对所有开发人员开放,否则制定标准有什么意义?
请记住,XSD 文件 不是标准 或模式。它只是标准的表示。
例如,如果您有一个 XHTML XSD,则更改 XSD 不会更改 XHTML 架构。 XHTML 模式由 W3C 发布的英文文档定义。改变 XHTML 架构的唯一方法是让 W3C 发布和更新版本的文档。如果更改 XHMTL XSD,则创建了不同架构的表示。
将 XSD 文件置于限制性许可之下并不能保护您的架构,它只会迫使某人从头开始编写新的 XSD 文件以用于其专有扩展。
您是否考虑过您的标准可能存在缺陷,或者未涵盖您未考虑的某些用例?如果您的标准不能满足开发人员的所有需求,他们就不会使用它。你可以 promise 对标准进行改进,但如果你被公共(public)汽车撞了怎么办?如果您是唯一可以合法更改标准的人,它最终会停滞不前并变得无关紧要。