I mentioned on the tech call that I was concerned about moving many of the properties from Document to Element.
I think of these properties as "creator" properties since they relate to the creation of the SPDX document, whether created by tools or humans. Below is the list of properties I consider "creator" properties: * specVersion * created * createdBy * profile * dataLicense I would like to frame up the discussion a bit more to help us get to some closure on the issue. First - I would propose we title the issue "Creator Properties" and frame the problem as where the Creator Properties belong - on each element, or on the Document that contains all the elements. I want to be clear that the meaning of Creator is the Creator of the Document containing the elements or the element metadata, not the creator of the element itself. For example, if Microsoft creates an application Word and there is and SBOM for Word created by ACME Source Analysis, the Creator Information in the Word SBOM element would indicate Acme Source Analysis, not Microsoft. In SPDX 2.2, the Creator Properties exist only at the document level and are properties of the SpdxDocument. In the model proposed by William and Sean, Creator Properties belong to the Element. SpdxDocument is subclassed from Element so it is unchanged, but each element can now optionally contain all of the Creator Properties. Below are my concerns on the current model proposal: * Size of SPDX documents: If each element contains all of the Creator Properties, the size of a document would be significantly larger. Each file, package, snippet, annotation, relationship could contain this additional information. For the Kubernetes-source.spdx file, there are 23,384 elements. Adding Creator Properties to each element with an estimated size of 65 bytes per element would add 1.5 megabytes. Adding this information to the relationships would add another 1.5 megabytes. * Duplication: The semantics of the Document class and Creator Properties in SPDX 2.2 apply to all elements in the document. Does this still hold in the new model proposal? Does it only apply if the optional creator properties are not present? If they are both present, which takes precedence? It seems like we are duplicating information in a normal document exchange where the Document is always present. * Complexity for consumers: In the SPDX 2.2 model, you check the creator information once and can quickly determine if the document meets your needs as a consumer from a creator point of view. In the proposed model, the entire graph would need to be parsed and some complex logic used to determine if it meets the needs. For example, if you are using a document for vulnerability analysis and only some of the elements meet that profile, can you use it? * Confusion between creator of the element and creator of the Document element metadata - Created date - is that the created date of the metadata or the element? To someone not involved in the SPDX standard discussion, they may logically assume that the creator information refers to the creator of the element in the same way the packageName, originator, etc. is data about the element, not data about the metadata. I can think of a couple advantages to the current model proposal: * Simplicity for the producer: If the elements are gathered from other creator sources and you want to produce a new document, you can simply copy the elements. In the SPDX 2.2 model, you would either need to analyze the SPDX document sources to make sure they comply with the profile or create multiple SPDX documents for the different profiles that it adheres to. * A single element contains useful information without having to reference the Document making consumer analysis easier for some use cases. To get closure on this, I would like to structure some criteria and a set of alternatives. Here's my proposed criteria: * Simplicity for producers * Simplicity for consumers * Size * Supports the following specific use cases: * Document exchange using files * Exchanging SBOM information using a stream * "Github" use case * Others? Here's my proposed alternatives: * Current SPDX 2.2 approach of Creator information at the document level * Current 3.0 proposed model * Separate creator object: Introduce a "CreatorInformation" class which contains the properties. Each element would have a required link to the CreatorInformation. The Document would have a list of all CreatorInformation present in the document. This would remove the duplication of creator information on each element and make it a bit easier for a consumer to scan all of the CreatorInformation objects without having to traverse the entire graph. * Current SPDX 2.2 approach with an additional property in Element which points back to the Document that is contained within. This would make it easier to extract the element for a producer but retain all of the original Document information in the streaming use case. * Others? If this framing and approach works, I'll share a Google Doc version we can all contribute to. I suggest we add this to the agenda for August 2nd. Gary ------------------------------------------------- Gary O'Neall Principal Consultant Source Auditor Inc. Mobile: 408.805.0586 Email: <mailto:g...@sourceauditor.com> g...@sourceauditor.com CONFIDENTIALITY NOTE: The information transmitted, including attachments, is intended only for the person(s) or entity to which it is addressed and may contain confidential and/or privileged material. Any review, re-transmission, dissemination or other use of, or taking of any action in reliance upon this information by persons or entities other than the intended recipient is prohibited. If you received this in error, please contact the sender and destroy any copies of this information. -=-=-=-=-=-=-=-=-=-=-=- Links: You receive all messages sent to this group. View/Reply Online (#4107): https://lists.spdx.org/g/Spdx-tech/message/4107 Mute This Topic: https://lists.spdx.org/mt/84360765/21656 Group Owner: spdx-tech+ow...@lists.spdx.org Unsubscribe: https://lists.spdx.org/g/Spdx-tech/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-