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 | |
---|
8 | Licensing Requirements |
---|
9 | ********************** |
---|
10 | |
---|
11 | All artifacts shall adhere to RTEMS Project licensing |
---|
12 | requirements. 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 | |
---|
17 | Historically, RTEMS has been licensed under the GPL v2 with linking |
---|
18 | exception (https://www.rtems.org/license). It is preferred that new |
---|
19 | submissions be under one of the two preferred licenses. If you have |
---|
20 | previously submitted code to RTEMS under a historical license, please |
---|
21 | grant the project permission to relicense. See |
---|
22 | https://devel.rtems.org/ticket/3053 for details. |
---|
23 | |
---|
24 | For example templates for what to include in source code and |
---|
25 | documentation, see :ref:`FileHeaderCopyright`. |
---|
26 | |
---|
27 | |
---|
28 | Rationale |
---|
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 | |
---|
34 | RTEMS is intended for use in real-time embedded systems in which the |
---|
35 | application is statically linked with the operating system and all |
---|
36 | support libraries. Given this use case, the RTEMS development team |
---|
37 | evaluated a variety of licenses with with the goal of promoting use |
---|
38 | while protecting both users and the developers. |
---|
39 | |
---|
40 | Using the GNU General Public License Version 2 (GPLv2) unmodified |
---|
41 | was considered but discarded because the GPL can only be linked statically |
---|
42 | with other GPL code. Put simply, linking your application code statically |
---|
43 | with GPL code would cause your code to become GPL code. This would force |
---|
44 | both licensing and redistribution requirements onto RTEMS users. This |
---|
45 | was completely unacceptable. |
---|
46 | |
---|
47 | The GNU Lesser General Public License Version 2 (LGPLv2) was also |
---|
48 | considered and deemed to not be a suitable license for RTEMS. This is |
---|
49 | because it either requires use of a shared library that can be re-linked, |
---|
50 | or release of the linked (application) code. This would require an |
---|
51 | RTEMS-based embedded system to provide a "relinking kit." Again, this |
---|
52 | license would force an unacceptable requirement on RTEMS users and deemed |
---|
53 | unacceptable. |
---|
54 | |
---|
55 | Newer versions of the GPL (i.e. version 3) are completely unsuitable |
---|
56 | for embedded systems due to the additions which add further restrictions |
---|
57 | on end user applications. |
---|
58 | |
---|
59 | The historical RTEMS `License <https://www.rtems.org/license>`_ is a |
---|
60 | modified version of the GPL version 2 that includes an exception to permit |
---|
61 | including headers and linking against RTEMS object files statically. This |
---|
62 | was based on the license used by GCC language runtime libraries at that |
---|
63 | time. This license allows the static linking of RTEMS with applications |
---|
64 | without forcing obligations and restrictions on users. |
---|
65 | |
---|
66 | A problem for RTEMS is there are no copyleft licenses that are compatible |
---|
67 | with the deployment model of RTEMS. Thus, RTEMS Project has to reject any |
---|
68 | code that uses the GPL or LGPL, even though RTEMS has historically appeared |
---|
69 | to use the GPL itself -- but with the exception for static linking, and also |
---|
70 | because an upstream GPL version 2 project could at any time switch to |
---|
71 | GPL version 3 and become totally unusable. In practice, RTEMS can only |
---|
72 | accept original code contributed under the RTEMS License and code that |
---|
73 | has a permissive license. |
---|
74 | |
---|
75 | As stated above, the RTEMS Project has defined its preferred licenses. |
---|
76 | These allow generation of documentation and software from specification |
---|
77 | as well as allow end users to statically link with RTEMS and not incur |
---|
78 | obligations. |
---|
79 | |
---|
80 | In some cases, RTEMS includes software from third-party projects. In those |
---|
81 | cases, the license is carefully evaluated to meet the project licensing |
---|
82 | goals. The RTEMS Project can only include software under licenses which follow |
---|
83 | these 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 | |
---|
103 | In practice, these guidelines are not hard to follow. Critically, |
---|
104 | they protect the freedom of the RTEMS source code and that of end users |
---|
105 | to select the license and distribution terms they prefer for their |
---|
106 | RTEMS-based application. |
---|