-
Notifications
You must be signed in to change notification settings - Fork 395
Description
WIP list of packages/interfaces to be kept / made private / changed.
- S = we can commit to keeping this Stable
- I = this should become Internal
- U = Unstable, do we somehow declare it as such or change it to be able to keep it stable?
- D = Marked as Deprecated. TO DO: Find these, and decide whether to keep them.
- ? = unreviewed, undecided, or may need changes before committing to it
| X | Element | Comment |
|---|---|---|
| S | c/i | N/A, docs only |
| S | c/i/copy | This must be stable, not sure about the current API though |
| ? | c/i/directory | |
| I | c/i/directory/explicitfilepath | |
| ? | c/i/docker | |
| ? | c/i/docker/archive | |
| ? | c/i/docker/daemon | |
| I | c/i/docker/policyconfiguration | |
| S | c/i/docker/reference | This must have stable semantics, has a long enough history, but do we need all of it |
| ? | c/i/docker/tarfile | Should be internal, but libpod needs a part |
| ? | c/i/image | Careful! |
| ? | c/i/manifest | Careful! |
| S | c/i/oci | N/A |
| ? | c/i/oci/archive | |
| ? | c/i/oci/layout | |
| ? | c/i/openshift | Deprecated already |
| ? | c/i/pkg/blobinfocache | |
| ? | c/i/pkg/blobinfocache/boltdb | |
| ? | c/i/pkg/blobinfocache/memory | |
| ? | c/i/pkg/blobinfocache/none | |
| ? | c/i/pkg/compression | Would be nice to make this internal, just export opaque types |
| ? | c/i/pkg/compression/types | |
| ? | c/i/pkg/docker/config | |
| S | c/i/pkg/strslice | |
| ? | c/i/pkg/sysregistriesv2 | |
| ? | c/i/pkg/tlsclientconfig | |
| ? | c/i/signature | |
| ? | c/i/storage | |
| ? | c/i/tarball | |
| ? | c/i/transports | |
| ? | c/i/transports/alltransports | Need this to be stable |
| ? | c/i/types | Must provide something… but often opaque types would be better than full contents. |
| ? | c/i/version | Need this to be stable. |
Transport subpackage concerns:
For all the per-transport subpackages, we probably need to provide the Transport variable (but does that need to publicly support anything besides Name()?) Or maybe make public transport-specific reference (source? destination?) types so that callers that must distinguish transports after-the-fact can do so using a type check instead of name comparison, and discourage Name() comparison.
ParseReference/NewReference should be public in principle, but I’m not sure about committing to the all-in-one types.SystemContext. Maybe
- Split that into per-transport option types
- (Should the options be passed when creating an
ImageReferenceor onlyImageSource/ImageDestination? Moving that intoImageReferencewould allow makingcopy.ImageSystemContext-independent.) - Re-create
types.SystemContexton top of the rest of c/image, liketransports/alltransports, as a “create-reference-from-SystemContext-like-unstructured-options“ wrapper/helper.
This uncertainty about SystemContext of course impacts the ability to commit to NewReference/StableReference. OTOH, I’d much rather have stable per-transport NewReference(systemContext, transport-specific-options) than only to commit to string-syntax alltransports.ParseImageName as the only stable interface.
(Cc: @vrothberg )