-
Notifications
You must be signed in to change notification settings - Fork 54
Conversation
The whole artifacts specification relies on the concept of an "artifact" without defining it. This patch tries to fill-up the gap. Signed-off-by: Silvano Cirujano Cuesta <[email protected]>
@@ -10,6 +11,15 @@ A collection of definitions and terms used within this repository. | |||
* [Well Known Type](#well-known-type) | |||
* [YASS](#yass) | |||
|
|||
## Artifact | |||
|
|||
An artifact is a piece of data that is being cohesively considered from a users perspective, meaning that the user shouldn't be concerned about the individual parts that he needs to get the "artifact" as long as he gets all the parts needed for the user to consider the artifact to be complete. What is the type of content of an artifact depends on the project implementing the artifacts specification. It's up to the implementations of the specification to define which type of content and how it's internally organized. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
multi-lingual nit:
as long as he gets
...as long as they get all the parts...
Thanks @Silvanoc, |
@SteveLasker I'm neither happy with the definition, nor convinced that I got it right... In this ORAS artifacts example (let's assume that it's an OCI artifacts example), what would you call an artifact? Is Is
I've written the definition of my proposal assuming that On other words, in my understanding of that is an artifact (that has inspired my definition) it's the unequivocal combination of all 4 items that make up an artifact instance. Am I somehow getting it wrong? |
Thanks @Silvanoc,
I'd suggest
The notary v2 signature, sbom are artifacts that also support push, discover, pull, promote, delete. They typically don't have individual lifecycle management, as they're considered extensions (need a better term) to the The nydus image layout is another great example, as it expresses a way to store the The subtle question you are asking is whether the The main innovation here is these are separable artifacts, that allow individual lifecycle and interaction. You can pull the signature and validate it, before you pull the image. Same with the SBOM, and its signature, and you may delete the nydus image optimization when it's no longer needed, but still have the original targ.gz version for optimized archival. I would try it this way: The So, I think we're saying an artifact is something users interact with. They can push, discover, pull, promote, delete. Is that helping? |
First things last 😉
Yes, a lot. I think that your proposal the definition based on the users perspective overlaps with my definition. Therefore I find it good 🙂 I would have a single last question before writing a new definition version: is it thinkable/foreseen/possible to have "abstract" artifacts? These are artifacts that are only the target of other artifacts "subject" references, but don't provide any data themselves. |
To me, an artifact is "an output of a build pipeline that is used by those downstream to build dependent applications and deploying applications". E.g. a container image, binary/library, SBoM, signature, and helm chart. How we store the artifact (flat file, directory, tar, pushed to a tool like artifactory, or pushed to an OCI registry) seems like an implementation detail that's not important for understanding what an artifact is. It's a bit like defining a web page by describing TLS, the transport isn't important for this definition. And calling it a "piece of data" is too abstract for me, since logs, metrics, credentials, and a lot of other things would also be considered data. Linking to the wiki may make more sense than maintaining our own definition: https://en.wikipedia.org/wiki/Artifact_(software_development) |
Wow, @sudo-bmitch just shot in a completely different direction from what the distro spec is providing as a definition. See this comment on the originating issue: #32 (comment) IMO the distro spec definition is pretty good. It's perfectly fine to define something by its composing parts, but in that definition probably the use is missing. See this definition from the Merriam Webster: |
Going for a reference of the definition provided in the OCI-distribution specification or derived from it. Therefore closing this. |
First, thanks for the deep engagement @Silvanoc. Particularly as you started this saying English isn't your first language, yet that's often a great way to test if the text meets a broader audience. Distribution reference Thanks @mikebrow. I forgot these were recently rewritten to help with clarity. I'd say the definition is largely correct, with a few minor points that have added to the complexity.
The above points are largely at the center of the OCI Artifacts and ORAS Artifacts work to generalize content in a registry, without being limited to what the runtime container image spec states. These conversations will likely be part of the Reference Type working group
This is something a number of us have been trying to clarify. Question: Is a manifest that has a The
The Lifecycle Management section of the oras artifacts-spec states:
What this means is an Artifact may have a subject reference, but it can still be pushed, discovered, pulled independently. It can also have a tag, which gives it independent lifecycle management. I wish I had a better way to define these. In lieu of that, I'd simply say the distribution spec reference is close:
|
Apologies, there is the question of whether we're talking about a general software Artifact, an OCI Artifact, or an ORAS Artifact. I was defining the former thinking that was where the question was originating. and Mike did a good job defining the second (OCI Artifact). |
The whole artifacts specification relies on the concept of an "artifact" without defining it. This patch tries to fill-up the gap.
Signed-off-by: Silvano Cirujano Cuesta [email protected]
Fixes #32