-
Notifications
You must be signed in to change notification settings - Fork 45
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
Clarify which profiles to include in a Collection element #365
Comments
We discussed this in the serialization meeting today. The general question is: in any This is a separate discussion from whether there is one or many One of the serialization examples that we plan to have in order to do tests is exactly this case. |
Thanks for the follow up @zvr! So to be clear: is the jury still out on what the correct behavior is here? If so we can keep this issue open to track the question, and FWIW I would vote in favor of including all of the profiles of sub-elements instead of just 1. |
Me too |
I'd vote that every element, whether a collection or not, has the profile that the element is defined in. A Bom element is defined in Core, an Sbom element is defined in Software based on Core properties. It doesn't matter to the Sbom element whether the spdxIds it contains point to Build or Licensing or AI types, the Sbom element itself is understandable simply by knowing [Core, Software]. The other way is like saying an HTML document is more than HTML if it links to TIFF images and PDF files. That way lies madness. An SBOM element could have a separate "concluded profile" property that summarizes the whole tree below itself, but you get into how many levels deep do you go, and known unknowns, etc. What happens when most of your tree uses core and software, but 7 levels down in the dependency tree there's an AI? IF causality is enforced (every graph must be built bottom-up so that every collection's members must exist at or before the collection itself can be created), AND the value of every element in a collection, not just its spdxId, must be known to the creator of the collection, AND elements may never be amended, THEN complete knowledge of the graph allows concluded_profile to be computed. But that seems a bit stiff just to label the profile that defines an individual element. |
From the conversation above - it looks like we're going in the direction of each element having the set of supported profiles. This is what the model spec currently states, so if we agree on this, we can just close the issue. @zvr - do you agree? |
The following proposal describes a way to use the This was discussed in today's tech meeting and had general support and agreement. In short: the collection element (and every subclass) should semantically convey the profiles of all elements known to exist in its collection. This differs from every other SPDX 3.0 element that semantically conveys the profile in which the element was defined. Scenario 1
Scenario 2
Note: other fields, including mandatory fields in SPDX 3.0, were intentionally excluded for illustration purposes. |
Thanks @jeff-schutt - agree with your comment - very clear description of the scenarios. Just one note/question - I personally think it would also be OK for the |
IMO having the profiles that the agent used when creating elements associated with the agent via the If I came across an agent described as an SPDX 3.0 element with multiple profiles listed within it's creation info, I would anticipate that the
@goneall If you mean "every element has the same set of profiles applied to its profile property, even if some profiles don't really apply to a specific element in the collection" I believe this efficiency would create inaccuracies and unnecessary complexity, causing confusion. If the intent is to reduce duplicate data, I suspect this comment is better discussed in #357 which discusses how to efficiently compact the data in a serialized collection. If the intent is to efficiently label every element with any possible profile, I believe this breaks the 3.0 model: every element should be able to stand on it's own and convey accurate metadata about the object it describes. E.g., an element created for a vulnerability should not have a license profile associated with it. If you mean "every collection element to have the complete set of profiles for all it's elements even though profiles within various elements of the collection don't apply to other elements in the collection", yes I agree. To summarize, I propose an SPDX 3.0 restriction where only the |
@jeff-schutt - It looks like we are thinking of the list of profiles quite differently. I suspect the disconnect is more related to the semantics of the profile than the serialization. We should probably sync up on one of our calls to align on a common understanding. Once we do that, we definitely should document profiles better. |
After our last tech call discussion on profiles, we came up with the 3 profile definitions:
I noticed that the definition of the profile property relates to the Profile Namespace. I've been thinking of the property as representing the Profile Conformance Point. I would propose at a minimum, we split these two uses into two different properties. In thinking about it, I don't think there is a need for the namespace related profile property. The property itself has the namespace encoded in it - either directly in the case of the RDF property URI or in the context file if using JSON-LD. For other serializations, this static use of profiles can be looked up in the spec itself. I would propose changing the definition of the profile to be conformance points related. I'll create a draft proposal PR for consideration. |
Fixes #365 Signed-off-by: Gary O'Neall <gary@sourceauditor.com>
Created #447 as a proposal |
Copying this question to this repo from spdx/tools-python#680 per @armintaenzertng's suggestion:
Which Profile(s) should I use in CreationInfo? If I have a
SpdxDocument
element, which in turn contains several other elements through relationships, should I list only the Core profile in the SpdxDocument'screationInfo
, or should I include all the profiles of its sub-elements?My interpretation of the current spec for the profile is that I would only include the
Core
profile. However, if there is only 1creationInfo
in the whole document, would it make sense to include all profiles (e.g. Software, AI, Dataset) of elements contained within?If this change makes sense, I can make a PR to update the description of the Profile property!
The text was updated successfully, but these errors were encountered: