Question/measurement: What is the difference between performance/resources used between IPFS backends?
Durin could be a good test case/sandbox for testing and measuring different IPFS backends on mobile.
For this we would need to contact each of the teams maintaining these projects and have them do the heavy lifting or work closely with us on integrating. This could also benefit their DX and documentation.
Some ideas for projects to try out:
- Kubo
- Iroh
- Nabu
Iroh
https://github.com/n0-computer/iroh From initial discussion from discord:
depends on what you are looking for, if you already have rust compiling for mobile, you can just pull in the crate, and it will for the most part just work
When asked about caveats on mobile:
So far, nope! Iroh has no configuration, and is tested across a whole bunch of architectures, including old android devices.
Steps:
- Decide which features are possible/we want to integrate with iroh
- Become familiar with IROH capabilities on desktop first, ensure that we can build out the feature we want (verifying CIDs from trusted gateways, sending to other devices)
- Explore building rust for IOS and android devices (https://blog.mozilla.org/data/2022/01/31/this-week-in-glean-building-and-deploying-a-rust-library-on-ios/)
- Create test branch for integrating iroh
- Inprogress c bindings https://github.com/n0-computer/iroh/tree/b5/irohc
Nabu
https://github.com/Peergos/nabu
Getting Java to run on ios may be an option.
Same ideas as iroh integration, although appears to be less flexible (solely based on being written in Java and my ignorance of how that works in ios world)
You can also build native iOS executables from Java using https://gluonhq.com/
We are working on this for Peergos for example here: https://github.com/peergos/mobile
Kubo:
- afaik android/ios is not officially supported, but if you are able to run Kubo on these platforms, the modern default settings should be ok
- we are encouraging people to use https://github.com/ipfs/boxo library to build their own node instead
Aside from Kubo, depending on the feature set you need, there may be better (lighter) implementations for mobile:
- iOS / Android
- There is https://berty.tech/docs/gomobile-ipfs / https://github.com/ipfs-shipyard/gomobile-ipfs
- Android
- https://gitlab.com/remmer.wilts/ipfs-lite/-/tree/master (based on https://gitlab.com/remmer.wilts/threads-lite/)