mirror of
https://git.rtems.org/rtems-docs/
synced 2025-05-14 16:10:04 +08:00
Rework RTEMS licensing discussions.
This now captures historical rationale along with cross-linking code templates with license guidelines. Closes #3962.
This commit is contained in:
parent
ccc473b69d
commit
2d22d7453d
@ -33,15 +33,16 @@ Source Documentation
|
|||||||
Licenses
|
Licenses
|
||||||
--------
|
--------
|
||||||
|
|
||||||
* The RTEMS `License <https://devel.rtems.org/wiki/TBR/Website/License>`_. is the typical
|
The RTEMS Project has strict requirements on the types of software licenses
|
||||||
and preferred license.
|
that apply to software it includes and distributes. Submissions will be
|
||||||
* 2- and 3-clause BSD, MIT, and other OSI-approved non-copyleft licenses
|
summarily rejected that do not follow the correct license or file header
|
||||||
that permit statically linking with the code of different licenses
|
requirements.
|
||||||
are acceptable.
|
|
||||||
* GPL licensed code is NOT acceptable, neither is LGPL.
|
* Refer to :ref:`LicensingRequirements` for a discussion of the acceptable
|
||||||
See `this blog post explanation <http://gedare-csphd.blogspot.com/2013/05/software-licenses-with-rtems.html>`_.
|
licenses and the rationale.
|
||||||
for more information.
|
|
||||||
* Advertising obligations are NOT acceptable, but restrictions are permissible.
|
* Refer to :ref:`FileHeaderCopyright` for example copyright/license comment
|
||||||
|
blocks for various languages.
|
||||||
|
|
||||||
Language and Compiler
|
Language and Compiler
|
||||||
---------------------
|
---------------------
|
||||||
|
@ -9,8 +9,10 @@ Licensing Requirements
|
|||||||
**********************
|
**********************
|
||||||
|
|
||||||
All artifacts shall adhere to RTEMS Project licensing
|
All artifacts shall adhere to RTEMS Project licensing
|
||||||
requirements. Currently, the preferred licenses are CC-BY-SA-4.0 license
|
requirements. Currently, the preferred licenses are:
|
||||||
for documentation and "Two Paragraph BSD" for source code.
|
|
||||||
|
* "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
|
Historically, RTEMS has been licensed under the GPL v2 with linking
|
||||||
exception (https://www.rtems.org/license). It is preferred that new
|
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
|
grant the project permission to relicense. See
|
||||||
https://devel.rtems.org/ticket/3053 for details.
|
https://devel.rtems.org/ticket/3053 for details.
|
||||||
|
|
||||||
TBD - Convert the following to Rest and insert into this file
|
For example templates for what to include in source code and
|
||||||
TBD - https://devel.rtems.org/wiki/Developer/Coding/Conventions#Licenses
|
documentation, see :ref:`FileHeaderCopyright`.
|
||||||
|
|
||||||
TBD - Review and make sure this includes info on BSD variants
|
|
||||||
|
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.
|
||||||
|
|
||||||
|
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.
|
||||||
|
Loading…
x
Reference in New Issue
Block a user