[rtems-docs commit] Rework RTEMS licensing discussions.

Joel Sherrill joel at rtems.org
Fri May 1 16:12:44 UTC 2020


Module:    rtems-docs
Branch:    master
Commit:    2d22d7453d56e9558a11a8f80a3f139018df2da8
Changeset: http://git.rtems.org/rtems-docs/commit/?id=2d22d7453d56e9558a11a8f80a3f139018df2da8

Author:    Joel Sherrill <joel at rtems.org>
Date:      Thu Apr 30 16:29:06 2020 -0500

Rework RTEMS licensing discussions.

This now captures historical rationale along with cross-linking
code templates with license guidelines.

Closes #3962.

---

 eng/coding-conventions.rst   | 19 ++++-----
 eng/license-requirements.rst | 91 +++++++++++++++++++++++++++++++++++++++++---
 2 files changed, 96 insertions(+), 14 deletions(-)

diff --git a/eng/coding-conventions.rst b/eng/coding-conventions.rst
index 488ee26..10034df 100644
--- a/eng/coding-conventions.rst
+++ b/eng/coding-conventions.rst
@@ -33,15 +33,16 @@ Source Documentation
 Licenses
 --------
 
-* The RTEMS `License <https://devel.rtems.org/wiki/TBR/Website/License>`_. is the typical
-  and preferred license.
-  * 2- and 3-clause BSD, MIT, and other OSI-approved non-copyleft licenses
-    that permit statically linking with the code of different licenses
-    are acceptable.
-  * GPL licensed code is NOT acceptable, neither is LGPL.
-    See `this blog post explanation <http://gedare-csphd.blogspot.com/2013/05/software-licenses-with-rtems.html>`_.
-    for more information.
-  * Advertising obligations are NOT acceptable, but restrictions are permissible.
+The RTEMS Project has strict requirements on the types of software licenses
+that apply to software it includes and distributes. Submissions will be
+summarily rejected that do not follow the correct license or file header
+requirements.
+
+* Refer to :ref:`LicensingRequirements` for a discussion of the acceptable
+  licenses and the rationale.
+
+* Refer to :ref:`FileHeaderCopyright` for example copyright/license comment
+  blocks for various languages.
 
 Language and Compiler
 ---------------------
diff --git a/eng/license-requirements.rst b/eng/license-requirements.rst
index 44814b1..b2720f2 100644
--- a/eng/license-requirements.rst
+++ b/eng/license-requirements.rst
@@ -9,8 +9,10 @@ Licensing Requirements
 **********************
 
 All artifacts shall adhere to RTEMS Project licensing
-requirements. Currently, the preferred licenses are CC-BY-SA-4.0 license
-for documentation and "Two Paragraph BSD" for source code.
+requirements. Currently, the preferred licenses are:
+
+* "Two Clause BSD" (BSD-2-Clause) for source code, and
+* CC-BY-SA-4.0 license for documentation
 
 Historically, RTEMS has been licensed under the GPL v2 with linking
 exception (https://www.rtems.org/license). It is preferred that new
@@ -19,7 +21,86 @@ previously submitted code to RTEMS under a historical license, please
 grant the project permission to relicense. See
 https://devel.rtems.org/ticket/3053 for details.
 
-TBD - Convert the following to Rest and insert into this file
-TBD - https://devel.rtems.org/wiki/Developer/Coding/Conventions#Licenses
+For example templates for what to include in source code and 
+documentation, see :ref:`FileHeaderCopyright`.
+
+
+Rationale
+---------
+.. COMMENT: Thanks to Gedare Bloom for his 2013 blog which
+.. COMMENT: discussed the rationale for RTEMS License section.
+.. COMMENT: http://gedare-csphd.blogspot.com/2013/05/software-licenses-with-rtems.html
+
+RTEMS is intended for use in real-time embedded systems in which the
+application is statically linked with the operating system and all
+support libraries. Given this use case, the RTEMS development team
+evaluated a variety of licenses with with the goal of promoting use
+while protecting both users and the developers.
+
+Using the GNU General Public License Version 2 (GPLv2) unmodified
+was considered but discarded because the GPL can only be linked statically
+with other GPL code. Put simply, linking your application code statically
+with GPL code would cause your code to become GPL code. This would force
+both licensing and redistribution requirements onto RTEMS users. This
+was completely unacceptable. 
+
+The GNU Lesser General Public License Version 2 (LGPLv2) was also 
+considered and deemed to not be a suitable license for RTEMS. This is
+because it either requires use of a shared library that can be re-linked,
+or release of the linked (application) code. This would require an
+RTEMS-based embedded system to provide a "relinking kit." Again, this 
+license would force an unacceptable requirement on RTEMS users and deemed
+unacceptable.
+
+Newer versions of the GPL (i.e. version 3) are completely unsuitable
+for embedded systems due to the additions which add further restrictions
+on end user applications. 
+
+The historical RTEMS `License <https://www.rtems.org/license>`_ is a
+modified version of the GPL version 2 that includes an exception to permit
+including headers and linking against RTEMS object files statically. This
+was based on the license used by GCC language runtime libraries at that
+time. This license allows the static linking of RTEMS with applications
+without forcing obligations and restrictions on users.
+
+A problem for RTEMS is there are no copyleft licenses that are compatible
+with the deployment model of RTEMS. Thus, RTEMS Project has to reject any
+code that uses the GPL or LGPL, even though RTEMS has historically appeared
+to use the GPL itself -- but with the exception for static linking, and also
+because an upstream GPL version 2 project could at any time switch to
+GPL version 3 and become totally unusable. In practice, RTEMS can only
+accept original code contributed under the RTEMS License and code that
+has a permissive license.
+
+As stated above, the RTEMS Project has defined its preferred licenses.
+These allow generation of documentation and software from specification
+as well as allow end users to statically link with RTEMS and not incur
+obligations.
+
+In some cases, RTEMS includes software from third-party projects. In those
+cases, the license is carefully evaluated to meet the project licensing
+goals.  The RTEMS Project can only include software under licenses which follow
+these guidelines:
+
+* 2- and 3-clause BSD, MIT, and other OSI-approved non-copyleft licenses
+  that permit statically linking with the code of different licenses
+  are acceptable.
+
+* The historical RTEMS `License <https://www.rtems.org/license>`_ is 
+  acceptable for software already in the tree. This software is being
+  relicensed to BSD-2-Clause, rewritten, or removed.
+
+* GPL licensed code is NOT acceptable, neither is LGPL.
+
+* Software which is dual-licensed in a manner which prevents free use
+  in commercial applications is not acceptable.
+
+* Advertising obligations are not acceptable.
+
+* Some license restrictions may be permissible. These will be considered
+  on a case-by-case basis.
 
-TBD - Review and make sure this includes info on BSD variants
+In practice, these guidelines are not hard to follow. Critically,
+they protect the freedom of the RTEMS source code and that of end users
+to select the license and distribution terms they prefer for their
+RTEMS-based application.



More information about the vc mailing list