@timdaub.eth
A note on why Kiwi News has such an "weird architecture."
# What's KN's architecture?
KN is basically run as a multi CPU backend on a big VPS. Its databases are all embedded (sqlite, lmbd). No third party service has to be run on the same machine to run Kiwi News. KN generally just integrates with openly accessible third party APIs. KN itself is really slow if you run it on a local machine. It needs a reverse proxy caching layer. And it wouldn't scale the same way e.g. a Vercel-deployed app would. At least not for writes. KN scales by putting a simple Cloudflare stale-while-revalidate cache worker in front of the VPS. For reading users this gives pretty decent scalability.
# KN mobile app architecture
This is also a reason for why we chose to implement the KN iOS app as essentially a website run in an embedded Safari window. This way we are guaranteeing to any future forker that there is no magic in the iOS app that is hard to replicate elsewhere. Meaning that the code that is responsible for most of the user's experience is all just a web site renderer anyone has always access to, whether they have access to the iOS repository or not.
# Why did we do this?
We anticipated early on that Farcaster's main iOS and Android apps not being forkable (closed source), will lead to a scenario where those who control the apps will always be in charge of the protocol itself, making the protocol merely a voluntarily run "REST API" that could be turned on or off at will for those who control the main client. This is strangely reminiscent of how Twitter had plenty of alt clients until they shut down the HTTP API.
But beyond just open sourcing the main client, I'd say there are problems that Kiwi News also doesn't solve. E.g.: push notifications and other ways to inform users about what's happening on the network are retention tools. And these the users are subscribing to on the main client. So even if the main client was easily forkable, it would still be hard to convince users to download another app, reenter the seed phrase and subscribe to all push notifications.
Kiwi News has taken a bunch of measures to make the above easier. But we are still far from solving this, to be completely honest. Here are things we think are helpful:
1. Kiwi News users are controlled by the user's Ethereum wallet. Meaning a user doesn't have to re-enter the old client's seed phrase into a new app.
2. The identity layer isn't run by KN itself. For now we have used FC ID, ENS, and Lens when it was still around. If there was another major ID layer, we'd just also integrate with it.
Anyways, all this said, I don't want to claim here that KN has solved this problem. In fact, I want to signal here that we're probably just really early in a process of de-centralizing social media. iOS and Android are defacto not made to support smoothly transitioning from an old client to a new client. Users actually have the responsibility of voting with their feet by engaging with a quite laborious process. Inevitably this means churn for the network on every fork, which doesn't feel like a sustainable dynamic.
I don't have any stake in who forks whom on Farcaster. It doesn't matter to me other than that it's a personal learning opportunity. I think the fork experiment is fascinating though. Farcaster needs more variance. It should be tried because it advances the plot