Skip to content

mini update 4: fill in definitions section#161

Merged
jdolitsky merged 11 commits intoopencontainers:reorgfrom
bloodorangeio:mini-update-4
Jul 14, 2020
Merged

mini update 4: fill in definitions section#161
jdolitsky merged 11 commits intoopencontainers:reorgfrom
bloodorangeio:mini-update-4

Conversation

@jdolitsky
Copy link
Copy Markdown
Contributor

Fill in the definitions section, introducing several
terms and defintions which will serve as reference for
the rest of the document.

Also moved the "notational conventions" section into
this section, removing any language that seemed
unnecessary or related to compliance (which will be
covered in the conformance section).


This PR is built on top of #160, so the diff is misleading. Please see the following for a true diff: bloodorangeio/distribution-spec@mini-update-3...bloodorangeio:mini-update-4

Fill in the definitions section, introducing several
terms and defintions which will serve as reference for
the rest of the document.

Also moved the "notational conventions" section into
this section, removing any language that seemed
unnecessary or related to compliance (which will be
covered in the conformance section).

Signed-off-by: jdolitsky <393494+jdolitsky@users.noreply.github.com>
Comment thread spec.md Outdated
- **Manifest**: a JSON document which defines an artifact
- **Layer**: a single part of all the parts which comprise an artifact
- **Config**: a special layer defined at the top of a manifest containing artifact metadata
- **Blob**: a single binary content stored in a registry
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do we want to distinguish between "Layer" and "Blob" here?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@rchincha how would you best describe the difference?

Copy link
Copy Markdown
Member

@mikebrow mikebrow Jun 27, 2020

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

the definitions appear to be circular, use words not defined.. For example from these definitions:

layer is a part in parts (part not defined) which comprises an artifact..

artifact is a piece of content (content is content that is addressable and can be downloaded choose one: manifest or blob) made up of a manifest and one or more layers (one or more undefined parts)

blob is binary content (content is content -- either manifest or blob)

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

A blob is the binary form of metadata OR [most commonly] content that is stored by the registry.
An artifact is one conceptual piece of content stored as blobs with an accompanying manifest containing metadata.
A layer is one kind of blob used for container image artifacts

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@jzelinskie vaguely remember you had a carefully compiled set of definitions. Let's look at that and see if we can just reuse that prose.

Comment thread spec.md Outdated
Comment thread spec.md Outdated
…-spec into HEAD

Signed-off-by: jdolitsky <393494+jdolitsky@users.noreply.github.com>
Signed-off-by: jdolitsky <393494+jdolitsky@users.noreply.github.com>
Copy link
Copy Markdown
Member

@mikebrow mikebrow left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

see comments.. needs a rebase

Comment thread spec.md Outdated

An implementation is not compliant if it fails to satisfy one or more of the MUST, MUST NOT, REQUIRED, SHALL, or SHALL NOT requirements for the protocols it implements.
An implementation is compliant if it satisfies all the MUST, MUST NOT, REQUIRED, SHALL, and SHALL NOT requirements for the protocols it implements.
### Document Language
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

pr needs rebase

Comment thread spec.md Outdated
- **Manifest**: a JSON document which defines an artifact
- **Layer**: a single part of all the parts which comprise an artifact
- **Config**: a special layer defined at the top of a manifest containing artifact metadata
- **Blob**: a single binary content stored in a registry
Copy link
Copy Markdown
Member

@mikebrow mikebrow Jun 27, 2020

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

the definitions appear to be circular, use words not defined.. For example from these definitions:

layer is a part in parts (part not defined) which comprises an artifact..

artifact is a piece of content (content is content that is addressable and can be downloaded choose one: manifest or blob) made up of a manifest and one or more layers (one or more undefined parts)

blob is binary content (content is content -- either manifest or blob)

Comment thread spec.md Outdated
- **Pull**: the act of downloading content from a registry
- **Artifact**: a single piece of content, made up of a manifest and one or more layers
- **Manifest**: a JSON document which defines an artifact
- **Layer**: a single part of all the parts which comprise an artifact
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Layer explanation from image spec: https://github.com/opencontainers/image-spec/blob/master/config.md#oci-image-configuration

