Dual licensing of 3rd-party Genode components

Introduction
Genode Component Public License (Genode CPL)
License text
Questions and Answers
  Should I use the Genode CPL for my component?
  Is Genode CPL code compatible with popular open-source licenses?
  How is the Genode CPL compatible with Genode's AGPLv3 license?
  Can I modify a Genode CPL component and distribute the changes?
  Why would one choose Genode CPL over a proprietary license?
  What does Genode Labs gain from the adoption of the Genode CPL?
  How does the Genode CPL relate to an "open-core" business model?
  Will the Genode CPL affect Genode's open-source license?
  How to apply the Genode CPL to my project
  What risks does the Genode CPL bear?
  Can Genode CPL components be hosted on proprietary platforms?

Introduction

Since the first release in 2008, the Genode OS Framework has been developed under a dual-licensing model. The company Genode Labs publicly develops and releases the framework under a strong copyleft license, while also offering commercial licensing. Commercial users thereby fund the development of Genode to the benefit of the open-source community and all commercial users alike.

This model leverages the combination of the library-like nature of the framework with a strong copyleft license (AGPLv3). As the latter is deliberately incompatible with proprietary software, the use of Genode in commercial products involves the participation of Genode Labs. In contrast to Genode's regular open-source license, the commercial license as offered by Genode Labs enables customers to combine Genode with proprietary components.

Whereas this model works for library-like software such as Genode, it is not easily applicable for whole programs. Since even the strongest copyleft licenses universally accept the use of the software on top of proprietary platforms - which usually have universally accepted licensing boundaries - the copyleft software can be easily co-hosted with proprietary software on the same platform without the commercial participation of the original program author. In this light, maintaining a sustainable dual-licensing business model for developing whole programs seems futile. In the following, we discuss the licensing of whole programs (i.e., a Genode component), not a library. For pursuing a dual-licensing business model for a library, existing copyleft licenses like AGPLv3 are just fine.

For Genode, we envision an ecosystem of loosely coupled individuals and businesses participating in the development and dissemination of the technology. Acknowledging that the scale and sustainability of such an ecosystem ultimately depends on business incentives, this article introduces a dual-licensing model for Genode components created and commercially supported by third-party software vendors. The model was crafted in concert with Genode Labs, CSL, and the lawyers of both companies.

Discussions about licensing can get as ambiguous as discussions can get. To maintain a clean mental model of the topic discussed, let us clarify the terminology used in the scope of this document.

Commercial use

Even though businesses around open-source software may be based on consulting, support contracts, and commissioned development projects, we narrow the term "commercial use" to the selling of products that contain proprietary ingredients. In particular, a commercial Genode-based system is assumed to be a proprietary product using the commercial Genode license.

Roles

We distinguish three different roles.

Author

The genuine creator of a software component. The author is regarded as the original owner of the software who is in the natural position to define the software's licensing terms.

Intermediary

Turns the results of authors and potentially other intermediaries into marketable solutions. Intermediaries represent a value chain, successively turning base technology into a product that is fit for end users.

User

The end user of the software that is usually obtained from an intermediary.

Each role can be assumed by an individual or a company - it does not matter for the discussion. Of course, one can play multiple roles at the same time.

For example, the author may be the developer of a device driver, the intermediary could be a solutions company that polishes and integrates the driver into a product, and the user is the consumer who has purchased the product from the solutions company.

Ownership

The concept of transferring ownership notwithstanding, we assume in the following that software is owned by the original author who has thereby the power to (re-)license the software on his/her terms. This is usually the case for proprietary software, but does not always apply in the open-source world. For example, there is no notion of an owner of the Linux kernel because all contributions are covered by the GPLv2. In order to maintain the sole ownership of her/his software, the creator may prefer to not accept outside contributions, or accept contributions only when covered under a Contributor's License Agreement (CLA).

Genode Component Public License (Genode CPL)

Existing open-source licenses loosely fall into two categories, liberal licenses and copyleft licenses.

