DCOM - Distributed Community

Alrighty. Here’s the jist.
I had this idea for a forum I wanted to start and was browsing around for platforms. I was thinking maybe Discord, slack could work, DNN or ASP.NET, and then it hit me – all these options either suck, are way too bloated, or just don’t quite live up to their full potential (from a CS POV when looking at this from a global and future proof way).
I’ve been looking into IPFS for a while now and trying to think of a project that could benefit from a distributed system (I have tons of ideas), so it should be of no surprise that I connected these two dots.
What if we were to create a fully distributed community on top of IPFS. I call it a “community” because, if implemented properly, this could be a suitable replacement for chatrooms, forums, IM platforms, even blogs.

I’ve got dozens of ideas but very little clue how to implement this with IPFS. I’d love suggestions or even direct help. I’m an experienced software engineer and can work with JS or even GO with a little brushing up :wink:

What do you think?

1 Like

This sounds a bit like Akasha, though I don’t know if it currently does everything in that list.

I like this idea, too. I’m not the person you’re looking for who can really pitch in and help guide the project. At most, I might be able to help out with a small contribution here and there. But I’m into the idea.

Something I’ve been thinking about: in a decentralized app, the data lives separately from the app. If I use some software, such as your app, to create a post, then that post might be just data that lives on IPFS, and that data could be viewed from other apps as well. Data can become a first-class entity, and apps in this model may become thin layers used to view data in different ways.

I agree – similar, but Akasha sounds VERY limited in it’s ability… Not to mention it doesn’t seem to be very actively developed.

That’s what I was thinking as far as structure. Build it AROUND IPFS, not necessarily on top of it as much as possible. I agree with the treatment of files as first-class entities. I think we could really turn this into something big if we do it right.

Anyone else interested that knows IPFS well?

This is a really cool idea and is something we’ve wanted for a while. However, fair warning, this won’t be easy :slight_smile:.

To get you started, IPFS is actually built on top of something called IPLD (interplanetary linked data). That’s likely what you’d want to use. IPLD is a content addressable JSON-like object system where objects can link to other objects by hash (just like IPFS).

IPFS also has an experimental feature called pubsub. You can use it to listen for events on a “topic”. Warning: pubsub is experimental, subject to change, and known to be extremely inefficient.

If you want to build something that works like existing forums, chats, etc., the tricky part of will likely be agreeing on the current state of the system, especially when untrusted parties come into play. One can use some form of blockchain to agree on the state but that can get expensive and doesn’t actually fix the problem of untrusted parties. However, you may not need to actually agree on the state as long as all parties get all (or most) of the state and you have some trust mechanism (or are obscure enough to not attract spammers/trolls).

You may find the following resources useful:

js-ipfs IPLD interface:

https://github.com/ipfs/interface-ipfs-core/tree/master/API/dag

A nice library for using pubsub from js-ipfs:

Library for building distributed data structures in IPLD (specifically, CRDTs):


I recommend you also look at the other apps in the shipyard for inspiration:

3 Likes

Thanks a ton for this info. I think you’re right about using IPLD over IPFS mainly. I would love to get an official project started with a couple people to get this up and running.

Sidenote, I think a healthy mix of IPLD for communications, IPFS for data storage, and something like UBIQ for authentication and verification like you mentioned should work very well. UBIQ is a great coin with a solid community and they would be more than willing to help out with integration.

To anyone reading this: feel free to reply to this thread if you have any ideas, or PM me if you want to help out. I’ll provide GitHub links and such once it gets started.

1 Like