Skip to content

Commit fafede9

Browse files
authored
Merge pull request #822 from swinslow/source-available-update-1.1
Add expanded source available recommendations
2 parents ffd2fc6 + 46fb6c6 commit fafede9

File tree

1 file changed

+67
-4
lines changed

1 file changed

+67
-4
lines changed

source-available-recommendations.md

+67-4
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# Source Available Recommendations v1.0
1+
# Source Available Recommendations v1.1
22

33
Third Party Dependencies that have been Relicensed to Source Available, non-open source licenses
44

@@ -26,7 +26,7 @@ Separately, other dependencies that were once available under Apache-2.0 or othe
2626

2727
Speaking broadly, "source available" means that the source code is made available by the licensor, but a source available license does not necessarily grant the full set of rights and freedoms for use, modification, and distribution that are granted by open source licenses. For example, some source available licenses may prohibit the recipient of software from using it for commercial purposes, or in production environments, or may forbid certain types of people or companies from using or redistributing it. Other source available licenses may grant the full set of open source rights, but may impose conditions that are vague or effectively impossible to comply with. Often these licenses are used to make the source code available for evaluation or testing purposes only.
2828

29-
Because of these restrictions or limitations on rights, certain "source available" licenses do not qualify as “open source” under the [Open Source Definition], and are therefore unlikely to be approved by the CNCF Governing Board for inclusion as dependencies for CNCF projects.
29+
Because of these restrictions or limitations on rights, certain "source available" licenses do not qualify as “open source” under the [Open Source Definition], and are therefore unlikely to be approved by the CNCF Governing Board for inclusion as dependencies for CNCF projects.
3030

3131
Where a third-party dependency was once available under Apache-2.0 or another license approved by the Governing Board on an exception basis or subject to the [Allowlist License Policy], but has changed to a "source available" non-open source license, this can present a problem for CNCF projects. In such cases, the license of the component they depend on was previously aligned with the CNCF project's own license, but is no longer aligned.
3232

@@ -35,6 +35,7 @@ Where a third-party dependency was once available under Apache-2.0 or another li
3535
The following are a few examples of licenses that CNCF understands to be "source available" but not open source. Please note that this is not an exhaustive list, and may include other versions of such licenses as well. Bracketed identifiers refer to [SPDX License List] identifiers, where applicable.
3636

3737
* Business Source License 1.1 (BUSL-1.1)
38+
- BUSL-1.1 includes several custom fields to be determined by the licensor, so its restrictions and requirements will likely differ among products.
3839
* Elastic License 2.0 (Elastic-2.0)
3940
* Hippocratic License 2.1 (Hippocratic-2.1)
4041
* licenses using the "Commons Clause" additional text
@@ -43,7 +44,7 @@ The following are a few examples of licenses that CNCF understands to be "source
4344

4445
## Recommendations
4546

46-
There are a couple of approaches that CNCF projects should consider taking, for
47+
There are a few approaches that CNCF projects should consider taking, for
4748
dependencies that fall into this category.
4849

4950
### Switch to an alternative component
@@ -61,9 +62,71 @@ This is unlikely to be tenable as a long-term solution, particularly as
6162
the prior release is presumably unlikely to continue receiving maintenance
6263
updates, security fixes, etc.
6364