A liberal open-source license (like the BSD license) puts the intermediary into an extremely strong position. First, an intermediary does not need to seek the consent of the author to exploit the source code commercially. Second, the intermediary can change and restrict the code in any way before handing it over to the user. Granted, the intermediary may support the author, but that is on a wholly voluntary basis. The ultimate power remains in the hands of the intermediary.

A copyleft open-source license (like the GNU General Public License) shifts the power towards the user because the intermediary must retain the terms of the copyleft license when delivering the final product to the user. The freedom of the software - once granted by the author - is preserved and re-enforced by the license. However, regarding the commercial exploitation of the code, the intermediary is free to integrate the author's program on an otherwise proprietary product as long as licensing boundaries are respected. For example, the administrative user interface of a GNU/Linux-based network router may stay proprietary.

Regardless of whether a liberal or copyleft license is selected by the author, the commercial exploitation of the author's software by intermediaries usually does not require the consent or participation of the author. Furthermore, while intermediaries like established companies are able to leverage the combination of open-source technology with their existing market access to build commercially successful products, authors - in particular individuals or small businesses - have little chance to compete.

To shift the power balance from intermediaries to authors, we introduce a new license that binds the software to a concrete open platform, namely the open-source Genode OS Framework. The "Genode Component Public License" (Genode CPL) is deliberately incompatible with any other platform, in particular with proprietary platforms, including commercial Genode systems. At the same time, it inherits the spirit of strong copyleft licenses with respect to the freedom of end users.

License text

You may use the following text in verbatim for your project, but without any modification. If you deem a modification necessary, please contact Genode Labs via licensing@genode-labs.com.



               Genode Component Public License (Genode CPL)

                        version 1, August 28 2018

          Copyright (C) 2018 Genode Labs GmbH, Dresden, Germany


 This license is intended for software components identified as
 licensed (“the Software”) under this Genode Component Public License
 (“the License”). The Software is intended to be used with the Genode
 Operating System Framework as made available by Genode Labs GmbH of
 Dresden, Germany (“GOSF”). In essence, you may use the Software as you
 are used to with other strong copyleft open source software. The only
 additional requirement is that the Software may only be used with the
 open-source-licensed GOSF and all other components running on the
 GOSF must be open source as well.


 1. Grant of copyright license

 Subject to the requirements below, all persons and legal entities
 holding any copyright interest in the Software (“the Licensors”)
 hereby grant, at no charge, to anyone receiving a copy of the Software
 a perpetual, non-sublicenseable and irrevocable right to do any act
 that, without permission, would make such a person directly or
 secondarily liable for infringement under applicable copyright law.
 This right includes (but is not limited to) copying, modifying,
 executing and distributing the Software, including derivative versions
 thereof, both for commercial and for non-commercial purposes.


 2. Grant of patent license

 Subject to the requirements below, all Licensors hereby grant you,
 under any patents owned or controlled by them, the permission to do
 anything that, without permission, would make such person directly or
 secondarily liable for infringement under applicable patent law.


 3. Notice requirement

 Any making available to the public of the Software, in original or in
 derivative form, must include (1) an appropriate copyright notice
 referring to the Licensors as indicated in the Software, and (2) a
 notice identifying this license and referring to a location where the
 license can be read. Notices may be given either in the source code or
 in accompanying documentation.


 4. Source code requirement

 Any distribution of the Software, either in original or in derivative
 form, shall be accompanied by:

  (1) the complete source code of the Software as distributed;

  (2) a hyperlink to an online distribution of the complete source
      code of the Software, which online distribution the distributor
      warrants shall remain accessible to the general public for at
      least three years from the date of distribution; or

  (3) a written or electronic offer, valid at least three years from
      the date of distribution, to provide any party with the complete
      source code of the Software.

 The “complete source code” means the preferred form of the Software
 for making modifications to it, as well as additional header files,
 scripts and similar items reasonably necessary to create executable
 versions of the Software. It does not include the GOSF itself or any
 other software components that reasonably can be regarded as
 independent works under copyright law.


 5. Derivative license requirement

 The distribution of derivative works is permitted only if such
 derivative works are themselves licensed as a whole under the terms of
 this License. When you outsource creation of a derivative work to a
 third party under contract and this third party is contractually
 required to provide the result to you and only to you, such
 outsourcing shall not be regarded as a distribution of the Software.


 6. Usage limitation

 The Software may be used only in a software environment where:

  (1) the underlying operating system is the Genode Operating System
      Framework as licensed under the open-source license of the
      Genode OS Framework (AGPLv3), any version as designated by
      Genode Labs GmbH;

  (2) all other software components relying on the GOSF and on the
      same physical device as the GOSF are licensed under either
      this License or any license that is:

      (a) approved as open source by the Open Source Initiative

      (b) identified as a free software license by the Free Software
          Foundation

 where in both cases it is your responsibility to ensure compliance
 with both this License and such open or free license.


 7. Limitation of liability

 This software is provided by the Licensors "as is" and any express or
 implied warranties, including, but not limited to, the implied
 warranties of merchantability, fitness for a particular purpose or
 infringement of third-party rights are disclaimed. In no event shall
 any Licensor be liable for any direct, indirect, incidental, special,
 exemplary, or consequential damages (including, but not limited to,
 procurement of substitute goods or services; loss of use, data, or
 profits; or business interruption) however caused and on any theory of
 liability, whether in contract, strict liability, or tort (including
 negligence or otherwise) arising in any way out of the use of this
 Software, even if advised of the possibility of such damage.


 8. Patent litigation

 If you initiate litigation against any entity by asserting a patent
 infringement claim (excluding declaratory judgment actions,
 counter-claims, and cross-claims) alleging that the Software directly
 or indirectly infringes any patent, then the rights granted to you by
 all Licensors shall terminate automatically.


 9. Termination

 Your rights to the Software are as expressly provided under this
 License, and subject to your full compliance of its terms. Any
 violations of this License automatically void the License, and will
 automatically terminate your rights under this License, without the
 requirement for any Licensor to put you on notice or grant a period to
 cure the violation. The License will be reinstated on a provisional
 basis if you cease all violations as soon as practicable after
 discovery. The provisional status will be removed if none of the
 Licensors notify you of the violation within 60 days after the
 cessation. While the License is on a provisional basis, any Licensor
 can permanently terminate it by explicit written notice to that
 effect. Termination of the License shall not affect any license
 granted by you to recipients of the Software.

