Skip to content

Commit 10b24a8

Browse files
dbkinderAnas Nashif
authored andcommitted
doc: add contributing non-Apache2.0 docs
Add contribution process for including non-Apache 2.0 components as approved by the TSC. Include a README template that lists information requested by the TSC and governing board for review. Add a brief mention in the CONTRIBUTING link that appears when submitting a new PR or Issue via the GitHub web interface. Included an introduction to the process steps that includes using the zephyr devel mailing list to discuss new components. fixes #1543 Signed-off-by: David B. Kinder <david.b.kinder@intel.com>
1 parent ef39533 commit 10b24a8

File tree

4 files changed

+170
-10
lines changed

4 files changed

+170
-10
lines changed

CONTRIBUTING.rst

Lines changed: 42 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -22,21 +22,51 @@ software continues to be available under the terms that the author desired.
2222

2323
.. _GitHub repo: https://github.com/zephyrproject-rtos/zephyr
2424

25-
Zephyr uses the `Apache 2.0 license`_ (as found in the LICENSE file in the
26-
project's `GitHub repo`_) to strike a balance between open contribution and
27-
allowing you to use the software however you would like to. There are some
28-
imported or reused components of the Zephyr project that use other licensing,
29-
as described in `Zephyr Licensing`_.
30-
31-
.. _Zephyr Licensing:
32-
https://www.zephyrproject.org/doc/LICENSING.html
33-
34-
The license tells you what rights you have as a developer, provided by the
25+
Zephyr uses the `Apache 2.0 license`_ (as found in the LICENSE file in
26+
the project's `GitHub repo`_) to strike a balance between open
27+
contribution and allowing you to use the software however you would like
28+
to. The Apache 2.0 license is a permisive open source license that
29+
allows you to freely use, modify, distribute and sell your own products
30+
that include Apache 2.0 licensed software. (For more information about
31+
this, check out articles such as `Why choose Apache 2.0 licensing`_ and
32+
`Top 10 Apache License Questions Answered`_).
33+
34+
.. _Why choose Apache 2.0 licensing:
35+
https://www.zephyrproject.org/about/faq/what-rationale-choosing-apache-20-license
36+
37+
.. _Top 10 Apache License Questions Answered:
38+
https://www.whitesourcesoftware.com/whitesource-blog/top-10-apache-license-questions-answered/
39+
40+
A license tells you what rights you have as a developer, as provided by the
3541
copyright holder. It is important that the contributor fully understands the
3642
licensing rights and agrees to them. Sometimes the copyright holder isn't the
3743
contributor, such as when the contributor is doing work on behalf of a
3844
company.
3945

46+
Components using other Licenses
47+
===============================
48+
49+
There are some imported or reused components of the Zephyr project that
50+
use other licensing, as described in `Zephyr Licensing`_.
51+
52+
.. _Zephyr Licensing:
53+
https://www.zephyrproject.org/doc/LICENSING.html
54+
55+
Importing code into the Zephyr OS from other projects that use a license
56+
other than the Apache 2.0 license needs to be fully understood in
57+
context and approved by the Zephyr governing board.
58+
59+
By carefully reviewing potential contributions and also enforcing
60+
`developer attestations <DCO>`_ for contributed code, we can ensure that
61+
the Zephyr community can develop products with the Zephyr Project
62+
without concerns over patent or copyright issues.
63+
64+
See `Contributing non-Apache 2.0 components`_ for more information about
65+
this contributing and review process for imported components.
66+
67+
.. _Contributing non-Apache 2.0 components:
68+
https://www.zephyrproject.org/doc/contribute/contribute_non-apache.html
69+
4070
.. _DCO:
4171

4272
Developer Certification of Origin (DCO)
@@ -248,6 +278,8 @@ it when committing code, edit your *.git/hooks/pre-commit* file to contain:
248278
set -e exec
249279
exec git diff --cached | ${ZEPHYR_BASE}/scripts/checkpatch.pl - || true
250280
281+
.. _Contribution workflow:
282+
251283
Contribution Workflow
252284
*********************
253285

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
[Code Component Name]
2+
#####################
3+
4+
Origin:
5+
[Name of project hosting the original open source code]
6+
[Provide a link to the source]
7+
8+
Status:
9+
[Current version of this component, supported by Zephyr]
10+
11+
Purpose:
12+
[Brief description of what this software does]
13+
14+
Description:
15+
[Long description that will help reviewers discuss suitability of the
16+
package to solve the problem at hand (there may be a better package
17+
available.)
18+
19+
What is its primary functionality (e.g., SQLLite is a lightweight
20+
database)?
21+
22+
What problem are you trying to solve? (e.g., a state store is
23+
required to maintain ...)
24+
25+
Why is this the right package to solve it (e.g., SQLite is small,
26+
easy to use, and has a very liberal license.)]
27+
28+
Dependencies:
29+
[What other components does this package depend on? Does the software
30+
include any dynamic or static linking, or automatic downloading of any
31+
code?
32+
33+
Will the Zephyr project have a direct dependency on the component, or
34+
will it be included via an abstraction layer with this component as a
35+
replacable implementation?]
36+
37+
URL:
38+
[location to the project's home, e.g., a github repo]
39+
40+
commit:
41+
[08ded7f21529c39e5133688ffb9a9d0c94e5c6e]
42+
43+
Maintained-by:
44+
[External]
45+
46+
License:
47+
[use SPDX identifier (https://spdx.org/licenses/), such as BSD-3-Clause]
48+
49+
License Link:
50+
[link to the project's LICENSE file, e.g., https://github.com/xyz/LICENSE]

doc/contribute/contribute.rst

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,3 +10,4 @@ patches for code, documentation, tests, and more, directly to the project.
1010
:maxdepth: 1
1111

1212
contribute_guidelines.rst
13+
contribute_non-apache.rst
Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
.. _contribute_non-Apache:
2+
3+
Contributing non-Apache 2.0 licensed components
4+
###############################################
5+
6+
Importing code into the Zephyr OS from other projects that use a license
7+
other than the Apache 2.0 license needs to be fully understood in
8+
context and approved by the `Zephyr governing board`_.
9+
10+
.. _Zephyr governing board:
11+
https://www.zephyrproject.org/about/organization
12+
13+
By carefully reviewing potential contributions and also enforcing a
14+
:ref:`DCO` for contributed code, we ensure that
15+
the Zephyr community can develop products with the Zephyr Project
16+
without concerns over patent or copyright issues.
17+
18+
Submission and review process
19+
*****************************
20+
21+
All contributions to the Zephyr project are submitted through GitHub
22+
pull requests (PR) following the Zephyr Project's :ref:`Contribution workflow`.
23+
24+
Before you begin working on including a new component to the Zephyr
25+
Project (Apache-2.0 licensed or not), you should start up a conversation
26+
on the `developer mailing list <https://lists.zephyrproject.org>`_
27+
to see what the Zephyr community thinks about the idea. Maybe there's
28+
someone else working on something similar you can collaborate with, or a
29+
different approach may make the new component unnecessary.
30+
31+
If the conclusion is that including a new component is the best
32+
solution, and this new component uses a license other than Apache-2.0,
33+
these additional steps must be followed:
34+
35+
#. Complete a README for your code component and add it to your source
36+
code pull request (PR). A recommended README template can be found in
37+
:file:`doc/contributing/code_component_README` (and included
38+
`below`_ for reference)
39+
40+
#. The Zephyr Techincal Steering Committee (TSC) will evaluate the code
41+
component README as part of the PR
42+
commit and vote on accepting it using the GitHub PR review tools.
43+
44+
- If rejected by the TSC, a TSC member will communicate this to
45+
the contributor and the PR will be closed.
46+
47+
- If approved by the TSC, the TSC chair will forward the README to
48+
the Zephyr governing board for further review.
49+
50+
#. The Zephyr governing board has two weeks to review and ask questions:
51+
52+
- If there are no objections, the matter is closed. Approval can be
53+
accelerated by unanimous approval of the board before the two
54+
weeks are up.
55+
56+
- If a governing board member raises an objection that cannot be resolved
57+
via email, the board will meet to discuss whether to override the
58+
TSC approval or identify other approaches that can resolve the
59+
objections.
60+
61+
#. On approval of the Zephyr TSC and governing board, final review of
62+
the PR may be made to ensure its proper placement in the
63+
Zephyr Project :ref:`source_tree_v2`, (in the ``ext`` folder), and
64+
inclusion in the :ref:`zephyr_licensing` document.
65+
66+
.. note::
67+
68+
External components not under the Apache-2.0 license **cannot** be
69+
included in a Zephyr OS release without approval of both the Zephyr TSC
70+
and the Zephyr governing board.
71+
72+
.. _below:
73+
74+
Code component README template
75+
******************************
76+
77+
.. literalinclude:: code_component_README

0 commit comments

Comments
 (0)