Skip to content
This repository has been archived by the owner on Feb 8, 2023. It is now read-only.

Messaging on IPFS #33

Open
seidtgeist opened this issue Aug 11, 2015 · 12 comments
Open

Messaging on IPFS #33

seidtgeist opened this issue Aug 11, 2015 · 12 comments

Comments

@seidtgeist
Copy link

Messaging fragmentation and messaging monopolies are bad for people. This WIRED article advocating a messaging monopoly owned by an ad-business made me mentally flip tables. The corporate centralization problem is especially pronounced in messaging. Messaging APIs shrink or disappear, eventually turning into an official GIF sharing Obj-C library that you have to use in order to not have your API keys revoked [drama added].

Related problems:

  • Identity: Peer identity versus user identity. Is this something we're aware of? E.g. I am a person with one brain (hopefully not just a computer simulation) but I have multiple ipfs peers running ¯_(ツ)_/¯ Identity is a prerequisite for chat and other social structures.
  • Pubsub: Is messaging just a version of PubSub?

Messaging properties:

  • Message history: A personal block chain of sent and received messages?
  • Direct messaging: Sending messages between two users
  • Group messaging: Sending messages among multiple users, topics, channels
  • Presence: Peer's online status, typing indicators
  • Delivery & read status

See also:

@seidtgeist seidtgeist changed the title Messaging over IPFS Messaging on IPFS Aug 11, 2015
@MichaelMure
Copy link

This is something I want to have for https://github.com/MichaelMure/Arbore-qt

This is the way I see it implemented:

Identity:

  • A keypair for each node, a keypair for each identity.
  • The future keystore of IPFS serve as a backend
  • To easily build a contact book, the program show contact suggestion. These suggestion are build from other person's contact book. That means that you share with your contacts a part of your own contact book. To avoid sharing too much information, this sharing can be limited inside the group the contact is (ie, you share your contact inside "Work" only with your "Work" contact). Obviously, this behavior should be tunnable.
  • To bootstrap this network of suggestion, a user can add a contact using various support (base64 string, Qr-code, ...). It can even be bundled in an installer that you can share with your contacts.

Messaging:

  • implemented as a IPFS service, using the DHT to route message to the recipient. Messaging is done with direct message, no offline delivery.
  • the PubSub system is used to associate user id to node id. If nothing is found, the user is considered offline.

@seidtgeist
Copy link
Author

This is something I want to have for https://github.com/MichaelMure/Arbore-qt

That looks like a cool project to build on top of IPFS!

Messaging is done with direct message, no offline delivery.

Can you elaborate? For example, how would messages reach mobile phones in this model?

@MichaelMure
Copy link

Well, mobile phones are not really the target of Arbore for now as it's mainly a file sharing application.

That said, if you can run a ipfs node on mobile, you can probably deal with a chat implemented on top.

If you want to work on that, we should probably use the same implementation.

@pjz
Copy link

pjz commented Aug 25, 2015

Other somewhat related prior art: https://bitchat.im/

@MichaelMure
Copy link

Thanks @pjz that's very interesting, especially the FAQ :)

They explain a lot of things about why they did it like this.

The question 2 ("Why is registration necessary to use Bit Chat? What is a profile certificate?") states that they had to add a central identity management authority because you either have to 1) blindly trust other peer on the first connection or 2) centralize this identity management.

Can someone tell me what is wrong with the model I suggest in #33 (comment) ?

@pjz
Copy link

pjz commented Aug 26, 2015

So... all that's one way. If you want to go a little further, though, consider publishing Activity Streams encrypted with the public key of those allowed to read it.

@davidar davidar mentioned this issue Sep 12, 2015
@jeff-r-koyaltech
Copy link

What makes Matrix "prior art" for you? They're still actively developing. Is there something fundamental about their architecture that doesn't meet your needs? I'm just trying to understand and decide if IPFS based messaging is where I want to volunteer my time. I've been thinking a lot about uses for IPFS the last few weeks, and was pleased to find this thread! :)

@seidtgeist
Copy link
Author

@langboost Maybe "Prior art" was the wrong term. I changed it to "See also".

@seidtgeist
Copy link
Author

What's the latest on IPFS and notifications/messaging/pubsub? I'm getting frustrated with the alternatives again and would like to build something better, but lacking the primitives. Any ideas?

@seidtgeist
Copy link
Author

@jbenet: Should we close this in favor of #64?

@fazo96
Copy link

fazo96 commented Nov 26, 2015

There's already an IRC style chat application on top of IPFS: anonymous networks and there's also my ipfs boards but that is more a discussion board / social blogging application.

With POST we will define a common protocol for all human communications on IPFS, linking together all the apps.

There's also Tox developing a custom protocol + C library aimed at fully distributed text and voice chatting with support for groups chats and video calls. There are already clients that work pretty well.

Just listing these for reference. We will probably address the problems mentioned in this thread (identity and message proprieties) in POST or an extension of it 👍

@seidtgeist
Copy link
Author

Sounds really great! Going to have a look at the POST issues.

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

No branches or pull requests

7 participants