[e52906b] | 1 | .. SPDX-License-Identifier: CC-BY-SA-4.0 |
---|
[1ae5e88] | 2 | |
---|
[4886d60] | 3 | .. Copyright (C) 2018. |
---|
[1ae5e88] | 4 | .. COMMENT: RTEMS Foundation, The RTEMS Documentation Project |
---|
| 5 | |
---|
[b44feff] | 6 | .. _LicensingRequirements: |
---|
[1ae5e88] | 7 | |
---|
| 8 | Licensing Requirements |
---|
| 9 | ********************** |
---|
| 10 | |
---|
| 11 | All artifacts shall adhere to RTEMS Project licensing |
---|
[2d22d74] | 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 |
---|
[1ae5e88] | 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 | |
---|
[2d22d74] | 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. |
---|
[1ae5e88] | 102 | |
---|
[2d22d74] | 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. |
---|