Hi Dave,
hi Alexios,

On the one hand, I really think that it does not hurt to separate the concepts of constraining a model (i.e., profile) and adding to a model (i.e., extension), explicitly. RFC7925 is a good example for a profile. Both a profile definition and an extension definition can be included in the same specification. Separating them explicitly just makes it simpler for implementers to quickly grasp what goes where. I have to point out that I am quite reluctant to agree with the premise that is "We all understand that, if we are going to have a number of profiles, each one of them will include some new information (for example, new fields)." Maybe I am reading it wrong.

On the other hand, I also really think that the IP analogy does not work very well here. My 2c:

1.) TCP neither creates nor modifies IP
2.) The IP comes with an IANA registry for "the next level protocol" (RFC790). That list of registered protocols is "mutable" (e.g. entries can be added or deprecated). Packets that conform with IP standards can express various states or configurations, but that does not render the protocols themselves "mutable". I am having a really hard time to relate the quality "mutable" with IP, tbh. 3.) TCP is not a profile/extension/augment of IP. TCP is simply a "next level protocol" that specifies PDUs (segments) that can be nested in IP PDUs (packets), as it literally works on a different layer of protocol stacks. Another example would be QUIC that is nested in UDP.

Viele Grüße,

Henk

On 12.04.21 22:41, David Kemp wrote:
Hi Alexios,

Regarding the general meaning of Object, Field and Type: in UML a datatype is a simple classifier ("DataType differs from Class in that instances of a DataType are identified only by their value. All instances of a DataType with the same value are considered to be equal instances.") and a Class is a structured classifier ("to specify a classification of objects and to specify the Features that characterize the structure and behavior of those objects.")

Objects are used when modeling the real world, but types are used when modeling data.  Data instances are values, data types have neither behavior nor inheritance, and the only relationships between data types are "contain" and "reference".  Documents contain their own content and can link to other documents.  The PDF version of the SPDX spec knows nothing about SPDX, it just knows about paragraphs, fonts, tables, etc. Data instances are not objects, and a language such as JSON Schema defines only Types and Fields.  Of course Objects can be serialized as data, but their semantics, relationships and behavior are not relevant at the data layer, they only become relevant when interpreted by applications such as an SBOM scanner or the TCP driver in a network stack.

RFC 4775 discusses extensibility:

    "An extension is often likely to make use of additional values added
    to an existing IANA registry (in many cases, simply by adding a new
    "TLV" (type-length-value) field)."

IPv4 has a "Protocol" field, an 8 bit value used to designate the format of the protocol header contained in the IP header.

So to get back to our discussion, is defining TCP "creating" or "modifying" IP?  Is IP mutable or not?  If TCP is a profile of IP; does it define something new or restrict what already exists?

My answers are:
1) TCP does create something new that isn't defined in IP
2) IP is not "mutable", it is extensible through the use of extension points such as the protocol enumeration,  Adding fields to an enumeration (including the enumerated values in an array or map structure) is a special case that should be distinguished from the general mutability of deleting, modifying or inserting fields in instances without defining them in the Type. 3) TCP is a profile of IP in the same sense that Bluetooth profiles extend the base spec, not restrict it to a subset of what is defined in the base spec.

If the word "profile" is a Venn diagram sticking point, then perhaps "extension" would be a better word to use when defining new things that fit into the base.  OpenC2 uses "profile" in the Bluetooth sense of defining new types as well as adding constraints to types defined in the base.  Tightening constraints on base types (going from optional to required) in a profile is fine, relaxing them (going from required to optional) is verboten.

Dave


On Thu, Apr 1, 2021 at 11:55 AM Alexios Zavras <[email protected] <mailto:[email protected]>> wrote:

    Hi all,____

    __ __

    Following the extremely interesting and intellectually stimulating
    discussion on the SPDX Tech call on Tuesday, I thought I'd try and
    list the interactions between profiles that may exist. These gave us
    some head-scratching moments when we tried to model them.____

    __ __

    We all understand that, if we are going to have a number of
    profiles, each one of them will include some new information (for
    example, new fields). It may also affect some of the information
    defined outside this profile (for example, making a field
    mandatory).____

    __ __

    In an effort to “formalize” things, I'll be using abstract terms
    like Object, Field, and Type -- I hope we all understand the general
    meaning, even though our specification is not using these terms.____

    __ __

    So, a profile may do one or more of the following:____

    __ __

    [CREATE]____

    1. define new Fields____

    2. define new Types (used in new Fields)____

    3. define new Objects, with included Fields of certain Types____

    __ __

    [MODIFY]____

    4. add new Fields (with their Types) to Objects defined elsewhere____

    5. change the cardinality of Fields defined elsewhere (and thus
    change optional/mandatory status)____

    6. extend an Enum in a Type defined elsewhere, adding more
    alternatives (typical case: adding more Relationship types)____

    __ __

    All these were mentioned during the call.____

    I assume removing/deleting Fields or Objects is not possible
    (right?). What about:____

    __ __

    7. restrict an Enum in a Type defined elsewhere, removing some
    alternatives ?____

    As an example, could a profile introduce something like a "Secure
    Checksum" idea that says that FileCheksum may NOT be of MD2 type?____

    __ __

    Hope this helps show what we’re dealing with.____

    __ __

    -- zvr____

    __ __

    Intel Deutschland GmbH
    Registered Address: Am Campeon 10, 85579 Neubiberg, Germany
    Tel: +49 89 99 8853-0, www.intel.de <http://www.intel.de>
    Managing Directors: Christin Eisenschmid, Sharon Heck, Tiffany Doon
    Silva
    Chairperson of the Supervisory Board: Nicole Lau
    Registered Office: Munich
    Commercial Register: Amtsgericht Muenchen HRB 186928





-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#4031): https://lists.spdx.org/g/Spdx-tech/message/4031
Mute This Topic: https://lists.spdx.org/mt/81780695/21656
Group Owner: [email protected]
Unsubscribe: https://lists.spdx.org/g/Spdx-tech/unsub [[email protected]]
-=-=-=-=-=-=-=-=-=-=-=-


Reply via email to