Deprecating the Sync and Datastore APIs
blogs.dropbox.com
blogs.dropbox.com
http://developer.couchbase.com/mobile/
Basic feature set: local storage and query, binary attachments, background sync, fine grained access control. Also goodies like webhooks and p2p capabilities.
When Sync Gateway came along things got complicated (to me). Mostly because of another component to deploy, monitor etc. Did you consider bundling Sync Gateway into a Couchbase server, even if only for dev/staging environments?
We built Sync Gateway because the Apache CouchDB access control model wasn't fine grained enough for most apps, so it adds a data routing function to control sync access. (See link downthread).
Thanks for the feedback about simplicity. Our next release makes the Sync Gateway default config a lot more beginner friendly and even today we ship with a dev mode that uses a tiny embedded database instead of a Couchbase Server cluster for storage.
I would gladly use their datastore apis if I could avoid having my users go through the hassle of authenticating to dropbox on their own and instead put it into my enterprise storage.
Firebase does work offline if your app loses network connectivity temporarily (details here: https://www.firebase.com/docs/web/guide/offline-capabilities...). All data written while offline is stored in memory and is synced to the Firebase servers when your client reconnects. We’re working on improving offline support when your app goes into the background, and we currently have a beta version of this available for our iOS (https://groups.google.com/d/msg/firebase-talk/dOocEtjQz4w/ss...) and Android (https://groups.google.com/d/msg/firebase-talk/gYlnLgQ-Yhk/It...) SDKs.
Data syncing is hard and so far i've only seen two possibilities : roll your own solution using the fact that you have a knowledge of your business that will help you be smart and small, or use a generic solution but take some time to understand deeply its way of working before you build your real product.
I actually had to cancel what i thought would be a short angular/firebase project after two days struggling to sync one big nested data structure displayed on a page, and realizing i actually had to rethink my model from scratch to fit the technology (which ended up being completely overkill for my need anyway).
Dropbox reached out to me a while ago when my product got on HN to use their Sync APIs.
It's easy to lambast someone because someone didn't want to rely on another's API but it's a very good point to bring up. Big companies such as Google regularly kill things people use and start-ups are encouraged to think fast, test fast; I have a hard time wanting to rely on either for my business.
This behavior has a double benefit to the API provider, because it potentially turns would be direct competitors who would otherwise work on an alternative to its core technology if not provided with an API into unpaid new product idea validators that leave the API provider the option of crippling their product at will. That's a lot of competitive advantage, especially in markets dominated by network and first mover effects.
As a developer, it's prudent to be skeptical of closed API providers, because developer time is valuable, and the incentives of API providers and consumers are not aligned.
An API has to be extremely valuable in order to overcome these structural issues, and it appears that developers didn't regard these APIs as sufficiently valuable. So in my mind, the blame for this failure doesn't lie with the developers that failed to use the APIs, but with the company that didn't provide a sufficiently attractive API.
[1] http://www.lifehacker.com.au/2013/03/how-many-users-does-goo...
I would be interested in what this help means concretely for developers. I imagine Dropbox has limited interest helping small developers who might have used this API.
Concretely, it means we emailed everyone by hand with a Datastore API app that had a non-trivial number of users and offered to help. (If anyone didn't get an email, you might only have a couple test users, but feel free to reach out to us yourself.)
With most developers who respond, we're digging into their data model and trying to suggest alternatives (possibly files in Dropbox or possibly alternative services like Parse and Firebase).
A few years later
"Nevermind, you'll need to build sync yourself. We believe in you!"
Is this a fair assessment?
If you have an app that's using the Sync API, feel free to reach out to talk specifics.
1) Dropbox's API was not designed correctly the first time. It should not just be a representation of their internal stuff exposed publicly. It needs to be designed first. 2) Dropbox is struggling to understand the difference between providing a consumer product (like their normal Dropbox product) and a developer product, like this API.
I can't believe they got Guido van Rossum (creator of python) to write javascript though! https://github.com/dropbox/datastore-js/commit/e75e67eccecfd...
Why not open sourced the mobile sdks for sync/datastore also?
Don't they use the sync api?