64-
In either case, while a project's maintainers may request a license exception from the CNCF Governing Board, it is _extremely_ unlikely that one will be granted for the use of a dependency under a source available, non-open source license.
65+
### Fork and maintain
66+
67+
Finally, the project might decide to take on the responsibility for maintaining its own fork of the open source version of the component, typically based on the final release prior to the change to a source available license.
68+
69+
Please see [below](#considerations-for-forking-and-maintaining) for details to consider if the community desires to take this approach.
70+
71+
### Exception requests
72+
73+
In any case, while a project's maintainers may request a license exception from the CNCF Governing Board, it is _extremely_ unlikely that one will be granted for the use of a dependency under a source available, non-open source license.
74+
75+
## Considerations for Forking and Maintaining
76+
77+
A decision to fork and maintain a pre-existing independent project is typically not a small undertaking. Below are some of the considerations that a CNCF project would likely want to take into account when going this route. In any case, please reach out early to CNCF staff via the [CNCF Service Desk] to discuss details if you are considering this approach.
78+
79+
### Governance and IP policy formalities
80+
81+
The forked project’s ongoing maintenance could potentially be managed (1) within CNCF; (2) within a [separate open collaboration project under the Linux Foundation](https://www.linuxfoundation.org/projects); or (3) as part of a fully-separate community effort.
82+
83+
If the fork would be part of the existing CNCF project which uses it, then it would need to comply with the IP policy from the [CNCF Charter] and be recorded as a sub-project subject to the CNCF project's existing governance processes. Similarly, if it would be set up as its own CNCF project, it would also be subject to CNCF’s standard processes for onboarding new projects; [initiating an application to join the CNCF](https://github.com/cncf/toc/tree/main/process).
84+
85+
If the maintained fork would be a new project under the Linux Foundation, then it would likely need to be set up with its own governance structure and charter as with other LF-supported projects.
86+
87+
Or, if it would be maintained via a separate community effort (as a standalone project or part of another open source foundation), then the CNCF project may want to review and confirm that its future licensing structure will align with the IP policy from the [CNCF Charter].
88+
89+
### Comply with existing license requirements
90+
91+
A fork is built upon the pre-existing third party project, and therefore needs to comply with all requirements of the pre-existing license(s).
92+
93+
Open source license compliance is beyond the scope of this guidance document. However, as specific points (and as with any inclusion of a third party’s content), note that [all existing copyright and license notices should generally be retained without modification](https://github.com/cncf/foundation/blob/main/copyright-notices.md#dont-change-someone-elses-notice-without-their-permission).
94+
95+
### Trademark changes
96+
97+
It will typically be necessary to change the name of the forked project. The licensor will typically continue to use the old project names and logos in reference to the newly source-available project, and the fork would need to find a different name and logo, if applicable, for future diverging developments.
98+
99+
As described [above](#comply-with-existing-license-requirements), trademarks referencing the original project can and should be retained where used in _pre-existing copyright notices_. And it will generally be acceptable to use a project’s name in _unstylized_ form solely for purposes of accurately describing the nature of the fork’s relationship to the original project (e.g., something like “Our project Frobozz is derived from Foo, and is forked from its final open source release. Foo is a trademark of FooBar, Inc.”).
100+
101+
Please contact CNCF staff in advance via the [CNCF Service Desk] to discuss details for how to handle these changes.
102+
103+
### Future developments
104+
105+
For any collaborative open source development effort, proper attention to license compliance and provenance of contributions is an important part of project governance. When a development effort is building on top of a forked version of a non-participating licensor, compliance and provenance become especially crucial.
106+
107+
Ultimately, a project’s formal contribution mechanisms -- such as Developer Certificate of Origin (DCO) sign-offs or Contributor License Agreements (CLAs) -- spell out the commitments that a contributor makes to the project and the community. A forked project may decide to establish additional processes to assist with demonstrating the community’s commitment to appropriate and transparent development.
108+
109+
Here are a few guidelines and recommendations that a forked project will want to consider:
110+
111+
**Do not’s**:
112+
113+
* **Do not** copy any PRs, code or other content from the post-fork upstream source, where such content is published under the new non-open source license.
114+
- It may be appropriate to e.g. read release notes and develop similar functionality, as long as such developments are done fully independently of the post-fork upstream project.
115+
* **Do not** remove or modify pre-existing license texts or copyright notices unless you are certain that they no longer apply (e.g., if a file no longer contains _any_ content that is arguably subject to that notice).
116+
117+
**Do’s**:
118+
119+
* **Do** talk to CNCF staff early and often during this process! Start by reaching out via the [CNCF Service Desk].
120+
* **Do** consider requiring contributors to document provenance details, such as explicitly marking within the repo:
121+
- any content not originally written by the contributor, together with a pointer to its original source and license terms
122+
- any content copied from one file within the codebase to another
123+
* **Do** require, as applicable, DCO sign-offs and/or authorization under signed CLAs for all contributions.
124+
- Appropriate tooling can and should be used to help with ensuring that _all_ contributions are subject to the applicable sign-offs.
125+
* **Do** consider establishing a process for reviewing pull requests to confirm they are not similar to the post-fork upstream source.
126+
- Depending on whether it is feasible given the project's size and the number of maintainers, a maintainer or reviewer who reviews a questionable pull request can subsequently limit their development in that area of the codebase to minimize this risk that their exposure to post-fork upstream code could influence their future contributions.
65127

66128
[CNCF Charter]: https://github.com/cncf/foundation/blob/master/charter.md
129+
[CNCF Service Desk]: https://cncfservicedesk.atlassian.net/servicedesk/customer/portal/1/group/1/create/14
67130
[Allowlist License Policy]: https://github.com/cncf/foundation/blob/master/allowed-third-party-license-policy.md
68131
[AGPL-3.0]: https://www.gnu.org/licenses/agpl-3.0.en.html
69132
[Open Source Definition]: https://opensource.org/osd/

0 commit comments

Comments
 (0)