Questions and Answers

Should I use the Genode CPL for my component?

If you are uncertain about open-source licenses, you should not consider the Genode CPL. Please use a regular open-source license to avoid licensing fragmentation within the open-source community.

The Genode CPL should be considered only in the following situations:

  • The source code is a genuine clean-room implementation, which you would keep proprietary otherwise.

  • You want to deliberately rule out the commercial exploitation of your source code without your explicit consent or participation.

  • You deliberately want to prevent 3rd parties from porting your software to any platform other than open-source Genode systems without your consent. Your software will be effectively locked to open-source Genode systems.

Is Genode CPL code compatible with popular open-source licenses?

Generally no.

You cannot incorporate (parts of) Genode CPL code into differently licensed software without the consent of the author. However, the author may agree to relicense parts of his/her software under a different open-source license at any time. The decision is up to the author.

It is generally not possible to include portions of copyleft software into a Genode CPL component - similar how it would not be possible for a proprietary software component.

How is the Genode CPL compatible with Genode's AGPLv3 license?

Genode's AGPLv3 license https://genode.org/about/LICENSE is accompanied with a special clause that expresses Genode Labs' consent with combining Genode with open-source software that uses an approved license, which includes any license blessed by the Free Software Foundation, the Open-Source Initiative, or Genode Labs. The Genode CPL - authored by Genode Labs - is naturally approved by Genode Labs.

Can I modify a Genode CPL component and distribute the changes?

Yes.

The modified version is no longer solely owned by the original author though. Hence, the result cannot be used commercially unless the changes are contributed back to the original author under a Contributor License Agreement (CLA).

Why would one choose Genode CPL over a proprietary license?

The Genode CPL carries the spirit of copyleft licenses, which brings two benefits.

