1
0
Fork 0
mirror of https://github.com/imjasonh/ocifuse synced 2026-07-07 00:12:43 +00:00
ocifuse/future-work.md
Jason Hall c59b7c7cbc Per-ref platform, @@meta dir, per-layer view, sibling expansion
Four user-visible additions, all working end-to-end against Docker Hub:

- Per-ref platform: append "~os-arch[-variant]" to a tag or digest
  segment (e.g. "ubuntu:22.04~linux-arm64") to select a specific
  manifest from a multi-arch index without touching PLATFORM.
- Synthetic "@@meta/" directory at every image root, exposing
  "@@meta/digest" (the manifest digest) and "@@meta/layers/<sha256>/"
  (raw per-layer tar contents). Inside each layer directory, a nested
  "@@meta/layer-digest" file.
- Per-layer view (under @@meta/layers/<sha256>/) shows the raw layer
  including whiteout markers. Built from a new merge.LayerTree helper
  that synthesizes parent dirs without applying whiteout filtering.
- Proactive sibling expansion: when a tag access resolves to a
  multi-arch index, the parent directory is populated with
  "<repo>:<tag>~<os>-<arch>" symlinks pointing at each platform's
  digest. Subsequent readdir shows them, so bash tab completion of
  "<tag>~<TAB>" enumerates the platforms (after at least one access of
  the bare tag).

Also fixed a pre-existing fspath bug: a segment containing "." was
classified as a registry, which broke shorthand tags with dotted
versions like "ubuntu:22.04". The new rule is: a ":" with all-digit
suffix means host:port, otherwise it's a name:tag pair regardless of
dots.
2026-04-30 20:22:42 -04:00

965 B

Future work

Medium-term

  • Tag listing — populate repo directories from the registry catalog API where the registry permits.
  • Prefetch heuristics — read-ahead within a layer for sequential access; speculative fetch of neighboring files in the same tar.
  • Content-addressed dedup — share file content across images that reuse identical blobs and offsets.
  • macFUSE polish — once Linux is solid, exercise on darwin, document setup, work around any kext quirks.
  • Tag→digest disk persistence with TTL — fresh-mount tag resolution still costs ~200ms per ref (correctly going to network because tags move). A short-TTL on-disk record could amortize across restarts within a window without sacrificing correctness.

Far Future

  • Write support — overlay / copy-on-write semantics on top of the read-only base.
  • Local OCI layout sources — read from on-disk OCI layouts and Docker daemon, not just remote registries.