单声道的iOS / Android打开或closures? 付费还是免费?

我试图更多地了解移动/平板电脑的开发,作为一名.NET开发人员,我自然会被Mono所吸引。 但是我感到困惑 – 我认为Mono是自由开源的, 然而,所有的迹象似乎都指向Mono是一个“付费玩”交易(https://store.xamarin.com/)。

有人能帮我理解哪个是正确的答案吗?

谢谢!

马特

Related of "单声道的iOS / Android打开或closures? 付费还是免费?"

更新(2016/03/31)

  • 单声道已被重新授权给麻省理工学院 ;

  • Xamarin.iOS,Xamarin.Mac和Xamarin.Android SDK正在开源 ;

历史回答

首先让我们来澄清单声道的情况:-)

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

适用于Android的Mono是一款基于Mono的商业产品,由Xamarin(拥有Mono许可权)出售。 它重用了Mono已经实现的许多function,并且还带来了许多function,允许.NET开发人员在Android平台上使用他们的技能。

最后,Android版Mono的评估版在与Android模拟器(不包括设备)一起使用时是免费且function完备的。 所以你仍然可以尝试,学习和享受单声道和单声道的Android无需支付一毛钱Xamarin 🙂

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

免责声明:我为Xamarin工作

作为一个长期的.Net开发者(从1.0开始),我可以告诉你,如果你不是一个业余爱好者,你在MonoTouch和MonoDroid上花费的任何钱都将在短期内付出巨大的收益。

对于用户界面来说,肯定有一个学习曲线,第三方控制环境不像Windows平台那样健壮,但是能够根据.Net框架进行编程(即使语言是C#)是一个难以形容的优势,值得花费与Xamarin每一分钱。

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

旧的post,但poupou的答案需要一些澄清和一些额外的信息。

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

这就是说,核心的Mono运行时和运行时库在LGPL下获得许可。 这使得在没有从Xamarin购买商业许可证的情况下使用单声道运行时间在app store中发布闭源软件变得困难,但并非不可能。 根据我的理解,LGPL允许的一个选项是为您的应用程序提供目标文件。 这将允许用户将您的应用程序的目标文件重新链接到不同版本的mono运行时,然后将重新链接的应用程序安装到他们的设备上。 他们仍然可以访问目标文件,但是如果你愿意的话,你仍然可以保持你的源码closures。 我不是律师,但我认为你可能能够收取这些目标文件,并按请求分发。

如果你想使用mono发布一个开源的应用程序,那么你可以很好地做到这一点,因为你当然可以发布不仅仅是目标代码,而是你的应用程序的完整源代码,允许用户将mono重新链接到你自己的版本应用程序,从而满足LGPL的要求。

现在,这是问题。 虽然我上面说的是真的,它只适用于核心单声道运行时。 这是因为核心单声道运行时具有开源许可证。 您可能会惊讶地发现,平台特定的绑定(这是Xamarin提供的用于将.net单声道代码连接到Android和iOS的平台UI /系统库)的库和开发人员工具都不是开源的在所有。 那么,Mono for Android和MonoTouch(以及monomac?)既不是免费的,也不像免费的啤酒那样自由。 他们都是100%的商业产品。 现在,我被告知可以私下申请一个开放源代码兼容的许可证,但是你的开源项目必须事先得到批准,这意味着你将无法利用闭源项目的目标代码选项,而且我不知道Xamarin会在这样一个许可证上放置什么样的限制(我怀疑社区版本有类似的限制)。

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

这意味着,只有利用LGPL对象代码选项才能实现封闭源代码发布(或者实际上,在未经Xamarin许可的情况下发布兼容LGPL的开放源代码应用程序),您需要编写所有自己的平台绑定,使您的应用程序能够以任何有意义的方式与系统或用户界面进行交互。 来自ClockworkMod的Koushik Dutta最初是在Xamarin发布Android版Mono之前开始的,至less在android绑定方面是这样的。 Xamarin发布后,他放弃了这个项目,但是代码仍然可以在这里find: https : //github.com/koush/androidmono

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

再往前走一步 – 如果您看看核心单声道许可细分,您会注意到只有核心单声道运行时及其库文件在LGPL下获得许可。 几乎所有的类库都已经使用了像MIT / X11这样的许可许可证,或者是某种forms的Apache或者MS-PL。 这意味着,假设除了为android / iOS创build一些宽松的开源绑定之外,还有人要从头开始,重新编写核心单声道运行时和运行时库(所有LGPL的单声道部分),使用更宽松的那么假设的单声道版本(我把它称为“MonoLibre”时,我可以把它作为白日梦),可以免费embedded到一个封闭的源代码应用程序,不释放目标文件,开放源代码应用程序,支付Xamarin任何东西,或必须请问Xamarin的权限分发您的开源应用程序。 Xamarin可以继续销售“商业化”的单声道运行时,但MonoLibre可以继续使用所有相同的类库,甚至相同的编译器。

单声道本身是免费的。 这并不意味着用mono编写的所有东西都是免费的。 与单声道为Android的情况一样。 有人花时间写软件,使单声道工作与Android。 仅仅因为它是用单声道写的,并不意味着他们必须免费分享。 他们唯一需要分享的是对单声道本身的任何改变。 仅仅因为android是自由开放的,并不意味着我不能让应用程序,并要求人们购买它们才能使用它们。

自从这个问题首次被提出以来已经有一段时间了,但是我遇到了一个完全开源的选项Monocross http://monocross.net/

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