This now captures historical rationale alone with cross-linking code templates with license guidelines.
Closes #3962. --- eng/coding-conventions.rst | 19 ++++++----- eng/license-requirements.rst | 81 +++++++++++++++++++++++++++++++++++++++++--- 2 files changed, 86 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..0349ca6 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 Paragraph BSD" 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,76 @@ 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 +--------- +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://devel.rtems.org/wiki/TBR/Website/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 staticly 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 +the following guidelin + +* 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. + +* 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 -- 1.8.3.1 _______________________________________________ devel mailing list devel@rtems.org http://lists.rtems.org/mailman/listinfo/devel