I’m working on a greenfield project and considering using libp2p – either go or js. I’m wondering if one is more baked than the other? Is there a feature / status matrix somewhere by chance? Any information very much appreciated. Thanks!
The js and go implementations are near parity these days but each has areas where it’s more useful. A feature/status matrix is a great idea. I’ve made a GH issue for it and assigned myself.
Short version: If you’re building something that will run in the web browser, js-ipfs and js-libp2p are for you. If you’re building something that end-users will install on their machines, you probably want go-ipfs. If you’re building a desktop application (ie. an electron app) you will probably end up using js-ipfs client libraries in the end-user UI and run a go-ipfs node as a background process. If you’re building something that sometimes runs in browsers and sometimes runs as an installed app (like Slack), you will probably end up using both.
I’ve been polishing js-libp2p repo and crafting new examples (more like tutorials) to explain how it works internally, check out:
- Main repo - https://github.com/libp2p/js-libp2p
- Transports - https://github.com/libp2p/js-libp2p/tree/master/examples/transports
- Protocol and Stream Muxing - https://github.com/libp2p/js-libp2p/tree/master/examples/protocol-and-stream-muxing
- Encrypted Communications - https://github.com/libp2p/js-libp2p/tree/master/examples/encrypted-communications
Hope this helps get you started
A quick update here, this new post on ipfs/notes – https://github.com/ipfs/notes/issues/256 – should clarify how to effectively develop an electron app and use IPFS from inside of it.