Overview of “GNU Licensing Soup”

Applied to the ABCD Proto-Kernel Software™

(C) 2003 CONNOTECH Experts-conseils inc.

Table of contents


1.         Introduction


2.         The Free Software Licensing Scene

            2.1       Basic Facts and Problem Statement

            2.2       Limitations and Exceptions to the GNU GPL Restrictions

            2.3       Existing Licensing Scheme Categories

                        2.3.1    GNU GPL-Compatible Licensing Schemes

                        2.3.2    GNU GPL-Incompatible Licensing Schemes

            2.4       A Scale of GNU GPL Restrictiveness


3.         Application of the Licensing Principles to CONNOTECH Software Components

            3.1       ABCD Proto-Kernel

                        3.1.1    GNU and Third-Party Development Tools

                        3.1.2    ABCD Proto-Kernel Run-Time Components

            3.2       Miscellaneous Utility Software

            3.3       Use of GNU Software Components with the ABCD Proto-Kernel


1.     Introduction

A portion of the CONNOTECH business is assisting embedded system developers to tame the complexity of embedded software development for powerful highly integrated microprocessor families. The first targeted microprocessor family is the Motorola MPC8xx, notably with the PPCMB/850 microprocessor module. The main products in this category include

 1)        the PPCMB/850 microprocessor module (a hardware product),

 2)        a cross-compiler tool set that takes the form of GNU GCC binaries (a software product for which the licensing strategy is primarily governed by the Free Software Foundation), and

 3)        the ABCD Proto-Kernel software library (a software product authored by CONNOTECH Experts-conseils inc.).

This web page document contains an overview of expected CONNOTECH licensing strategy. The main focus is on the expected release of the ABCD Proto-Kernel software using a licensing scheme inspired by - and compatible with - the GNU General Public License (GNU GPL) by the Free Software Foundation (FSF).

CONNOTECH remains free to license its software under a closed licensing scheme, but not the versions of its software modified by third parties under GNU GPL-style licensing. For this reason, CONNOTECH anticipates that the bulk part of its software, especially the most valuable components for its customers, will eventually be covered by GNU GPL-style licenses.

This web page should allow you to appreciate the fact that proprietary embedded system development can benefit to a great extent from free software covered by GNU GPL-style licenses. HOWEVER, THIS WEB PAGE IS PURELY SPECULATIVE AND THE TERMS OF EACH INDIVIDUAL LICENSE SHALL APPLY IN ANY CASE.

It happens that we drafted a novel detailed solution to the balancing act between software sharing merits and our customers’ need for protecting their respective proprietary system designs. It is the ABCD Proto-Kernel License which can be described as “the GNU Library/Lesser General Public License (GNU LGPL) with a waiver on the opportunity to relink.”


2.     The Free Software Licensing Scene

Here is an attempt to summarize the GNU GPL intellectual property scheme, as the most productive initiative in the free software licensing scene. Such an attempt from our part is deemed to contain imprecisions or errors, so any decision or strategy should be based on more extensive fact-finding activities.


2.1     Basic Facts and Problem Statement

Basically, if you use GPL’ed software source code, the derived software product must be GPL’ed, and you can not charge a usage-based licencing fee. Moreover, the GNU GPL terms force you to offer the source code of derived products - under reasonable terms - to your clients (you may have clients because you can charge what you want for derived software product distribution).

The mainstream of GNU GPL-driven development is Linux and the GNU GCC compiler tool set.

The author of a software has many choices for software source code distribution. The main options are:

  1)       The author may assert his rights as the copyright holder and choose a licensing scheme based on the GNU GPL which finds its legal support in international copyright treaties and related national statutes.

  2)       Alternatively, the author may use trade secrets agreements or other schemes for a closed distribution scheme.

  3)       An opposite course of action is to release the software in the public domain, in which case there is absolutely no conditions on the use of the software (leaving aside possible patent infringements by the software).

Now, we can make the problem statements:


Problem nº1   Say you want to create a magnificent software product using source code available on the Internet, and your own. Once you figured out the many diverse licensing schemes out there on the net, how do you know which software components can be put together legally?


Problem nº2   You figured out that you need some software components which are licenced under the GNU GPL or variants, but your magnificent software product includes proprietary processes and/or know-how that should be kept secret. Is there any way to achieve this legally?

For a solution to the problem nº 1, see http://www.fsf.org/licenses/licenses.html and http://www.fsf.org/philosophy/philosophy.html.

The CONNOTECH licensing strategy is a circumstantiated solution to the problem nº 2.


2.2     Limitations and Exceptions to the GNU GPL Restrictions

There are practice-based limitations to the GNU GPL license results:


a) internal use of software by an organization,


