Comment by macguillicuddy
5 days ago
I've always been interested in the concept of using the filesystem more thoroughly like this, but sometimes I wonder about the value of it, and if pulling on that thread could get us something even more interesting.
Take this, for example:
> s3.put_object(bucket, key, data) -> cp file /s3fs/bucket/key
The S3 call is tooling over an already lower level operation - an HTTP PUT request. The function tooling is added /because/ it makes it easier to call correctly. You could choose to use the underlying HTTP request directly if you wanted to. The function approach may add type safety and additional client-side validation/logic that can't be expressed in the underlying API (HTTP or FS).
In some ways we can think about the FS as an RPC mechanism with service/resource discovery (LIST operations) and a fixed/limited set of functions (READ, WRITE, SEEK, etc). Perhaps a more interesting 'universal interface' would be a broadly supported RPC mechanism with the FS operations as an adoptable interface that any given resource could support. That way an S3 implementation could choose to implement the FS interface if it wanted to, and an AI agent could discover the additional functionality offered by the other interfaces it supports. Probably a pipedream .
The Polymorphic Identifiers and storage combinators of Objective-Smalltalk do exactly this.
https://objective.st
https://dl.acm.org/doi/10.1145/2508168.2508169
https://dl.acm.org/doi/10.1145/3359591.3359729
(not sure why the certificate expired...will have to check up on that.)
This is core to plan9's "everything is a filesystem", a generalisation of Unix "everything is a file" and surprisingly a direct analog of Sun Spring OS RPC+Namespace model
No exactly! You’re describing a microkernel and a bunch of userspace servers. Look into Fuschia, Mach, or Android’s Binder if you’re interested it this