Yes. :P I think rather than a list, we have a journey.
It starts here: it's tempting to use Couch -- hey, it looks like it buys us a lot for free. Replication, object storage, client libraries, looks like a fit for a record-oriented data model. Records are a bit like documents, after all. OK, but we won't want to expose our Couch cluster to the world. For one thing, we might need to switch backends for operational reasons. And we almost certainly need to put some logic in a server -- validation, auth, buffering, consistency, monitoring, attack mitigation, security auditing. So we build a server in front of it. But maybe for now we can start with plain Couch. Also, we can't use off-the-shelf replication (either client-server or server-server), because we can't control local space usage, OK, so we build our own Couch Protocol client, right? That'll let us control how we move data around. But we can't just use the Couch Protocol. It doesn't give us the guarantees we want to achieve performance, consistency, and safe structural manipulation -- ordering of records, collection deltas -- and we'd also need to extend it for auth, for not-yet-fleshed-out app-specific semantics, for collections. A few steps down this road and we've got Couch… only not a Couch server, speaking not the Couch protocol, and not using Couch clients. So we come down to two or three things, all of which I think are sane: * Using Couch as server-side storage. I leave this up to Ryan's excellent judgment. * Taking some inspiration from the Couch protocol (even to the extent of being able to build a client-side adapter to talk directly to Couch; basically implementing the server layer/custom protocol directly in the client). * Maybe, for the set of totally independent datatypes (which is very small) for which we're OK having a full local replicated copy and server-side conflict management, using Couch as another data storage backend. If I were writing Deb's task list app, I'd be really tempted to just say "screw it, let's dump it into Couch and let the protocol sort it out", if that buys us anything. I'm fairly confident that we can end up with a pretty slim server (which'll make Ryan happy), and a blob exchange protocol that isn't light years away from Couch's (which'll make Chris happy), on which we can build a consistent, robust, and performant syncing architecture (which'll make me happy). Does that answer your question? -R On 24 Jul 2013, at 10:08 PM, Lloyd Hilaiel <[email protected]> wrote: > I imagine tomorrow at the design review we'll want to spend some time talking > about CouchDB. > > If you had to summarize all the unknowns, or areas of concern, would they > fall into this list? > > # Structured data (bookmarks!) > # Protocol Limitations > # Client resource usage > # Data Representation > # Scalability > > ? > > lloyd > _______________________________________________ > Sync-dev mailing list > [email protected] > https://mail.mozilla.org/listinfo/sync-dev _______________________________________________ Sync-dev mailing list [email protected] https://mail.mozilla.org/listinfo/sync-dev

