If you are a LibGDX developer or even a Java developer hoping to target iOS some pretty big news just happened. In a nutshell Xamarin acquired RoboVM (more details here). If both of those names are meaningless to you, here’s a quick rundown.
Xamarin are ultimately the company formed around Mono, which is the open source cross platform version of Microsoft’s .NET framework. That’s actually simplifying their history a fair bit. Many years ago they were a company called Ximian, and their big push was trying to make Linux on the desktop happen and part of that process was the Mono project. In between they were purchased by Novell, Novell blew up in spectacular fashion and from the ashes Xamarin was born. Of perhaps most interest to game developers, Xamarin developed the technology that Unity is built on top of. In fact, if you are working in a C# based game engine ( MonoGame, WaveEngine, Paradox, etc ) chances are it requires a Xamarin license to target iOS or Android.
RoboVM on the other hand are a much smaller developer that provide a very similar product, just targeting Java instead of .NET. Basically RoboVM provide an iOS runtime for Java applications, enabling you to run Java apps pretty much unchanged on iOS.
So, why do we care?
Well first off, RoboVM is the technology that LibGDX depends on for iOS deployment, ironically chosen while moving away from Xamarin years ago. In many ways, RoboVM owes it’s success and existence to the libGDX community. In fact, the LibGDX founder Mario Zechner started working for RoboVM about a year ago. Note, working for… it isn’t his company, something far too many people seem to miss these days.
Fast forward to recent history…
- RoboVM is now owned by Xamarin
- the core of RoboVM, the Ahead of Time (AoT) VM is no longer open source
- the pricing is much less indie friendly
So basically a core component that LibGDX depends on to support iOS just became closed, more expensive and owned by a company that doesn’t really seem to get game developers. This all in a world where people don’t expect to ever pay for anything… although that’s certainly a conversation for a different day.
To Mario/RoboVM’s credit, they have offered a free license option for LibGDX developers. You need to apply for the license, have a development team limit of 3 developers and need to activate the license on your build machines with a machine count limit attached to the license. Of course it also adds the pain of dealing with a license were there previously was none. The one silver lining in all of this is you get debugging support including in this license, something that was previously a paid feature.
At the end of the day, what exactly does this mean for LibGDX developers? Well you are now basically in the same boat as C# developers. To support certain targets you now have a pay wall in front of you. Of course the current license offer will mitigate that for many existing LibGDX developers but how that actually turns out is yet to be seen. With that license offer in place, LibGDX devs are still in a better place than most MonoGame/Paradox/et al developers out there, to say nothing of the fact there is no added cost to support Android. They are however certainly in a worse place then they were before.
I’m not going to lie and say this development is great news, it certainly isn’t. It however isn’t the end of the world scenario many are making it out to be. If enough community demand exists, they can pick up the code for RoboVM and run with it. Or port to another Java on iOS solution such as Codename One or Avian. Or explore a different approach entirely like Unity are moving toward. Of course they could also take the path of least resistance and keep working with RoboVM.
There are however two meta-points I want to mention here.
First off, no matter how much this affects you personally, some of the reactions I have seen to this have been downright off putting. The amount of heat Mario has taken over something that is basically beyond his control is just sickening. It really makes one wonder why people would even contribute to an open source project in the first place. Now caustic end users in an open source is nothing new, but it’s always disgusting to witness. Now Mario is a big boy and is handling fine so far as I can tell, but really ask yourself�� if you had to put up with this crap, would you bother donating your time anymore?
Second, Xamarin, if anyone from that company happens to be reading this, I hope the entire experience is an eye opener. When the entire indie game development industry looks at you at best as a necessary evil, at worst as the devil, it’s time for some introspection. Part of that relates to the above paragraph… people are horrifically over entitled these days and the thought of having to pay for anything is galling. Ignore this crowd, there isn’t much you can or should do.
On the other hand, with a more reasonable licensing, you would have a much larger community of advocates and I have to assume greater profits. Your legacy as a tool vendor to corporations really shows in your pricing model. Heck, look at LibGDX for example… they were using RoboVM in the first place to avoid you! If you followed the Unity or Unreal model of geared to income licensing then suddenly your products would become much more appealing to a much larger segment of the population. Your license fees are a bitter pill to swallow for a hobbyist looking to release a free title, while someone who was commercially successful would probably be willing to pay a greater amount.
At the end of the day this isn’t a story that is going to play out in a single day. There is an active discussion and more information on the LibGDX forums that I think is the ideal place to discuss things. Just keep the personal insults out of it.
EDIT: One major concern people had with the license granted for LibGDX developers was how long it would be valid. I just had the following conversation with Nat Friedman (CEO of Xamarin) on Twitter:
Other very interesting things related to Xamarin licensing were discussed, which I will be putting in a separate post. This announcement is very relevant to LibGDX developers however.