- Patched a bug preventing the upload of a custom avatar.
Still hard at work on LegendKeeper's new sync model! It's looking good so far in the development build; smooth offline support, better syncing across clients, and significantly increased performance. Excited to finish it and get it out to you so we can build the Community update. :)
So far, I've got the Wiki and Atlas working offline, including @-mentions, title searching, and auto-linking. I'm currently working on solutions for offline full-text search and asset management. The only thing that ultimately won't have offline support is the map processor itself; LK has an intense cloud pipeline that's hard to move to the client. Once your map is processed, though, your client should be able to download and cache all your map tiles for offline use--the current client does this already to some extent.
Why the change?
If you are primarily an always-online user, you may not see the benefit of all this effort for offline support, and I think that's a reasonable thought to have. The last decade of web apps have been rife with software that's online only; I have a few thoughts on that I'd like to share with you. These changes benefit everyone in one way or another, whether it's through better performance or better ownership of your data.
Ultimately, offline support is a convenient side effect of a deeper change. LK's new sync model makes the client "sovereign" with respect to your creative content. That is to say, the client becomes like a traditional desktop app; it no longer needs to consult the server to determine what the next state is. In a more traditional web application, and LK's current form, you tell the server what you want to do, and then the server tells you what happened.
Let's say you make a new article.
Client: "Hey server, make me a new article named Dragon."
Server: "Here's a new article named Dragon! You can edit it now", or more rarely "Sorry lol server not responding" or "Sorry, your internet is down".
Client: I want to autolink! Can you tell me if you recognize any of the names in this article?
Server: Sure, I see "Dragon", "Sword", and "Goblin" here.
This traditional server-client way of doing things is pretty easy to create: there's one authority, the server, but it requires the ability to communicate with that authority in order to get anything done.
In the New Way, the client is fully-featured enough to make decisions on its own, and then broadcast the changes to other clients, who then reconcile the changes with their own and re-broadcast their changes, and so forth. There's still a central authority, the server, but it's sole job is to validate and pass messages between clients. It's not making many decisions anymore, besides backups and authentication/permission checks. If you've used an application like Figma before, you'll be familar with this experience.
But really, why? I think this article sums it up nicely, but it's a long one. I'll link to the important bits:
- No loading spinners: your work at your fingertips
- Your work is not trapped on one device
- The network is optional
- Seamless collaboration with your colleagues
- The Long Now
- Security and privacy by default
- You retain ultimate ownership and control
I think any serious application that assumes responsibility over your hard-work and creative output owes it to you to provide an experience like this. This doesn't come without tradeoffs; building a collaborative app this way is way harder! But the tools are getting better, and I've proven to myself with LK's development build, which implements these 7 criteria, that it's just a better experience overall.
The data being local also makes sharing a lot easier. Instead of awkwardly copying and joining a multitude of database rows, trying to protect the integrity of originals and manage permissions across tens of thousands of copies, we can treat every template, every map, every document, as a copyable value that can flit across the network, ready to be edited by you as your own. We think the new sync model will make Community absolutely killer.
The similarities to an old-school desktop app aren't illusory. I've cut a Mac desktop build of LK with the new sync model and it runs great; I assume the Windows build would be just as good. The cool thing about desktop builds is that it opens up the ability to use more powerful tools down the line as well; automatic file backups, more intense calculations and processing, GPU-enhanced rendering, all sorts of stuff. But that's for later ;)
Anyways, that was a lot, but the more I see LK in this new light, the more I'm convinced that this will lead to the ultimate user experience for creators. I want you to feel comfortable unleashing your creativity, knowing that what you make belongs to *YOU*, and not some rando business's server in the cloud somewhere.
Happy holidays! Stay safe!