Hacker News new | ask | show | jobs
by WallWextra 4254 days ago
The unoffical reason is Xamarin wants too much money.
3 comments

Or the Unity guys want to pay too little money.
You haven't seen Xamarin licensing prices...
No, but they are surely cheaper than a lot of comercial software I have to deal with in the enterprise space.

Plus let's not forget Unity was just another 3D engine before they got Mono integrated. Whereas Mono was already being used in multiple areas.

Anyway, this is playing conspiracy theory until someone issues an official statement.

Mono is open source and free software. Because of the "single static binary" policy (no dynamic linking) of app stores you have to obtain a proprietary license from Xamarin.

• The C# compiler is dual-licensed under the MIT/X11 license and the GNU General Public License (GPL).

• The tools are released under the terms of the GNU General Public License (GPL).

• The runtime libraries are under the GNU Library GPL 2.0 (LGPL 2.0).

• The class libraries are released under the terms of the MIT X11 license.

and:

When do I need to obtain a license from Xamarin to the Mono Runtime?

We only require licensing for uses of Mono and Moonlight on embedded systems, or systems where you are unable to fulfill the obligations of the GNU LGPL.

source: http://www.mono-project.com/docs/faq/licensing/

>We only require licensing for uses of Mono and Moonlight on embedded systems, or systems where you are unable to fulfill the obligations of the GNU LGPL.

In other words, you have to pay a license fee for shipping the Mono runtime in a proprietary game, which is what Unity does.

So Unity has negotiated a license deal with Xamarin for the Mono runtime version they use, and if they want to use a newer version they will have to pay more, which they aren't doing.

Instead Unity has developed il2cpp which means that they no longer have to ship the mono runtime with each game and therefore no longer have to pay the license fee for shipping mono.

Atleast that's what I've gathered.

Unity has negotiated a license with Novell. Now they would have to do it again with Xamarin for the newer version of Mono. But we don't know if Unity was really nice to the Mono guys when Novell pushed out what would quickly become Xamarin. As always, if it were only money things would be simpler. But if there is some beef things will drag.

Plus, Unity has forked Mono and they contribute to their own internal version. At the same time they are working hard on their own proprietary il2cpp (to export to C++). The writing is clear: they will drag things as long as possible with using their old version of Mono until they are able to switch to il2cpp.

My personal opinion is that Xamarin guys are better at Mono and that UE4 coupled w. Mono/C# might put quite a bit of pressure on Unity.

>Unity has negotiated a license with Novell. Now they would have to do it again with Xamarin for the newer version of Mono.

Ah, so the deal was before Xamarin bought the rights to Mono from Attachmate/Novell, I didn't know that.

>At the same time they are working hard on their own proprietary il2cpp (to export to C++). The writing is clear: they will drag things as long as possible with using their old version of Mono until they are able to switch to il2cpp.

From what I understood they would still ship Mono as part of Unity (as in development framework), however what they want to avoid is the license costs that comes with shipping the Mono runtime with each Unity game, hence il2cpp, but perhaps I'm mistaken here ?

For them to invest serious resources into a Mono fork and also in a proprietary solution (il2cpp) shows that they do not believe in a deal for a license of their liking, whatever the reasons: interpersonal or purely monetary.
You can bundle LGPL libraries with proprietary applications quite easily; it just has to be possible for the user to replace it, which is rarely a problem because the usual situation is that your proprietary code sits "above" the LGPL library.

But reportedly Apple does not allow LGPL in its app store for some reason.

Well there are likely lots of potential markets where a prerequisite of allowing the end user to swap out LGPL libraries won't be accepted (sadly), not only Apple but the consoles as well, so from that perspective Unity needs to buy a license which allows them to forego the LGPL requirements.
It's not just mono they need, it's the IDE. The default IDE that comes with Unity is MonoDevelop. If they upgraded the runtime, they'd have to pay for Xamarin's IDE. I wonder if embedding the java runtime would have been cheaper in the long run.
Our IDE is free for anyone to use, whether you are using our iOS, Android or Mac products or not. It's also open source (except for the addins that work with our iOS, Android and Mac products).

There are a lot of Unity customers on our forums using Xamarin Studio already.

How would that work with the App store now, since you can dynamically link to frameworks?
I think it is very fair if Unity will be in the same boat as e.g. MonoGame.