IPFS Discussion Forum Software

Our forum here uses excellent Free software, Discuss. One problem with most discussion forum software is that it is centralized. (Discuss is based on http no ipfs.)

What discussion forum software is available which is written to run on IPFS and take advantage of its decentralization strengths? This is a topical issue as a lot of censorship is happening in the world today, and one reason IPFS was created was to solve issues like this.

Any progress in IPFS based discussion forum software anywhere? Is there an IPFS platform for a forum?

I very much like to know this too.

It’s super difficult to create a truly distributed forum software. Just think about the complexity that distributed brings.

  1. You cannot have a classical user account registration as you don’t have a database.
  2. Because you lack that, you don’t have a permission system.
  3. And because the permissions are gone, so is the moderation.
  4. How about creating a topic, how is the logic supposed to work that users know that a new topic (or comment) is made?
  5. soooo much more issues

I think it’s impossible to write a dynamic site (a forum is dynamic) on a immutable (can’t change) platform. They two are kinda mutually exclusive.

You’d need some form of mutability to make some parts possible (user registration remains super difficult). IPNS isn’t an option here as that simply isn’t performant enough for a forum site. It is enough for a static site (think of blog posting software for example).

Anyhow, if you do find it (or make it ;)) please do give me a nudge! I’m quite interested in this too!

1 Like

I think it’s impossible to write a dynamic site (a forum is dynamic) on a immutable (can’t change) platform. They two are kinda mutually exclusive.

I have already proven you wrong :wink:

Look into how we’re doing things in qDesk.org - Has all the answers to the points you raised, with a lot of additional work you could also build a forum like this.

You cannot have a classical user account registration as you don’t have a database.

We’re using cryptographic keys, users create their profile and timeline post and add them as dag nodes.

Because you lack that, you don’t have a permission system.

To comply with a ton of regulations, our channels have owners, which can use the participants keys to control permissions and moderate

Just join my project and build a forum module, if it’s something you really want to spend your time on, we’ll help you and add/change everything in the library that’s needed =)

3 Likes

Interesting stuff!

I’m curious though. The user creates a profile. What happens to the private key?
Please tell me that key never leaves the user’s computer! Which complicates the rules/regulations part…

Please tell me that key never leaves the user’s computer! Which complicates the rules/regulations part…

The public keys obviously are shared and the private keys are stored locally but we’re planning on also storing the encrypted user accounts on IPFS. We have a favorite system, it’s like friends, when you’re someone’s favorite right now and the pinning strategy in qDesk is set to favorites, you will pin your favorites timeline posts.

In the same manner your encrypted account information could be held by your favorites, so you could login from anywhere on the planet with just your name, password and a two factor method you set up with your favorites.

But that’s future visions, right now for 0.9.5 it’s the most important for us to get the quorum consensus right, so message histories in our chat can be synced to allow to catch up on/search missed messages.

(We already added account names to 0.9.5 though to prepare for that, increase security on gateways and to allow quickly signing into multiple profiles.)

1 Like

Amazing work, @StationedInTheField!

It is great to have a web demo to see, but in this case I think it would also be helpful if you embedded an animated GIF into the page to show us what we are meant to be able to see/do.

Do you think you could stick one up there for us / provide a hash? Or perhaps there is a video somewhere on the web.

Thanks, unfortunately this project is a ton of work, I’m building the majority of it by myself while going through some serious covid related housing issues. I don’t really have time to provide these things yet. Just updating the absolute necessities for the documentation takes up a great chunk of time already.

Just play around with it.

In 0.9.4 there’s two modules, messages and social:

  • In messages you can create channels in the left bar and invite people from the channel settings in the right bar, also by QR code which is quite comfy (also works on my old Nokia phone)

  • In social, you can set up a (public) social profile and timeline - When public is selected the reference to your latest timeline post is shared with the other peers. So when you create or reply to a post in social, it’s automatically shared in the background on the channels you’re in and the other users automatically parse the reference to the latest node of your timeline dag and for them it then gets updated in “Network” which just blindly shows all your channel members posts. In the future we’ll have custom algorithms here as well. You can also mark people as favorites, by clicking the star next to their name in Social and if they accept, you can send them private messages too.

Btw, you can also use qDesk from galacteek 0.4.37+ It’s in the hashmarks db now under “ipfs/social”

1 Like

Thinking about it a little more, you could probably upgrade the social module with a modest amount of work to allow something that emulates a forum. Channels could have groups or be groups themselves and have post categories and instead of default posting on your timeline, there could be a choice to post this in a category of a group/channel. These could then be moderated by channel owners and in later versions people delegated by channel owners. (planning to offer all of the features Discord has by the end of the year, another thing we’re adding is to delegate moderation)

I will try to set some time aside to explore your work later in the next few days. Thanks for creating this.

1 Like

Great, if you need any help along the way don’t hesitate to get in touch. I see it as my human duty to create this but you’re welcome =)

1 Like

Hi StationedInTheField,

I like your work with qD. Just interested, have you heard of OrbitDB or used it at all? I haven’t looked at the code at all, but it seemed like a useful P2P DB framework.

I’m interested in P2P applications and frameworks, notably bug tracking software. I don’t know of any specifically targeted for bug tracking, but it seems like qD is supposed to be extensible.

Yes @andrewr, we’re planning to offer it on the qOS API interface later on.

I’ve used OrbitDB in other applications but so far we haven’t integrated OrbitDB into qOS or qD yet. Right now it doesn’t make so much sense because it doesn’t scale well enough for the features we have integrated so far. It would have also been a lot of work to maintain, just recently OrbitDB had a breaking change we would have had to offer a migration tool for, etc etc.

The backbone of our library is a decentralized version of Google Datastore and Google BigQuery with a quorum based sync that we’re developing as we’re integrating features. The first production ready version of it will be available with the release of v1.0.0

We are hoping to release v1 by the end of the year but that heavily depends on the successful release of ETH 2.0 which we’re planning to integrate for critical payment features in almost every module, especially the game and app store.

qD could easily be used for bug tracking. Actually there’s a project I want to use it for: “The Vibenarium” in which people and ai can collaborate on media and software production. If you wanted to build an open bug tracker on qD, we (and especially Charles) would contribute since we’ll need that later down the road =)

I had a quick try with qDesk. It seemed to be doing a large amount of disk reading and I wonder why this was. (50GB) I had just installed it and tried to get it going and left it for a while.

The only place qD is reading from disk after starting the IPFS node is:

Line 436 in https://github.com/QuestNetwork/quest-bee-js/blob/master/beeConfig.js
encryptedHex = this.fs.readFileSync(this.configFilePath,"utf8");

and is only executed once per session.

The app however runs an IPFS node, so that’s most likely what you’re seeing. We have already added some options to the example app in Settings -> IPFS, for one you can choose to only pin your favorites content. More detailed controls and stats for IPFS are coming up with the next patch.

In qOS there’s already more options in 0.9.4 but we didn’t have the time to implement them into the example app yet. You can also use qOS with your locally running go-ipfs node. In galacteek, qOS and galacteek share a go-ipfs node.

1 Like

I’m having a difficult time figuring out of your message is spam or if it’s truly a message for this post.
If you are an AI, you’re about to pass the turing test, lol.

If you’re not an AI… What the hell are you talking about?

You have been going around flagging me, why?

to answer your question it’s a response to IPFS Discussion Forum Software - #3 by markg85

We do have USENET style decentralized discussion forum

How ever User Interface of USENET? Can somebody upgrade this with modern discussion board?

1 Like