The GPL does not require you to release your modified version. You are free to make modifications and use them privately, without ever releasing them. This applies to organizations (including companies), too; an organization can make a modified version and use it internally without ever releasing it outside the organization.



b) competitive strategy incentive,


In these cases, it is important to take corporate psychology into account. Because the corporation just paid a fair sum for the source code, the likelihood that they will post it as a free download where their competitors can get it is pretty low.

(Lineo inc., Embedding Linux: Issues, Questions, and Answers)

Then there are the license exceptions:


a) arm’s length program interfaces


However, in many cases you can distribute the GPL-covered software alongside your proprietary system. To do this validly, you must make sure that the free and non-free programs communicate at arm’s length, that they are not combined in a way that would make them effectively a single program.


The difference between this and "incorporating" the GPL-covered software is partly a matter of substance and partly form. The substantive part is this: if the two programs are combined so that they become effectively two parts of one program, then you can't treat them as two separate programs. So the GPL has to cover the whole thing.


If the two programs remain well separated, like the compiler and the kernel, or like an editor and a shell, then you can treat them as two separate programs--but you have to do it properly. The issue is simply one of form: how you describe what you are doing. Why do we care about this? Because we want to make sure the users clearly understand the free status of the GPL-covered software in the collection.



b) GNU LGPL with opportunity to relink


[...] if the work is an executable linked with the Library, [you must accompany the Library source code release] with the complete machine-readable [proprietary application], as object code and/or source code, so that the user can modify the Library and then relink to produce a modified executable containing the modified Library.

(GNU Lesser General Public License vers. 2.1, clause 6a)


c) GNU LGPL with a waiver on the opportunity to relink,


This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation, except for [...] at the end of the text in the bullet a) in clause 6, DELETE the phrase

``[...] if the work is an executable linked with the Library, [you must accompany the Library source code release] with the complete machine-readable [proprietary application], as object code and/or source code, so that the user can modify the Library and then relink to produce a modified executable containing the modified Library. [...]''

(CONNOTECH, GNU LGPL with a waiver on the opportunity to relink)


d) GNU LGPL with dynamic linking,


A suitable mechanism is one that (1) uses at run time a copy of the library already present on the user's computer system, rather than copying library functions into the executable, and (2) [...]

(GNU Lesser General Public License vers. 2.1, clause 6b)


e) GNU GPL with link-with-anything exception,


As a special exception, you may use this file as part of a free software library without restriction. [If you compile this file and link it with other files to produce an executable], this file does not by itself cause the resulting executable to be covered by the GNU General Public License. [...]



f) GNU GPL with link-with-FOO exception,


In addition, as a special exception, <name of copyright holder> gives permission to link the code of this program with the FOO library (or with modified versions of FOO that use the same license as FOO), and distribute linked combinations including the two. You must obey the GNU General Public License in all respects for all of the code used other than FOO.



2.3     Existing Licensing Scheme Categories


2.3.1    GNU GPL-Compatible Licensing Schemes

In addition to the ordinary GNU GPL with its built-in limitations and GNU GPL exceptions described above, there are a number of free software licensing schemes which are considered “compatible” by the Free Software Foundation. See http://www.fsf.org/licenses/licenses.html for details.

If you intend to develop proprietary applications, not all GNU GPL compatible licenses are compatible with your project. For instance, some libraries are purposely licenced with the ordinary GNU GPL (instead of the GNU LGPL) to induce you to join the free software bandwagon.

If you intend to develop proprietary applications using the ABCD Proto-Kernel licensing scheme and you further whish to avoid the release of the application object code, your options are further restricted (with the ordinary GNU LGPL, the opportunity to relink is problematic). At CONNOTECH, we nonetheless recognize the fact that deeply embedded system software are often mere products for the end-users and that the freedom to relink the product software makes little sense. Accordingly, we drafted the GNU LGPL with a waiver on the opportunity to relink.

Among the GNU GPL compatible licenses, the X.11 style free software license deserves closer attention. This license is also referred as the new BSD license. It is basically a copyright notice plus warranty disclaimer, but no mandatory advertisement. This license is significant because a large body of free software source code is available either with this license style, or the closely related but incompatible original BSD license (that does contain a mandatory advertisement clause).

The public domain material can be used by anyone for any purpose. It is obviously GNU GPL compatible.


2.3.2    GNU GPL-Incompatible Licensing Schemes

GNU GPL incompatible free software licenses


Some free software licences might appear to have inconsequential restrictions but are still considered GNU GPL incompatible by the FSF. Notably the original BSD licenses which are basically copyright plus warranty disclaimer plus mandatory advertisement.


It is interesting to note the perspective of BSD-style licensing proponents, the other camp in the free software world. Quoting http://www.openbsd.org/policy.html:

