Blog comments are a huge problem right now.
Thanks to that static blog thing, we’ve almost decentralized blogs.
IPFS is coming along to fix some of the issues with centralization of content.
But commenting is still woefully centralized and/or cumbersome!
Why IPFS (on its own) can’t fix comments
At the recent Decentralized Web Summit, the audience was rewarded with a stunning demo from ZeroNet.
We witnessed a blog served in a fully decentralized manner thanks to the power of DHTs and their content-addressable philosophy.
Moreover, we saw comments being loaded in a decentralized manner. There was a little counter showing the number of comments increasing as they were loaded from peers.
While this certainly is an impressive achievement, it’s still not the golden egg we’re looking for. Why?
- Comments must be stored by peers who drop offline all the time. Would you be OK visiting a semi-obscure blog and not being able to see the comments because no peers are available? Only half the comments? An unknown percentage of the comments? Comments out of order? My guess is that for most users this would be unacceptable.
For comments to work, there must always be at least one peer online. That is kinda like a … server.
And even though “server” is a taboo word in many decentralization communities, it’s nevertheless a fundamental reality that someone must always be available to store the data you’re looking for.
How Do We Decentralize This “Without Servers”?
We can’t.
What we can do, however, is make the “server” part arbitrary and permissionless so that anyone can play this role.
What is needed is:
- Incentivizing seeders to store arbitrary data in a decentralized manner. This can be done today with blockchains like StorJ, Sia, and in the future, Filecoin. Or it can be done by simply being your own master-seeder and running a dedicated server. The difference between today and that last case is that it allows other peers (probably site visitors) to “help out” the dedicated server in serving the content.
- Incentivizing seeders to store arbitrary data in a decentralized manner by figuring out who pays them. In 99.99% of the cases, this will be the blog owner. Users don’t want to have to pay to view or post comments, but blog owners already pay web hosts for comments to be stored. This will be almost no different, except the comments can be stored redundantly in a bunch of places.
- Referencing the comments using content-addressing / eventually-consistent merkle-tree magic. See CRDTs, Dat, Patchwork, Orbit, OpenStreetMap P2P DB, etc. Your blog post will contain an IPNS-type hash representing where to look up the latest comments, along with some JavaScript to do the looking up.
- Fancy features like upvotes require blockchains like Ethereum. DHTs and IPFS are just not designed for this sort of “HTTP POST” like behavior, but Ethereum is.
This is an important topic because many commercial commenting platforms have resorted to shadow banning posts that contain web links in a ham-handed attempt to block spam [Disqus being the primary offender here] —but that also wipes out the best posts in an online debate where the author of a comment has supplied reference links to support his position. Now you could incentivize seeders to store data without charging the blog owner if the blog allowed advertising, and the purchase of ads could be facilitated through smart contracts. But the readers would have to be willing to tolerate ads. Brave has made some attempt to address this with its anti-tracking ad network that incentivizes readers to view a modest amount of advertising by rewarding them with spendable tokens. If an A.I. could analyze blog posts and make the ads more relevant to the reader’s interests, people might be more inclined to opt-in… and A.I. could also address the spam problem by recognizing what is spam and what is not. Perhaps you could give readers the power to vote on spam, and the system could reward those who vote accurately by making their votes carry more weight. You could also emulate a soft paywall — but instead of asking readers to buy a subscription, you could ask them to click a button to permit ads on the site for that session if Brave ads were not globally enabled already. But even where the blog owner is willing (and able) to pay for hosting, the decentralized storage mechanism would need some method of pruning the comment database if the owner decided to take his site down. The architects would also need to decide if the blog owner should have the ability to moderate comments, and whether the act of removing non-spam comments should be visible, so readers can assess whether the level of moderation is reasonable or excessive.
In the time since you posted this, the creator of Freenet has started a new project under the same name that, unlike the old Freenet (now called Hyphanet), can host dynamic websites with comments and everything. In fact, blogging is provided as an example use-case in the docs.
Just write a “cryptographic contract” that allows publishing by a single key and commenting by anyone. No need for “incentivising”. Although you would probably want some sort of moderation.
https://freenet.org/
The advantage of this approach is that dishonest behaviour such as shadowbanning is impossible by default. Also, experimental forms of moderation become possible, such as i.e. democracy (see https://getaether.net/ for how that can work) but many blog authors might not want that.
I had a look into Locutus and mentioned it in a recent okTurtles Status update: https://blog.okturtles.org/2023/08/turtles-status-letter-5/#tech
I am curious though, how does using just a DHT make information available that only has a single peer hosting it? What if that peer is offline? Is the blog down?