ipfs / notes

IPFS Collaborative Notebook for Research
MIT License
402 stars 30 forks source link

Flatpak store stored on IPFS #444

Open RubenKelevra opened 3 years ago

RubenKelevra commented 3 years ago

What do you guys think about the idea of asking the Flatpak project to integrate IPFS?

I was wondering if there's interest in exploring the possibility of storing the Flatpak store on IPFS. Ideally without any compression, to let buzhash figuring out any diff of an update.

If IPFS could be mounted, like via NFS (see https://github.com/ipfs/roadmap/issues/83), IPFS could become the storage for the application and fetch new versions on-the-fly when opening the app the next time.

An example of how it could work:

The app would be put unpacked to IPFS and published under an IPNS.

On an update, the latest IPNS would be resolved and the IPFS would be mounted to ./.local/share/flatpak/app/$app-id/

IPFS would be asked to store the app in the MFS under /flatpak-apps/$app-id/ for example and fetch it recursively.

You could start the app immediately after an update, while IPFS still fetches the differences, the same goes for installations. But a warning about degraded performance while the fetching is still running would be good.

Since we could use buzhash as a chunker and the files are stored uncompressed as a directory structure this would automatically do differential updates.

I already build a similar project with https://github.com/RubenKelevra/pacman.store - the discussion which lead to this is archived here: https://github.com/ipfs/notes/issues/84

jcaesar commented 3 years ago

Sounds like a fun project, but two comments:

hsn10 commented 3 years ago

Similar problem is with IPFS nodes hosting large NFT collection. Unless you connect directly to node only newly added pictures are found by IPFS network.

RubenKelevra commented 3 years ago

Well, since the root CID changes you would automatically connect to nodes which already have the new version. Bitswap will do the rest.

Since 0.9 the performance is extremely good for my Arch package mirror, despite it having quite a lot of stored files.

Also websites like ipfs.io are stored on ipfs, which do fetch quite fast.

I don't see why this should be an issue.

@jcaesar to you first point, true, the first start would be very slow, but as soon as you install the app would be fetched recursively, so the app might "stall" for a short while from time to time if it is requesting files which are not yet available. But that's exactly why I think it makes sense to show a warning while ipfs is still fetching.

Maybe if the user doesn't press "continue anyway" the warning would automatically go away as soon as ipfs is returning and the app starts normally :)

RubenKelevra commented 3 years ago

@miabbott @matthiasclasen @ketudb Wondering if this might be interesting for Fedora Silverblue?