适用于iOS / Android的Mono打开还是关闭?付费还是免费?

时间:2011-10-29 00:09:29

标签: android .net mono xamarin.ios xamarin.android

我正在尝试了解有关移动/平板电脑开发的更多信息,作为.NET开发人员,我很自然地被Mono所吸引。但我很困惑 - 我认为Mono是免费和开源的;然而,所有迹象似乎都表明Mono是一种“付费游戏”协议(https://store.xamarin.com/)。

有人可以帮我理解哪个是正确的答案?

谢谢!

马特

5 个答案:

答案 0 :(得分:36)

更新(2016/03/31)

历史回答

首先让我们清理Mono案例: - )

Mono是免费的,如言论自由,而不是免费啤酒。您可以免费获得(即无需支付),因为它可以在允许此项的开源许可下使用。但是你仍然可以支付它(例如,人们确实在Novell的时代支付了某些版本的Mono)。也有些人不能在免费开源许可证下使用Mono(例如,作为源不可用的游戏引擎......)。在这种情况下,需要获得版权所有者的商业许可。

Mono for Android是一款基于Mono的商业产品,由Xamarin(有权获得Mono许可)出售。它重复使用了Mono所取得的许多功能,并且还带来了很多更多功能,以允许.NET开发人员在Android平台上使用他们的技能。

最后,Mono for Android的评估版免费,并且在与Android模拟器(不是设备)一起使用时功能齐全。所以你仍然可以尝试,学习和享受Android的单声道和单声道,而无需支付一分钱给Xamarin: - )

注意:同样适用于MonoTouch,它允许您从Mac OSX计算机构建基于.NET的iPhone / iPad(iOS)应用程序。

免责声明:我为Xamarin工作

答案 1 :(得分:17)

作为一个长期的.Net开发人员(从1.0开始),我可以告诉你,如果你不是一个业余爱好者,你在MonoTouch和MonoDroid上花的任何钱都会在短期内带来巨大的回报。

UI确实存在学习曲线,第三方控制环境并不像Windows平台那样强大,但能够针对.Net框架进行编程(即使语言也是如此)是C#)是一个难以描述的优势,非常值得与Xamarin花费的每一分钱。

我们能够在不到3个月的时间内将为Tablet OS和PocketPC编写的500,000行VB.Net应用程序移植到iPad,包括本地数据库支持,Web服务交互等。它应该比另一个更少现在,我们有一个公共服务层,为Android创建UI。那时,我们将拥有一个应用程序,它将在iOS,Android,Windows桌面,Windows平板电脑和Windows Phone上具有类似的功能。我当然不能用微软生态系统每年花费的数万美元来做到这一点。

答案 2 :(得分:11)

旧帖子,但是poupou的回答需要一些澄清和一些额外的信息。

首先,自Poupou发布以来,Xamarin已经为整个Mono / Android / iOS堆栈添加了一个新的Community Edition许可证,允许关闭源代码分发应用程序,但此许可证仅限于大小二进制文件可以。在实践中,即使一些Hello World应用程序超出了社区版本的二进制大小限制,因此在我看来,这不是任何实际定义的真正选择。

话虽这么说,核心Mono运行时和运行时库是根据LGPL许可的。这使得很难在不购买Xamarin商业许可的情况下使用单声道运行时在应用商店中发布闭源软件,但并非不可能。根据我的理解,LGPL允许的一个选项是为您的应用程序提供目标文件。这将允许用户将应用程序的目标文件重新链接到不同版本的单声道运行时,然后将该重新链接的应用程序安装到他们的设备上。他们仍然可以访问目标文件,但如果您愿意,仍然可以保持源关闭。我不是律师,但我认为您可以对这些目标文件收费,并仅按要求分发。

如果你想使用mono发布一个开源应用程序,那么你就可以这么做了,因为你当然不仅可以释放对象代码,还可以释放应用程序的完整源代码,从而允许用户将mono重新插入到他们自己的应用程序中您的应用版本,从而满足LGPL的要求。

现在,问题就在这里。虽然我上面说的是真的,但它仅适用于核心单声道运行时。这是因为核心单声道运行时具有开源许可证。您可能会惊讶地发现没有任何平台特定的BINDINGS,它们是Xamarin提供的用于将您的.net单声道代码连接到Android和iOS的平台UI /系统库的库和开发人员工具,是开源的一点都不那么,Mono for Android和MonoTouch(以及monomac?)既不是免费语言也不是免费,也不像免费啤酒那样免费。它们都是100%商业产品。现在,我告诉您可以私下请求开源兼容许可证,但您的开源项目必须预先批准,这意味着您将无法利用对象代码选项进行封闭源项目,而且我不知道Xamarin会对这样的许可证施加什么样的限制(我怀疑对社区版本有类似的限制)。

编辑:对上述内容的更正 - Xamarin不会为开源项目提供开源兼容许可证。相反,他们会给你(如开发人员希望在其中一个应用程序商店上发布一个开源应用程序的版本),如果他们可以验证你的应用程序是合法开源的,则可以免费获得完整的Xamarin许可证。这仍然是商业许可(对于一个开发人员),而不是开源兼容许可,因此该许可不适用于为您的项目下载代码并构建它的任何其他开发人员。他们需要购买自己的Xamarin许可证才能发布他们的开源应用程序版本。

这意味着,利用LGPL目标代码选项进行封闭源代码分发的唯一方法(或者,实际上,在没有Xamarin许可的情况下发布兼容LGPL的开源应用程序),您需要编写所有自己的平台绑定,使您的应用程序可以以任何有意义的方式与系统或UI进行交互。来自ClockworkMod的Koushik Dutta在Xamarin发布Mono for Android之前,最初开始了这样一个项目,至少是针对Android绑定的。在Xamarin发布后他放弃了该项目,但代码仍然可以在这里找到: https://github.com/koush/androidmono

如果要为Mono创建一组android / iOS绑定并在许可的开源许可证(如MIT / X11)下发布它们,那么应用程序可以绕过Xamarin并在目标文件选项下发布应用程序以符合LGPL(或者只是发布代码,如果它是一个开源应用程序)。

进一步迈向GIANT步骤 - 如果你看一下核心单声道授权细分,你会注意到只有核心单声道运行时及其库在LGPL下获得许可。几乎所有的类库都已经使用了像MIT / X11这样的许可许可证,或者某种形式的Apache或MS-PL。这意味着,如果假设,除了为android / iOS创建一些许可的开源绑定之外,还有人要从头开始并使用a重写核心单声道运行时和运行时库(所有LGPL和单声道部分)更宽松的许可证,那个假想的单声道版本(我称之为" MonoLibre"当我做白日梦时)可以免费嵌入封闭的源应用程序中,无需发布目标文件,开源你的应用程序,支付Xamarin任何东西,或者不得不要求Xamarin允许分发您的开源应用程序。 Xamarin可以继续销售"商业化"单声道运行时,但MonoLibre可以继续使用所有相同的类库,甚至是相同的编译器。

答案 3 :(得分:6)

Mono本身是免费的。这并不意味着所有用mono编写的都是免费的。就像用于Android的单声道一样。有人花时间编写软件,使单声道工作与android。仅仅因为它是用单声道写的并不意味着它们必须免费共享它。他们唯一要分享的是对单声道本身的任何改变。仅仅因为android是免费和开放的,并不意味着我不能制作应用程序并要求人们购买它们以便使用它们。

答案 4 :(得分:0)

自问这个问题以来已经有一段时间了,但我确实遇到了一个名为Monocross的完全开源选项http://monocross.net/

没有使用它所以我不知道它有多好。

相关问题