For several years now many have been concerned about Mono (the open source re-implementation of the .Net framework). Specifically: What happens if Microsoft decides it isn’t happy with Mono? What if they unleash the lawyers upon the Mono project, effectively rendering useless (and un-distributable) all of the Mono-based applications out there?
The debate over whether Mono is “safe” to use has been, to say the least, fierce.
Luckily, at present, Microsoft has not “unleashed the lawyers”. Development and adoption of Mono has continued.
And now we have the Oracle situation: Oracle purchases Sun (makers of Java). Oracle then sues Google over Google’s usage of Java in Android.
Of course, Java is the primary programming language on the Android platform. Removing Java from Android would be like… removing HTML from Firefox. The mere thought could be devastating. Especially to all of the developers creating software for the Android platform, today, in Java. (And, perhaps, that’s the whole point.)
Let’s take a step back for a moment.
This means that we have two of the most popular programming languages/frameworks in use today… and, as a developer, both have a great deal of legal uncertainty around them.
Can we, as developers, build our applications using these frameworks and languages and feel confident that we can, legally, ship them a year from now?
And, even if we can legally ship our applications built on Java or Mono, will the platforms we are developing for (such as Android) have a damaged market-share (or, potentially worse, a splintered technology base where older versions use Java and future versions use… something else) due to these sorts of lawsuits or concerns?
The key here is the root question of “Is it safe to develop with one language and for one platform when either is controlled by a single company?”.
The answer, of course, is “no”. Or, more to the point, “Hell no”.
Yet, over the last few years, I have found myself actively defending both the legality and viability of Mono on the Linux Action Show.
Is this shortsighted of me? Have all of the various “Mono Haters” been right all along? Is it really in all of our (I am referring to the developers of the world) best interests to abandon both Mono and Java and run back into the warm embrace of C++?
To be honest, at this point, I am uncertain.
Regardless, I find myself gravitating towards a firm stance of “total language and platform independence”.
Meaning that I am finding myself far more comfortable using the higher level languages and tools that afford me the flexibility to move between platforms and frameworks without too large of an investment.
Tools like Lazarus (which is built on top of the Free Pascal compiler and an LGPL’d framework that lets you toggle between Win32, QT, GTK2, Cocoa, etc. as if you were changing TV channels). This sort of flexibility removes my dependence on any one platform, widget-set, etc. but at the cost of using a higher level toolset (which many will balk at).
For me it’s all about not having “the rug pulled out from under me” by the whims of any one company. By using something like Lazarus (which, admittedly, has its drawbacks) I have far more control over my own software development destiny).
(In the interest of not being too “Self-Promote-y”, I’m only going to make brief mention of Illumination Software Creator, which I developed, here as another high level, cross platform/language/framework tool.)
Here’s my thought.
If we, as a development community, stop using these specific languages/frameworks (such as Java) directly and, instead, focus on higher level tools (such as Lazarus)… this will reduce the control these companies have over us, and allow us maximum freedom to jump to a new, more stable ship when a storm hits. (This very thing is one of the big reasons many use OpenGL over Direct3D.)
Of course, right now, our options for those sorts of high level, cross platform languages/frameworks/tools is… limited. But the faster we embrace those sorts of tools, the faster that situation will improve.
And the quicker we can tell Oracle to “shove off”.