I have had a proposal in my head for a feature update for Holochain for quite some time now… And that has to do with splitting entries into fixed-size chunks (of size 4 KB, for instance), much like what Eth. Swarm does with files… The conductor should automatically split an entry into these small chunks upon entry-creation. There should be a function (in the HDK) for getting the whole entry (this function takes some time to collect all the chunks; only upon having collected and assembled all the chunks should this function return), and another for getting the chunks asynchronously. Moreover, each running DNA instance should be exposed as a gRPC Protobuf (v3) API (as gRPC supports bidirectional asynchronous data streaming over HTTP2; don’t worry, the serialized data would still be binary, thanks to Protobuf); there should be some magic helpers in the HDK to send and receive data over the gRPC input and output streams that get created when the user makes a function call. Even in a single-device Holochain setting (as opposed to Holo), although the user’s device is both the client and the server, the new proposed approach would mean that the UI would ACTUALLY be connected to the (h)app and not just talking to it; the UI/app would be free to do things that presently can’t be achieved, such as uploading insanely huge files, and if the file-format implementation is chronological in nature (such as HLS), it would imply not having to wait for the whole file to be fetched in order to consume the content!
I understand that Holochain wishes to be good at one thing, and one thing alone, i.e., executing code in a peer to peer setting, and that too with safety. However, I think code-execution, chunking and file-storage, and input/output streaming can all come under the same thing!
Any opinions???