Skip to content
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

Update CONTRIBUTING.md to broaden the intent of the contributor agreement #382

Open
wants to merge 2 commits into
base: main
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
108 changes: 68 additions & 40 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand All @@ -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]
Copy link
Contributor

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 than LGPL-3.0.

I'm just marking this as an item to review and keep in sync with the core LICENSE file before merging.

Copy link
Member Author

@RalphSteinhagen RalphSteinhagen Sep 30, 2024

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.

Copy link
Contributor

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.

Copy link
Member Author

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.

Copy link
Contributor

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).

The repo is technical, and we should find a different platform to discuss the nuances of GNU Radio Project leadership and roadmap issues.

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.

Comment on lines +44 to +50
Copy link
Member Author

Choose a reason for hiding this comment

The 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.

Copy link
Contributor

Choose a reason for hiding this comment

The 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).
Loading