>fatchan is out
I think at this point I've seen people forced to migrate enough times that something has to be done about that. This is something I've thought about before a little bit, but not very seriously because I haven't seen good examples of distributed systems, particularly the ability to moderate them.
I want to integrate some kind of backup mechanics and fallbacks to NIBS to at least alleviate this problem, and the solution I'm currently thinking of is a type of federated server network. I suck at terminology so I'm just going to invent a new term by calling it KSM (Key Server Mirroring) for now.
The idea is that you have one single "key" server, and it can share all of it's content with "mirror" servers in real time. The software on both is identical, the only difference is how they handle input/output based on what mode they're on. Anyone can set up a mirror server and mirror any key server that they want, and the imageboard will be accessible through any mirror server as well as the key server. Mirror servers cannot "commit" new posts though, only pass it on to the key server for confirmation.
A key server can mark mirror servers as it's "successors". In the event that the key server goes down for ~24-48 hours (debatable), the highest priority successor mirror server will switch itself to key server mode, and all users and mirror servers will automatically switch to that as the new key server. Since it's mirroring all the content, all the posts and files and such will already be there, and the migration process is completely seamless and automatic for everyone (ignoring possible complications with moderator accounts). The key server can also voluntarily release itself from duty and automatically assign a given mirror server as the successor. Any mirror server will be able to turn into a key server at any point in time, but unless it's the highest priority successor of a key server that's been down for a while, it will create a new separate forked imageboard and nobody will switch to it automatically.
While mirror servers cannot host their own boards, I'm thinking about treating /servermeta/ or something as a special board that will never be mirrored, instead it's something that will always be tied to the server and thus mirror servers can have their own as well if they want.
I think in some sense it's similar to Robi's Final Solution, except only one server is in control at one time, there's no different types of views into the same board.
In terms of implementation, there shouldn't be huge differences to how I planned to do things anyway, mirroring is just a slight expansion of the auto-update and "tell me what happened after X" mechanics, and keeping track of servers and switching between them is trivial.
ALSO it might be possible to turn this system into a distributed system with small tweaks (basically any mirror server will be able to "commit" content, and they'll also accept content from any other mirror server), though I'm not sure how moderation would work with that, and you'd have to change the way post numbers work.
Speaking of moderation, I wonder if you could use some kind of irreversible cryptography to create moderator account passwords that work across servers without anyone being able to know the original password (except the server you send the password to).