为什么单身主义如此有争议?

很多时候,当我阅读关于一些程序的文章时,无论是GNOME Do还是Banshee或其他什么东西,我经常看到人们写着他们使用mono——而且这似乎带有贬义。为什么会这样呢?这些评论是基于实际原因、意识形态原因还是其他原因呢?

3为什么没有人呼吁将开放办公室移除,因为它实施了微软技术(文档格式)? - trampster
5个回答

意识形态上

有人认为Mono支持微软及其.Net平台。一些人认为这与Ubuntu的目标相悖,或者至少与他们个人的目标相悖,因此他们想要避免使用它。

抱歉用了一些含糊不清的词语,但我会保持客观。关于Mono是否真的这样做,甚至支持微软是好事还是坏事,这个讨论应该放在其他地方

实际上

使用虚拟机的程序(如Java和C#编写的程序)在我的经验中往往比不使用虚拟机的等效程序占用更多内存。这种概括并不总是成立。虽然有些用户确实关心这个问题,但人们常常过度担心性能。

例如,我正在使用只有1GB内存的笔记本电脑:这曾经是巨大的。这台机器开始显得有点老旧,但我仍然可以舒适地运行大多数应用。拥有4GB内存的用户几乎不会注意到"内存占用过高"的问题,他们应该关注其他方面的问题。(而且我会在5年后回来笑那个4GB的数字。)


4C#不完全是在虚拟机上运行的。至少不是以正常的方式。它可以像Java一样,将字节码即时编译成机器码,还可以预先编译成机器码(通常情况下),以及进行全面的传统编译(尽管在大多数平台上并非如此)。从这个意义上说,它与Java或Parrot不同。更像是一个混合体。因此,在现实世界中,很可能你关键的内部循环重要代码会被编译为本地机器指令在mono中。 - Stefano Palazzo
1@stefano:我提到的是内存使用情况,而不是执行速度。事实上,为了让JIT能够发挥作用,保留多个代码副本会占用更多的内存空间。 - Roger Pate
当然,你说得完全正确。我只是想提一下CLI字节码是一种混合编译/解释语言,并且在其之上还有即时编译器。这样可以将它与Java区分开来。 - Stefano Palazzo
Java也有一个复杂的JIT基础设施。这与Mono/.NET毫无疑问并不独特。 - RAOF
3不仅如此。Mono很有可能侵犯了微软的一些专利,这使得微软有可能像Oracle对Google的Java专利一样,有一天起诉某人。 - txwikinger
1@txwikinger Mono受到法律约束的“社区承诺”保护,微软承诺不会起诉实施了Mono开放标准的项目。 - trampster
5抱歉,但是在“社区承诺”中没有任何法律约束力的内容。 - txwikinger
2@txwikinger 这是法律约束力的,请查看此页面上的问题。http://www.microsoft.com/interop/cp/default.mspx - trampster
1@trampster:你还指望微软来解答法律问题?这就像在刑事审判中依赖检方来为你辩护一样。无论如何,据我所知,并没有法院判决确认“社区承诺”的合法性,事实上,我知道至少有一个案例宣布其中的一部分是非法的。 - txwikinger
1我认为Linux(因此也包括Ubuntu)支持Mono/.Net并不是什么坏事,我觉得糟糕的是微软自己没有做。 - Nathan Osman
如果你想以一个外行的角度来看微软对于他们社区承诺的说法,也可以看一下反对意见,包括(显然带有偏见的)自由软件基金会的分析。 - Fred Nurk

有些人认为微软拥有.NET的软件专利,并且作为.NET的实现,Mono违反了这些专利。因此,这些人认为使用Mono可能会使人面临专利诉讼的风险。
我想Mono之所以备受争议,是因为专利法本身就备受争议。但是也有具体的情况,Mono的支持者与微软达成了类似专利协议的协议,这看起来加强了微软对这些专利有效性的主张。(当然,微软并没有提供任何证据证明这些专利的存在,从而保持了一种不确定状态,就像他们声称Linux内核侵犯了专利一样。)这些协议导致其他社区成员感到背叛和不信任,因为这些协议似乎对整个社区造成了伤害(增加了被视为专利风险的可能性),同时使与微软达成协议的实体受益。因此,Mono备受争议的另一个原因是,一些Mono的主要支持者与微软达成了有争议的协议。
顺便说一下,我应该提到我是从旁观者的角度写的,对整个情况没有详细或具体的了解。我尽量保持中立,并且避免使用专有名词,以免将这个问题卷入争议之中。 编辑:在评论中,有人指出微软有一个社区承诺,不会对.NET实现主张专利权。但是这个承诺中有足够的法律术语,以至于我无法确定这个承诺是否能提供完全的保护,除非我雇佣一位律师来审查它。阅读后,我想到了一些潜在的漏洞,可能允许微软主张对Mono的专利权,但由于我不是律师,我不知道这些漏洞是否在法律上站得住脚,或者只是我对微软法律术语的误解。因此,尽管社区承诺是令人鼓舞的,但它肯定不能结束关于Mono可能存在专利责任的争议。

3这真的应该是被接受的答案,因为它是唯一一个实际回答了问题的。人们不愿意使用Mono,是因为他们担心会被微软起诉。 - Sergio Tapia
1在这里应该提到的是,欧洲专利公约第52条明确禁止对软件本身的专利(第52/2条)。这意味着至少欧盟成员国的公民和组织基本上不会受到像微软的许可活动之类的影响。(最后一句话存在争议) - Stefano Palazzo
1尽管有第52/2条款,但在欧洲仍然存在成功的软件专利申请。 - txwikinger
这个回答如果没有讨论法律约束力的“社区承诺”,来保护Mono免受微软的专利诉讼,就是不完整的。 - trampster
Trampster,如果你给我一个链接,我可以添加它。 - Ryan C. Thompson
社区承诺可在microsoft.com/interop/cp/default.mspx找到。 - trampster
1@trampster:CP覆盖的是ECMA 334和335,而不是整个C#,由于这些标准是在2006年发布的,所以任何新添加到C#中的内容明确地不在其范围之内。你是否期望Mono在使用CP时始终落后.NET 5年(并且还在增长) - Fred Nurk
Xamarin(维护Mono的公司)和Microsoft现在是合作伙伴,Microsoft正在推广Xamarin基于Mono的Android和iOS解决方案给.NET开发人员,并提供购买Xamarin工具的折扣。Microsoft鼓励人们使用Mono,他们不会因为你使用它而起诉你。 - trampster

Mono是Microsoft .net的一个开放移植版本。
从意识形态上讲,这利用了封闭技术来支持开放技术,这可能与GNU和/或Linux的一些理念不符。
从实际角度来看,目前Mono在功能上不如.NET 3.5版本全面。然而,它允许在Linux上使用C#(以及其他.NET语言)进行编程,我认为这是一件好事,而且没有Mono是不可能实现的。

9.NET的基本核心是一项开放的技术/标准(即使微软的主要实现不是开源的,C#、标准库的基本部分以及运行时被发布为ECMA标准)。 - JanC
@Popinou:我从未在3.5中遇到过缺少功能的问题。 - user4482
@JanC: Mono的部分功能(System.Windows.Forms)并不属于ECMA标准的一部分。 - Broam
@Broam: 当然,但是谁都不用那个(如果人们真的使用它,就不会有那么多bug了;-)),尤其不用来开发Linux或跨平台应用程序。 - JanC
1实际上,Mono并不是一个端口,它是对EMCA开放标准的从头开始的免费软件实现。并且受到法律约束的《社区承诺》保证不会起诉那些对该开放标准进行实现的人。 - trampster
1@Broam System.Windows.Forms在Ubuntu默认情况下不可用,并且也不是任何常见的Mono应用程序所需的。 - trampster

正如其他人所说,有两个主要原因:

1)意识形态:用户不习惯使用基于闭源的微软产品的Mono。然而,Mono本身是开源的。

