opencontainers / opencontainers/image-spec

Proposal: descriptor: "dependency" property

Open
#657 7 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
Go
Stars
4.5k
Forks
891
Avg merge
27d 2h
Merged PRs (30d)
1

Description

A blob referenced via descriptor MAY be a fine-graind CAS archive. e.g. continuity manifest. (WIP: https://github.com/opencontainers/image-spec/issues/577)

This might make it difficult to implement "gc" for blob store, because the actual referenced blob set cannot be assured just by parsing OCI descriptors.

So I suggest adding a new property named dependency to the descriptor spec.

{
  "mediaType": "application/vnd.continuity.manifest.v0+json",
  "digest": "sha256:deadbeef",
  "size": 424242,
  "dependency": {
    "type": "media-specific"
  },
}

When dependency.type is media-specific, implementations can skip pruning unless it is aware of the corresponding mediaType.

Spec Proposal (for v1.0 if possible)

  • dependency.type string

    This OPTIONAL property specifies the type of the content set that targeted content refers.
    Values SHOULD be one of the followings:

    • ``(empty): the set is empty
    • media-specific: the set is specific to the media type of the targeted content

Implementor's Note
Implementations MAY compute unreferenced blob set so as to prune them.
When implementations encouters a descpritor of which dependency.type is media-specific and the implementation is not aware of the corresponding media type, or dependency.type is set to unknown value, the implementation SHOULD NOT try to compute unreferenced blob set.

Post-v1

e.g. list (can be huge)

"dependency": {
  "type": "list",
  "list": [
    "sha256:f00",
    "sha256:baa",
  ]
}

e.g. list as a text file blob

"dependency": {
  "type": "blob",
  "blob": {
    "mediaType": "application/vnd.oci.dependency.v2+text",
    "digest": "sha256:ba2",
    "size": 4242
  }
}

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by reading the descriptor specification and the linked continuity-manifest discussion in issue 577. This proposal needs a maintainer decision on the dependency model and version scope before implementation can begin; done would mean an agreed schema and corresponding specification update.

Written by the indexing model from the issue text.

Assessment

Domain
documentation
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
20/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.