TLDR; Sync is dead. Long live sync.
I am hopeless when it comes to keeping up with the latest tech news these days. This morning I was going back through my feeds from the past week, and came across a story that you undoubtedly already read about days ago: Realm has been acquired by MongoDB.
Today I posted my belated take in a Tweet-rade, and got plenty of interesting reactions. The general consensus was that Realm lost out to Firebase in the end. Probably true — it’s difficult to go up against the Google behemoth.
My personal take is that Realm also took their eyes off the ball to some extent, concentrating so much on their marketing and other ventures (eg Realm Academy), that they neglected their core product. They added sync very late in the game, when it should have been their big selling point from day one. But hindsight is a wonderful thing.
So are we now looking at an era of Firebase dominance? For a while maybe, but I’m thinking it may be the end of an era, not the beginning. See, sync is dying. Firebase is not the conqueror, it’s the last of a generation.
When I say “sync is dying”, I mean sync in the way developers currently use it. A developer can spend months writing and testing code to communicate with a web service, generally reinventing the wheel time and again. Most apps contain very similar code for this, all designed to deliver effectively the same outcome.
Frameworks like Firebase make this less painful by sparing you from the low-level networking, and removing the need to write a custom server, but the mechanics remain much the same: your app communicates over a network with a single central service, which stores the data, and coordinates with other devices.
The approach of using a server or cloud service as a central store is slowly coming under pressure. Growing privacy concerns; the desire to own your data, and store it where you like; blockchains; and mesh networking (including Bluetooth devices and app extensions) are just some of the trends that point to a more decentralized, distributed future for data.
And for our customers, sync has been dead for a while. Few still think about devices syncing; data is just expected to be everywhere it is needed. Where that data is stored is inconsequential — it feels like one big data store. In fact, if a customer notices your app “syncing”, it is usually a bad sign.
And just as customers think of it all as one big heap of data, it’s becoming less and less useful for developers to think of individual devices “syncing up”, and better to think about data globally, as a decentralized repository. Changes you have made on your Watch, and which migrate to your iPhone through Bluetooth, should be treated the same as data arriving via a cloud service like iCloud, or peer-to-peer over WiFi from your iPad. One big decentralized store, with data flowing every which way, and through any route available.
In startup lore, one way to disrupt an industry is to commodize the existing offerings, making them worth less, and adding your own value proposition in a completely different area. Microsoft famously did this to IBM in the early digital age. Nobody cared if they had an expensive IBM PC, or a cheaper clone from Compaq, because all that was important was that it ran Windows. The hardware became less and less relevant — it was commoditized — and Microsoft got rich. IBM moved on.
I bring this up, because it feels like there is room for disruption in the world of data. Up to this point, you made your money by selling online storage and resources. And you locked developers in to your product by making them use a proprietary API. In the case of Firebase, you have to infuse your whole code base with the Firebase modeling API. If your app should become very popular, and you start to find Firebase performance is no longer cutting it, or it is getting too expensive, you don’t have many options. An extensive code rewrite is in order if you want to move elsewhere.
If it isn’t clear yet, Firebase is IBM in this picture, and we need a Microsoft to come along and break it all wide open. Such a challenger would not compete directly with Firebase at all. They would build on top of it, and other similar services, just like Microsoft did back in the day.
The next generation of data startups could disrupt the current generation by making storage and transport largely irrelevant. There is room there for a new abstraction, one that works with any type of storage (eg SQLite, PostreSQL, MongoDB, Firebase, S3, Dropbox, CloudKit); on any platform (eg iOS, Android, Windows, macOS); with any transport mechanism (eg file system, HTTP, Bluetooth, peer-to-peer); and with any modeling framework (eg raw JSON, Swift Codable, Core Data).
That is where I expect the next breakthrough to come, whether it be via the open source community or some startup. And when it comes, we can all stop worrying about being locked in to particular storage providers. Storage will become a commodity. We will be able to pick and choose, spreading out our app data across as many services and communication channels as desired. And never give “sync” another thought.