The Death of RoboVM
Microsoft recently made a big noise about its love and support of the Open Source community (especially Linux), but while it's making concrete steps toward improving its support for FOSS projects, its motives may not be entirely altruistic. Microsoft continues to fund legal attacks against open-source projects on multiple fronts, and it has crushed open-source projects when it suits the company.
Such is the case with RoboVM, a Java-to-mobile compiler that supported cross-platform mobile development.
RoboVM originally was an open-source project, although that changed after the parent company was acquired by Xamarin in October 2015. Xamarin had several similar products that support cross-platform development using different programming languages. Naturally, Xamarin saw RoboVM as a suitable addition to its stable.
Shortly after the acquisition, an announcement was made to the effect that the open-source development model "wasn't working out" for the RoboVM team. The project was closed, and licensing fees were increased to match the other tools in Xamarin's lineup.
Earlier this year, Microsoft acquired Xamarin, and while it's proudly touting the majority of Xamarin's suite of tools, it seems there's no place for RoboVM in Microsoft's cross-platform development plans. Last week, the RoboVM team announced that the project would be shut down.
This is bad news for projects that depend on RoboVM. And when you consider that there are a number of open-source frameworks and libraries (such as libGDX), shutting down the project will leave a number of developers out in the cold. Some mobile app firms will have to choose between abandoning their existing games and apps or rewriting them from scratch with a new stack.
Although several other open-source projects are in development that bring Java apps to iOS, they still are far from being production-ready. These projects will no doubt see an increase in development and other contributions during the next few months; however, it still will be some time before they are a suitable replacement for RoboVM.
So, why did Microsoft decide to axe a useful tool with a thriving user base? The official line is that the company decided it didn't fit in with its vision for mobile development. The existence of several similar open-source projects may have been a factor—why invest in building a platform with strong competition on the horizon?
But, there are some who will say that Microsoft just doesn't like Java. Microsoft did get its fingers burned back in 1997 when Sun sued Microsoft over its attempt to appropriate Java. Back then, Java was set to become the "language of the Internet", and bringing Java applet support to Internet Explorer was an important goal. In true Microsoft fashion, the Windows Java VM only partially supported the published Java standard—what's more, it added features that were not a part of the official standard.
The goal was to create a situation where code that ran on a Microsoft VM would not run on any other platform. By hijacking the Java standard, Microsoft planned to capture Sun's user base and dictate the future of Java. Of course, that plan resulted in an expensive debacle, which explains the company's lukewarm attitude to Java ever since.
Regardless of the back-room intrigues, the story of RoboVM serves to illustrate the difference between open source and free software. And, it shows how risky it can be to build software that depends on proprietary code—when the continued existence of your app's foundation is subject to company economics and politics, there's always a strong possibility that it will disappear taking your app with it.