There’s been some debate recently on the license-discuss list hosted by the OSI on how to release code as open source while still requiring that it be compatible with a test suite that must be distributed as part of the code.
The initial discussion was kicked off by Bob Scheifler of Sun Microsystems. Bob’s original post was:
For my personal edification, and hoping this is an acceptable inquiry, I’d like to understand if and specifically how the following informal license sketch conflicts with the OSD. Any and all comments appreciated.
- The licensed work consists of source code, test suite in executable form, and test suite documentation.
- A derivative work in executable form that has passed the unmodified test suite can be distributed under a license of your choosing.
- Any other derivative work can only be distributed under this license.
Any such distribution must include the unmodified test suite and test suite documentation.
The idea would be to somehow require that derivative versions of the code would pass the test suite distributed with the code. As long as the derivative work passed the test suite you could distributed the code under any license you wanted — but if your derivative work did not pass the test suite, you’d be required to distrbute it with the test suite included under the above sketch license.
One use for this type of license would be to release code that implements some sort of API under an open source license, while ensuring that no one can change the API itself. For example, if Sun were to want to release Java under an open source license, this may be the type of license it would choose.
By requiring that any derivative works pass the test suite, Sun could ensure that no one could publish derivative versions of Java that were incompatible with their version. The open source community (and other companies) could freely publish implementations of the code that passed the test suite, but Sun (or at least the JCP) would remain in control of Java as a standard.
Hence the phrase, Open Source/Closed Standard.
So, is this a good idea? Can something be considered to be ‘open source’ if some organization stays in control of the standards that the software implements?
Personally, I believe this should be fine. It’s to everyone’s benefit to allow open source implementations of standard API’s while preventing fragmentation of those API’s.
For a good example, just look back a few years ago at the mess caused by Microsoft delivering an incompatible version of Java. Microsoft took advantage of their Java license and created a JVM (the MSJVM) that implemented what they called ‘improvements’ to Java (can you say ‘embrace and extend’?).
This caused a huge lawsuit between Sun and Microsoft. Sun claimed it was anti-competitive behavior and that it fragmented the Java standard (and they were right on both counts). It was to no one’s advantage (except Microsoft’s) to include a version of Java in every instance of Windows that was incompatible with all the other JVM’s that were available.