<html><head></head><body><div style="font-family: Verdana;font-size: 12.0px;"><div>
<div>John, Dear all</div>

<div> </div>

<div>I found most of your questions are about technical details, which cannot be answered as an INPUT to the project, but which must be answered as an OUTPUT of the project (later).</div>

<div> </div>

<div>Dear Community,</div>

<div> </div>

<div>Based on a brainstorming by and with John, I am feeling free to present a project exposé</div>

<div><a href="https://github.com/christoph-v/spark/blob/master/3rd-party-input/esdp-bs/project-exposee_v0.1-2019-04-01.txt">https://github.com/christoph-v/spark/blob/master/3rd-party-input/esdp-bs/project-exposee_v0.1-2019-04-01.txt</a></div>

<div>
<div> </div>

<div>for a project, whose goal it would be to support the definition of protocol(s) for Network Sensor.</div>

<div> </div>

<div>If you feel you should support this project, please do not hesitate to send your comments - here at x3d-public - or direct at the GitHub project: <a href="https://github.com/christoph-v/spark/issues/7">https://github.com/christoph-v/spark/issues/7</a></div>

<div> </div>

<div>Have a nice week</div>

<div>Christoph</div>

<div name="quote" style="margin:10px 5px 5px 10px; padding: 10px 0 10px 10px; border-left:2px solid #C3D9E5; word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;">
<div style="margin:0 0 10px 0;"><b>Gesendet:</b> Montag, 01. April 2019 um 07:26 Uhr<br/>
<b>Von:</b> "Christoph Valentin" <christoph.valentin@gmx.at><br/>
<b>An:</b> "John Carlson" <yottzumm@gmail.com><br/>
<b>Cc:</b> "X3D Graphics public mailing list" <x3d-public@web3d.org><br/>
<b>Betreff:</b> Re: [x3d-public] pub/sub for multiuser. SP-ARK input. pub/sub ineventloop for X3Dv4</div>

<div name="quoted-content">
<div style="font-family: Verdana;font-size: 12.0px;">
<div>
<div>John,</div>

<div> </div>

<div>Thank you for your tremendous support during this brain storming.</div>

<div> </div>

<div>I felt free to add the most interesting remarks at the directory <strong>spark/3rd-party-input/esdp-bs</strong> .</div>

<div><a href="https://github.com/christoph-v/spark/tree/master/3rd-party-input/esdp-bs" target="_blank">https://github.com/christoph-v/spark/tree/master/3rd-party-input/esdp-bs</a></div>

<div>
<div> </div>

<div>I will try to finish the file <strong>project-exposee.txt</strong> by next weekend. Find the questions (without the answers) already in the P.S. of this e-mail. If you think, I have missed a question, please feel free to add any time.</div>

<div> </div>

<div>BR</div>

<div>Christoph</div>

<div> </div>

<div>P.S.:</div>

<div>
<div>Follows some questions / inspirations from John C. and the answers (tbd.)</div>

<div> </div>

<div>Q: What will be the use case of the demo application?<br/>
A: tbd.</div>

<div> </div>

<div>Q: What will be the content of the scene (Avatars, Models, ......)? What is a<br/>
   "collaboration"? Which "collaborations" will we implement?<br/>
A: tbd.</div>

<div> </div>

<div>Q: What is a "shared state"?<br/>
   Note that I have difficulty talking about state because of multiple meanings,<br/>
   political, physics etc. Do you really just mean state, state of what?  What<br/>
   does the state transition network look like?<br/>
A: tbd.</div>

<div> </div>

<div>Q: How to apply the pub/sub pattern to our case? Which values to transmit?<br/>
   Even objects? Files? Videos? What are the "topics"?<br/>
A: tbd.</div>

<div> </div>

<div>Q: What content are we designing in to our messages?   What do we require of the<br/>
   underlying system beside transport? Multimedia? In-order messages? Signaling?<br/>
A: tbd.</div>

<div> </div>

