Deciphering the wxWindows Library License
DISCLAIMER: I am not a lawyer, nor do I play one on TV.
The wxWindows Library License is essentially the LGPL (Lesser GNU Public License) v2.1 with an exception to the LGPL's provisions regarding static linking with closed source code. It was chosen as the license for VirtualGL because we wanted the project to be as "commercially-friendly" as possible yet still retain some copyleft provisions to encourage the formation of a healthy open source community. There is some ambiguity-- not to mention a lot of misunderstanding and blind dogma-- regarding how certain open source licenses apply to static and dynamic linking. Most of these licenses have never been put through a rigorous legal test, and thus it is often incumbent upon project developers and not lawyers to clarify their intent with regards to using a particular license. That being the case, this article was written to state our understanding of what the wxWindows Library License requires and how we wish it to apply to VirtualGL and its components. Our understanding seems to match that of the wxWidgets project, who created the license. If your understanding of the license differs, then please contact the project admin.
LGPL v2.1 Background
As with most open source licenses, the LGPL governs only distribution, not usage. Basically, you can use the code or binaries however you want. You can experiment with them, build internal solutions from them, etc. However, if you publicly distribute the code or any software that leverages it, then you must comply with the terms of the license.
Much of the LGPL v2.1 hinges on the definition of a "work based on the Library", because only such works are subject to the terms of the LGPL. Section 0 defines a "work based on the Library" as "either the Library or any derivative work under copyright law: that is to say, a work containing the Library or a portion of it, either verbatim or with modifications and/or translated straightforwardly into another language." Thus, whenever the word "derivative" is used in other parts of the license, this equates to "work based on the Library."
Examples of "works based on the Library":
So, what does this mean in terms of distribution requirements?
The wxWindows Exceptions
The wxWindows Library License contains four exceptions to the LGPL, the most notable of which is Exception 2:
Per the previous section, when the Library is linked with other code not derived from the Library, the resulting binary becomes a "work based on the Library" and is subject to either Section 6 or Section 7 of the LGPL. Our understanding is that Exception 2 effectively nullifies both of these sections, which is equivalent to nullifying Requirements 3 and 4 above.
It was not our intent in using the wxWindows Library License to nullify any other sections of the LGPL. Thus, it was our intent that when you distribute a binary version of the Library (or any other binary that statically links with it), you should also distribute the source code for the Library (including any modifications you made to it.) However, you may license the binary in any manner you wish, including placing restrictions on reverse engineering, and you do not have to include object code for the closed source portions of the binary.
VirtualGL is designed to plug into an application at run time. Thus, the application is not "designed to work with the Library" and would not, under any circumstances, be subject to the provisions of the LGPL. Even if the application could, under some wild stretch of the imagination, be considered a "work based on the Library", then Exception 2 of the wxWindows Library License would nullify any distribution requirements for the application. In other words, VirtualGL's license applies only to distributing VirtualGL itself or to distributing other applications/libraries that directly incorporate VirtualGL's technology.
It was our intent from the start to allow commercial products to be built using VirtualGL's source code. It was also our intent that the only requirements for distributing such products would be that the modified source code for any components of VirtualGL that were used would be distributed along with the product.
Scripts that are incorporated into the VirtualGL distribution are explicitly licensed under the wxWindows Library License, even though this is a bit awkward. The intent here was for the scripts to be treated as source code and be subject to the terms of the LGPL governing the distribution and modification of said source code. If the scripts are compiled into an executable, then the resulting executable can be distributed under your own terms, per the wxWindows Library License.
As an example, let's say that you modified
Makefiles, build scripts, and packaging scripts do not generally have a license header, but these are considered part of the source code per LGPL Section 0.
Many of the test programs included with the VirtualGL distribution are also licensed under the wxWindows Library License, even though these programs are not libraries. This is so that these programs can easily be rebuilt as libraries and used within larger programs (including proprietary programs.)
The VirtualGL Configuration program (vglconfig) uses FLTK, which employs a slightly different derivative of the LGPL v2.1. The FLTK exceptions are compatible with the wxWindows Library License exceptions. The only additional requirement of the FLTK License is that the use of FLTK must be acknowledged in your documentation. The VirtualGL documentation includes this acknowledgement, so if you distribute the VirtualGL documentation along with VirtualGL or your application, then that satisfies this requirement.
In VirtualGL 2.3.x and earlier, the distribution package for the VirtualGL Client for Exceed includes xauth and PuTTY, both of which use a BSD-style license.
|All content on this web site is licensed under the Creative Commons Attribution 2.5 License. Any works containing material derived from this web site must cite The VirtualGL Project as the source of the material and list the current URL for the VirtualGL web site.|