This is the Devlog for Lark, a realtime database that aims to enable interactivity for everything in the modern era. Here you'll find some behind-the-scen...
Today we're releasing Lark as an open-source project under the AGPL v3. The code is up at github.com/lark-sh/lark , and it's the same code that runs Lark Cloud right now. (Note that using Lark to store your application's data doesn't put your application under the AGPL. Your app talks to Lark over the network the same way it would talk to Postgres or Redis. Build whatever you like on top of it.)…
Firebase launched a long time ago in a different Internet, one where Websockets were a relatively new feature for web browsers and support for them couldn't always be assured. Because of this, Firebase also includes support for a connection type called "Long Polling." This is where you issue a series of normal HTTP requests in a series which approximates the ability to send messages back and forth…
Lark is a realtime database with a Firebase-compatible API, and the obvious way to build something like that is the way Supabase did it, where you write the realtime layer and the auth and the rules engine yourself, and then put all of it in front of a storage engine that already exists and already works. Postgres has been keeping people's data safe for thirty years and I have not, so that seemed…
One of the core promises of Lark is that if you've got an app running on the Firebase Realtime Database today, you can point it at Lark by changing a single line in your config and everything keeps working. The Firebase JS SDK connects to us directly and doesn't know the difference. That's a simple thing to say and a much less simple thing to actually deliver. It means we don't get to implement…
When I set out to build Lark -- a Firebase Realtime Database alternative -- I had one non-negotiable requirement: predictable, low latency. My goal was to keep internal p99 latency at less than 50ms, and p50 latency at less than 10ms. That single requirement led me through three distinct architectures before I found one that worked, and taught me several lessons that might prove useful to others…