<div>Q: I would rather discuss the HLAP (High Level Application Protocol), and let<br/>
   the HLAP choose a software infrastructure based on requirements of the HLAP<br/>
   (That is, set requirements for the lower level protocols). Once we have a<br/>
   shopping list of requirements, we go shopping for something compatible with<br/>
   Web3D’s Intellectual Property rules.<br/>
   Requirements of a transport for HLAP:<br/>
    Many to Many topics and messaging capable of carrying or referring to X3D<br/>
          multimedia, Avatars, Inventory and Communication.<br/>
          At up to ?? messages per second<br/>
    Federated messaging (possibly spatiotemporal)<br/>
    Conferences/Rooms/Channels/Topics for private X3D worlds<br/>
    Block a publisher<br/>
    Report a publisher<br/>
    Message log/replay.<br/>
    Edit own messages.<br/>
    Conference/Topic/Room/Channel search?<br/>
    Usable from HTML5 web.<br/>
   Please provide input for this list.<br/>
A: tbd.<br/>
 <br/>
Q: Which functions do we delegate to the transport protocol? (voice, IM, ......)<br/>
A: tbd.</div>

<div> </div>

<div>Q: What are the "master rules"?<br/>
A: 1) SP-ARK is dedicated to the use (and support) of X3Dv4<br/>
   2) basically, the playground is open to anybody, who is interested in simple<br/>
      multiuser scenes<br/>
   3) probably we will implement some demo application maybe even a server<br/>
      (depends on support)<br/>
   4) Goal 1: help the Web3D Consortium in defining an application layer<br/>
              protocol for the Network Sensor<br/>
   5) SP-ARK has not been started yet, but with this e-mail the probability of a<br/>
      start increases :-)</div>

<div> </div>
</div>

<div> </div>

<div style="margin: 10.0px 5.0px 5.0px 10.0px;padding: 10.0px 0 10.0px 10.0px;border-left: 2.0px solid rgb(195,217,229);">
<div style="margin: 0 0 10.0px 0;"><b>Gesendet:</b> Montag, 01. April 2019 um 04:18 Uhr<br/>
<b>Von:</b> "John Carlson" <yottzumm@gmail.com><br/>
<b>An:</b> "Christoph Valentin" <christoph.valentin@gmx.at><br/>
<b>Cc:</b> "X3D Graphics public mailing list" <x3d-public@web3d.org><br/>
<b>Betreff:</b> RE: [x3d-public] pub/sub for multiuser. SP-ARK input. pub/sub ineventloop for X3Dv4</div>

<div>
<div>
<div class="WordSection1">
<p class="MsoNormal">Please review the X3D Unified Object Model (X3DUOM) as we can use that to discuss “PDUs” in a similar fashion to Statements, Types and Nodes (check it out), and people will understand us. The X3DUOM should be much easier to understand than XML Schema.</p>

<p class="MsoNormal"> </p>

<p class="MsoNormal">So the MU protocol could exchange collections of fields, within a Statement, Type or Node, in XML or JSON.  Bound (possibly through asymmetric encryption) to the collection will be a verb or action, such as SELECT, UPDATE, INSERT, DELETE (DML).   There will be no DDL at this time.  All collections must appear in XML Schema, X3DUOM, etc.  Also bound to the collection will be the topic of the message or “metadata” that will be queried and posted to in the many-to-many message queuing system. SELECT, UPDATE and DELETE verbs will also have a WHERE clause (TBD).</p>

<p class="MsoNormal"> </p>

<p class="MsoNormal">What currently is missing from X3DUOM that is present in the MU protocol?</p>

<p class="MsoNormal"> </p>

<p class="MsoNormal">Do we want to use XQuery?</p>

<p class="MsoNormal"> </p>

<p class="MsoNormal">John</p>

<p class="MsoNormal"> </p>

<p class="MsoNormal">Sent from <a href="https://go.microsoft.com/fwlink/?LinkId=550986" target="_blank">Mail</a> for Windows 10</p>

<p class="MsoNormal"> </p>

<div style="border: none;border-top: solid rgb(225,225,225) 1.0pt;padding: 3.0pt 0.0in 0.0in 0.0in;">
<p class="MsoNormal" style="border: none;padding: 0.0in;"><b>From: </b><a href="mailto:yottzumm@gmail.com" onclick="parent.window.location.href='mailto:yottzumm@gmail.com'; return false;" target="_blank">John Carlson</a><br/>
<b>Sent: </b>Sunday, March 31, 2019 7:52 PM<br/>
<b>To: </b><a href="mailto:christoph.valentin@gmx.at" onclick="parent.window.location.href='mailto:christoph.valentin@gmx.at'; return false;" target="_blank">Christoph Valentin</a><br/>
<b>Cc: </b><a href="mailto:x3d-public@web3d.org" onclick="parent.window.location.href='mailto:x3d-public@web3d.org'; return false;" target="_blank">X3D Graphics public mailing list</a><br/>
<b>Subject: </b>RE: [x3d-public] pub/sub for multiuser. SP-ARK input. pub/sub ineventloop for X3Dv4</p>
</div>