First, since the Genode CPL software is compatible with open-source Genode systems, the open-source community can use the component directly without any intermediaries involved. It ultimately allows the author to openly participate in this community, which would not be possible with proprietary software.

Second, the open-source development model can be facilitated. For example, code can be publicly reviewed and discussed, outside contributions are possible, and a distributed way of development can be pursued. In contrast, proprietary software is usually developed behind closed doors.

What does Genode Labs gain from the adoption of the Genode CPL?

We assume that the Genode CPL is solely picked with commercial ambitions. However, Genode CPL components can only be commercialized when being combined with a commercial Genode license because Genode's open-source license is incompatible with proprietary software (like a commercially licensed Genode CPL component).

For this reason, the development and marketing of a Genode CPL component by a third party will eventually imply the purchase of commercial Genode licenses. Creators using the Genode CPL have a natural incentive to drive the commercial licensing of Genode, to the benefit of Genode Labs.

How does the Genode CPL relate to an "open-core" business model?

The dual licensing business model enabled by the Genode CPL is a flavor of the open-core model. Open-core businesses are in general based on an open-source base technology that can be extended with optional proprietary paid-for features. While developing the base technology and proprietary add-ons in tandem, the development of the open-source technology can effectively be cross-funded with the revenue generated from the proprietary features.

In the context of the Genode CPL, the situation is slightly different:

  • The Genode OS Framework as the "open core" is pursued under a dual-licensing model, which is in contrast to most open-core projects that facilitate a collective ownership of the base technology, often by using a liberal license. Hence, the development of the Genode "open core" is not cross-funded but funded independently from the commercial add-ons.

  • By offering the commercial features under the Genode CPL, the model works without any proprietary software. The Genode CPL gives the author the power over the commercial exploitation of his/her software, which is otherwise only possible by keeping it proprietary. By eliminating the need to keep software proprietary, the open-source Genode community benefits.

  • The Genode CPL is primarily designed as enabler for third-party business endeavours, not for the direct use by Genode Labs.

Will the Genode CPL affect Genode's open-source license?

There are no plans to relicense any parts of the Genode OS Framework to the Genode CPL.

That said, Genode Labs may facilitate the use of the Genode CPL for future components that are outside the scope of the framework and thereby constitute separate products.

How to apply the Genode CPL to my project

  • Add a verbatim copy of the official license text to your source code, preferably in the form of a file named LICENSE.

  • We recommend annotating each individual source-code file with a concise comment header that clarifies the license and copyright holder, for example:

     /*
      * Copyright (C) <year> <your-legal-name>
      *
      * This file is part of the <your-project-name>, which is distributed
      * under the terms of the Genode Component Public License.
      */
    

What risks does the Genode CPL bear?

The Genode CPL model is fundamentally based on the active and benevolent governance by Genode Labs as a central authority. This implies business risks, in particular the following.

  • Everyone adopting the Genode CPL for pursuing a dual-licensing business must be faithful in the cooperative role of Genode Labs. Since Genode CPL components can be commercialized only when combined with Genode's commercial licensing, each Genode-CPL-based business must be prepared to enter a positive-spirited business relationship with Genode Labs.

  • Should Genode Labs cease to exist, there won't be any new version of the open-source Genode OS Framework compatible with the Genode CPL. Hence, Genode CPL components would stay locked to the last Genode version officially released by Genode Labs, unless the respective authors relicense their components under a different license.

The risks are comparable to those when adopting a proprietary platform controlled by a single company. Hence, before considering the Genode CPL, please carefully consider those implications.

Can Genode CPL components be hosted on proprietary platforms?

An individual Genode CPL component can only be hosted inside an open-source Genode system. However, this open-source Genode system as a whole - including the Genode CPL component - may be hosted on top of a proprietary platform. For example, the Genode system may run inside a virtual machine running on top of Windows OS. This would be legitimate because the machine interface provided by the virtual machine is universally regarded as a licensing boundary.

However, we believe that the creation of such a Frankenstein construction solely as a loophole around the commercial licensing of a Genode CPL component is a rather artificial scenario.