I think this is mostly accurate with a couple of caveats/observations:

  *   We have been very careful to not depend on ordering or creation time. The 
order of creation of elements has no implied meaning but is purely 
informational, the graph is what defines lineage. This is important because the 
description of an artifact (which is what an Element is) will happen after the 
creation of the artifact, by different parties, and at different times and the 
description of the artifact can evolve independently of the artifact as new 
knowledge about the artifact is acquired. This is also one of the reasons why 
most things are outside of the Element and reference the Element, this allows 
them to have a lifecycle independent of the Element they reference (e.g. you 
can add an Annotation, Relationship, etc. over time that references the same 
Element).
  *   I believe an already existing Element can be added to a Collection, this 
could be a reference to an Element in the same Document or it could be a 
reference to an external Element via ExternalMap. We do have an open discussion 
about whether you can copy the Element into the Document but that requires some 
way of verifying its integrity (which we haven't defined yet). This implies 
that an Element can logically be in multiple Collections. I'd be interested in 
the group's opinion on whether this expected or desired? (This is independent 
of Relationship which provides a similar ability in a different way).
  *   We made a deliberate decision to focus on logical design independent of 
physical implementation, however, it's important to validate that by dipping 
down to the implementation level to determine if it's practical and achieves 
what was intended. Some people will always be more comfortable at the 
syntax/concrete/implementation level, and we want to be inclusive and map those 
discussions to the logical model (or map the logical concepts to the physical 
implementations they're comfortable with).
  *   Element immutability in SPDX v2 and SPDX v3 (so far) is achieved by the 
Element "belonging" to a Document and having a cryptographic hash of that 
document. An Element being inside a Document and knowing the Document hasn't 
been tampered lets us transitively know that an Element hasn't been tampered. 
Allowing an Element to be independent of a Document and copied to different 
Documents (not referenced but copied) means that you need a way to verify the 
integrity of that Element, this is not a trivial problem to solve. The document 
reference + hash approach handles this relatively well but requires you to have 
a copy of the Document (it can be a cached copy).

Regards,

William Bartholomew (he/him) - Let's 
chat<https://outlook.office.com/findtime/vote?book=will...@microsoft.com&anonymous&ep=plink>
Principal Security Strategist
Cybersecurity Policy - Digital Diplomacy

From: Spdx-tech@lists.spdx.org <Spdx-tech@lists.spdx.org> On Behalf Of David 
Kemp via lists.spdx.org
Sent: Monday, November 8, 2021 1:02 PM
To: SPDX-list <Spdx-tech@lists.spdx.org>
Subject: [EXTERNAL] [spdx-tech] Infinity Category Theory and SBOMs.

The October Scientific American had a fascinating article on mathematics: 
https://www.scientificamerican.com/article/infinity-category-theory-offers-a-birds-eye-view-of-mathematics1/<https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fwww.scientificamerican.com%2Farticle%2Finfinity-category-theory-offers-a-birds-eye-view-of-mathematics1%2F&data=04%7C01%7Cwillbar%40microsoft.com%7C52c70ecc6af444f00ce708d9a2fb1978%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C637720021635694186%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=fplD55T5y1GrNs1Zad4QZOp4vV0E4976Ywf%2FVozQoHw%3D&reserved=0>.
  I'm not a mathematician and most of the details are beyond my understanding, 
but the premise is crystal clear:
"How is it that mathematicians can quickly teach every new generation of 
undergraduates discoveries that astonished the previous generation's experts? 
Part of the answer has to do with recent developments in mathematics that 
provide a "birds-eye view" of the field through ever increasing levels of 
abstraction. ... As Eugenia Cheng puts it in The Art of Logic in an Illogical 
World, "a powerful aspect of abstraction is that many different situations 
become the same when you forget some details."

The transformation of SPDX from v2 to v3 based on ideas from 3T is a concrete 
example of abstraction.  Everything in v3 is a Graph consisting of Nodes with a 
uniform structure (classes derived from Element), connected by Edges (various 
kinds of relationships).  Starting with the logical model (the highest level of 
abstraction), making design decisions at the logical level and then validating 
them for feasibility at the information and data (syntax) levels is the process 
we seem to be following, but that process isn't explicitly described or 
universally understood.  And syntax-based design still seems to be with us.

We recently agreed that Elements are immutable.  That is fundamental to 
understanding SPDX as a graph - every Element in the continually expanding 
Element graph is *created*, and once created it never changes.  We then don't 
need to understand any specific details about SPDX in order to know that the 
set of all Elements ever created must be a DAG (directed acyclic graph) which 
has a topological (partial) ordering based on creation time.  (A linear or 
total ordering would mean that no two Elements have the same creation info, 
i.e., there is no such thing as an Element created within another Element.)

So based on causality (the laws of physics) and immutability (our agreement):

  *   A collection Element has a collection id and was created.
  *   Every Element that is a member of a collection logically either:

     *   a. has the same collection id and was created at the same instant by 
the same entity as the collection (call them internal Elements)
     *   b. has different or no collection id and was created prior to the 
collection (call them external Elements)
This is regardless of what if any creation properties are defined in the 
logical model. An Element that exists was by definition created by some entity 
at some point in time.

Do those bullets make sense?

Dave



-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#4238): https://lists.spdx.org/g/Spdx-tech/message/4238
Mute This Topic: https://lists.spdx.org/mt/86918867/21656
Group Owner: spdx-tech+ow...@lists.spdx.org
Unsubscribe: https://lists.spdx.org/g/Spdx-tech/unsub [arch...@mail-archive.com]
-=-=-=-=-=-=-=-=-=-=-=-


Reply via email to