<p class="MsoNormal"> </p>

<p class="MsoNormal">With pub/sub, publishers send messages to topics, and subscribers receive (or poll) messages from topics (many-to-many). You can have one-to-one messaging with a similar or same product. Oracle AQ, Java JMS work with database tables or similar to implement message queues.  So central service yes, but see below, email.  There used to be a pub/sub server run by google, but no longer.  One publishes to a topic and the recipient filters messages.  It may be worth reading some message queuing literature for terminology. I am most familiar with Oracle AQ and Java JMS.</p>

<p class="MsoNormal"> </p>

<p class="MsoNormal">You can send text or objects over these.  I don’t recommend video, but let me look for a video messaging queuing system.  We can pass URLs or we can use WebRTC for live videos.</p>

<p class="MsoNormal"> </p>

<p class="MsoNormal">Email is a distributed message queuing system.   Topics involve mailing lists and threads.  People publish email to topics People subscribe to email with their email address. Email is distributed pub/sub.</p>

<p class="MsoNormal"> </p>

<p class="MsoNormal">So the idea I want to get across is pub/sub, not central versus distributed. A lot of software used the idea of federation.  I think we want the idea of a federated messaging system—but that may be too complex for a small team, so we’d have to select a product or get someone to build us one (XMPP has federation, conferences/topics already).   So we design the content, and choose something (an existing standard) to do transport and signaling.</p>

<p class="MsoNormal"> </p>

<p class="MsoNormal">What content are we designing in to our messages?   What do we require of the underlying system beside transport? Multimedia? In-order messages?  Signaling?</p>

<p class="MsoNormal"> </p>

<p class="MsoNormal">By Broker do you mean Message Transfer Agent/MX Host?  <a href="https://en.wikipedia.org/wiki/Message_transfer_agent" target="_blank">https://en.wikipedia.org/wiki/Message_transfer_agent</a>.   There used to be something called “Store and forward” in the days of UUCP (dialup).  Sendmail would queue up the mail, and when a UUCP connection happened, it would send the mail over the phone lines, the mail would hop from host to host along a path specified in the address.  Also USENET (topic software) <a href="https://en.wikipedia.org/wiki/Usenet" target="_blank">https://en.wikipedia.org/wiki/Usenet</a> went over UUCP.   Practically before my time.  These were intended to use MIME for multimedia.  I remember when sending images over UseNet was a big thing.</p>

<p class="MsoNormal"> </p>

<p class="MsoNormal">I would rather discuss the HLAP (High Level Application Protocol), and let the HLAP choose a software infrastructure based on requirements of the HLAP (That is, set requirements for the lower level protocols).   Once we have a shopping list of requirements, we go shopping for something compatible with Web3D’s Intellectual Property rules.</p>

<p class="MsoNormal"> </p>

<p class="MsoNormal">Requirements of a transport for HLAP:</p>

<ol start="1" style="margin-top: 0.0in;" type="1">
        <li class="MsoListParagraph" style="margin-left: 0.0in;">Many to Many topics and messaging capable of carrying or referring to X3D multimedia, Avatars, Inventory and Communication.  At up to ?? messages per second</li>
        <li class="MsoListParagraph" style="margin-left: 0.0in;">Federated messaging (possibly spatiotemporal)</li>
        <li class="MsoListParagraph" style="margin-left: 0.0in;">Conferences/Rooms/Channels/Topics for private X3D worlds</li>
        <li class="MsoListParagraph" style="margin-left: 0.0in;">Block a publisher</li>
        <li class="MsoListParagraph" style="margin-left: 0.0in;">Report a publisher</li>
        <li class="MsoListParagraph" style="margin-left: 0.0in;">Message log/replay.</li>
        <li class="MsoListParagraph" style="margin-left: 0.0in;">Edit own messages.</li>
        <li class="MsoListParagraph" style="margin-left: 0.0in;">Conference/Topic/Room/Channel search?</li>
        <li class="MsoListParagraph" style="margin-left: 0.0in;">Usable from HTML5 web.</li>
