I think this gets to the heart of where our views differ. The way I see it, people use this site because they want a community where everyone is operating on the same "rules of the road" that they like. It's more than just having your personal trust in the head moderator set to 100%.
All right, this is a fair point. I only really hint at it in the OP, but I don't see this as a competitor to "managed" forums, where there is an obvious intention to cultivate a certain type of atmosphere.
I see this more as an entrant in the niche of "generic" communications platforms - Twitter, Fediverse, 4chan, reddit, 9chan - where there is no real "goal" other than "post what you want and read what you want".
That being said, you may have a point, and 8chan/reddit-style "owned boards" would at least be technically feasible (see spoiler above). However, at that point most of the benefits of decentralization are lost. At the very least, there would be social aspects of it that you would have to figure out.
I think having an archive is exactly the point, especially at a place like this where archive-diving is the national sport.
I don't think the retention would be as poor as you suggest, but I don't think it's at all possible to theoretically analyze it without testing it in practice, so let's agree to disagree on that one.
If we want a non-archived discussion place there are plenty of bad solutions already available, as you mentioned.
At any rate, it's easy to create something that looks like a forum if you're willing to hand-wave away the tricky parts. But I think those tricky parts are actually key aspects of the experience.
Wait, what would those be? To my knowledge, all existing forums fail on at least one of these three:
- Censorship-resistant (decentralized)
- Spam-free (really, spam is a form of censorship)
- Usable (don't need special ISP, gigabytes of storage, etc)
In fact, here's a question: what do you consider the essential features of a forum to be?
Very good question.
A forum, to me, is just a place where you can talk to others. That being said, there are of course
specific forums, which have a bigger goal than that - such as this one, where there are conscious decisions to ban unpleasant users and so on. But for a
generic forum, I don't think there are any high standards for content moderation.
Take 8chan, for example. The only global rules on 8chan were:
- No content that violates US law.
- No sexualization of minors.
I can't see how
that fosters a community spirit either. And yet 8chan felt like a community.
I agree with
@Ridley: while interesting, this is over-engineered. No-one's going to download and run a Python program just to shitpost about trannies. Plus it effectively excludes phoneposters (this may not be a bad thing).
To be honest, you're not wrong here in general (though see above, for notes about web gateways), but I'm not sure it would continue to be true in a total censorship apocalypse scenario. Like, at that point they would either have to download the software or stop posting.
As for phones, I think that's like the one UX ray of hope. Phoneposters already download apps, and it wouldn't be hard at all to port the client into an APK and upload it to F-droid. Data usage should be very modest after the first sync, and definitely on par with normal web browsing.
You're also fixing problems the Farms doesn't really suffer from, namely spam and poor moderation.
That's because KF is centralized. If you can centralize, these problems are not difficult, and I agree that KF does not have these problems currently (nor is it likely to, in the future)
I've been giving some thought to a similar issue, i.e. how to make a troon-resistant KF. I'm wondering if it's not insane to do away with the database entirely, and store all posts in Git, and all rendering etc. done by JS in the browser. This would mean:
* It's trivial for anyone to take a local copy of the forums ("git pull"), and trivial to restore a backup
* Reading threads just involves reading static files, which is as fast as things can possibly be. There's no reason why the server should waste resources in e.g. choosing the random_text.txt message, when this can be off-loaded to the user. There'd still be a script to handle posting and anything else that changes the repo.
* Because everything has a Git hash, you can use this as an HTTP ETag, make everything very cachable.
* You can use service worker shenanigans to download a whole thread to read offline, and so on
* If there's ever a DDOS attack, Josh can shift the whole thing into read-only mode, rather than the whole thing being forced online. Look at how the static "sorry" pages are usually fine, even when the site is being hammered. PHP and DBs are both resource-intensive.
* If the whole thing collapses, someone can just take a recent snapshot of the repo and declare that to be the new Kiwi Farms
Obvious problems include how you handle searching, and what you do about stuff like passwords.
I've never seen anybody use Git as a database, so I don't know if this is retarded or not.
I really don't think that's viable. What you have there is basically a static snapshot that's constantly updated. So you will still need infrastructure to receive posts, and won't solve any of the fundamental issues:
- You will need multiple terabytes of disk to download the full archive, because that's how big it is
- If you stream the archive on-demand, you've basically reinvented the concept of client-server requests
- Exposing the database as a torrent if the site goes down permanently is already planned
- Having a read-only copy of the site to browse during attacks is not a significant improvement over the status quo with the onion.
Basically, as long as the entire thing has to be serialized into a single database based on non-public information, there is going to be a single point of failure no matter what you do.
Even under the status quo, KF could rent a new server somewhere, do streaming replication onto that one, and then allow anyone who wants to set up their local MySQL server to do streaming replication from it. Alternatively, you could share WAL logs over BitTorrent, it wouldn't be hard.
But what's the point? A read-only mirror just does not buy you that much. I want to
post, god damn it, and if I can't post at least I want to be able to read others' fresh posts. If you wanted to do it, a better starting point might be this:
- Take all ~13.4 million posts
- Assume average of 200b each
- Gives ~3GB
- Write all posts into columnar database
- Compress it really hard with something like squashfs + xzip
- Copy over the backend infrastructure and compile it to WebAssembly
- Stream all of this shit over WebTorrent
This would work, sort of, but it's not really clear what you gain from it, and it would be a
lot of effort to implement properly.
If you could have custom error pages, it might make more sense to take the ~1000 most visited pages, compress them hard, and then expose those as JS so the site at least looks kind of online. But I strongly doubt that's viable, there are size limits and so on.
There are some similar ideas which have been tried by the (sadly dead) project ZeroNet, I encourage you to check those out. But they use one database per user, and then the client joins them together, which has significant advantages.