Mono for iOS/Android Open or Closed? Paid or Free?

前端 未结 5 1711
礼貌的吻别
礼貌的吻别 2020-12-31 02:49

I am attempting to learn more about mobile/tablet development and, as a .NET developer, I am naturally drawn to Mono. But I am confused--I thought that Mono was free and op

相关标签:
5条回答
  • 2020-12-31 03:28

    Update (2016/03/31)

    • Mono has been re-licensed to MIT;

    • The Xamarin.iOS, Xamarin.Mac and Xamarin.Android SDK are going open source;

    History answer

    First let's clear up the Mono case :-)

    Mono is free as in free speech, not free beer. You can get it for free (i.e. without paying) as it is available under open source licenses that allow this. But you could still pay for it too (e.g. people did pay for some versions of Mono in Novell's days). Also some people cannot use Mono under the free open source licenses (e.g. as a game engine where the source is not available...). In such cases a commercial license, from the copyright holders, is needed.

    Mono for Android is a commercial product based on Mono and sold by Xamarin (who has the rights to license Mono). It re-use a lot of what Mono has achieved and also brings a lot more features to allow .NET developers to use their skills on the Android platforms.

    Finally evaluation versions of Mono for Android are free and fully functional when used with the Android emulator (not with devices). So you can still try, learn and enjoy Mono and Mono for Android without paying a dime to Xamarin :-)

    note: the same applies for MonoTouch which allows you to build .NET-based iPhone/iPad (iOS) applications from an Mac OSX computer.

    Disclaimer: I work for Xamarin

    0 讨论(0)
  • 2020-12-31 03:32

    As a long-time .Net developer (starting with 1.0), I can tell you that if you are anything other than a hobbyist, any money you spend on MonoTouch and MonoDroid will pay huge dividends in the very short term.

    There is a certainly a learning curve for the UI and the third-party control environment isn't anywhere near as robust as it is for the Windows platforms, but the ability to program against the .Net framework (even if the language is C#) is an indescribable advantage and well worth every penny spent with Xamarin.

    We were able to port a 500,000 line VB.Net application written for the Tablet OS and PocketPC to the iPad in less than 3 months, including local database support, web services interaction, etc. And it should take us less than another month to create the UI for Android now that we have a common services layer. At that point, we will have an application that will have similar functionality across iOS, Android, Windows desktop, Windows tablet, and Windows Phone. I certainly can't do that with the tens of thousands of dollars that I spend per year in the Microsoft ecosystem.

    0 讨论(0)
  • 2020-12-31 03:35

    Mono itself is free. That doesn't mean everything written with mono is free. As is the case for mono for android. Somebody took the time to write software that makes mono work with android. Just because it's written in mono doesn't mean they have to share it for free. The only thing they'd have to share is any changes the made to mono itself. Just because android is free and open, doesn't mean I can't make applications and require people purchase them in order to use them.

    0 讨论(0)
  • 2020-12-31 03:40

    Old post, but poupou's answer needs some clarification and some additional information.

    First of all, since Poupou's posting, Xamarin has added a new Community Edition license to the entire Mono/Android/iOS stack that allows for closed source distribution of apps, but this license is restricted to how large the binaries can be. In practice, even some Hello World applications exceed the community edition binary size limits, so in my opinion this is not a real option by any practical definition.

    That being said, the core Mono runtime and runtime libraries are licensed under LGPL. This makes it difficult to release closed-source software in an app store using the mono runtime without purchasing a commercial license from Xamarin, but not impossible. One option that the LGPL allows, according to my understanding, is to provide the object files for your app. This would allow a user to re-link your app's object files to a different version of the mono runtime and then install that relinked app onto their device. They would still have access to the object files, but you could still keep your source closed if you wished. I'm not a lawyer, but I think you may be able to charge for these object files and distribute them by request only.

    If you want to release an open source application using mono, you would be well positioned to do so because you can of course release not just the object code but the full source of your app, allowing users to relink mono into their own version of your app, and thus fulfilling the requirements of the LGPL.

    Now, here's the problem. While what I said above is true, it ONLY applies to the core mono runtime. That's because the core mono runtime has an open source license. You might be surprised to know that none of the platform specific BINDINGS, which are the libraries and developer tools that Xamarin provides to hook up your .net mono code to, say, the platform UI/system libraries of android and iOS, are open source at all. So, Mono for Android and MonoTouch (and monomac?) are neither free as in free speech nor free as in free beer. They are both 100% commercial products. Now, I'm told you can request an open source compatible license privately, but your open source project must be pre-approved, which means you will not be able to take advantage of the object code option for a closed source project, and I don't know what kind of restrictions Xamarin would place on such a license (I suspect similar restrictions to the community edition).

    EDIT: Correction to the above - Xamarin won't give you an open source compatible license for an open source project. Instead, they will give you (as in, the developer wanting to release a build of an open source app on one of the app stores), a free full Xamarin license if they can verify that your app is legitimately open source. This is still the commercial license (for one developer), and not an open source compatible license, so this license does not apply to any other developers who download the code for your project and build it. They will need to purchase their own Xamarin license to publish their version of the open source app.

    What this means is that, the only way to take advantage of the LGPL object code option for closed source distribution (or, indeed, to release an LGPL compatible open source app without Xamarin's permission), you would need to write all of your own platform bindings to make it possible for your app to interact with the system or UI in any meaningful way. Koushik Dutta, from ClockworkMod, originally started such a project, at least for the android bindings, prior to Xamarin's release of Mono for Android. He abandoned the project after Xamarin's release, but the code is still available here: https://github.com/koush/androidmono

    If one were to create a set of android/iOS bindings for Mono and release them under a permissive open source license like MIT/X11, then apps could bypass Xamarin and release apps under the object file option for LGPL compliance (or just release the code, if it's an open source app).

    Going one GIANT step further - if you look at the core mono licensing breakdown, you'll notice that only the core mono runtime and its libraries are licensed under LGPL. Almost all of the class libraries are already using a permissive license like MIT/X11 or else some form of Apache or MS-PL. That means that if, hypothetically, in addition to creating some permissive open source bindings for android/iOS, someone were to start from scratch and rewrite the core mono runtime and runtime libraries (all the LGPL'ed parts of mono) using a more permissive license, then that hypothetical version of mono (I call it "MonoLibre" when I daydream about it) could be embedded in a closed source app, for free, without releasing object files, open sourcing your app, paying Xamarin anything, or having to ask Xamarin for permission to distribute your open source app. Xamarin could continue to sell the "commercialized" mono runtime, but MonoLibre could continue to use all the same class libraries and even the same compiler.

    0 讨论(0)
  • 2020-12-31 03:45

    It's been a while since this questions was first asked but I did come across a completely open source option called Monocross http://monocross.net/

    Haven't used it so I don't know how good it is.

    0 讨论(0)
提交回复
热议问题