Best practices for cross-platform IPFS applications

Hi,

I’m trying to figure out the best approach to creating applications on IPFS with regards to compatibility on mobile/desktop.

Say for a social media application running on IPFS, would it make more sense for each user to setup their own local node, then have a client profile that can be configured to use to that node? Is there an easy way for a user to access their node if it’s running on their own private network when they’re on mobile (4G etc)?

I’m looking at this approach because of the limitations of JS IPFS in browser and making IPFS applications compatible with mobile. Would it be possible for something like a QR code to be used in order to connect an HTTP client with a node, then save the node information to connect to it from anywhere?

It seems like asking average users to setup their own node would be a non-starter for people to use the app, along with security issues if they expose ports on their personal machines to the Internet. Please let me know if I’m off on this. Thanks!

I think the goal should be perhaps more along the lines of having a standard file format to hold all of someone’s PINS so they can own their data and choose whatever pinning service they want, to host it. The concept is similar to Tim Berners Lee’s new Solid platform which uses “Pods” to do something like this. I think as long as people can own all their data, and not be tied to any particular platform or app, that’s ideal.

The Pinning Services API has the ability to get all pins, for example, as JSON,

https://ipfs.github.io/pinning-services-api-spec/#tag/pins/paths/~1pins/get

So I can envision an entire new ecosystem of apps (many being pure JS apps) that are for social media or whatever, and do all their data storage thru IPFS, but using standard open APIs that all IPFS providers (pinning services) would provide. (Note: This means the App itself doesn’t need to install IPFS) So you can take your data with you, and choose your own pinning service too.

To be truly decentralized, IPFS will need to be installed locally either on mobile or desktop, otherwise it’s always going to be gateways that don’t scale and single point of failure.

Brave browser is the closest thing we have right now but there’s no API to access the integrated IPFS node and it’s not even planned…

I’ve build a decentralized web app that used IPFS for live streaming and social media but normal users are left out because of the configuration needed.

I’m hopeful that in the next 5 years it will be possible.

@wclayf @SionoiS

Thank you both for the responses! Great food for thought.

tvdev, I am willing to help get this going if you want to coordinate the effort.

In particular I am thinking of a library that could link via c or c++ mechanisms and thus be included in applications to provide bare-bones (at first) access to libp2p and IPFS. I’m working on getting quic to work as a starting place.