-
Notifications
You must be signed in to change notification settings - Fork 27
Update CONTRIBUTING.md to broaden the intent of the contributor agreement #382
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -15,14 +15,6 @@ examples or if you cannot find anything that fits your use-case use GitHub's dis | |
## Contributing code and content | ||
We welcome all forms of contributions from the community. Please read the following guidelines to maximise the chances of your PR being merged. | ||
|
||
### DCO Signing | ||
|
||
Any code contributions going into GNU Radio will become part of a LGPL-licensed, open source repository. It is therefore imperative that code submissions belong to the authors, and that submitters have the authority to merge that code into the public GNU Radio codebase. | ||
|
||
For that purpose, we use the [Developer's Certificate of Origin](DCO.txt). It is the same document used by other projects. Signing the DCO states that there are no legal reasons to not merge your code. | ||
|
||
To sign the DCO, suffix your git commits with a "Signed-off-by" line. When using the command line, you can use `git commit -s` to automatically add this line. If there were multiple authors of the code, or other types of stakeholders, make sure that all are listed, each with a separate Signed-off-by line. | ||
|
||
### Communication | ||
- Before starting work on a feature, check if there isn't already an examples in the 'samples' sub-module. | ||
If not, then please open an issue on GitHub describing the proposed feature. We want to make sure any feature work goes smoothly. | ||
|
@@ -45,37 +37,73 @@ Please be sure to follow the usual process for submitting PRs: | |
|
||
We reserve the right to close PRs that are not making progress. Closed PRs can be reopened again later and work can resume. | ||
|
||
### Contributor License Agreement | ||
By contributing your code to GNU Radio you grant us a non-exclusive, | ||
irrevocable, worldwide, royalty-free, sublicenseable, transferable | ||
license under all of Your relevant intellectual property rights | ||
(including copyright, patent, and any other rights), to use, copy, | ||
prepare derivative works of, distribute and publicly perform and | ||
display the Contributions on any licensing terms, including without limitation: | ||
(a) open source licenses like the Apache license; and (b) binary, | ||
proprietary, or commercial licenses. Except for the licenses granted herein, | ||
You reserve all right, title, and interest in and to the Contribution. | ||
|
||
You confirm that you are able to grant us these rights. You represent | ||
that You are legally entitled to grant the above license. If Your employer | ||
has rights to intellectual property that You create, You represent that | ||
You have received permission to make the Contributions on behalf of that | ||
employer, or that Your employer has waived such rights for the Contributions. | ||
|
||
You represent that the Contributions are Your original works of | ||
authorship, and to Your knowledge, no other person claims, or | ||
has the right to claim, any right in any invention or patent | ||
related to the Contributions. You also represent that You are | ||
not legally obligated, whether by entering into an agreement | ||
or otherwise, in any way that conflicts with the terms of this license. | ||
|
||
We acknowledge that, except as explicitly described in this | ||
Agreement, any Contribution which you provide is on an | ||
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, | ||
EITHER EXPRESS OR IMPLIED, INCLUDING, WITHOUT LIMITATION, | ||
ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, | ||
MERCHANTABILITY, OR FITNESS FOR A PARTICULAR PURPOSE. | ||
### Copyright Assignment | ||
|
||
GNU Radio does not claim ownership of any contributions you make. All copyrights remain with the original author of the contribution. As the author, you are responsible for maintaining and marking your copyright in the appropriate locations. | ||
|
||
When modifying or adding new files, you must include a copyright header in each file you touch. The copyright header should contain the following information: | ||
|
||
``` | ||
/* | ||
* Copyright (C) [Year] [Name or Pseudonym of Author] | ||
* | ||
* SPDX-License-Identifier: [License of module or file, default LGPL-3.0 for core] | ||
Comment on lines
+44
to
+50
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. On a similar note as above: In my view, it's important to keep licensing and (c)lean, maintainable code as separate concerns. Including a mandatory copyright header in every file doesn’t necessarily add value but does increase maintenance overhead and refactoring complexity. Moreover, such headers can create unnecessary ambiguity, leading to questions about whether changes or add-ons conflict with top-level licensing agreements and a lot of bikeshedding. This ambiguity can require further reviews from legal experts, increasing the burden on contributors and maintainers. To simplify this process, we already have a contributor list, which acknowledges contributions equally, regardless of the size or nature of the improvement. In line with the principle of "Keep It Simple, Stupid" (KISS), I believe we avoid legalese in the source code and focus on the core utility and quality of the library itself. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I get your point, but GNU Radio 3.10 does this and it doesn't seem to generate much burden. |
||
*/ | ||
``` | ||
|
||
If you are modifying an existing file, add your copyright notice below any existing copyright lines. Please use the name you would like to associate with your contribution and ensure consistency across all files you contribute to. | ||
|
||
#### Non-Revocability of Contributions | ||
|
||
By submitting a contribution to the GNU Radio project, you agree that your contribution is non-revocable. Once a contribution is accepted and merged into the GNU Radio repository, it cannot be withdrawn or removed by the original author. This ensures that the integrity and continuity of the project's codebase are preserved. | ||
|
||
#### License Terms | ||
|
||
GNU Radio intends to maintain the existing license terms under which contributions are made. We do not intend to change the licensing terms of any contributions after submission. Any potential changes to the license, such as re-licensing, would require an explicit, agreed-upon process involving the contributor and the project maintainers. | ||
|
||
By submitting a contribution, you agree to the terms of the Developer Certificate of Origin (DCO), which certifies that your contribution is your original work and that you have the right to submit it under the license terms of the specific module. | ||
|
||
### DCO Signing | ||
|
||
Code submitters must have the authority to merge that code into the public GNU Radio codebase. | ||
In some cases, the rights to exploit the code may belong to the contributor's employer, depending on jurisdiction | ||
and employment agreements. | ||
|
||
For that purpose, we use the [Developer's Certificate of Origin](DCO.txt). It is the same document used by other | ||
projects. | ||
Signing the DCO states that there are no legal reasons to not merge your code. | ||
|
||
To sign the DCO, suffix your git commits with a "Signed-off-by" line. When using the command line, | ||
you can use `git commit -s` to automatically add this line. If there were multiple authors of the code, or other types | ||
of stakeholders, make sure that all are listed, each with a separate Signed-off-by line. | ||
|
||
#### Notably, by contributing to GNU Radio: | ||
|
||
1. You grant this project a non-exclusive, irrevocable, worldwide, royalty-free, sublicensable, transferable license | ||
under all of your relevant intellectual property rights (including copyright, patent, and any other rights), to use, | ||
copy, prepare derivative works of, distribute, and publicly perform and display the contributions. | ||
2. You confirm that you are able to grant us these rights. You represent that you are legally entitled to grant the | ||
above license. If Your employer has rights to intellectual property that You create, You represent that You have | ||
received permission to make the Contributions on behalf of that employer, or that Your employer has waived such | ||
rights for the Contributions. | ||
3. You represent that the Contributions are Your original works of authorship, and to Your knowledge, no other person | ||
claims, or has the right to claim, any right in any invention or patent related to the Contributions. | ||
You also represent that You are not legally obligated, whether by entering into an agreement or otherwise, in any way | ||
that conflicts with the terms of this license. | ||
4. We acknowledge that, except as explicitly described in this Agreement, any Contribution which you provide is on an | ||
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, WITHOUT | ||
LIMITATION, | ||
ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY, OR FITNESS FOR A PARTICULAR PURPOSE. | ||
|
||
This above is to ensure that the GNU Radio Project: | ||
|
||
* Remains free/libre in the spirit of the open source licenses and principles. | ||
* Stays or can be made compliant under international and national laws if these change (notably U.S. and EU stances on | ||
cybersecurity, product liability, GDPR, and use of AI). | ||
* Encourages public-private/industry partnerships to foster innovation and collaboration, ensuring that all can benefit | ||
from and contribute to the project. | ||
|
||
## Code of Conduct | ||
To ensure an inclusive community, contributors and users in the GNU Radio | ||
community should follow the [code of conduct](./CODE_OF_CONDUCT.md). | ||
|
||
To ensure an inclusive community, contributors and users in the GNU Radio community should follow | ||
the [code of conduct](./CODE_OF_CONDUCT.md). |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Since 3882ef7, the SPDX for the core is
LGPL-3.0-linking-exception
rather thanLGPL-3.0
.I'm just marking this as an item to review and keep in sync with the core
LICENSE
file before merging.Uh oh!
There was an error while loading. Please reload this page.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We can safely revert this to the vanilla LGPL-3.0 w/o additional disclaimer. We got meanwhile the info that this has been explicitly confirmed for another header-only C++ library (Eigen) by Brett Smith (Licensing Compliance Engineer, Free Software Foundation).
For more practical details, see here.
I hope this concludes this legal semantic debate.
EDIT: corrected primary link.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Is the link to the eigen mailing list correct? For me it goes to a thread "[eigen] problem to contact svn repository".
I'm not sure that eigen is a good example to advocate for LGPL-3.0 w/o linking exception for a header-only library. In 2012 they changed their license to MPL 2.0. In their own words, when eigen was LGPL they had a long FAQ about the implications that it isn't needed anymore with the MPL. It would be good to know more about the background and reasons for the license change.
The old LGPL FAQ mentions in two places that they asked the FSF about what happens with a header-only library, but the links they give to the mailing list are wrong (or most likely have become broken): http://listengine.tuxfamily.org/lists.tuxfamily.org/eigen/2009/01/msg00083.html and http://listengine.tuxfamily.org/lists.tuxfamily.org/eigen/2008/02/msg00008.html (one of these is the link you mentioned, the other points to a thread that does speak about FSF and licensing, but there are no clear answers there).
I think that in practice it doesn't matter if someone from the FSF in 2008 or 2009 said something about header-only libraries under the LGPL-3.0. What matters if we want to promote/simplify using GNU Radio 4.0 in closed source applications in industry is whether a legal department can review the license terms and have high confidence that there is no "GPL-like viral contamination" of the company's closed source code. If there is any reasonable doubt, they'll err on the side of caution and treat the license as a GPL-like viral license.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@daniestevez corrected the link. We could also opt for a more liberal license, but the decision of whether LGPLv3, or more liberal one is not mine to make and should be moderated/coordinated by the GR leadership team.
The repo is technical, and we should find a different platform to discuss the nuances of GNU Radio Project leadership and roadmap issues.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks for finding the correct link. Still Brett Smith's response looks unconvincing to me. The question he is answering to is "I would like to know if the LGPLv3 can be suitable for a C++ pure template library, where all the code is in headers?", which is vague since "suitable" can mean any number of things. Brett simply says "yes, it is suitable, because of LGPLv3 Section 3".
The question that needs an answer is "can a closed-source application use an LGPLv3 header-only library, and if so, which requirements need to be followed". I know about section 3 in the LGPLv3, but it says "Give prominent notice with each copy of the object code that the Library is used in it and that the Library and its use are covered by this License". My reading is that Section 4 d) is still applicable, so users need to have a means to modify the Library in the Combined Work (and that's impossible if the Combined Work is a closed-source application and the Library is header-only).
Happy to take the discussion somewhere else. I think the reason we're discussing in this PR is that this got brought up in the Architecture Matrix channel and between discussing it in the channel or discussing it in the PR, it was decided that it was better to discuss it in the PR.