suggest: **Layer**: a set of filesystem changes; Layers are typically used by a layer-based or union filesystem to form the mountable root file system of a container. and maybe link to the oci spec

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think we should avoid using the term layers except in the context of images. I wish we would have just renamed layers to references. I don't think we need to inject that confusion here.

Copy link
Copy Markdown
Member

@mikebrow mikebrow Jun 29, 2020

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

fair.. in the context of container images image layers are a set of..

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't think the image spec is useful in this context. I'd rather define Layer as legacy terminology referring to blobs that are specifically for container images.

Copy link
Copy Markdown
Member

@mikebrow mikebrow Jul 6, 2020

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

what is "this context?" ... at the moment it says "Several terms are used frequently in this document" seems pretty broad :-)

Why is OCI image not useful in this context? Let's say an OCI image is but one type of OCI artifact... still Most definitions include examples, for example, in the context of OCI container images, layers are a set of ... IMO the inclusion of examples does not make a definition as confusing as the lack of examples does. Esp. when highjacking a term that is common in the vernacular. As derek mentioned it may be useful to just avoid the term except in the context of images. You could have, for example, a different location for oci image terms.

Comment thread spec.md Outdated
- **Config**: a special layer defined at the top of a manifest containing artifact metadata
- **Blob**: a single binary content stored in a registry
- **Digest**: a unique blob identifier, calculated from the blob's content
- **Content**: a general term for content that can be downloaded from a registry (manifest or blob), and are addressable by a digest
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

content is being used as a noun to represent a great many things throughout the spec.. in each case the thing being represented is or should be specified by the context.

Suggest removing this definition since what is meant by it's use is really just the dictionary definition. Or just use the dictionary definition:
1a : something contained —usually used in plural
the layer's contents
the manifest's contents
the contents of the http response...

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

maybe a picture.. would help

Copy link
Copy Markdown
Member

@mikebrow mikebrow left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

suggest not focusing on HTTP in high level concepts and definitions

Comment thread spec.md Outdated
Comment thread spec.md Outdated
Comment thread spec.md
…nto mini-update-4

Signed-off-by: jdolitsky <393494+jdolitsky@users.noreply.github.com>
Signed-off-by: jdolitsky <393494+jdolitsky@users.noreply.github.com>
Signed-off-by: jdolitsky <393494+jdolitsky@users.noreply.github.com>
Signed-off-by: jdolitsky <393494+jdolitsky@users.noreply.github.com>
Signed-off-by: jdolitsky <393494+jdolitsky@users.noreply.github.com>
@jdolitsky
Copy link
Copy Markdown
Contributor Author

jdolitsky commented Jul 10, 2020

@jzelinskie @mikebrow can I please have a second review? I've updated the definitions based on your comments.

The following terms have been removed:

  • Content
  • Layer

The following terms are unchanged:

  • Manifest
  • Digest

The following terms have been updated:

  • Registry: a service that handles the required APIs defined in this specification
  • Client: a tool that communicates with registries
  • Push: the act of uploading blobs and manifests to a registry
  • Pull: the act of downloading blobs and manifests from a registry
  • Blob: the binary form of content that is stored by a registry, addressable by a digest
  • Config: a section in the manifest (and associated blob) which contains artifact metadata
  • Artifact: one conceptual piece of content stored as blobs with an accompanying manifest containing a config

Signed-off-by: jdolitsky <393494+jdolitsky@users.noreply.github.com>
@jdolitsky
Copy link
Copy Markdown
Contributor Author

CC @dmcgowan

Copy link
Copy Markdown
Member

@mikebrow mikebrow left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

looks good just a small change request on digest definition

Comment thread spec.md Outdated
Signed-off-by: jdolitsky <393494+jdolitsky@users.noreply.github.com>
Signed-off-by: jdolitsky <393494+jdolitsky@users.noreply.github.com>
Copy link
Copy Markdown
Member

@dmcgowan dmcgowan left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

Copy link
Copy Markdown
Member

@mikebrow mikebrow left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@jdolitsky jdolitsky merged commit 585b882 into opencontainers:reorg Jul 14, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

7 participants