任何人都可合法实现 C# 与 CLI 规范

  • Abel Avram
  • 王波

2009 年 7 月 8 日

话题:.NET开源C#DevOps语言 & 开发架构

近日,微软宣布为 C# 和 CLI 的相关规范即ECMA 334ECMA 335,提供公众承诺(Community Promise),这确保了任何人都可以用任何语言和方式来实现它们,而不会受微软侵犯知识产权及专利权的诉讼。这与开源.NET 项目 Mono 息息相关,直到目前为止它的合法性仍未澄清。具体的公众承诺如下:

微软不可撤销地承诺不对制造、使用、销售、提供销售、进口或分发任何实现而进行索赔。本承诺直接适用于所有制造、使用、销售、提供销售、进口或分发相关细节的个人或组织。目的在于授权开源的实现。

该公众承诺比起开放规范承诺的自由度要低些,因为公众承诺“要求实现的内容必须符合所有细节的规定部分”。但开发人员无需和微软签署任何许可协议或通知微软关于他们实现 C# 和 CLI 规范的详情。

Peter Galli 在 Port25 站点上作出声明来解释当中的含义

在公众承诺下,我们注意到任何人都可以用他们的技术、代码和解决方案来自由地实现这些规范。

我们不需要签署许可协议,抑或告诉微软我们是如何实现这些规范的。

该承诺适用于开发人员、经销商以及涉及相关实现的用户,与实现的开发模型、版权许可类型和业务模型无关。

一周前,GNU 之父 Richard M. Stallman 才刚刚警告过包括Mono 在内的开源项目

Debian 打算把 Mono 包含在 GNOME 的主要安装过程中,由于该应用程序用 C# 编写,会让开源社区冒上极大的风险。依赖 C# 非常的危险,所以我们并不鼓励用户使用。

问题不仅仅在 Mono;所有免费的 C# 实现都会面临同样的问题。微软很可能迫使所有免费 C# 实现的地下组织获得软件许可。

我们应该有条不紊地少用免费的 C# 实现。换句话说,我们不鼓励人们用 C# 编写程序。因此,我们不应该在 GNU/Linux 默认安装或者 GNOME 安装的主要方式中包含 C# 实现,我们应该尽可能推荐用户使用非 C# 应用程序。

Miguel de Icaza 就微软澄清 Mono 许可的问题做出如下报告

几个月前,我们在微软接触过 Bob Muglia 和 Brian Goldfarb,要求他们就 ECMA 标准中包括的 C# 和 CLI 作出说明。

由于 Mono 不仅仅实现了这两个 ECMA 标准,故 Icaza 还是有所担心:

在未来的几个月,我们将把庞大的 Mono 源代码大部分拆分为两份单独的源代码。一个是 ECMA,另一个则会包含我们对 ASP.NET、ADO.NET、WinForm 和其他部分的实现。

由于获取 Mono 的方式不同,也许你已经拿到这个拆分的版本或者还没有。

把 C# 和 CLI 置于公众承诺之中说明微软不会针对开源开发人员和 Linux 经销商实现相关规格或者包含 Mono 到经销产品当中的行为进行诉讼。到目前为止,公众承诺仅包含了 VBA 语言规范、HealthVault 服务规范、UI 自动控制 1.0 和 XPS 规范 1.0。

查看英文原文:Anybody May Legally Implement the C# and CLI Specifications

.NET开源C#DevOps语言 & 开发架构