source: rtems-docs/eng/license-requirements.rst

Last change on this file was 2d22d74, checked in by Joel Sherrill <joel@…>, on 04/30/20 at 21:29:06

Rework RTEMS licensing discussions.

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

Closes #3962.

  • Property mode set to 100644
File size: 4.7 KB
Line 
1.. SPDX-License-Identifier: CC-BY-SA-4.0
2
3.. Copyright (C) 2018.
4.. COMMENT: RTEMS Foundation, The RTEMS Documentation Project
5
6.. _LicensingRequirements:
7
8Licensing Requirements
9**********************
10
11All artifacts shall adhere to RTEMS Project licensing
12requirements. Currently, the preferred licenses are:
13
14* "Two Clause BSD" (BSD-2-Clause) for source code, and
15* CC-BY-SA-4.0 license for documentation
16
17Historically, RTEMS has been licensed under the GPL v2 with linking
18exception (https://www.rtems.org/license). It is preferred that new
19submissions be under one of the two preferred licenses. If you have
20previously submitted code to RTEMS under a historical license, please
21grant the project permission to relicense. See
22https://devel.rtems.org/ticket/3053 for details.
23
24For example templates for what to include in source code and
25documentation, see :ref:`FileHeaderCopyright`.
26
27
28Rationale
29---------
30.. COMMENT: Thanks to Gedare Bloom for his 2013 blog which
31.. COMMENT: discussed the rationale for RTEMS License section.
32.. COMMENT: http://gedare-csphd.blogspot.com/2013/05/software-licenses-with-rtems.html
33
34RTEMS is intended for use in real-time embedded systems in which the
35application is statically linked with the operating system and all
36support libraries. Given this use case, the RTEMS development team
37evaluated a variety of licenses with with the goal of promoting use
38while protecting both users and the developers.
39
40Using the GNU General Public License Version 2 (GPLv2) unmodified
41was considered but discarded because the GPL can only be linked statically
42with other GPL code. Put simply, linking your application code statically
43with GPL code would cause your code to become GPL code. This would force
44both licensing and redistribution requirements onto RTEMS users. This
45was completely unacceptable.
46
47The GNU Lesser General Public License Version 2 (LGPLv2) was also
48considered and deemed to not be a suitable license for RTEMS. This is
49because it either requires use of a shared library that can be re-linked,
50or release of the linked (application) code. This would require an
51RTEMS-based embedded system to provide a "relinking kit." Again, this
52license would force an unacceptable requirement on RTEMS users and deemed
53unacceptable.
54
55Newer versions of the GPL (i.e. version 3) are completely unsuitable
56for embedded systems due to the additions which add further restrictions
57on end user applications.
58
59The historical RTEMS `License <https://www.rtems.org/license>`_ is a
60modified version of the GPL version 2 that includes an exception to permit
61including headers and linking against RTEMS object files statically. This
62was based on the license used by GCC language runtime libraries at that
63time. This license allows the static linking of RTEMS with applications
64without forcing obligations and restrictions on users.
65
66A problem for RTEMS is there are no copyleft licenses that are compatible
67with the deployment model of RTEMS. Thus, RTEMS Project has to reject any
68code that uses the GPL or LGPL, even though RTEMS has historically appeared
69to use the GPL itself -- but with the exception for static linking, and also
70because an upstream GPL version 2 project could at any time switch to
71GPL version 3 and become totally unusable. In practice, RTEMS can only
72accept original code contributed under the RTEMS License and code that
73has a permissive license.
74
75As stated above, the RTEMS Project has defined its preferred licenses.
76These allow generation of documentation and software from specification
77as well as allow end users to statically link with RTEMS and not incur
78obligations.
79
80In some cases, RTEMS includes software from third-party projects. In those
81cases, the license is carefully evaluated to meet the project licensing
82goals.  The RTEMS Project can only include software under licenses which follow
83these guidelines:
84
85* 2- and 3-clause BSD, MIT, and other OSI-approved non-copyleft licenses
86  that permit statically linking with the code of different licenses
87  are acceptable.
88
89* The historical RTEMS `License <https://www.rtems.org/license>`_ is
90  acceptable for software already in the tree. This software is being
91  relicensed to BSD-2-Clause, rewritten, or removed.
92
93* GPL licensed code is NOT acceptable, neither is LGPL.
94
95* Software which is dual-licensed in a manner which prevents free use
96  in commercial applications is not acceptable.
97
98* Advertising obligations are not acceptable.
99
100* Some license restrictions may be permissible. These will be considered
101  on a case-by-case basis.
102
103In practice, these guidelines are not hard to follow. Critically,
104they protect the freedom of the RTEMS source code and that of end users
105to select the license and distribution terms they prefer for their
106RTEMS-based application.
Note: See TracBrowser for help on using the repository browser.