#3053 new enhancement

Change RTEMS License to Two Paragraph BSD

Reported by: Joel Sherrill Owned by:
Priority: high Milestone: Indefinite
Component: unspecified Version: 5
Severity: normal Keywords: license, BSD
Cc: Blocked By:
Blocking:

Description

RTEMS has long used the GPL v2 with an exception that eliminated the viral nature of the license. There has been discussion amongst the core developers and primary submitters about switching to the "Two Paragraph BSD" license. The consensus was that it was time to change. One reason was that the RTEMS license was modeled on a license no longer used by GCC language run-times. Another was that the "Two Paragraph BSD" license is easier to explain and understand. But the major reason was that the RTEMS Project has never imposed any license conformance burden on end user projects. The BSD license family is much clearer about that intent.

An announcement was made at the December 2015 Flight Software Workshop (http://flightsoftware.jhuapl.edu/files/_site/workshops/2015/). The slides and video are available for that presentation. No specific date was given but the core developer consensus was that we needed to focus on the 4.11 branch and, subsequently, the 4.12 release branches being made. With the 4.12 branch imminent, it is now time to ensure there is a ticket to track this effort and work through the relicensing as quickly and accurately as possible.

The relicensing effort will involve multiple activities:

  • update web content to include and recommend Two Paragraph BSD license
  • update coding conventions to recommend Two Paragraph BSD license
  • identify contributors for each file
    • some work has been done on this
  • obtain permission from contributors to relicense
  • update files with new license
  • generate reports on licenses associated with a particular build of RTEMS

The content on relicensing from the Flight Software Workshop presentation is captured here.

Original rationale for GPL v2 + exception

  • felt needed to establish a community
  • “stick” to encourage submissions
  • license was used by GCC language run-times

Rationale to switch

  • RTEMS has a strong community
  • users understand business value of submitting
  • we have explained the “carrot”
  • GPL v3 has soured some on GPL in general

Mechanics of Switching

  • Permission from each submitter must be obtained
    • permission obtained from top contributors
  • All contributors to a file must give permission before that file can be relicensed
  • Web form with confirmation email to grant permission to relicense
  • Effort will be made to locate the “missing”

When Permission is Not Obtained

  • Some files may never be relicensed
  • If users fund, replacement may be written
  • Older BSPs and ports may be obsoleted and removed on technical grounds
    • These are the most likely to contain files to have contributors that are hard to find

Generation of License Report

  • We are considering marking files with Linux Foundation sponsored https://SPDX.org annotation
  • Standard annotation for open source licenses _ Examples: NASA-1.3, GPL-2.0
  • Can annotate exceptions like current RTEMS license
    • Example: GPL-2.0-with-linking-exception
  • Tools exist to generate overall license reports
    • RTEMS would have to integrate one with build system

Attachments (1)

OAR-RelicenseToBSD-d2.pdf (35.6 KB) - added by Joel Sherrill on Aug 7, 2018 at 9:11:13 PM.
OAR Corporation letter granting permission to relicense

Download all attachments as: .zip

Change History (61)

comment:1 Changed on Aug 14, 2017 at 12:55:55 AM by Chris Johns

Milestone: 5.04.12.0

Please review and update the milestone. Thanks.

comment:2 Changed on Oct 11, 2017 at 11:09:19 PM by Joel Sherrill

Milestone: 4.12.0Indefinite

Changed on Aug 7, 2018 at 9:11:13 PM by Joel Sherrill

Attachment: OAR-RelicenseToBSD-d2.pdf added

OAR Corporation letter granting permission to relicense

comment:3 Changed on Aug 7, 2018 at 9:14:51 PM by Joel Sherrill

A signed PDF from On-Line Applications Corporation (OAR) is attached to this ticket which grants the RTEMS Community permission to relicense current and future contributions. The text of the letter is as follows:

On-Line Applications Research Corporation (OAR) grants permission to the RTEMS Foundation to relicense its current and future contributions from our current license GPLv2 plus exception to the RTEMS license becoming the 2-Clause BSD License (https://opensource.org/licenses/BSD-2-Clause). OAR shall work with the RTEMS Foundation to facilitate this change in the license as soon as possible.

comment:4 Changed on Nov 27, 2018 at 5:50:37 AM by thomas.doerfler

embedded brains has signed and sent a letter granting relicensing.
Included are also letters from the individual developers:

  • Sebastian Huber
  • Christian Mauderer
  • Alexander Krutwig
  • Ralf Kirchner
  • Peter Rasmussen
  • Thomas Doerfler.

comment:5 Changed on Nov 27, 2018 at 7:09:10 AM by Sebastian Huber <sebastian.huber@…>

In c1864a0a/rtems:

Add LICENSE.BSD-2-Clause

Copied from:

https://spdx.org/licenses/BSD-2-Clause.html

The formatting is suitable for C/C++ source comments.

Update #3053.

comment:6 Changed on Dec 2, 2018 at 4:19:29 PM by Hesham Almatary

Hesham Almatary has signed and sent the relicence letter

comment:7 Changed on Dec 3, 2018 at 1:55:16 PM by Jiri Gaisler

I grant permission to the RTEMS Foundation to relicense my current and future contributions from the current license GPLv2 plus exception to the RTEMS license becoming the 2-Clause BSD License.

Jiri Gaisler.

comment:8 Changed on Dec 11, 2018 at 6:00:39 AM by Sebastian Huber <sebastian.huber@…>

In 6179767/rtems:

Remove white space at end of line

Update #3053.

comment:9 Changed on Dec 18, 2018 at 6:30:04 PM by Gedare Bloom

I sent in a letter to grant permission for re-licensing.

comment:10 Changed on Dec 19, 2018 at 12:31:56 PM by Sebastian Huber <sebastian.huber@…>

In cde5e8d/rtems:

LICENSE.BSD-2-Clause: Clarify copyright format

Update #3053.

comment:11 Changed on Dec 19, 2018 at 12:32:00 PM by Sebastian Huber <sebastian.huber@…>

In 6164fd8/rtems:

Move COPYING file to LICENSE.GPL-2.0

Use the latest plain text formatting of the GPL-2.0 as published by the
FSF:

https://www.gnu.org/licenses/old-licenses/gpl-2.0.txt

The current RTEMS license refers to the GPL-2.0, so the source
distribution should ship a copy of the license.

Update #3053.

comment:12 Changed on Apr 9, 2019 at 5:22:26 AM by Chris Johns

I sent in a letter to grant permission for re-licensing.

comment:13 Changed on Apr 9, 2019 at 12:34:13 PM by Pavel Pisa

I grant permission to the RTEMS Foundation to relicense my current and future contributions to the RTEMS public source to be relicensed to the 2-Clause BSD License.

Pavel Pisa

comment:14 Changed on Apr 10, 2019 at 7:50:45 AM by Sebastian Huber <sebastian.huber@…>

In f1eedbd/rtems:

bsp/xilinx-zynq: Relicense to BSD-2-Clause

Relicense contributions from Chris Johns, Christian Mauderer,
embedded brains GmbH, Joel Sherrill, OAR, Pavel Pisa, Ralf Kirchner, and
Sebastian Huber.

Update #3053.

comment:15 Changed on Feb 12, 2020 at 3:12:47 PM by Sebastian Huber <sebastian.huber@…>

In 2485156/rtems:

score: Split up objects allocation

Split up the different objects allocation methods into separate
functions. This helps to avoid a dependency on the workspace in case no
objects or a static set of objects is configured.

Change license to BSD-2-Clause according to file histories.

Update #3053.
Update #3835.

comment:16 Changed on Feb 24, 2020 at 7:14:08 AM by Sebastian Huber <sebastian.huber@…>

In d27e630/rtems-docs:

eng: Rework file template section

Update #3053.

comment:17 Changed on Feb 25, 2020 at 11:33:45 AM by Sebastian Huber <sebastian.huber@…>

In cadd8d1/rtems:

config: Add <rtems/confdefs/obsolete.h>

Unify handling of obsolete configuration options. Remove comments and
copyrightable content from the moved content. Use BSD-2-Clause license
for new file.

Update #3053.
Update #3875.

comment:18 Changed on Feb 25, 2020 at 11:33:52 AM by Sebastian Huber <sebastian.huber@…>

In f45d0b2f/rtems:

config: Add <rtems/confdefs/bsp.h>

Remove all comments and copyrightable content from the moved content.
Use BSD-2-Clause license for new file.

Update #3053.
Update #3875.

comment:19 Changed on Feb 25, 2020 at 11:33:55 AM by Sebastian Huber <sebastian.huber@…>

In 0f8e139e/rtems:

config: Add <rtems/confdefs/percpu.h>

Remove comments and copyrightable content from the moved content. Use
BSD-2-Clause for new file according to file history of
<rtems/confdefs.h>.

Update #3053.
Update #3875.

comment:20 Changed on Feb 25, 2020 at 11:33:59 AM by Sebastian Huber <sebastian.huber@…>

In 1608221/rtems:

config: Add <rtems/confdefs/libio.h>

Remove all comments and copyrightable content from the moved content.
Use BSD-2-Clause license for new file.

Update #3053.
Update #3875.

comment:21 Changed on Feb 25, 2020 at 11:34:02 AM by Sebastian Huber <sebastian.huber@…>

In 591e9736/rtems:

config: Add <rtems/confdefs/scheduler.h>

Remove all comments and copyrightable content from the moved content.
Use BSD-2-Clause license for new file.

Update #3053.
Update #3875.

comment:22 Changed on Feb 25, 2020 at 11:34:06 AM by Sebastian Huber <sebastian.huber@…>

In 691b614/rtems:

config: Add <rtems/confdefs/bdbuf.h>

Remove all comments and copyrightable content from the moved content.
Use BSD-2-Clause license for new file.

Update #3053.
Update #3875.

comment:23 Changed on Feb 25, 2020 at 11:34:09 AM by Sebastian Huber <sebastian.huber@…>

In 03aff2c/rtems:

config: Add <rtems/confdefs/malloc.h>

Remove all comments and copyrightable content from the moved content.
Use BSD-2-Clause license for new file.

Move the default configuration to library files so that application
configurations do not include the definitions for the default case.

Update #3053.
Update #3875.

comment:24 Changed on Feb 25, 2020 at 11:34:13 AM by Sebastian Huber <sebastian.huber@…>

In 1d35bf2a/rtems:

config: Add <rtems/confdefs/mcpi.h>

Remove all comments and copyrightable content from the moved content.
Use BSD-2-Clause license for new file.

Update #3053.
Update #3875.

comment:25 Changed on Feb 25, 2020 at 11:34:17 AM by Sebastian Huber <sebastian.huber@…>

In 32561f5/rtems:

config: Add <rtems/confdefs/clock.h>

Remove all comments and copyrightable content from the moved content.
Use BSD-2-Clause license for new file.

Update #3053.
Update #3875.

comment:26 Changed on Feb 25, 2020 at 11:34:20 AM by Sebastian Huber <sebastian.huber@…>

In fb0caca/rtems:

config: Add <rtems/confdefs/newlib.h>

Remove all comments and copyrightable content from the moved content.
Use BSD-2-Clause license for new file.

Update #3053.
Update #3875.

comment:27 Changed on Feb 25, 2020 at 11:34:23 AM by Sebastian Huber <sebastian.huber@…>

In 8f3419b/rtems:

config: Add <rtems/confdefs/extensions.h>

Remove all comments and copyrightable content from the moved content.
Use BSD-2-Clause license for new file.

Update #3053.
Update #3875.

comment:28 Changed on Feb 25, 2020 at 11:34:27 AM by Sebastian Huber <sebastian.huber@…>

In b15d1cb/rtems:

config: Add <rtems/confdefs/inittask.h>

Remove all comments and copyrightable content from the moved content.
Use BSD-2-Clause license for new file.

Update #3053.
Update #3875.

comment:29 Changed on Feb 25, 2020 at 11:34:30 AM by Sebastian Huber <sebastian.huber@…>

In 8314933/rtems:

config: Add <rtems/confdefs/initthread.h>

Remove all comments and copyrightable content from the moved content.
Use BSD-2-Clause license for new file.

Update #3053.
Update #3875.

comment:30 Changed on Feb 25, 2020 at 11:34:34 AM by Sebastian Huber <sebastian.huber@…>

In fe84ab5/rtems:

config: Add <rtems/confdefs/console.h>

Remove all comments and copyrightable content from the moved content.
Use BSD-2-Clause license for new file.

Update #3053.
Update #3875.

comment:31 Changed on Feb 25, 2020 at 11:34:37 AM by Sebastian Huber <sebastian.huber@…>

In 7b6596f5/rtems:

config: Add <rtems/confdefs/iodrivers.h>

Remove all comments and copyrightable content from the moved content.
Use BSD-2-Clause license for new file.

Update #3053.
Update #3875.

comment:32 Changed on Feb 25, 2020 at 11:34:41 AM by Sebastian Huber <sebastian.huber@…>

In 40db051/rtems:

config: Add <rtems/confdefs/unlimited.h>

Remove all comments and copyrightable content from the moved content.
Use BSD-2-Clause license for new file.

Update #3053.
Update #3875.

comment:33 Changed on Feb 25, 2020 at 11:34:44 AM by Sebastian Huber <sebastian.huber@…>

In f5a2fd86/rtems:

config: Add <rtems/confdefs/threads.h>

Remove all comments and copyrightable content from the moved content.
Use BSD-2-Clause license for new file.

Update #3053.
Update #3875.

comment:34 Changed on Feb 25, 2020 at 11:34:48 AM by Sebastian Huber <sebastian.huber@…>

In d20209b/rtems:

config: Add <rtems/confdefs/objectsclassic.h>

Remove all comments and copyrightable content from the moved content.
Use BSD-2-Clause license for new file.

Update #3053.
Update #3875.

comment:35 Changed on Feb 25, 2020 at 11:34:51 AM by Sebastian Huber <sebastian.huber@…>

In 35e58c45/rtems:

config: Add <rtems/confdefs/wkspacesupport.h>

Remove all comments and copyrightable content from the moved content.
Use BSD-2-Clause license for new file.

Update #3053.
Update #3875.

comment:36 Changed on Feb 25, 2020 at 11:34:55 AM by Sebastian Huber <sebastian.huber@…>

In 1fb1cf1/rtems:

config: Add <rtems/confdefs/objectsposix.h>

Remove all comments and copyrightable content from the moved content.
Use BSD-2-Clause license for new file.

Update #3053.
Update #3875.

comment:37 Changed on Feb 25, 2020 at 11:34:59 AM by Sebastian Huber <sebastian.huber@…>

In a78495ed/rtems:

config: Add <rtems/confdefs/wkspace.h>

Remove all comments and copyrightable content from the moved content.
Use BSD-2-Clause license for new file.

Change licence of <rtems/confdefs.h> to BSD-2-Clause according to file
history.

Update #3053.
Close #3875.

comment:38 Changed on Mar 4, 2020 at 8:46:40 AM by Sebastian Huber <sebastian.huber@…>

In 7e3b5c0/rtems:

console: Use IMFS_add_node() for simple console

Change license to BSD-2-Clause according to file history.

Update #3053.
Update #3894.

comment:39 Changed on Mar 4, 2020 at 8:46:44 AM by Sebastian Huber <sebastian.huber@…>

In fa3005f/rtems:

console: Use IMFS_add_node() for simple task cons

Change license to BSD-2-Clause according to file history.

Update #3053.
Update #3894.

comment:40 Changed on Mar 6, 2020 at 2:13:14 PM by Kuan

I grant permission to the RTEMS Foundation to relicense my current and future contributions from the current license GPLv2 plus exception to the RTEMS license becoming the 2-Clause BSD License.

Kuan-Hsun Chen

comment:41 Changed on Aug 31, 2020 at 2:21:44 PM by Sebastian Huber <sebastian.huber@…>

In c7e3085/rtems:

rtems: Add _RTEMS_Name_to_id()

Simplify object name to identifier directives. Using
_RTEMS_Name_to_id() to implement the directives enables a tail call
optimization.

Change license to BSD-2-Clause according to file history.

Update #3053.

comment:42 Changed on Sep 18, 2020 at 4:57:09 PM by Sebastian Huber <sebastian.huber@…>

In 0b410b8a/rtems:

rtems: Generate <rtems.h>

Change license to BSD-2-Clause according to file history and
documentation re-licensing agreement.

Update #3053.
Update #3899.
Update #3993.

comment:43 Changed on Sep 22, 2020 at 7:44:34 AM by Sebastian Huber <sebastian.huber@…>

In d9bdf166/rtems:

rtems: Install missing header file

Update #3053.

comment:44 Changed on Sep 28, 2020 at 5:18:13 AM by Sebastian Huber <sebastian.huber@…>

In 2c09f54f/rtems:

score: Add <rtems/score/coremsgbuffer.h>

Move the CORE_message_queue_Buffer definition to a separate header file to be
able to use it independent of the remaining Message Queue Handler API.

Change license to BSD-2-Clause according to file history.

Update #3053.
Update #4007.

comment:45 Changed on Feb 9, 2021 at 6:53:35 AM by pragnesh

I grant permission to the RTEMS Foundation to relicense my current and
future contributions from the current license GPLv2 plus exception to
the RTEMS license becoming the 2-Clause BSD License.

comment:46 Changed on Feb 9, 2021 at 7:19:33 AM by Sebastian Huber <sebastian.huber@…>

In 570992dc/rtems:

bsp/riscv: Re-license to BSD-2-Clause

Change license to BSD-2-Clause according to file history.

Update #3053.

comment:47 Changed on Apr 20, 2021 at 5:18:39 PM by Sebastian Huber <sebastian.huber@…>

In d8a5e14/rtems:

libcsupport: Move rtems_calloc()

Move rtems_calloc() since it only depends on rtems_malloc(). This may
make it easier to customize the heap allocator.

Change licence to BSD-2-Clause according to file history.

Update #3053.

comment:48 Changed on May 15, 2021 at 3:06:34 PM by thomas.doerfler

In addition to my permission regarding my contributions in the name of embedded brains, I also grant permission to the RTEMS Foundation to relicense my current and future contributions done in the name of IMD from the current license GPLv2 plus exception to the RTEMS license becoming the 2-Clause BSD License.

Thomas Doerfler.

comment:49 Changed on May 17, 2021 at 3:30:54 PM by Sebastian Huber <sebastian.huber@…>

In 80b3c938/rtems:

score: Move _Thread_queue_Queue_get_name_and_id()

Move this diagnostic function to a separate file since it does not
provide a core function of the system.

Change license to BSD-2-Clause according to file history and
re-licensing agreement.

Update #3053.

comment:50 Changed on Jun 10, 2021 at 6:11:24 AM by Sebastian Huber <sebastian.huber@…>

In 93afcff7/rtems:

bsps/sparc: Simplify memory initialization

Directly initialize the memory in the start sequence defined by start.S
instead of using a system initialization handler. This avoids using the
global variable rdb_start which used a memory location which was shared
with _ERC32_MEC_Timer_Control_Mirror. This change makes it possible to
use _Memory_Allocate() even before the system initialization is started.

Change license to BSD-2-Clause according to file history and
re-licensing agreement.

Update #3053.

comment:51 Changed on Jun 11, 2021 at 5:26:55 AM by Sebastian Huber <sebastian.huber@…>

In fad01e6c/rtems:

score: Add PER_CPU_DATA_NEED_INITIALIZATION()

Make the initialization of the per-CPU data optional.

Change license to BSD-2-Clause according to file history and
re-licensing agreement.

Update #3053.

comment:52 Changed on Jun 16, 2021 at 5:35:47 AM by Richi Dubey

Hi,

For the files cpukit/score/src/schedulerstrongapa.c, and cpukit/include/rtems/score/schedulerstrongapa.h the license has been changed to BSD-2-Clause according to file history and re-licensing agreement.

Update https://devel.rtems.org/ticket/3053

comment:53 Changed on Jun 17, 2021 at 3:24:57 PM by Sebastian Huber <sebastian.huber@…>

In 3ee19b7a/rtems:

bsps/irq: Change license to BSD-2-Clause

Change license to BSD-2-Clause according to file history and
re-licensing agreement.

Update #3053.

comment:54 Changed on Jun 21, 2021 at 8:15:09 AM by Sebastian Huber <sebastian.huber@…>

In 8d4382b/rtems:

bsps/irq: Change license to BSD-2-Clause

Change license to BSD-2-Clause according to file history and
re-licensing agreement.

Update #3053.

comment:55 Changed on Jun 24, 2021 at 10:30:23 AM by Sebastian Huber <sebastian.huber@…>

In 89c1e879/rtems:

score: Move _ISR_Vector_table[] to separate file

The _ISR_Handler_initialization() does not touch the _ISR_Vector_table[]. Move
the definition of _ISR_Vector_table[] to a separate file.

Change license to BSD-2-Clause according to file history and re-licensing
agreement.

Update #3053.

comment:56 Changed on Jun 24, 2021 at 12:18:10 PM by Richi Dubey <richidubey@…>

In 6c23252/rtems:

Update Strong APA Scheduler

This change allows for the migration of higher priority tasks on the
arrival of a lower priority task limited by affinity constraints.

Change license to BSD-2-Clause according to file history and
re-licensing agreement.

Update #3053.

comment:57 Changed on Jul 28, 2021 at 5:06:42 PM by Sebastian Huber <sebastian.huber@…>

In 6e82e9e8/rtems:

libcsupport: Consistent rtems_putc() output

Use the same function to output the '\r\n' combination produced by
rtems_putc(). Fix the format.

Change licence according to file history.

Update #3053.

comment:58 Changed on Sep 6, 2021 at 10:20:59 AM by Sebastian Huber <sebastian.huber@…>

In fbd0a3ce/rtems:

score: Move _Thread_Dispatch()

The _Thread_Dispatch() function was customized over time and now the
work is done by _Thread_Do_dispatch() and specialized wrappers. The
plain _Thread_Dispatch() is now only used in some CPU ports. Move it to
a separate file to avoid dead code in the general.

Change license to BSD-2-Clause according to file history and
re-licensing agreement.

Update #3053.

comment:59 Changed on Sep 6, 2021 at 10:26:01 AM by Sebastian Huber <sebastian.huber@…>

In f958d58/rtems:

score: Split up rbtreenext.c

Split up rbtreenext.c since only _RBTree_Minimum() is used by the operating
system core services (thread queues and the EDF scheduler).

Change license to BSD-2-Clause according to file history and re-licensing
agreement.

Update #3053.

comment:60 Changed on Sep 21, 2021 at 8:25:42 AM by Sebastian Huber <sebastian.huber@…>

In 0036ddf/rtems:

score: Provide two thread pin/unpin defaults

The uniprocessor schedulers do not support systems with more than more
processors. So they rivially support thread pinning and thus the
SMP_FATAL_SCHEDULER_PIN_OR_UNPIN_NOT_SUPPORTED cannot happen.

Add a second default implementation for SMP schedulers which do not
support thread pinning.

Change license to BSD-2-Clause according to file history and re-licensing
agreement.

Update #3053.

Note: See TracTickets for help on using tickets.