<html><head><meta http-equiv="Content-Type" content="text/html charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><br class=""><div><blockquote type="cite" class=""><div class="">On Jan 26, 2015, at 11:49 AM, Summers Pittman &lt;<a href="mailto:supittma@redhat.com" class="">supittma@redhat.com</a>&gt; wrote:</div><br class="Apple-interchange-newline"><div class="">
  
    <meta content="text/html; charset=ISO-8859-1" http-equiv="Content-Type" class="">
  
  <div class="">
    <div class="moz-cite-prefix">On 01/26/2015 11:37 AM, Lucas Holmquist
      wrote:<br class="">
    </div>
    <blockquote cite="mid:5BF00158-B30E-416C-A75F-8EA34312903F@redhat.com" type="cite" class="">
      <meta http-equiv="Content-Type" content="text/html;
        charset=ISO-8859-1" class="">
      <div class="">Perhaps we have already brought this up, &nbsp;but what
        are we(our sync stuff) trying to be.</div>
      <div class=""><br class="">
      </div>
      <div class="">Are we trying to be Dropbox/google docs/etc….. &nbsp;or
        something else(what that is i’m not sure).</div>
      <div class=""><br class="">
      </div>
      <div class="">What are our real use cases here?</div>
    </blockquote>
    Here are some simple ones that I want the sync server for<br class="">
    &nbsp;* A Conference app user synchronizes a personalized schedule among
    his devices<br class=""></div></div></blockquote><div><br class=""></div><div>i sort of like this one. &nbsp;it is somewhat a real-time thing.&nbsp;</div><div><br class=""></div><div>I guess the real question around what our Sync Stuff wants to be when it gets older, is does it want to be Real-Time? &nbsp;which i think we’ve probably agreed on more than once</div><br class=""><blockquote type="cite" class=""><div class=""><div class="">
    &nbsp;* A Users preferences are restored / synchronized across his
    devices (filtered by some kind of profile.&nbsp; IE phone preference,
    tablet preferences, desktop preferences)<br class="">
    &nbsp;* A list of content is continually updated (think Facebook feed)<br class="">
    <br class="">
    So this gives us two usage patterns<br class="">
    <br class="">
    1. A single user-document synchronized across devices<br class="">
    2. A single document synchronized across all user*devices.<br class="">
    <br class="">
    I don'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.&nbsp; <br class="">
    <br class="">
    Many things can be fit in these two scenarios however.&nbsp; In the
    Dropbox use case you mention the "document" is the users files,
    metadata, and their location.&nbsp; The actual data will probably be
    hosted some place else.&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <br class="">
    <br class="">
    <blockquote cite="mid:5BF00158-B30E-416C-A75F-8EA34312903F@redhat.com" type="cite" class="">
      <div class=""><br class="">
      </div>
      <br class="">
      <div class="">
        <blockquote type="cite" class="">
          <div class="">On Jan 26, 2015, at 11:31 AM, Summers Pittman
            &lt;<a moz-do-not-send="true" href="mailto:supittma@redhat.com" class="">supittma@redhat.com</a>&gt;
            wrote:</div>
          <br class="Apple-interchange-newline">
          <div class=""><span style="font-family: Helvetica; font-size:
              12px; font-style: normal; font-variant: normal;
              font-weight: normal; letter-spacing: normal; line-height:
              normal; orphans: auto; text-align: start; text-indent:
              0px; text-transform: none; white-space: normal; widows:
              auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;
              float: none; display: inline !important;" class="">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;
              orphans: auto; text-align: start; text-indent: 0px;
              text-transform: none; white-space: normal; widows: auto;
              word-spacing: 0px; -webkit-text-stroke-width: 0px;" class="">
            <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; orphans: auto; text-align: start; text-indent:
              0px; text-transform: none; white-space: normal; widows:
              auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class="">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?&nbsp;&nbsp;&nbsp; <br class="">
            </blockquote>
            <span style="font-family: Helvetica; font-size: 12px;
              font-style: normal; font-variant: normal; font-weight:
              normal; letter-spacing: normal; line-height: normal;
              orphans: auto; text-align: start; text-indent: 0px;
              text-transform: none; white-space: normal; widows: auto;
              word-spacing: 0px; -webkit-text-stroke-width: 0px; float:
              none; display: inline !important;" class="">Document is a
              generic term. &nbsp;It is a wrapper around a JSON serializable<span class="Apple-converted-space">&nbsp;</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;
              orphans: auto; text-align: start; text-indent: 0px;
              text-transform: none; white-space: normal; widows: auto;
              word-spacing: 0px; -webkit-text-stroke-width: 0px;" class="">
            <span style="font-family: Helvetica; font-size: 12px;
              font-style: normal; font-variant: normal; font-weight:
              normal; letter-spacing: normal; line-height: normal;
              orphans: auto; text-align: start; text-indent: 0px;
              text-transform: none; white-space: normal; widows: auto;
              word-spacing: 0px; -webkit-text-stroke-width: 0px; float:
              none; display: inline !important;" class="">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;
              orphans: auto; text-align: start; text-indent: 0px;
              text-transform: none; white-space: normal; widows: auto;
              word-spacing: 0px; -webkit-text-stroke-width: 0px;" class="">
            <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; orphans: auto; text-align: start; text-indent:
              0px; text-transform: none; white-space: normal; widows:
              auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><br class="">
              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 class="">
            </blockquote>
            <span style="font-family: Helvetica; font-size: 12px;
              font-style: normal; font-variant: normal; font-weight:
              normal; letter-spacing: normal; line-height: normal;
              orphans: auto; text-align: start; text-indent: 0px;
              text-transform: none; white-space: normal; widows: auto;
              word-spacing: 0px; -webkit-text-stroke-width: 0px; float:
              none; display: inline !important;" class="">Yes ish.
              &nbsp;Right now the sync server is very young, but we can model
              the<span class="Apple-converted-space">&nbsp;</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;
              orphans: auto; text-align: start; text-indent: 0px;
              text-transform: none; white-space: normal; widows: auto;
              word-spacing: 0px; -webkit-text-stroke-width: 0px;" class="">
            <span style="font-family: Helvetica; font-size: 12px;
              font-style: normal; font-variant: normal; font-weight:
              normal; letter-spacing: normal; line-height: normal;
              orphans: auto; text-align: start; text-indent: 0px;
              text-transform: none; white-space: normal; widows: auto;
              word-spacing: 0px; -webkit-text-stroke-width: 0px; float:
              none; display: inline !important;" class="">data as a
              single document and have the apps display views into it
              and<span class="Apple-converted-space">&nbsp;</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;
              orphans: auto; text-align: start; text-indent: 0px;
              text-transform: none; white-space: normal; widows: auto;
              word-spacing: 0px; -webkit-text-stroke-width: 0px;" class="">
            <span style="font-family: Helvetica; font-size: 12px;
              font-style: normal; font-variant: normal; font-weight:
              normal; letter-spacing: normal; line-height: normal;
              orphans: auto; text-align: start; text-indent: 0px;
              text-transform: none; white-space: normal; widows: auto;
              word-spacing: 0px; -webkit-text-stroke-width: 0px; float:
              none; display: inline !important;" class="">make edits
              appropriately. &nbsp;The trick will be making sure that the<span class="Apple-converted-space">&nbsp;</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;
              orphans: auto; text-align: start; text-indent: 0px;
              text-transform: none; white-space: normal; widows: auto;
              word-spacing: 0px; -webkit-text-stroke-width: 0px;" class="">
            <span style="font-family: Helvetica; font-size: 12px;
              font-style: normal; font-variant: normal; font-weight:
              normal; letter-spacing: normal; line-height: normal;
              orphans: auto; text-align: start; text-indent: 0px;
              text-transform: none; white-space: normal; widows: auto;
              word-spacing: 0px; -webkit-text-stroke-width: 0px; float:
              none; display: inline !important;" class="">serialization
              is always the same (IE two clients aren't constantly<span class="Apple-converted-space">&nbsp;</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;
              orphans: auto; text-align: start; text-indent: 0px;
              text-transform: none; white-space: normal; widows: auto;
              word-spacing: 0px; -webkit-text-stroke-width: 0px;" class="">
            <span style="font-family: Helvetica; font-size: 12px;
              font-style: normal; font-variant: normal; font-weight:
              normal; letter-spacing: normal; line-height: normal;
              orphans: auto; text-align: start; text-indent: 0px;
              text-transform: none; white-space: normal; widows: auto;
              word-spacing: 0px; -webkit-text-stroke-width: 0px; float:
              none; display: inline !important;" class="">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;
              orphans: auto; text-align: start; text-indent: 0px;
              text-transform: none; white-space: normal; widows: auto;
              word-spacing: 0px; -webkit-text-stroke-width: 0px;" class="">
            <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; orphans: auto; text-align: start; text-indent:
              0px; text-transform: none; white-space: normal; widows:
              auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><br class="">
              Best regards,<br class="">
              <br class="">
              Randall<br class="">
              <br class="">
              <br class="">
              <blockquote type="cite" class="">On Jan 26, 2015, at 9:38
                AM, Summers Pittman &lt;<a moz-do-not-send="true" href="mailto:supittma@redhat.com" class="">supittma@redhat.com</a>&gt;
                wrote:<br class="">
                <br class="">
                <br class="">
                Summary (From my POV on Android):<br class="">
                <br class="">
                &nbsp;&nbsp;Sync Server doesn't use any authentication or
                ownership tracking.<br class="">
                &nbsp;&nbsp;GCM-XMPP bridge needs a lot of love<br class="">
                &nbsp;&nbsp;We need to define a different connection lifecycle for
                GCM.<br class="">
                &nbsp;&nbsp;The in memory data store is problematic because
                clients and servers<br class="">
                must be stopped and started atomically<br class="">
                &nbsp;&nbsp;We might want to show off syncing different types of
                documents (i.e.<br class="">
                a todo list in addition to Luke's hobbies)<br class="">
                &nbsp;&nbsp;Fixing the GCM bridge is probably a couple weeks of
                work to get it<br class="">
                "solid". &nbsp;That will be a good alpha.1/preview to show
                off.<br class="">
                <br class="">
                So Last week I put together a demo to try and stretch
                the legs of the<br class="">
                Android Sync Client APIs.<br class="">
                <br class="">
                It crashes, a lot. &nbsp;Which is a bit to be expected as the
                code hasn't<br class="">
                really be used for, well, anything until now. &nbsp;We will
                get to that though.<br class="">
                <br class="">
                Here is the alpha.1 workflow. You log in and you see
                your docs. &nbsp;You can<br class="">
                edit your docs or you can create new ones. &nbsp;In the
                future I would like<br class="">
                to add sharing and collaboration but that's the future.
                Here's a flow<br class="">
                chart for the visual thinkers out there (with real
                screen caps from the<br class="">
                real working app)<br class="">
                <br class="">
                &nbsp;*<br class="">
                <a moz-do-not-send="true" href="https://docs.google.com/drawings/d/145XuutxR1yY0k81w2nIIy980itDIwxzH_gcDE3jLrvc/edit?usp=sharing" class="">https://docs.google.com/drawings/d/145XuutxR1yY0k81w2nIIy980itDIwxzH_gcDE3jLrvc/edit?usp=sharing</a><br class="">
                <br class="">
                To make all of this work I use a RESTful server which
                tracks a user's<br class="">
                username and the documents they "own". &nbsp;The sync server
                just syncs and<br class="">
                serves the document you ask for. &nbsp;It has no
                authentication and any doc<br class="">
                you ask for you get to be an editor on.<br class="">
                <br class="">
                The client uses the GCM XMPP¹ bridge I wrote while drunk
                on the side of<br class="">
                a mountain and it shows. &nbsp;The biggest issue is that
                shadows for<br class="">
                documents aren't getting created right sometimes because
                either 1) the<br class="">
                client or server bounced and the data stores are no long
                synced or 2)<br class="">
                the server thinks there are more clients than actually
                are connected.<br class="">
                GCM-XMPP doesn't supply connection/disconnection
                information like<br class="">
                WebSockets will. &nbsp;Instead we just know that some
                messages we sent a<br class="">
                while ago weren't delivered. &nbsp;We need to figure out how
                to turn this<br class="">
                into connection and disconnection information in a way
                that lets the<br class="">
                shadows exist correctly.<br class="">
                <br class="">
                Another issue that needs to be addressed is using
                something other than<br class="">
                the Luke Skywalker hobbies document. &nbsp;(Or maybe showing
                off multiple<br class="">
                document types in the demo). &nbsp;I'm up for suggestions.<br class="">
                <br class="">
                Anyway, the principles (diff sync with a restful
                documentId broker for<br class="">
                security) are sound. &nbsp;I think we can buff out some
                implementation<br class="">
                details and have a good alpha/preview/poc release in the
                few weeks -&gt; 1<br class="">
                month time frame for Android and the sync server.<br class="">
                <br class="">
                --<span class="Apple-converted-space">&nbsp;</span><br class="">
                Summers Pittman<br class="">
                <blockquote type="cite" class="">
                  <blockquote type="cite" class="">Phone:404 941 4698<br class="">
                    Java is my crack.<br class="">
                  </blockquote>
                </blockquote>
                <br class="">
                <br class="">
                Foot Notes:<br class="">
                1. The sync server has two client connection
                technologies : WebSockets<br class="">
                and GCM-XMPP. &nbsp;Android uses the GCM-XMPP because it
                takes all of the<br class="">
                nasty connection handling code and gives let's Android
                deal with it.<br class="">
                More info here :
                <a class="moz-txt-link-freetext" href="https://developer.android.com/google/gcm/ccs.html">https://developer.android.com/google/gcm/ccs.html</a><br class="">
                <br class="">
                _______________________________________________<br class="">
                aerogear-dev mailing list<br class="">
                <a class="moz-txt-link-abbreviated" href="mailto:aerogear-dev@lists.jboss.org">aerogear-dev@lists.jboss.org</a><br class="">
                <a class="moz-txt-link-freetext" href="https://lists.jboss.org/mailman/listinfo/aerogear-dev">https://lists.jboss.org/mailman/listinfo/aerogear-dev</a><br class="">
              </blockquote>
              <br class="">
              _______________________________________________<br class="">
              aerogear-dev mailing list<br class="">
              <a moz-do-not-send="true" href="mailto:aerogear-dev@lists.jboss.org" class="">aerogear-dev@lists.jboss.org</a><br class="">
              <a class="moz-txt-link-freetext" href="https://lists.jboss.org/mailman/listinfo/aerogear-dev">https://lists.jboss.org/mailman/listinfo/aerogear-dev</a><br class="">
            </blockquote>
            <br style="font-family: Helvetica; font-size: 12px;
              font-style: normal; font-variant: normal; font-weight:
              normal; letter-spacing: normal; line-height: normal;
              orphans: auto; text-align: start; text-indent: 0px;
              text-transform: none; white-space: normal; widows: auto;
              word-spacing: 0px; -webkit-text-stroke-width: 0px;" class="">
            <br style="font-family: Helvetica; font-size: 12px;
              font-style: normal; font-variant: normal; font-weight:
              normal; letter-spacing: normal; line-height: normal;
              orphans: auto; text-align: start; text-indent: 0px;
              text-transform: none; white-space: normal; widows: auto;
              word-spacing: 0px; -webkit-text-stroke-width: 0px;" class="">
            <span style="font-family: Helvetica; font-size: 12px;
              font-style: normal; font-variant: normal; font-weight:
              normal; letter-spacing: normal; line-height: normal;
              orphans: auto; text-align: start; text-indent: 0px;
              text-transform: none; white-space: normal; widows: auto;
              word-spacing: 0px; -webkit-text-stroke-width: 0px; float:
              none; display: inline !important;" class="">--<span class="Apple-converted-space">&nbsp;</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;
              orphans: auto; text-align: start; text-indent: 0px;
              text-transform: none; white-space: normal; widows: auto;
              word-spacing: 0px; -webkit-text-stroke-width: 0px;" class="">
            <span style="font-family: Helvetica; font-size: 12px;
              font-style: normal; font-variant: normal; font-weight:
              normal; letter-spacing: normal; line-height: normal;
              orphans: auto; text-align: start; text-indent: 0px;
              text-transform: none; white-space: normal; widows: auto;
              word-spacing: 0px; -webkit-text-stroke-width: 0px; float:
              none; display: inline !important;" class="">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; orphans: auto; text-align: start; text-indent:
              0px; text-transform: none; white-space: normal; widows:
              auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class="">
            <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; orphans: auto; text-align: start; text-indent:
              0px; text-transform: none; white-space: normal; widows:
              auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class="">
              <blockquote type="cite" class="">Phone:404 941 4698<br class="">
                Java is my crack.<br class="">
              </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;
              orphans: auto; text-align: start; text-indent: 0px;
              text-transform: none; white-space: normal; widows: auto;
              word-spacing: 0px; -webkit-text-stroke-width: 0px;" class="">
            <span style="font-family: Helvetica; font-size: 12px;
              font-style: normal; font-variant: normal; font-weight:
              normal; letter-spacing: normal; line-height: normal;
              orphans: auto; text-align: start; text-indent: 0px;
              text-transform: none; white-space: normal; widows: auto;
              word-spacing: 0px; -webkit-text-stroke-width: 0px; float:
              none; display: inline !important;" class="">_______________________________________________</span><br style="font-family: Helvetica; font-size: 12px;
              font-style: normal; font-variant: normal; font-weight:
              normal; letter-spacing: normal; line-height: normal;
              orphans: auto; text-align: start; text-indent: 0px;
              text-transform: none; white-space: normal; widows: auto;
              word-spacing: 0px; -webkit-text-stroke-width: 0px;" class="">
            <span style="font-family: Helvetica; font-size: 12px;
              font-style: normal; font-variant: normal; font-weight:
              normal; letter-spacing: normal; line-height: normal;
              orphans: auto; text-align: start; text-indent: 0px;
              text-transform: none; white-space: normal; widows: auto;
              word-spacing: 0px; -webkit-text-stroke-width: 0px; float:
              none; display: inline !important;" class="">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; orphans: auto; text-align: start; text-indent:
              0px; text-transform: none; white-space: normal; widows:
              auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class="">
            <a moz-do-not-send="true" 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;
              orphans: auto; text-align: start; text-indent: 0px;
              text-transform: none; white-space: normal; widows: auto;
              word-spacing: 0px; -webkit-text-stroke-width: 0px;" class="">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;
              orphans: auto; text-align: start; text-indent: 0px;
              text-transform: none; white-space: normal; widows: auto;
              word-spacing: 0px; -webkit-text-stroke-width: 0px;" class="">
            <a moz-do-not-send="true" 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;
              orphans: auto; text-align: start; text-indent: 0px;
              text-transform: none; white-space: normal; widows: auto;
              word-spacing: 0px; -webkit-text-stroke-width: 0px;" class="">https://lists.jboss.org/mailman/listinfo/aerogear-dev</a></div>
        </blockquote>
      </div>
      <br class="">
      <br class="">
      <fieldset class="mimeAttachmentHeader"></fieldset>
      <br class="">
      <pre wrap="" class="">_______________________________________________
aerogear-dev mailing list
<a class="moz-txt-link-abbreviated" href="mailto:aerogear-dev@lists.jboss.org">aerogear-dev@lists.jboss.org</a>
<a class="moz-txt-link-freetext" href="https://lists.jboss.org/mailman/listinfo/aerogear-dev">https://lists.jboss.org/mailman/listinfo/aerogear-dev</a></pre>
    </blockquote>
    <br class="">
    <br class="">
    <pre class="moz-signature" cols="72">-- 
Summers Pittman
&gt;&gt;Phone:404 941 4698
&gt;&gt;Java is my crack.
</pre>
  </div>

_______________________________________________<br class="">aerogear-dev mailing list<br class=""><a href="mailto:aerogear-dev@lists.jboss.org" class="">aerogear-dev@lists.jboss.org</a><br class="">https://lists.jboss.org/mailman/listinfo/aerogear-dev</div></blockquote></div><br class=""></body></html>