Changeset 2d22d74 in rtems-docs

Apr 30, 2020, 9:29:06 PM (6 months ago)
Joel Sherrill <joel@…>
5, am, master
Joel Sherrill <joel@…> (04/30/20 21:29:06)
Joel Sherrill <joel@…> (05/01/20 16:11:31)

Rework RTEMS licensing discussions.

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

Closes #3962.

2 edited


  • eng/coding-conventions.rst

    rccc473b r2d22d74  
    36 * The RTEMS `License <>`_. is the typical
    37   and preferred license.
    38   * 2- and 3-clause BSD, MIT, and other OSI-approved non-copyleft licenses
    39     that permit statically linking with the code of different licenses
    40     are acceptable.
    41   * GPL licensed code is NOT acceptable, neither is LGPL.
    42     See `this blog post explanation <>`_.
    43     for more information.
    44   * Advertising obligations are NOT acceptable, but restrictions are permissible.
     36The RTEMS Project has strict requirements on the types of software licenses
     37that apply to software it includes and distributes. Submissions will be
     38summarily rejected that do not follow the correct license or file header
     41* Refer to :ref:`LicensingRequirements` for a discussion of the acceptable
     42  licenses and the rationale.
     44* Refer to :ref:`FileHeaderCopyright` for example copyright/license comment
     45  blocks for various languages.
    4647Language and Compiler
  • eng/license-requirements.rst

    rccc473b r2d22d74  
    1111All artifacts shall adhere to RTEMS Project licensing
    12 requirements. Currently, the preferred licenses are CC-BY-SA-4.0 license
    13 for documentation and "Two Paragraph BSD" for source code.
     12requirements. Currently, the preferred licenses are:
     14* "Two Clause BSD" (BSD-2-Clause) for source code, and
     15* CC-BY-SA-4.0 license for documentation
    1517Historically, RTEMS has been licensed under the GPL v2 with linking
    2022 for details.
    22 TBD - Convert the following to Rest and insert into this file
    23 TBD -
     24For example templates for what to include in source code and
     25documentation, see :ref:`FileHeaderCopyright`.
    25 TBD - Review and make sure this includes info on BSD variants
     30.. COMMENT: Thanks to Gedare Bloom for his 2013 blog which
     31.. COMMENT: discussed the rationale for RTEMS License section.
     32.. COMMENT:
     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.
     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.
     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
     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.
     59The historical RTEMS `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.
     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.
     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
     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:
     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.
     89* The historical RTEMS `License <>`_ is
     90  acceptable for software already in the tree. This software is being
     91  relicensed to BSD-2-Clause, rewritten, or removed.
     93* GPL licensed code is NOT acceptable, neither is LGPL.
     95* Software which is dual-licensed in a manner which prevents free use
     96  in commercial applications is not acceptable.
     98* Advertising obligations are not acceptable.
     100* Some license restrictions may be permissible. These will be considered
     101  on a case-by-case basis.
     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 TracChangeset for help on using the changeset viewer.