os: Consider providing a VFS layer
ianlancetaylor opened this issue · 12 comments
ianlancetaylor commented
We have various different VFS layers in different programs, such as cmd/godoc/filesystem.go. Can we have the os package provide a VFS layer? Or can we provide a vfs package that wraps the os package? Or something else to provide a simple unified approach?
ianlancetaylor commented
gopherbot commented
Comment 2 by tv@duh.org:
Well, it's very much a skeleton at the moment, but I've started brainstorm-implementing a vfs type layer here: https://github.com/tvierling/go-vfs The basic planned structure is for two types of accessibility: an iterable-only, sequential-access interface (à la most archives), and a random-path-access filesystem that implements and extends the above with a full complement of operations (applicable to real filesystems, as well as virtual accessors that support path-type operations... say, URIs or anything else that can be structured as a path tree). Not too sure where I'm going with it yet, but I'm open to ideas thrown in as issues on the github repo.
adg commented
For interest's sake, the godoc VFS stuff has been put into a separate package: https://code.google.com/p/go/source/browse/?repo=tools#hg%2Fgodoc%2Fvfs
rsc commented
robpike commented
rsc commented
rsc commented
rsc commented
bradfitz commented
ianlancetaylor commented
Issue #8931 has been merged into this issue.
rsc commented
@robpike and I worked out a design for a general file system interface for Go. I've posted a draft design doc, video, and code (links below). Instead of comments on this issue, please use the Reddit Q&A for comments on this specific draft design - Reddit threads and scales discussions better than GitHub does. Thanks!
Video: https://golang.org/s/draft-iofs-video
Design: https://golang.org/s/draft-iofs-design
Q&A: https://golang.org/s/draft-iofs-reddit
Code: https://golang.org/s/draft-iofs-code