3 ms·
I read the documentation but I don’t understand what use cases or problems this is meant to solve. What is this for?
by eatbitseveryday 3y ago
I read the documentation but I don’t understand what use cases or problems this is meant to solve. What is this for?
- diggan 3y agoIt's a peer-to-peer "engine" with switchable components. Seems to run on different platforms (browsers, mobile, desktop, server). Basically the library helps two different computers to talk with each other, without any servers setup in the middle. At a glance, it looks pretty much like libp2p (https://libp2p.io/ https://libp2p.io/) but seems to integrate with libp2p as well (meaning you should be able to use Bifrost on one end, and libp2p on the other), so I'm guessing there is at least some fundamental difference, but I cannot spot it. Seems to use slightly different terminology compared to libp2p.
- squarefoot 3y agoYes, that is not very clear. It seems to me (corrections welcome) that it could sorta work as a application oriented VPN where a VPN cannot be installed. Something like: local_app_1--->Bifrost Client1-->Bifrost Daemon0-->OS0-->//network//->> same in reversed order local_app_2--->Bifrost Client2-->Bifrost Daemon0-->OS0-->//network//->> same in reversed order instead of: local_app_1--->OS0-->VPN0-->//network//->> same in reversed order local_app_2--->OS0-->VPN0-->//network//->> same in reversed order That is, each application has its own client tunneling to a common daemon which then tunnels using the usual network stack to a similar arrangement on the remote machine.
- aperturecjs 3y agoHi, author here. Thanks for checking out Bifrost. The short pitch is: any protocol over any transport with seamless cross-platform (browser <-> native) communication. Building internet applications often involves writing code that is tightly integrated with the choice of communications transport, for example, one has to make the design decision to use either WebSockets or WebRTC, and then all other design decisions are driven by that. Bifrost aims to allow developing applications without knowing or caring which protocols are used under the hood. The app can just say "Open a stream with peer X" and whatever configured transport(s) make that happen. I'm still working to improve the docs and new user experience, if you have any suggestions on how I can make it easier to understand, I'd greatly appreciate it!
- BiteCode_dev 3y agoCan it work over bluetooh, or with custom "mic to headphone sound-driver protocols"? Does it include discovering peers on a local network or around you? Do it handle signaling?
- aperturecjs 3y agoBluetooth could work! Just need to implement the Transport interface. Peer discovery is not implemented at the moment but could easily be added (and will be soon). Here's how: any controller can resolve EstablishLinkWithPeer. A peer discovery controller could compare the list of discovered peers with the list of desired connections and initiate connections via UDP when there's a match. Signaling is managed by the Link implementation. For UDP we use quic-go.
- BiteCode_dev 3y agoThis stack could be the basis of a software to share things no matter your connectivity situation. You fire it up, it scans things around. Local network? It uses that. Not local but internet, it uses that. Nothing but BT, you can still detect people around, chat and exchange files. People could be identified by public keys and that's it, not need for an account, signaling done by zeroconf/bt-scanning/bittorent. Basically a solution to the current chat nightmare. But the amount of work is overwhelming, even with this.
- MadnessASAP 3y agoWhile we have your attention, does Bifrost support peer multipathing or weights?
- aperturecjs 3y agoThere is a design for routing in the repo (and tor-like circuits). However it is not implemented yet. I'd love to grow the community and have more people collaborating on this.
- 3y ago