<div dir="ltr"><br><div class="gmail_extra"><br><br><div class="gmail_quote">On Thu, Jan 30, 2014 at 9:40 AM, Corinne Krych <span dir="ltr">&lt;<a href="mailto:corinnekrych@gmail.com" target="_blank">corinnekrych@gmail.com</a>&gt;</span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="im"><br>
On 30 Jan 2014, at 09:38, Matthias Wessendorf &lt;<a href="mailto:matzew@apache.org">matzew@apache.org</a>&gt; wrote:<br>
<br>
&gt;<br>
&gt;<br>
&gt;<br>
&gt; On Wed, Jan 29, 2014 at 8:31 PM, Corinne Krych &lt;<a href="mailto:corinnekrych@gmail.com">corinnekrych@gmail.com</a>&gt; wrote:<br>
&gt; Hi All,<br>
&gt;<br>
&gt; #agreed Good to have a plan with associated JIRA to help keep the focus on sync.<br>
&gt;<br>
&gt; +1<br>
&gt;<br>
&gt; For v0.1, I&rsquo;d like to have a demo app epic (recipe app). it would be nice to agree on same demo app (to make sure more or less same features are implemented). I&rsquo;ve started with Buddies&rsquo;Hobbies app from Luke[1], I&rsquo;m planning to add to ios-cookbook for our initial sync.<br>

&gt; Ok to add a demo JIRA for that? or any better idea for demo app?<br>
&gt;<br>
&gt; You mean a demo app in addition, right?<br>
<br>
</div>Yes, a demo app to test our use cases for v0.1<br>
keep it simple like Luke&rsquo;s demo<br></blockquote><div><br></div><div>yeah :-) I agree&nbsp;</div><div>&nbsp;</div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div class="im"><br>
&gt;<br>
&gt;<br>
&gt; To me v0.1 and v0.2 could be grouped together.<br>
&gt; v0.2 should be without auth and authz to stay focus on pluggable confilct mgt and sync/reconciliation trigger(or listener)<br>
&gt;<br>
&gt; hrm, not sure tbh<br>
<br>
</div>Not sure for what grouped 0.1/0.2 or v0.2 without Auth Authz?<br></blockquote><div><br></div><div>not sure on the grouping</div><div>&nbsp;</div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

<div class="HOEnZb"><div class="h5"><br>
&gt;<br>
&gt; v0.3 could be focus on auth/authz<br>
&gt; and then as you stated<br>
&gt;<br>
&gt; Another important thing to help collaborative work would be to agree on vocabulary. I like the terms used by Fabrice in its gist[2] like confict and data set reconciliation (in v0.1 we stick to wholesale transfert).<br>

