Sunday, June 20, 2010

Open Source vs Proprietary Code: seeking a balanced standard

Open source is great. Code is knowledge and knowledge should not be hidden forever.  ASAP it should become public for all to use and benefit from. In the past the flow of information was slow, but nowadays is fast, and the faster we share and need information, the greater the need  society has for all code, which is knowledge, to become public, with no strings attached.

But what about the rights of the creators of  original code? The programmer sometimes pours his money, his time, his energies,  his own life into a program, and is unfair to demand or expect  him to put it into the public domain right away or license it under a free license that may take away his rights and his opportunity to make some money out of his product.  This don't seems fair.

A balance must be found somewhere.  The programmer should have a reasonable opportunity to make a living and earn an adequate return on the investment of time, knowledge, and effort he puts into the development of a computer program.  Yet the code itself is knowledge that should eventually become public domain, accessible for all to use and share free or charge, with no strings attached.

Certain programs constitute the foundation and infrastructure upon which the internet, the whole computer industry and some other segments of society are built. In these cases the public interest stands above those of the individual programmer. In these cases the period of time from the  moment when a program is made public to the time it becomes public domain should be relatively short.  But there are other programs which are peripheral applications, for example, an Astrological Calculations and Report writing program. It is not essential for society to have this program's  code placed on public domain.  In this case there is no specific public need that demands that the code becomes public domain immediately.  Eventually it should be, as general knowledge.  But the need is not as urgent as with more critical code.

So, what I proposed is that when a program is released, if it is going to be used in a critical application essential for society, the preferred method should be to develop and release the code immediately under a free license like the BSD or the GPL, to mention the two most popular.  If the programmer or company who develop the program feels that they have make a sizable investment in the development of the code and need to keep it private in order to have a decent return on their investment, then they could release it under a proprietary, closed code license.  But within a certain period of time, lets say one year, the code should be release under a less restricting license. Year after year thereafter the status of that code should become more and more public till it becomes public domain, free for all to use and modify, free of charge. 

As a number to consider I suggest that after five years of its release, the code for a given critical program should become public domain. This number, of course should eventually be established by the competent authorities and become an international standard.

A similar process of increasingly free licensing should applied to less critical code, but in this case instead of a yearly cycle, it may be every two or three years.  But again, I suggest that all software should become public domain not latter than ten years after its initial release.  Once again the appropriate authorities should establish this final limit and it should become an international standard.

Once these international standards are established, every time a software program is release, we will know that after a set amount of time, the code will become available, and the individual or Corporation who releases the program will know that the will have the exclusive  use of that code for a set period of time.  So, they better release a good program, because if it does not works well from the beginning, they will not be able to benefit from it before its code becomes public domain.

Under these standards what happened with Windows Vista would not happened again; for inevitable, from the date of the initial release, the source code would have become increasingly open and by the time windows 7 came about, it would have been well known to the competition. A norm like this would have force Microsoft to release good, well tested code from the very beginning, to maximize their return on investment before the opening of the code, or develop their OS under an Open Source development model that will speed up its development while benefiting from the contributions of others, even their competition.

This proprietary to open source to public domain source code release Standard will bring to an end the present conflict between proprietary and open code development models.  Some companies and individuals will choose to develop their software as open source, to take advantage of the extra and free resources that the open source developing model provides, while others will prefer to develop it as proprietary code, to gain a competitive advantage once it is release. One way or another, within a set number of years the code will become public domain, free for all to use, share and modify.

The important thing is that code, should not remain proprietary forever.  It is knowledge that must become public. Yet those who invested time and effort developing it, should have a fair opportunity to get a decent return on their investment, before it becomes public, and, eventually be placed  in the public domain.

This idea is not written in stone, hopefully will not be written on ice, either. It is presented with the hope that the powers that be will take a look at it, will improve it, correct it, rewrite it, and eventually propose it as a Software Code Development, and licensing Standard.