2)专利:这曾经是一个重大关注点,但微软已经通过向ECMA 334和ECMA规范335 承诺社区许可证 来解决了这个问题。不幸的是,很多人对此并不了解。


4争论的观点是社区的承诺不够,这不仅仅是意识的问题。 - Broam

我不使用Mono,因为:

  1. 微软声称侵犯知识产权,但没有具体说明侵犯了什么,并且他们拒绝对Mono进行澄清,只是说Novell的用户受到保护。在他们用行动证明之前,我不相信微软的社区承诺。
  2. Mono的许可证很复杂。即使对于法律专家来说,理解起来也很困难,更不用说普通用户了。开源中没有任何东西会如此复杂难懂。
  3. Miguel de Icaza承诺过,但未能及时发布符合ECMA标准的源代码。
  4. 市场上充斥着那些遵循微软标准的公司,因为对他们来说,标准存在就是为了打破,让其他人处于劣势。
  5. 在Linux上使用.NET没有必要,也没有明显的好处。从其他平台移植过来的东西很少,而且Linux本身的特性可以用其他语言编写。
  6. Mono是一个毫无必要的分歧问题;它分散了我们的注意力,并为微软所利用,使我们无法关注更重要的问题。

我认为任何人都可以和应该使用Mono,但是不想要它的用户不应默认安装。


我不相信微软曾经在Mono中提出过侵犯专利的指控。但是,它承诺不会通过法律方式起诉。 - trampster
虚幻引擎需要安装几个Mono软件包;尽管如此,我相信它们都是开源的;也许有一天,它们会被一些让我们感到安心的东西所取代。 - Aquarius Power