Hey Everyone! IPFS dev here, If anyone is interested in the future of ipfs pubsub you can participate in the discussions in our research repo: https://github.com/libp2p/research-pubsub . One of the next big things we're planning to do is to implement a new routing algorithm, one proposal for this is here: https://github.com/libp2p/research-pubsub/pull/17 (feedback and review very welcome)
We are also planning on implementing various different modes for authentication and encryption. Our pubsub currently is plaintext and open for anyone to publish to any topic
Not yet, its somewhere in our giant pile of things to do. If anyone is interested in helping out on this I can definitely help out and point people in the right direction.
Pubsub is probably one of the lesser known features of IPFS right now, given that it's still marked as experimental. We're researching more efficient tree-forming and message routing algorithms, but generally the interface is pretty stable by now. Pubsub is supported in both go-ipfs and js-ipfs.
A shining example of pubsub in use is PeerPad, a collaborative text editor exchanging CRDTs over IPFS/Pubsub: https://peerpad.net
Off-topic question for you. What language do you recommend developers build IPFS-backed apps with? I started building an app in Go (which is your reference language) but Javascript seems to have a lot more APIs available for it.
If you're looking for raw performance and/or large datasets, go-ipfs is for you. If you're looking for running within websites (and in browsers generally), then js-ipfs is for you.
IPFS just keeps looking more and more useful. I'm starting to wonder about planning future text-rich applications (forums, news, blog, etc..) with article backups to IPFS and a link on the live site.
Would require extra storage and overhead, but the result is maybe even more helpful than a tor site for important content.
Sorry, the reference to Tor is misleading. I was not referring to anonymity but rather access to content from restricted areas like the Middle East or Asia.
Sure -- but libp2p's network transports underneath are pluggable. There's already Websockets (/ws, think domain fronting! [1]) and Tor (/onion) transports, so there's various options for evading censorship (I personally consider bandwidth throttling a form of censorship).
[1] Domain fronting lets you use a well-established web frontend for your web service. E.g. we could host /ws nodes in Google Cloud, and to the ISP the TLS handshake looks like it's for google.com, while inside the connection there's e.g. a `Host: libp2p.googlecloud.com` header. More info: https://www.bamsoftware.com/papers/fronting/
But then again, net neutrality is a political issue! You don't solve it for good with technology.
Since IPFS is based on content addressing, if a node tries to spoof a piece of content, any peers trying to fetch from the malicious node will immediately see that the content provided does not match the desired hash.
I'm not sure how peers handle that situation, I'd assume it'd be treated like wire corruption (retry) or give up and try to fetch from a different peer.
Pins are something that's per-node, and whether a node has a specific piece of content pinned is not visible publicly (only that it's providing the content).
Back in the day (late 1990s iirc) I used Usenet as a global, distributed, publish/subscribe bus for system messages between island service POPs. Messages PGP encrypted and carried by a variety of groups (mostly alt.*). Also eventually consistent. Very eventually in some cases.
Maybe, but remember IPFS nodes can elect to blacklist any given channel, so any given static C&C site here is just as vulnerable as a DNS point or a given static IP address.
There's no blocking functionality in IPFS yet - the plan is to have customizable opt-in blocklists (and allowlists) for content and peers, though, so communities can govern themselves regarding what content is desired and what's not.
I'm a complete IPFS ignorant but I can't help but wonder what's a typical latency in such a pubsub system? I would imagine it varies widely but some anecdotal experiences would be nice to hear
Is there some kind of podcast or YouTube series about ipfs and similar technologies? I'd love to learn more about how they work, what they're working on, and what's next.
> Currently, any peer can publish to any pubsub topic. We plan to implement an authenticated mode for pubsub topics, where only authorized peers — those given a cryptographic key or capability — can publish messages. We are still working out the sharing and capability granting model.
We are also planning on implementing various different modes for authentication and encryption. Our pubsub currently is plaintext and open for anyone to publish to any topic