This document serves as a big-picture roadmap of where Bazil is headed. This is all speculative and may change at any time.
Work in progress, slowed by lacking RPC infrastructure.
Current version is sequential and naive.
Introduce concept of cancel/interrupt to CAS and KV APIs: cancel <-chan struct{}
, tie into fuse.Intr
when serving FS request.
Bandwidth/latency estimation to prioritize backend attempts. Staggered time delays before starting too many concurrent requests, but move forward faster if too few requests in flight.
Circuit breaker for better behavior under faults.
Sketch: bazil get PATH
, bazil push PATH KVSTORE
Persistently remember and respect pins, strive to keep pinned data on local disk.
Sketch: bazil pin PATH
, bazil unpin PATH
Once an arena is sealed, make an index with perfect hashing.
Support object deletion by hole punching.
Review convergencent encryption against ideas in Cryptosphere.
Challenging because it's distributed garbage collection in a weakly-connected system.
Make directory reflect the size, file counts, modification time etc possible aggregates of the whole subtree.
Update lazily in the background.
Report the non-standard aggregations via xattrs?
See Ceph for ideas on the user experience.
These may never happen, but are still worth writing down.