Dear community,
with the upcoming release 17.02, we are planning to change Genode's open-source license.
The current GPLv2 license -------------------------
The Genode OS Framework is currently licensed under the terms of the version 2 of the GNU General Public License. We originally picked this license in 2008 for the following reasons:
* It captures the spirit of Free Software, which we deeply share with the FSF. The license ultimately empowers the authors and the end users of software. Genode would not exist without Free Software. It is built on the shoulders of software like GCC, the GNU system, or Linux. All software that we at Genode Labs develop is Free Software.
* At the time of the first Genode release, the GPLv2 was a time-tested and widely used license.
* It enables the dual-licensing business model of Genode Labs. If Genode is commercially leveraged for proprietary solutions, Genode Labs benefits from the success of such products. This way, Genode has a long-term strategy to fund its development without relying on donations, public funding, or venture capital. We value this independence as fundamental for the sustainability of our project.
* Adopting the same license as Linux made a lot of sense because we are routinely reusing Linux driver code inside Genode components.
Affero General Public License -----------------------------
The time did not stand still. The GPLv3 became widely spread and well-understood. It rectifies several shortcomings of the GPLv2. Furthermore, the Affero General Public License [1] closes loopholes of the GPL license with respect to web applications. Unlike 2008 when most applications were programs executed directly on the end user's computer, web applications have become predominant by now.
For Genode, we ignored the deficiencies of the GPLv2 for a long time. At the same time, with more and more software being added to our "ports" - the library of 3rd-party software ported to Genode - the license compatibility question, which we tried to avoid for Linux kernel code, arises for other 3rd-party software that is combined with Genode.
Admittedly, one reason for our hesitance was our fear of long-winded and opinion-loaded discussions around the licensing topic. But we ultimately have to acknowledge that an update to a modern license and a clarification of our stance with respect to the interoperability of Genode with other Open-Source software is long overdue.
The AGPLv3 encapsulates exactly the spirit, which originally attracted us to the GPL. After careful review, it makes perfect sense to use it for Genode. The following Wikipedia article nicely explains the rationale behind this license:
https://en.wikipedia.org/wiki/Affero_General_Public_License
Addressing interoperability concerns ------------------------------------
Unlike most end-user software, which falls into a tangible category (application, library, kernel), Genode plays a special role. Not just because it is an operating system. But it is very unconventional at that: It is a collection of programs (Genode components). It is also a set of application libraries. It is also a "system library". It also comprises a dynamic linker. It may also be the kernel (i.e., our base-hw kernel). The lines between the categories become blurry.
For this reason, we intend to add a linking clause to Genode's version of the AGPL license text, similar to the classpath linking exception but restricted to software licenses that are blessed by the Open-Source Initiative, the Free Software Foundation, or Genode Labs.
Inspired from the text of the classpath linking exception, our clause would look as follows:
Linking Genode code statically or dynamically with other modules is making a combined work based on Genode. Thus, the terms and conditions of the GNU Affero General Public License version 3 (AGPLv3) cover the whole combination.
As an "additional permission" as defined by Section 7 of the AGPLv3, Genode Labs as the copyright holder of Genode gives you permission to link Genode source code with "independent modules" to produce an executable if the independent modules are licensed under an "approved license", and to copy and distribute the resulting executable under terms of your choice, provided that you also meet, for each linked independent module, the terms and conditions of the license of that module.
An "approved license" is a license that is officially approved as an Open-Source license by the Open Source Initiative [1], or listed as a Free-Software license by the Free Software Foundation [2], or explicitly approved by Genode Labs.
An "independent module" is a module which is not derived from or based on Genode.
If you modify Genode, you may extend this exception to your version of Genode, but you are not obliged to do so. If you do not wish to do so, delete this exception statement from your version.
[1] https://opensource.org/licenses [2] https://www.gnu.org/licenses/license-list.en.html
With this clause in place, we want to express our consent to use Genode in combination with other open-source software. Note, however, that - unlike the classpath exception clause, our clause excludes the combination of Genode with proprietary software. This is our deliberate decision.
With Genode becoming AGPLv3, we face the question of how to integrate 3rd-party code (like GPLv2-licensed Linux device drivers) in a Genode component. To address this concern, Genode-specific glue code that is needed to integrate the 3rd-party code with the Genode API ("system library") will have a license that is compatible with both the license of the 3rd-party code and Genode's AGPLv3 as such glue code is a derivative of both Genode and the incorporated code, e.g., the MIT license. In line with the wording of the exception clause above, when distributing binaries of such components, the licenses of both Genode and the incorporated 3rd-party code must be respected.
I hope that you support our plan to relicense Genode to AGPLv3 along with our linking exception clause. Should you have doubts about us taking this direction, please let me know.
Best regards Norman