-
-
Notifications
You must be signed in to change notification settings - Fork 67
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
licenses: allow mix of multiple SPDX expressions AND/OR multiple named/spdx licenses #454
Comments
related: CycloneDX/cyclonedx-python#826 |
I agree with the problem, especially case C. |
I will be working on a solution for this, planned for CycloneDX 1.7. |
The example should also mention "LicenseRef-" items to clearly state that such simple expressions are also SPDX expression by definition of SPDX, not only compound expressions. Situation B: Concluded license possiblities:
Situation C: Clear statement here (Standard License Header): Another significant reference: |
re: #454 (comment) Thanks for pointing that out. Anyway, the examples exist for showcasing needed options(requirements). As stated
|
this might be true for OBOM and alike, but not for SBOM. |
please review the proposed implementation changes to enable the features outlined in this very ticket: |
@jkowalleck Since you are tackling licensing, I would suggest considering these:
|
Actually the mileage may vary. Some lawyers may prefer to convey the choice, some may prefer to pick one. So I am not sure there is any legal requirement to select a license, except in a few rare case. One such case is with FreeType https://gitlab.freedesktop.org/freetype/freetype/-/blob/b1f47850878d232eea372ab167e760ccac4c4e32/LICENSE.TXT#L9 ...
.... but this is a really rare case. Most exceptions allow to keep or drop the exception, and many licensing that allow future versions may not even give you the choice to drop future version (like the Eclipse license). |
re: #454 (comment) A friendly reminder: do not mix multiple scopes in one ticket. Deprecating one structure, and enhancing another are two different scopes, and should be handled in separate tickets and separate pull requests. re topic 1
This is not in the scope of this very ticket. I do not intend to switch scopes of this ticket. Anybody interested in pursuing the goal of deprecating current license structures, while enhancing others is free to do so - I have no problem with that. It all starts with creating a ticket for that and championing/driving the topic. Go ahead. :-) re topic 2
license-refs are anything the SPDX ID is not assigned, right? re topic 3
when used in an SPDX expression: this is #554 what is about. re topic 4:completely different topic. PS: feel free to open separate tickets for all the things you mentioned. I will not work on them in this very ticket due to ticket scope. |
This is confusing for me. The "name" (also considering the example in the CycloneDX definition) is a human readable title (-> see SPDX). I could print it together with the license text in an attribution report for a customer. |
Period ended today, change was promoted to TC54. In today's TC54 meeting, some members rejected the feature as it is today, and rejected this original promoted feature. Reason: they expressed, that allowing multiple licenses was a bad idea. The discussion about that shall be continued in this very ticket. |
@pombredanne , Please provide your reasoning for rejecting this core enhancement regarding the necessary license mix as a whole. |
@jkowalleck you wrote:
"LicenseRef" are ids designed to be used in expressions, so they may need to be defined as their own reference entries for such use in an expression, but not for use as a licensing statement alone, so they would not fit IMHO in the "named license" section.
About allow mix of SPDX expression and other licenses at the same time:
About multiple SPDX expressions at the same time exclusive of the above:
Also, closely related, we are also missing optional but important notices and license texts that I should be able to add together with and in support of a license expression. And as mentioned above LicenseRef need something. One approach that would be backward compatible could be to add optional, extra attributes with each license expression entry such as:
This would not be mixed with a list "named licenses" So things are not really simple to resolve here, an in all cases adding more opportunities for ambiguities on top of existing ambiguities is not something that helps with clarity. So in recap, my recommendation is to:
|
Circling back to this specific ticket, I think that there is a problem with ambiguous use of "expression".
I can best explain this with reference to the "backport of a newly added valid example for CDX 1.7." from https://github.com/CycloneDX/specification/pull/582/files - referring specifically to the JSON example.
So either the definition of "expression" needs to change such that it does not need to be a valid SPDX license expression or
|
re: #454 (comment)
👍
this is not in the scope of this very ticket. in fact, this would be a completely different core enhancement - one that is impractical for real-world use:
you see, not only is the thing you want a different scope, but also not trivial.
Again, different scope. Please get more involved in the standard you are triaging.
actually, they are. if you kept with the original scope. :-) I conclude, that you actually have no issue with this proposed change/fix. right, @pombredanne ? |
re: #454 (comment)
@mjherzog , PS: the time this ticket was created, the SPDX license IDs you called out as invalid were valid, and they still are - event though they were deprecated |
I do not believe the suggested solution (proposal) is the correct approach. Declared licenses are already incorporated in individual component objects. Licenses that appear in the top-level metadata should be the concluded license(s) which should be the deterministic location for legal risk assessment. Further annotations, meaningful to other domains, can be conveyed in each licenses properties. In addition, I would love to walk through real-world license problems (seen in practice from a scanner/generator) against a real project source code or artifact that is causing this request to provide guidance on how to use the existing fields and perhaps reflect it as an anonymized use case in a guide. |
@jkowalleck I understand your point. Our AboutCode license-expression library treats the deprecated SPDX license-ids as unknown licenses in general, but it would probably be a good idea to recognize cases like GPL-2.0 as deprecated aliases rather than unknown. |
the ticket's description includes reasoning and use cases already, but maybe they are too abstract. Here are multiple real world scenarios that people are actually unable to fulfill with current CycloneDX, I was told at a conference a year ago:
Please be aware, that some of these practical use-cases work with declared/concluded licenses, Please be aware, that CycloneDX already is able to fulfill all these practical use-cases for licenses that are not SPDX expressions. We already allow only multiple licenses in parallel. |
re: #454 (comment)
we did not have this baked into the spec, yet - it was always possible to have multiple "declared" licenses, along with multiple "concluded" licenses. |
But here is my important point (@mrutkows, you asked for the "real world"): My impression is that at the time when CycloneDX was invented, only the given component outcome types were considered for applying licenses. But the Linux/Unixoid ecosystem was not properly considered! Here, the authors and licenses are assigned to source code file sets that form a component. So, a proper mapping of Linux components (see e.g. Debian's machine-readable copyright files) would need to be done and thought differently. A proper mapping would require to have optional authors/copyrights for each license item (id/name/expression), and not just author/authors or a single copyright string for a single component. An example: Existing scanners do this incorrectly in many cases. I made experiments with Syft analyzing components that list many authors in their "copyright" files who contribute code based on different single or multi-licenses EACH. The conclusion for me is that the tools cannot perform properly for license compliance if the tool authors do not have a proper understanding and SBOM formats that satisfy the needs of all significant ecosystems. The Linux ecosystem is for me a good example that lists license lists make sense where single name/id and expressions may coexist. This is still human readable, and every license entry can be attributed with further information (like we tried with expression based extension: texts etc.). If also authors and copyright information could be specified in each atomic license item on top of the stuff already discussed, a potential loss of information or falsification in SBOMs might be reduced significantly. Tools would work more accurate after an update when programmers can have a proper mapping in mind. |
current situation (CDX 1.6):
problem
the current situation does not allow the following:
▶ more regarding reasons and practical use cases here: #454 (comment)
request
allow the following:
possible results
The text was updated successfully, but these errors were encountered: