I consider software applications one of the most important assets from which humanity can get extraordinary benefits. I also strongly believe that in order to fully achieve this, they must be innovating to the highest possible rate.
Software applications are built through things like programming languages, compilers and virtual machines. From this point I will generically refer to these things as Software Building Blocks (SBBs).
By being foundational to sofware applications, having the highest possible innovation rate on SBBs is key to achieve the same at the software application level.
Because of the stated above I will focus SBBs on innovation.
SBBs are influenced by four very important forces.
- Open Source Communities, which are mainly driven by the desire of improving software.
- Free Software Communities, which are mainly driven by the desire that software be entirely free.
- Markets, which are driven by all sort of needs that lead them to consume things.
- Business which are mainly driven by the desire of making money (while protect from competition).
In general, SBBs innovation must be driven by a balanced interaction between those forces.
In particular, I think that Open sourced SBBs should be able to go closed or viceversa driven by the balanced interaction named above.
Licensing models like BSD or Apache 2.0 allow the first.
The two kind of communities currently have an important influence and awareness and can increase it; they are also capable to answer back strongly to keep great code available if businesses decide to take it all and giving back nothing.
Markets are gradually starting to acquire software-related knowledge and to make more informed decisions. They will push the innovation by making final decisions when the other forces get stuck.
Businesses can provide a definitive support to key free software or open source initiatives or come up with a great and quick proposal when communities get stuck in improving things that clearly need to improve. The downside is their legally-supported need to protect from competition; this legal support comes in form of patents.
By tying patents to SBBs their owner will certainly get protected (at least for a while). But when this owner get stuck on improving those SBBs at the speed that the market requires it, no one is going to be able to provide a fully independent alternative without running a legal risk.
In the specific case of Java Platform this has happened more than once in recent times and the latest example is the Oracle lawsuit against Google.
For Google, Java ME was not good enough to satisfy the requirements imposed by mobile hardware limitations, the JCP wasn't going to improve it at the speed they needed it and the GPL license could scare mobile phone makers from getting in (something key for Google to has a chance to succeed on that market). That is why they decided to develop a VM on their own (called Dalvik VM) and license it under Apache 2.
At other hand, Oracle consider that by doing this, Google infringed its IP rights. Despite of hiding under several patents, in practical terms Oracle claiming establishes that the concept of VM is Oracles' IP. In other words (again in a practical sense), you can't create a VM from scratch which is capable of executing java bytecode without express permission from them!
This kind of things reduces the rate of innovation on SBBs !
However, as long as I firmly believe in this, I also recognize that by being originated in the human (and businesses) need of being protected from external threatens (things, other human beings, other businesses, etc.), patents are unlikely to easily go away from SBBs.
So in case that Google wins but its brand new java-alike platform is populated by patents, the problem will continue.
At the Microsoft side, even though they seem to be starting to get the point, their
technology still involves a lot of patents.
There is another option: the creation of (or support to), a set of SBBs without patents, under BSD or Apache licenses and with the sponsorship of a truly neutral party.
This sponsor could be Apache or an organization at inner United Nations, maybe at the same level of NATO or WTO. Having in mind the enormous impact that software apps have in mankind, it makes sense to me.