<div dir="ltr"><br><div class="gmail_extra"><br><br><div class="gmail_quote">On Tue, Jan 28, 2014 at 7:32 PM, Summers Pittman <span dir="ltr"><<a href="mailto:supittma@redhat.com" target="_blank">supittma@redhat.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="HOEnZb"><div class="h5">On 01/28/2014 01:24 PM, Douglas Campos wrote:<br>
> On Tue, Jan 28, 2014 at 10:30:47AM -0500, Summers Pittman wrote:<br>
>> On 01/28/2014 09:36 AM, Lucas Holmquist wrote:<br>
>>> yup, this is another Data Sync thread,<br>
>>><br>
>>> >From a client side perspective, i have concerns that there is still not a clear direction yet.<br>
>>><br>
>>> I know there are multiple ideas floating around on what our model should be, i'm all for choice, but what about deciding on 1 model to get started with. Then later once we have this nailed down, we can have other "adapters" with different models perhaps<br>
>> All the data model is is an envelope of sync metadata around an object<br>
>> right?<br>
>><br>
>> We also need to think about the API and server/client protocol as well.<br>
>><br>
>> I think that for sync 1.0 we could focus on the following behavior (it<br>
>> worked for my demos at least)<br>
>><br>
>> 1. We have a Sync factory similar to Pipeline, Authenticator,<br>
>> Registrar, and KeyService.<br>
>> 2. The Sync factory consumes/manages Synchronizer instances.<br>
>> 3. AG Synchronizer listens for sync messages using UnifiedPush endpoints.<br>
>> 4. AG Synchronizer sends sync messages using Pipes<br>
>> 5. AG Synchronizer holds local data in a store<br>
>><br>
>> 6. When AGSynchronizer gets a message it is responsible for updating<br>
>> the Store and then notifying code listing for updates OR for notifying<br>
>> the code that an error has occurred and needs to be addressed.<br>
>><br>
>> 7. When the developer updates data in the store, the synchronizer<br>
>> should package that data and send it to the server. The synchronizer is<br>
>> responsible for error handling, retrying, back-off, etc.<br>
>><br>
>> 8. We should include multiple synchronizer implementations to deal with<br>
>> multiple very simple use cases which involve legacy systems. (For<br>
>> instance polling to load static data on a schedule.)<br>
> The thing I have against all this is its curse and its blessing at the<br>
> same time. I prefer to ship small-ish tools that the developer can use<br>
> the way she wants instead of a full-blown-zomg-unicorns full-stack<br>
> solution.<br>
><br>
> Even the pipeline API requires some level of buy-in, and I really wish<br>
> our DataSync API to be as decoupled as possible from the other parts.<br>
><br>
> This was my main concern when I was saying: "focus on the datamodel<br>
> first, then the update protocol, then...."<br>
><br>
> If we start with a fully integrated solution, it will be awesome, if we<br>
> have buy-in from the developer. And we all know that things not<br>
> necessarily go this way with OSS projects, hence my kerfuffle against<br>
> increasing sync's scope for 1.0.<br>
><br>
> What's the MVP for the sync to be a good foundation for all the shiny<br>
> bits? That's the question I want to have a good answer for.<br>
</div></div>I shifting into Java speak here for a second because it is easier for me.<br>
<br>
What I want as a MVP is a good Interface for the bit of sychronization<br>
the developer will interact with. Everything else is an implementation<br>
detail that we can write and rewrite until the checks stop cashing :)<br>
<br>
The data model is one part of this, it is how the code which implements<br>
the Interface will see its own data and also what it will send to the<br>
server.<br>
<br>
The how of that is whatever. It can use a pipe, it can send the data<br>
over a websocket. Both are easily done.<br>
<br>
The next implementation detail is how does remote data get on the<br>
device? Does the server send via a websocket updated data (again based<br>
on our data model enveolope), does it send a ping message (via a push<br>
service) and the client pulls down new data? Does the client poll? It<br>
doesn't matter as long as our public interfaces can be forced to do all<br>
of them in a non insane way.<br></blockquote><div><br></div><div>I think we all agree that we need some 'interface' like that and that the actual details are good hidden by the actual implementation</div><div> </div>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
I think we are saying the same thing, at least I didn't hear you say<br>
anything that made me say "wat?!".<br>
<div class="HOEnZb"><div class="h5"><br>
<br>
>> Thoughts? Tomatoes?<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>
>> _______________________________________________<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>
<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>