“The GNU Public License and licenses modeled on it impose the restriction that source code must be distributed or made available for all works that are derivatives of the GNU copyrighted code. While this may be a noble strategy in terms of software sharing, it is a condition that is typically unacceptable for commercial use of software.”

We at CONNOTECH challenge this view. The GNU GPL created so much value to embedded developers in the form of the GNU GCC tool set, it must deserve close attention! Indeed, through dedication in drafting the GNU GPL and applying GNU GPL exceptions on a case-by-case basis (e.g. the use of the GNU LGPL on selected libraries only), the Free Software Foundation created a licensing environment where “commercial use of free software” is certainly welcome, and “use of commercial software” is often welcome.

Shareware and non-free source code licenses


A typical shareware distribution simply doesn’t release the source code.


Many source code distribution licenses attach various limitations to copyrighted source code (e.g. no commercial use, mandatory licensing of derived work to the copyright holder, and the like) which make them incompatible with the GNU GPL.


2.4     A Scale of GNU GPL Restrictiveness

Using an oversimplification, the following ranking of GNU GPL-compatible licensing strategies can be established, from the most restrictive to the least restrictive strategies.


Most restrictive







GNU GPL with link with FOO exception



GNU LGPL with a waiver on the opportunity to relink



GNU GPL with link with anything exception



X.11 style license


Least restrictive

Public domain


Note:   the relative position of items B) and C) above may be reversed according to the circumstances.


3.     Application of the Licensing Principles to CONNOTECH Software Components

This section is written in anticipation of ongoing software development, and thus may refer to planned software releases.


3.1     ABCD Proto-Kernel

It is a primary CONNOTECH goal to allow proprietary applications based on the free software version ABCD Proto-Kernel to also link with software components falling in items in D) to F) in the above table, and other compatible licenses (a matter to be dealt on a case-by-case basis by interested parties).

It goes without saying that CONNOTECH is free to grant proprietary ABCD Proto-Kernel licenses, specifically for the source code versions that were not modified by third parties under a GNU GPL-style license.


3.1.1    Development with GNU GCC and Third-Party Development Tools


The GNU GCC compiler input and output are “arm’s length program interfaces” and thus the GNU GCC tools can compile proprietary source code. The run-time library is a separate issue.


The GNU C++ run-time library has a link-with-anything exception, so that proprietary C++ source code that uses C++ language features that are implemented by the C++ run-time library can be compiled.


The default GNU C run-time uses the GNU LGPL, and its use would require a proprietary application to be distributed with either the “opportunity ro relink” or the dynamic linking library, neither of which are satisfactory for the proprietary application linking with the ABC Proto-Kernel if it was not for the fact that the newlib is used as the run-time library.


The “newlib” is a collection of free software contributions licensed according to diverse licenses, each of which being GNU GPL-compatible. More or less, the “newlib” license appears analogue to the GNU GPL with the “link with anything” exception.


The post-link utilities developed by CONNOTECH to provide a software load image file compatible with loader utilities uses the GNU GPL license, notably because the elf format read functions might be inherited from FSF source code. The post-link utility can be used to create proprietary applications (arm’s length program interface).


3.1.2    ABCD Proto-Kernel Run-Time Components


As explained in the above section, the ABCD Proto-Kernel versions that will be released under a GNU GPL style license will use the GNU LGPL with a waiver on the opportunity to relink.


3.2     Miscellaneous Utility Software


The sha utility with source code self-extraction (SHA-1 implementation) uses the GNU GPL license.


The Windows CommUI utility relies on the WinPcap library which has GNU GPL-incompatible license (it has an advertising clause). Accordingly, CONNOTECH expects

              a)       to use the arm’s length program interface (e.g. a linker function built-in the CommUI utility might process a software load image file format as opaque data),

              b)       failing this, provide a link-with-WinPcap exception to the modules authored by CONNOTECH and otherwise covered by the GNU GPL license.


3.3     Use of GNU Application Software Components with the ABCD Proto-Kernel


The GNU debugger (GDB) is an important software for the providing of a comprehensive tools set by CONNOTECH. Most likely, the GDB source code uses the GNU GPL. Thus, when parts of the GDB is linked with a version of the ABCD Proto-Kernel, the ABCD Proto-Kernel source code can not use a link-with-ABCD exception in the GDB source code as a mechanism. This is an example of how GNU GPL-based free software development becomes an attractive business strategy.

[ PPCMB/850 products | ABCD Proto-Kernel(tm) software | FlashCnL software | GCC-MPC8xx free compiler binaries | Industry Links ]

[ CONNOTECH home page: http://www.connotech.com | e-mail to: info@connotech.com ]