&gt; In spec doc we should refine vocabulary, let&rsquo;s have a JIRa for that too&hellip;<br>
&gt;<br>
&gt; While you&rsquo;re at planning task summers (doing the Epics) maybe it could be a good idea to start a sync roadmap page in <a href="http://ag.org" target="_blank">ag.org</a>[3]?<br>
&gt;<br>
&gt; ++<br>
&gt; Corinne<br>
&gt; [1] <a href="https://github.com/lholmquist/ag-js-ds-poc" target="_blank">https://github.com/lholmquist/ag-js-ds-poc</a><br>
&gt; [2] <a href="https://gist.github.com/fabricematrat/8666682" target="_blank">https://gist.github.com/fabricematrat/8666682</a><br>
&gt; [3] <a href="https://github.com/aerogear/aerogear.org/tree/master/docs/planning/roadmaps" target="_blank">https://github.com/aerogear/aerogear.org/tree/master/docs/planning/roadmaps</a><br>
&gt; On 29 Jan 2014, at 18:11, Summers Pittman &lt;<a href="mailto:supittma@redhat.com">supittma@redhat.com</a>&gt; wrote:<br>
&gt; &gt; On 01/29/2014 11:18 AM, Lucas Holmquist wrote:<br>
&gt; &gt;&gt; On Jan 29, 2014, at 10:41 AM, Summers Pittman &lt;<a href="mailto:supittma@redhat.com">supittma@redhat.com</a>&gt; wrote:<br>
&gt; &gt;&gt;<br>
&gt; &gt;&gt;&gt; I&#39;m going to take some time to roll up yesterday&#39;s Sync Thread so we can<br>
&gt; &gt;&gt;&gt; stop chasing down individual ideas.<br>
&gt; &gt;&gt;&gt;<br>
&gt; &gt;&gt;&gt; Also I am going to propose a potential milestone conga line. &nbsp;I think<br>
&gt; &gt;&gt;&gt; one of the things that keeps happening in these discussions is everyone<br>
&gt; &gt;&gt;&gt; has an idea of what sync is but we don&#39;t really know what order things<br>
&gt; &gt;&gt;&gt; should be done or released in.<br>
&gt; &gt;&gt;&gt;<br>
&gt; &gt;&gt;&gt; If everyone likes this I&#39;ll slice things into JIRA epics.<br>
&gt; &gt;&gt;&gt;<br>
&gt; &gt;&gt;&gt; # M1 - Basic revision Control, Data Model, Change Management, Server &lt;-&gt;<br>
&gt; &gt;&gt;&gt; Client Contract<br>
&gt; &gt;&gt;&gt;<br>
&gt; &gt;&gt;&gt; &nbsp;* We seem to be in agreement on a basic set of metadata to be kept for<br>
&gt; &gt;&gt;&gt; each object. &nbsp;[objectId, revision, object].<br>
&gt; &gt;&gt;&gt; &nbsp;* We should have a basic server definition which supports CRUD and<br>
&gt; &gt;&gt;&gt; keeps our revision numbers in check. &nbsp;This may not be a server product<br>
&gt; &gt;&gt;&gt; but just a spec that can be implemented by anything at this point.<br>
&gt; &gt;&gt;&gt; &nbsp;* We should have basic client code which keeps up with revisions, can<br>
&gt; &gt;&gt;&gt; check the server for new revisions, and alert the user if there is a<br>
&gt; &gt;&gt;&gt; sync conflict.<br>
&gt; &gt;&gt;&gt;<br>
&gt; &gt;&gt;&gt;<br>
&gt; &gt;&gt;&gt; M2 - Sync Listener w/ Polling based sync listener, conflict management,<br>
&gt; &gt;&gt;&gt; Serve user management<br>
&gt; &gt;&gt;&gt; &nbsp;* We define on the client how callbacks will work for alerts when<br>
&gt; &gt;&gt;&gt; remote data changes<br>
&gt; &gt;&gt;&gt; &nbsp;* We implement a listener which polls a data source and delivers<br>
&gt; &gt;&gt;&gt; changes to the user.<br>
&gt; &gt;&gt;&gt; &nbsp;* We define how conflicts are managed<br>
&gt; &gt;&gt;&gt; &nbsp;* The server should have a basic authentication and authorization plan<br>
&gt; &gt;&gt;&gt; for controlling how data is synced<br>
&gt; &gt;&gt;&gt;<br>
&gt; &gt;&gt;&gt; M3 - Push based Sync Listener, Network Management, Serverside session<br>
&gt; &gt;&gt;&gt; management<br>
&gt; &gt;&gt; when we say push here, are we talking about the 3rd party services such as GCM and APN&#39;s, &nbsp;if so, not sure that is a great idea<br>
&gt; &gt; A one way notification service which only guarantees eventual delivery.<br>
&gt; &gt; GCM and APN is an example of this type of service but I explicitly left<br>
&gt; &gt; it out and think we should target consuming messages from the unified<br>
&gt; &gt; push server. &nbsp;This may mean that we implement SimplePush on iOS and<br>
&gt; &gt; Android so we are &quot;pure&quot; and bundle the simple push server into the sync<br>
&gt; &gt; server contract.<br>
&gt; &gt;&gt;<br>
&gt; &gt;&gt;&gt; &nbsp;* We will build on our previous Listener work from M2 to include a<br>
&gt; &gt;&gt;&gt; Push listener that the server can speak to.<br>
&gt; &gt;&gt;&gt; &nbsp;* We will define in the client how network state and sync state<br>
&gt; &gt;&gt;&gt; interact. &nbsp;IE how to handle errors in fetching new data when the<br>
&gt; &gt;&gt;&gt; Listener is alerted. (Exponential back off, retry, etc)<br>
&gt; &gt;&gt;&gt; &nbsp;* The server will need to have some mechanism for managing user<br>
&gt; &gt;&gt;&gt; &quot;sessions&quot;. &nbsp;This is what users are actively being synced.<br>
&gt; &gt;&gt;&gt;<br>
&gt; &gt;&gt;&gt; M4 - &quot;Real Time&quot; Sync Listener. &nbsp;Bidirectional automatic sync<br>
&gt; &gt;&gt;&gt; &nbsp;* Instead of using push, Realtime Sync uses something like web<br>
&gt; &gt;&gt;&gt; sockects. to automatically sync local and remote data.<br>
&gt; &gt;&gt;&gt; &nbsp;* Previous Sync listeners may have to be upgraded to include &quot;upload&quot;<br>
&gt; &gt;&gt;&gt; abilities.<br>
&gt; &gt;&gt;&gt; &nbsp;* The server will need to support this as well.<br>
&gt; &gt;&gt;&gt;<br>
&gt; &gt;&gt;&gt; M5 - Conflict resolution, Error detection and support<br>
&gt; &gt;&gt;&gt; &nbsp;* Provide a more comprehensive strategy for managing conflicts.<br>
&gt; &gt;&gt;&gt; &nbsp;* Provide some automated conflict resolvers<br>
&gt; &gt;&gt;&gt; &nbsp;* The server could get a larger set of conflict and errors messages<br>
&gt; &gt;&gt;&gt;<br>
&gt; &gt;&gt;&gt; M6 - Sync connection Upgrading<br>
&gt; &gt;&gt;&gt; &nbsp;* The client and server will negotiate when it is appropriate to<br>
&gt; &gt;&gt;&gt; switch between polling, push, and realtime sync strategies.<br>
&gt; &gt;&gt;&gt;<br>
&gt; &gt;&gt;&gt; M7 - Party<br>
&gt; &gt;&gt;&gt; &nbsp;* We have a sync party.<br>
&gt; &gt;&gt;&gt; _______________________________________________<br>
&gt; &gt;&gt;&gt; aerogear-dev mailing list<br>
&gt; &gt;&gt;&gt; <a href="mailto:aerogear-dev@lists.jboss.org">aerogear-dev@lists.jboss.org</a><br>
&gt; &gt;&gt;&gt; <a href="https://lists.jboss.org/mailman/listinfo/aerogear-dev" target="_blank">https://lists.jboss.org/mailman/listinfo/aerogear-dev</a><br>
&gt; &gt;&gt;<br>
&gt; &gt;&gt; _______________________________________________<br>
&gt; &gt;&gt; aerogear-dev mailing list<br>
&gt; &gt;&gt; <a href="mailto:aerogear-dev@lists.jboss.org">aerogear-dev@lists.jboss.org</a><br>
&gt; &gt;&gt; <a href="https://lists.jboss.org/mailman/listinfo/aerogear-dev" target="_blank">https://lists.jboss.org/mailman/listinfo/aerogear-dev</a><br>
&gt; &gt;<br>
&gt; &gt; _______________________________________________<br>
&gt; &gt; aerogear-dev mailing list<br>
&gt; &gt; <a href="mailto:aerogear-dev@lists.jboss.org">aerogear-dev@lists.jboss.org</a><br>
&gt; &gt; <a href="https://lists.jboss.org/mailman/listinfo/aerogear-dev" target="_blank">https://lists.jboss.org/mailman/listinfo/aerogear-dev</a><br>
&gt;<br>
&gt;<br>
&gt; _______________________________________________<br>
&gt; aerogear-dev mailing list<br>
&gt; <a href="mailto:aerogear-dev@lists.jboss.org">aerogear-dev@lists.jboss.org</a><br>
&gt; <a href="https://lists.jboss.org/mailman/listinfo/aerogear-dev" target="_blank">https://lists.jboss.org/mailman/listinfo/aerogear-dev</a><br>
&gt;<br>
&gt;<br>
&gt;<br>
&gt; --<br>
&gt; Matthias Wessendorf<br>
&gt;<br>
&gt; blog: <a href="http://matthiaswessendorf.wordpress.com/" target="_blank">http://matthiaswessendorf.wordpress.com/</a><br>
&gt; sessions: <a href="http://www.slideshare.net/mwessendorf" target="_blank">http://www.slideshare.net/mwessendorf</a><br>
&gt; twitter: <a href="http://twitter.com/mwessendorf" target="_blank">http://twitter.com/mwessendorf</a><br>
&gt; _______________________________________________<br>
&gt; aerogear-dev mailing list<br>
&gt; <a href="mailto:aerogear-dev@lists.jboss.org">aerogear-dev@lists.jboss.org</a><br>
&gt; <a href="https://lists.jboss.org/mailman/listinfo/aerogear-dev" target="_blank">https://lists.jboss.org/mailman/listinfo/aerogear-dev</a><br>
<br>
<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>
</div></div></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></div>