</ol>

<p class="MsoNormal"> </p>

<p class="MsoNormal">Please provide input for this list.</p>

<p class="MsoNormal"> </p>

<p class="MsoNormal">Valentin, you may post this to the SP-ARK site.</p>

<p class="MsoNormal"> </p>

<p class="MsoNormal">Note that I have difficulty talking about state because of multiple meanings, political, physics etc.   Do you really just mean state, state of what?  What does the state transition network look like?</p>

<p class="MsoNormal"> </p>

<p class="MsoNormal">John</p>

<p class="MsoNormal"> </p>

<p class="MsoNormal">Sent from <a href="https://go.microsoft.com/fwlink/?LinkId=550986" target="_blank">Mail</a> for Windows 10</p>

<p class="MsoNormal"> </p>

<div style="border: none;border-top: solid rgb(225,225,225) 1.0pt;padding: 3.0pt 0.0in 0.0in 0.0in;">
<p class="MsoNormal"><b>From: </b><a href="mailto:christoph.valentin@gmx.at" onclick="parent.window.location.href='mailto:christoph.valentin@gmx.at'; return false;" target="_blank">Christoph Valentin</a><br/>
<b>Sent: </b>Sunday, March 31, 2019 6:19 PM<br/>
<b>To: </b><a href="mailto:yottzumm@gmail.com" onclick="parent.window.location.href='mailto:yottzumm@gmail.com'; return false;" target="_blank">John Carlson</a>; <a href="mailto:brutzman@nps.edu" onclick="parent.window.location.href='mailto:brutzman@nps.edu'; return false;" target="_blank">Don Brutzman</a><br/>
<b>Cc: </b><a href="mailto:x3d-public@web3d.org" onclick="parent.window.location.href='mailto:x3d-public@web3d.org'; return false;" target="_blank">X3D Graphics public mailing list</a><br/>
<b>Subject: </b>Re: [x3d-public] pub/sub for multiuser. SP-ARK input. pub/sub inevent loop for X3Dv4</p>
</div>

<p class="MsoNormal"> </p>

<p class="MsoNormal">John,<br/>
<br/>
When you say "pub/sub vs. messaging" do I get you right you mean "using a central server yes vs. no" ?<br/>
<br/>
Messages are addressed to concrete destinations vs. publishing a state always to a server?<br/>
<br/>
This the topic you want to discuss?<br/>
<br/>
Thanks<br/>
--<br/>
Diese Nachricht wurde von meinem Android Mobiltelefon mit GMX Mail gesendet.</p>

<div>
<p class="MsoNormal">Am 01.04.19, 00:51, Christoph Valentin <christoph.valentin@gmx.at> schrieb:</p>

<blockquote style="border: none;border-left: solid rgb(204,204,204) 1.0pt;padding: 0.0in 0.0in 0.0in 6.0pt;margin-left: 4.8pt;margin-top: 4.8pt;margin-right: 0.0in;margin-bottom: 5.0pt;">
<div>
<p class="MsoNormal" style="margin-left: 19.2pt;">Hi John,<br/>
<br/>
About pub/sub. I am not aware of this abbreviation, but let me guess you mean "publish" / "subscribe" and let me assume we are talking about network functions well known as so called brokers.<br/>
<br/>
<br/>
<br/>
The Network Sensor node is exactly such an interface that is used to communicate with a broker (aka collaboration server).<br/>
<br/>
<br/>
<br/>
When the NS is initialized, then it sends an STS "Subscribe to Stream" to the broker and tells him about the interest<br/>
<br/>
<br/>
When a new state is published, then this is done with a SUN "State Update Notification".<br/>
<br/>
Publishing is done by SURE "State Update Request" and SCR "State Change Request<br/>
<br/>
All the best<br/>
--<br/>
Diese Nachricht wurde von meinem Android Mobiltelefon mit GMX Mail gesendet.</p>
</div>

<div>
<p class="MsoNormal" style="margin-left: 19.2pt;">Am 01.04.19, 00:35, John Carlson <yottzumm@gmail.com> schrieb:</p>

