<div dir="ltr"><div>Oh, </div><div><br></div><div>did you get a chance to read the mail/gist from Fabrice?</div><div><br></div><div>* <a href="http://aerogear-dev.1069024.n5.nabble.com/aerogear-dev-Conflicts-amp-Reconciliation-td6026.html">http://aerogear-dev.1069024.n5.nabble.com/aerogear-dev-Conflicts-amp-Reconciliation-td6026.html</a></div>
<div>* <a href="https://gist.github.com/fabricematrat/8666682">https://gist.github.com/fabricematrat/8666682</a></div><div><br></div><div>-M</div></div><div class="gmail_extra"><br><br><div class="gmail_quote">On Wed, Jan 29, 2014 at 4:41 PM, Summers Pittman <span dir="ltr">&lt;<a href="mailto:supittma@redhat.com" target="_blank">supittma@redhat.com</a>&gt;</span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">I&#39;m going to take some time to roll up yesterday&#39;s Sync Thread so we can<br>
stop chasing down individual ideas.<br>
<br>
Also I am going to propose a potential milestone conga line.  I think<br>
one of the things that keeps happening in these discussions is everyone<br>
has an idea of what sync is but we don&#39;t really know what order things<br>
should be done or released in.<br>
<br>
If everyone likes this I&#39;ll slice things into JIRA epics.<br>
<br>
# M1 - Basic revision Control, Data Model, Change Management, Server &lt;-&gt;<br>
Client Contract<br>
<br>
  * We seem to be in agreement on a basic set of metadata to be kept for<br>
each object.  [objectId, revision, object].<br>
  * We should have a basic server definition which supports CRUD and<br>
keeps our revision numbers in check.  This may not be a server product<br>
but just a spec that can be implemented by anything at this point.<br>
  * We should have basic client code which keeps up with revisions, can<br>
check the server for new revisions, and alert the user if there is a<br>
sync conflict.<br>
<br>
<br>
M2 - Sync Listener w/ Polling based sync listener, conflict management,<br>
Serve user management<br>
  * We define on the client how callbacks will work for alerts when<br>
remote data changes<br>
  * We implement a listener which polls a data source and delivers<br>
changes to the user.<br>
  * We define how conflicts are managed<br>
  * The server should have a basic authentication and authorization plan<br>
for controlling how data is synced<br>
<br>
M3 - Push based Sync Listener, Network Management, Serverside session<br>
management<br>
  * We will build on our previous Listener work from M2 to include a<br>
Push listener that the server can speak to.<br>
  * We will define in the client how network state and sync state<br>
interact.  IE how to handle errors in fetching new data when the<br>
Listener is alerted. (Exponential back off, retry, etc)<br>
  * The server will need to have some mechanism for managing user<br>
&quot;sessions&quot;.  This is what users are actively being synced.<br>
<br>
M4 - &quot;Real Time&quot; Sync Listener.  Bidirectional automatic sync<br>
  * Instead of using push, Realtime Sync uses something like web<br>
sockects. to automatically sync local and remote data.<br>
  * Previous Sync listeners may have to be upgraded to include &quot;upload&quot;<br>
abilities.<br>
  * The server will need to support this as well.<br>
<br>
M5 - Conflict resolution, Error detection and support<br>
  * Provide a more comprehensive strategy for managing conflicts.<br>
  * Provide some automated conflict resolvers<br>
  * The server could get a larger set of conflict and errors messages<br>
<br>
M6 - Sync connection Upgrading<br>
  * The client and server will negotiate when it is appropriate to<br>
switch between polling, push, and realtime sync strategies.<br>
<br>
M7 - Party<br>
  * We have a sync party.<br>
_______________________________________________<br>
aerogear-dev mailing list<br>
<a href="mailto:aerogear-dev@lists.jboss.org">aerogear-dev@lists.jboss.org</a><br>
<a href="https://lists.jboss.org/mailman/listinfo/aerogear-dev" target="_blank">https://lists.jboss.org/mailman/listinfo/aerogear-dev</a><br>
</blockquote></div><br><br clear="all"><div><br></div>-- <br>Matthias Wessendorf <br><br>blog: <a href="http://matthiaswessendorf.wordpress.com/" target="_blank">http://matthiaswessendorf.wordpress.com/</a><br>sessions: <a href="http://www.slideshare.net/mwessendorf" target="_blank">http://www.slideshare.net/mwessendorf</a><br>
twitter: <a href="http://twitter.com/mwessendorf" target="_blank">http://twitter.com/mwessendorf</a>
</div>