<div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote">On Mon, Jan 26, 2015 at 5:49 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">
  
    
  
  <div><span class="">
    <div>On 01/26/2015 11:37 AM, Lucas Holmquist
      wrote:<br>
    </div>
    <blockquote type="cite">
      
      <div>Perhaps we have already brought this up,  but what
        are we(our sync stuff) trying to be.</div>
      <div><br>
      </div>
      <div>Are we trying to be Dropbox/google docs/etc…..  or
        something else(what that is i’m not sure).</div>
      <div><br>
      </div>
      <div>What are our real use cases here?</div>
    </blockquote></span>
    Here are some simple ones that I want the sync server for<br>
     * A Conference app user synchronizes a personalized schedule among
    his devices<br>
     * A Users preferences are restored / synchronized across his
    devices (filtered by some kind of profile.  IE phone preference,
    tablet preferences, desktop preferences)<br></div></blockquote><div><br></div><div>these are (to me) the main ones</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div>
     * A list of content is continually updated (think Facebook feed)<br>
    <br>
    So this gives us two usage patterns<br>
    <br>
    1. A single user-document synchronized across devices<br>
    2. A single document synchronized across all user*devices.<br>
    <br>
    I don&#39;t think anyone has thought of some truly collaborative things
    like Google docs where you have multiple users on multiple devices
    editing multiple documents all with different permission tuples.  <br>
    <br>
    Many things can be fit in these two scenarios however.  In the
    Dropbox use case you mention the &quot;document&quot; is the users files,
    metadata, and their location.  The actual data will probably be
    hosted some place else.        <br><div><div class="h5">
    <br>
    <blockquote type="cite">
      <div><br>
      </div>
      <br>
      <div>
        <blockquote type="cite">
          <div>On Jan 26, 2015, at 11:31 AM, Summers Pittman
            &lt;<a href="mailto:supittma@redhat.com" target="_blank">supittma@redhat.com</a>&gt;
            wrote:</div>
          <br>
          <div><span style="font-family:Helvetica;font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;float:none;display:inline!important">On
              01/26/2015 11:26 AM, Randall Hauch wrote:</span><br style="font-family:Helvetica;font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px">
            <blockquote type="cite" style="font-family:Helvetica;font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px">From this and previous threads, it sounds like
              you’re targeting how multiple users could collaboratively
              edit the same document. Essentially, this is like Google
              Docs, though perhaps a bit lighter weight. Am I
              misunderstanding the scenario?    <br>
            </blockquote>
            <span style="font-family:Helvetica;font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;float:none;display:inline!important">Document is a
              generic term.  It is a wrapper around a JSON serializable<span> </span></span><br style="font-family:Helvetica;font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px">
            <span style="font-family:Helvetica;font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;float:none;display:inline!important">object.</span><br style="font-family:Helvetica;font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px">
            <blockquote type="cite" style="font-family:Helvetica;font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px"><br>
              For example, would this kind of data sync be useful when
              there are millions of shared documents/entities? For
              example, a Yelp-like app would probably want to have an
              entity/document for each restaurant or business, where
              that document contained an aggregation of information
              about that business. In my mind, these kinds of documents
              are more akin to JPA entities — or rather akin to
              aggregates of related JPA entity objects.<br>
            </blockquote>
            <span style="font-family:Helvetica;font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;float:none;display:inline!important">Yes ish.
               Right now the sync server is very young, but we can model
              the<span> </span></span><br style="font-family:Helvetica;font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px">
            <span style="font-family:Helvetica;font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;float:none;display:inline!important">data as a
              single document and have the apps display views into it
              and<span> </span></span><br style="font-family:Helvetica;font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px">
            <span style="font-family:Helvetica;font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;float:none;display:inline!important">make edits
              appropriately.  The trick will be making sure that the<span> </span></span><br style="font-family:Helvetica;font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px">
            <span style="font-family:Helvetica;font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;float:none;display:inline!important">serialization
              is always the same (IE two clients aren&#39;t constantly<span> </span></span><br style="font-family:Helvetica;font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px">
            <span style="font-family:Helvetica;font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;float:none;display:inline!important">updating
              because they serialize data in different orders)</span><br style="font-family:Helvetica;font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px">
            <blockquote type="cite" style="font-family:Helvetica;font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px"><br>
              Best regards,<br>
              <br>
              Randall<br>
              <br>
              <br>
              <blockquote type="cite">On Jan 26, 2015, at 9:38
                AM, Summers Pittman &lt;<a href="mailto:supittma@redhat.com" target="_blank">supittma@redhat.com</a>&gt;
                wrote:<br>
                <br>
                <br>
                Summary (From my POV on Android):<br>
                <br>
                  Sync Server doesn&#39;t use any authentication or
                ownership tracking.<br>
                  GCM-XMPP bridge needs a lot of love<br>
                  We need to define a different connection lifecycle for
                GCM.<br>
                  The in memory data store is problematic because
                clients and servers<br>
                must be stopped and started atomically<br>
                  We might want to show off syncing different types of
                documents (i.e.<br>
                a todo list in addition to Luke&#39;s hobbies)<br>
                  Fixing the GCM bridge is probably a couple weeks of
                work to get it<br>
                &quot;solid&quot;.  That will be a good alpha.1/preview to show
                off.<br>
                <br>
                So Last week I put together a demo to try and stretch
                the legs of the<br>
                Android Sync Client APIs.<br>
                <br>
                It crashes, a lot.  Which is a bit to be expected as the
                code hasn&#39;t<br>
                really be used for, well, anything until now.  We will
                get to that though.<br>
                <br>
                Here is the alpha.1 workflow. You log in and you see
                your docs.  You can<br>
                edit your docs or you can create new ones.  In the
                future I would like<br>
                to add sharing and collaboration but that&#39;s the future.
                Here&#39;s a flow<br>
                chart for the visual thinkers out there (with real
                screen caps from the<br>
                real working app)<br>
                <br>
                 *<br>
                <a href="https://docs.google.com/drawings/d/145XuutxR1yY0k81w2nIIy980itDIwxzH_gcDE3jLrvc/edit?usp=sharing" target="_blank">https://docs.google.com/drawings/d/145XuutxR1yY0k81w2nIIy980itDIwxzH_gcDE3jLrvc/edit?usp=sharing</a><br>
                <br>
                To make all of this work I use a RESTful server which
                tracks a user&#39;s<br>
                username and the documents they &quot;own&quot;.  The sync server
                just syncs and<br>
                serves the document you ask for.  It has no
                authentication and any doc<br>
                you ask for you get to be an editor on.<br>
                <br>
                The client uses the GCM XMPP¹ bridge I wrote while drunk
                on the side of<br>
                a mountain and it shows.  The biggest issue is that
                shadows for<br>
                documents aren&#39;t getting created right sometimes because
                either 1) the<br>
                client or server bounced and the data stores are no long
                synced or 2)<br>
                the server thinks there are more clients than actually
                are connected.<br>
                GCM-XMPP doesn&#39;t supply connection/disconnection
                information like<br>
                WebSockets will.  Instead we just know that some
                messages we sent a<br>
                while ago weren&#39;t delivered.  We need to figure out how
                to turn this<br>
                into connection and disconnection information in a way
                that lets the<br>
                shadows exist correctly.<br>
                <br>
                Another issue that needs to be addressed is using
                something other than<br>
                the Luke Skywalker hobbies document.  (Or maybe showing
                off multiple<br>
                document types in the demo).  I&#39;m up for suggestions.<br>
                <br>
                Anyway, the principles (diff sync with a restful
                documentId broker for<br>
                security) are sound.  I think we can buff out some
                implementation<br>
                details and have a good alpha/preview/poc release in the
                few weeks -&gt; 1<br>
                month time frame for Android and the sync server.<br>
                <br>
                --<span> </span><br>
                Summers Pittman<br>
                <blockquote type="cite">
                  <blockquote type="cite">Phone:404 941 4698<br>
                    Java is my crack.<br>
                  </blockquote>
                </blockquote>
                <br>
                <br>
                Foot Notes:<br>
                1. The sync server has two client connection
                technologies : WebSockets<br>
                and GCM-XMPP.  Android uses the GCM-XMPP because it
                takes all of the<br>
                nasty connection handling code and gives let&#39;s Android
                deal with it.<br>
                More info here :
                <a href="https://developer.android.com/google/gcm/ccs.html" target="_blank">https://developer.android.com/google/gcm/ccs.html</a><br>
                <br>
                _______________________________________________<br>
                aerogear-dev mailing list<br>
                <a href="mailto:aerogear-dev@lists.jboss.org" target="_blank">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>
              <br>
              _______________________________________________<br>
              aerogear-dev mailing list<br>
              <a href="mailto:aerogear-dev@lists.jboss.org" target="_blank">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>
            <br style="font-family:Helvetica;font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px">
            <br style="font-family:Helvetica;font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px">
            <span style="font-family:Helvetica;font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;float:none;display:inline!important">--<span> </span></span><br style="font-family:Helvetica;font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px">
            <span style="font-family:Helvetica;font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;float:none;display:inline!important">Summers
              Pittman</span><br style="font-family:Helvetica;font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px">
            <blockquote type="cite" style="font-family:Helvetica;font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px">
              <blockquote type="cite">Phone:404 941 4698<br>
                Java is my crack.<br>
              </blockquote>
            </blockquote>
            <br style="font-family:Helvetica;font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px">
            <span style="font-family:Helvetica;font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;float:none;display:inline!important">_______________________________________________</span><br style="font-family:Helvetica;font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px">
            <span style="font-family:Helvetica;font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;float:none;display:inline!important">aerogear-dev
              mailing list</span><br style="font-family:Helvetica;font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px">
            <a href="mailto:aerogear-dev@lists.jboss.org" style="font-family:Helvetica;font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px" target="_blank">aerogear-dev@lists.jboss.org</a><br style="font-family:Helvetica;font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px">
            <a href="https://lists.jboss.org/mailman/listinfo/aerogear-dev" style="font-family:Helvetica;font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px" target="_blank">https://lists.jboss.org/mailman/listinfo/aerogear-dev</a></div>
        </blockquote>
      </div>
      <br>
      <br>
      <fieldset></fieldset>
      <br>
      <pre>_______________________________________________
aerogear-dev mailing list
<a href="mailto:aerogear-dev@lists.jboss.org" target="_blank">aerogear-dev@lists.jboss.org</a>
<a href="https://lists.jboss.org/mailman/listinfo/aerogear-dev" target="_blank">https://lists.jboss.org/mailman/listinfo/aerogear-dev</a></pre>
    </blockquote>
    <br>
    <br>
    <pre cols="72">-- 
Summers Pittman
&gt;&gt;Phone:404 941 4698
&gt;&gt;Java is my crack.
</pre>
  </div></div></div>

<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><div class="gmail_signature">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></div>