From @markg85 on Tue Aug 02 2016 09:46:06 GMT+0000 (UTC)
I just know about IPFS for about a day, everything seems really neat. Specifically the ability to mount an IPFS site just like any local mount. That’s in my opinion a great feature!
Having seen some videos and read some stuff about it, i’m still left with a couple open questions. I’m sure most of them are asked already, but i apparently lack the search skills to find them
So here we go.
- If you visit an IPFS site, will you essentially become a peer for the information you requested?
If IPFS follows P2P (which i think it does) then visiting an IPFS site makes you a peer. Next visitors could reach your computer and get the files required to view the site. That principle is fine by me. But i’m slightly puzzled about for example large files. Imagine i downloaded a docker image via IPFS, will another user download it from me then? Since if that’s the case then i could be getting bandwidth issues since it would suck my bandwidth up completely.
- How would you make a site truly decentralized?
If i look at ipfs.pics it’s only partially decentralized. The storage of the pictures is fully P2P, but the MySQL database it needs is still very much centralized. How would one make a service like that, but fully decentralized? I’m guessing one would need a decentralized database for that as well, like https://github.com/rqlite/rqlite, but how would one install that in IPFS? But even if it somehow magically gets connected to IPFS, how would you make it secure? By secure i mean a database used by Site X should only be accessible by Site X. Or would this involve public/private key signing of the database which only Site X can unlock? If that is the case, then where would the private key be stored (which would be needed to unlock the database)? Lots of sub questions here
- The concept of IPNS, a bit fuzzy.
Imagine this. A populair website or service, accessible by name (thus using IPNS), but as far as i understood it IPNS points to one hash. Basically a readable alias for a hash (or is that oversimplifying?). But what would happen if the hash it points to is for whatever reason not accessible? Would that make the site unavailable? Or does the name magically know (how?) which peers it has available to try and just send data back from another peer? For a user, the site would seem online.
- Is IPNS searchable?
With “the regular web” we have Google (among dozens of other search engines) to find a site. Sites in IPFS are probably indexed just fine as well if there is some public link somewhere, but what about the other stuff that isn’t linked? In “the regular web” there is the concept of the “deep web” which consists of sites that are online, but no links to exist thus search engines can’t find them. With IPNS everything is essentially in the DHT so doesn’t that make it possible to index every IPFS site? And does something like that exist? Or is there a (technical) reason why this isn’t possible?
- Site “mirrors”?
From what i understand, there currently is no concept of mirroring a site in IPFS, but i wonder if a “mirror” is the right term anyway. I’ve seen something about pointers to hashes where a new version of something would just change the pointer. So i guess the question is something like this. How would one mirror the site content and let the pointers know (or the DHT structure) that all/some data is available at some other locations (hash)? This would for instance be vital to big sites that mainly rely on having their data in multiple data centers as mirrors, as primary means of site hosting and load balancing. A secondary place would be the P2P structure where individual users host individual pieces of the site. But i don’t think what i describe here is possible (yet?)? Or i’m wrong
- Getting notified about pointer updates.
This is basically an extension of the question above. If you host something and it becomes outdated. For instance because a news article is posted or a new video or whatever your site is about. How would one - that wants to “mirror” your site - gets notified about a change? If IPFS has the concept of pointers, does it also have the concept of push notifications or publish/subscribe? I’d imagine it would just be a list of hashes (the ones subscribed) that need to be “notified” or “pinged” when the thing they point to isn’t the latest version anymore. It’s then op to the receiving side of that “ping” to act upon it.
- Real time collaborative editing in IPFS possible?
The presentations about IPFS claim low latency and tons of benefits, i’m sure that’s all true to some extend, but what about collaborative editing of documents? Is that possible? If so, how would it work? Is there a direct connection between all connected peers that want to edit something? Even then, how is the diff being made and how are conflicts resolved? On the other hand, this might be an application specific issue, not for IPFS to solve.
I keep it at those 7 questions for now
Copied from original issue: https://github.com/ipfs/faq/issues/154