ipfs / infra

Tools and systems for the IPFS community
MIT License
133 stars 41 forks source link

Miniature solarnet lab: resource constraints, testings, and discoveries #145

Closed rht closed 7 years ago

rht commented 8 years ago

On building several raspis/c.h.i.ps scattered within wifi range (~$20xn) for the purpose of:

  1. Pushing the resource constraints for low-powered devices. Has been around for a while (https://github.com/ipfs/go-ipfs/issues/1482, https://github.com/ipfs/go-ipfs/pull/2012, bitswap consumption https://github.com/ipfs/go-ipfs/issues/1750)
  2. Testing (https://github.com/ipfs/go-ipfs/issues/2055, https://github.com/ipfs/go-ipfs/issues/2056, https://github.com/ipfs/go-ipfs/issues/2057)
  3. Proving the O(torrent) speedup in local network (the first example in https://www.youtube.com/watch?v=HUVmypx9HGI#t=14m15s (but why?), https://github.com/ipfs/go-ipfs/issues/2111, https://github.com/ipfs/go-ipfs/issues/872).
  4. Offline/high-latency functionalities (ref: https://www.youtube.com/watch?v=HUVmypx9HGI "I want to live in a world where the applications that I use will continue working whether or not I'm in the best place in the network" (and whether or not having adequate tools)).
  5. Optimizing ipfs as a lan/local unixfs (fixing issues like https://github.com/ipfs/go-ipfs/issues/2166) / immutable fs / for /nix/store. I don't know of the constraints, but what does it take to go O(zfs) here? imo, making the files api fast is a very time-consuming rewrite, instead of a reuse. I think, for now, git-annex could be a more suitable interface. Is there any relevant ipfs/notes to link from? I only know of https://github.com/ipfs/notes/issues/12.
  6. Mini-cluster (and pin coop) prototypes (https://github.com/ipfs/notes/issues/58)
  7. There is more, but unspecified.

Not sure if this is a silly thing to do, whether it is better off to test everything on vm/iptb/network simulator. Yet, this could uncover ux bugs / some unexpected use cases, while maintaining a consistent unixweb interface that already works cross-geographically (e.g. the ipfs.io solarnet).

I have questions on the choice of 1. programming system and 2. protocols. For 1, if the language of the web is js, what would be the language of connected devices (other than safe c/cpp)? Is using golang (channels/goroutine) particularly advantageous? Or micropython or rust? For 2, how would ipfs+ipld fit in the 'web of things'[1] ecosystem? I just discovered of CoAP (for "REST", rfc7252) and MQTT (for pub-sub), can they be used on cjdns, or require a rewrite?

Estimate of figures:

[1] known to be highly fragmented, as stated in https://www.w3.org/community/wot/.

davidar commented 8 years ago

I think, for now, git-annex could be a more suitable interface

I've also thought about that. Cc: @cryptix

ghost commented 7 years ago

This work has started in https://github.com/ipfs/test-lab