That is what I suggested, but then at the same time connect that to pipes and stores, but we can start even simpler and first develop something like this.

On 11 Dec,2013, at 10:37 , Daniel Bevenius <> wrote:

First, I appreciate the discussion in this thread as this is all new to me.

> What use cases should we support first?
I'd be for looking into the document use case first, and hold off with the transactional/Operational Transformation one for now. This mainly because is seems to be a lot simpler. 

qmx suggested using something similar to CouchDB. CouchDB uses a revision field for each document to handle/detect conflicts. 
The following is a concrete example of how this works with CouchDB:

Create a database:
curl -X PUT

Get a uuid:
curl -X GET

Create a car object(document) using the above uuid:
curl -X PUT -d '{"car": {"make":"Toyota", "color":"red"}}'

Notice that the server returned a new document revision.

Now clientA updates the car object, notice that we are specifying the document revision:
curl -X PUT -d '{"_rev":"1-dffbd1dbd1b9ecbffc1b02a34cbaea0b", "car": {"make":"Toyota","color":"blue"}}'

Also, notice how the server returned a new document revision.

Now, clientB still has the old revision and tries to update the car object:
 curl -v -X PUT -d '{"_rev":"1-dffbd1dbd1b9ecbffc1b02a34cbaea0b", "car": {"make":"Toyota","color":"yellow"}}'
< HTTP/1.1 409 Conflict
{"error":"conflict","reason":"Document update conflict."}
This conflict would the have to be handled by the client. Could we start out with something similar and as simple as this and evolve it?  

On 11 December 2013 08:30, Erik Jan de Wit <> wrote:
> Just because I want to start with a simple use case doesn't mean you can
> dismiss the use case.

I donít want to dismiss anything just wanted to know what you think about my idea to combine a pipe and store to create a pipe that continues to work when the user goes offline. Obviously you donít feel my idea makes any sense and I think that you sync isnít a super powerful feature to have (there are to many pre conditions in my opinion), but we could have it, not dismissing it.

What do others think about this discussion? What use cases should we support first? Can you think of other ways/things to sync?
aerogear-dev mailing list

aerogear-dev mailing list