<blockquote style="border: none;border-left: solid rgb(204,204,204) 1.0pt;padding: 0.0in 0.0in 0.0in 6.0pt;margin-left: 4.8pt;margin-top: 4.8pt;margin-right: 0.0in;margin-bottom: 5.0pt;">
<p> </p>

<p class="MsoNormal" style="margin-left: 38.4pt;">What do you think about using pub/sub or messaging?  What “style” of protocol works best in SP-ARK’s case?  I think one to many and many to one is one of the best features of pub/sub, but often it takes a lot infrastructure to maintain the queues.</p>

<p> </p>

<p class="MsoNormal" style="margin-left: 38.4pt;">Maybe we should step back and define the objects we are communicating.</p>

<p> </p>

<ol start="1" style="margin-top: 0.0in;" type="1">
        <li class="MsoListParagraph" style="margin-left: 0.0in;">Avatar (initial H-Anim figure) and position, orientation, motion (ongoing).   This is done by pc.multiplayer tag around the world</li>
        <li class="MsoListParagraph" style="margin-left: 0.0in;">Things the avatar might be carrying (shapes transformed by the avatars position, orientation and motion)</li>
        <li class="MsoListParagraph" style="margin-left: 0.0in;">Sounds-chat-video applied to avatar position</li>
        <li class="MsoListParagraph" style="margin-left: 0.0in;">???</li>
</ol>

<p> </p>

<p> </p>

<p> </p>

<p class="MsoNormal" style="margin-left: 38.4pt;">Thus some actions might be:</p>

<p> </p>

<p class="MsoNormal" style="margin-left: 38.4pt;">Subscribe to Avatar Topic, Reply Address</p>

<p class="MsoNormal" style="margin-left: 38.4pt;">Subscribe to Inventory Topic, Reply Address</p>

<p class="MsoNormal" style="margin-left: 38.4pt;">Subscribe to Communication Topic, Reply Address</p>

<p class="MsoNormal" style="margin-left: 38.4pt;">Avatar Publish</p>

<p class="MsoNormal" style="margin-left: 38.4pt;">Inventory Publish</p>

<p class="MsoNormal" style="margin-left: 38.4pt;">Communication Publish</p>

<p class="MsoNormal" style="margin-left: 38.4pt;">Receive Avatar Publish</p>

<p class="MsoNormal" style="margin-left: 38.4pt;">Receive Inventory Publish</p>

<p class="MsoNormal" style="margin-left: 38.4pt;">Receive Communication Publish</p>

<p> </p>

<p class="MsoNormal" style="margin-left: 38.4pt;">This feels a lot more natural to me than the SQL, Chat or REST protocols.</p>

<p> </p>

<p class="MsoNormal" style="margin-left: 38.4pt;">We can create different topics to communicate about, probably subclasses of NetworkSensor or some such.</p>

<p> </p>

<p class="MsoNormal" style="margin-left: 38.4pt;">Check out the High Fidelity intro video for ideas about what might be done, re: Inventory.   This will be important when we get to VR controllers.</p>

<p> </p>

<p class="MsoNormal" style="margin-left: 38.4pt;">Collaboration as far as the scene itself is a lot like SAI, but perhaps we need to consider network traffic for that?</p>

<p> </p>

<p class="MsoNormal" style="margin-left: 38.4pt;">Don, what do you think about putting a network pub/sub interface into the event loop for X3Dv4?  Is there a popular JavaScript pub/sub?</p>

<p> </p>

<p class="MsoNormal" style="margin-left: 38.4pt;">John</p>
</blockquote>
</div>
</blockquote>
</div>

<p class="MsoNormal" style="margin-left: 4.8pt;">_______________________________________________ x3d-public mailing list x3d-public@web3d.org <a href="http://web3d.org/mailman/listinfo/x3d-public_web3d.org" target="_blank">http://web3d.org/mailman/listinfo/x3d-public_web3d.org</a></p>

<p class="MsoNormal"> </p>

<p class="MsoNormal"> </p>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
_______________________________________________ x3d-public mailing list x3d-public@web3d.org <a href="http://web3d.org/mailman/listinfo/x3d-public_web3d.org" target="_blank">http://web3d.org/mailman/listinfo/x3d-public_web3d.org</a></div>
</div>
</div>
</div></div></body></html>