<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40"><head><meta http-equiv=Content-Type content="text/html; charset=utf-8"><meta name=Generator content="Microsoft Word 15 (filtered medium)"><style><!--
/* Font Definitions */
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:#954F72;
        text-decoration:underline;}
p.MsoListParagraph, li.MsoListParagraph, div.MsoListParagraph
        {mso-style-priority:34;
        margin-top:0in;
        margin-right:0in;
        margin-bottom:0in;
        margin-left:.5in;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
.MsoChpDefault
        {mso-style-type:export-only;}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
        {page:WordSection1;}
/* List Definitions */
@list l0
        {mso-list-id:472253142;
        mso-list-type:hybrid;
        mso-list-template-ids:286569224 -1 67698713 67698715 67698703 67698713 67698715 67698703 67698713 67698715;}
@list l0:level1
        {mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l0:level2
        {mso-level-number-format:alpha-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l0:level3
        {mso-level-number-format:roman-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:right;
        text-indent:-9.0pt;}
@list l0:level4
        {mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l0:level5
        {mso-level-number-format:alpha-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l0:level6
        {mso-level-number-format:roman-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:right;
        text-indent:-9.0pt;}
@list l0:level7
        {mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l0:level8
        {mso-level-number-format:alpha-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l0:level9
        {mso-level-number-format:roman-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:right;
        text-indent:-9.0pt;}
@list l1
        {mso-list-id:1058481762;
        mso-list-type:hybrid;
        mso-list-template-ids:1912273098 -1 67698713 67698715 67698703 67698713 67698715 67698703 67698713 67698715;}
@list l1:level1
        {mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l1:level2
        {mso-level-number-format:alpha-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l1:level3
        {mso-level-number-format:roman-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:right;
        text-indent:-9.0pt;}
@list l1:level4
        {mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l1:level5
        {mso-level-number-format:alpha-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l1:level6
        {mso-level-number-format:roman-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:right;
        text-indent:-9.0pt;}
@list l1:level7
        {mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l1:level8
        {mso-level-number-format:alpha-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l1:level9
        {mso-level-number-format:roman-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:right;
        text-indent:-9.0pt;}
ol
        {margin-bottom:0in;}
ul
        {margin-bottom:0in;}
--></style></head><body lang=EN-US link=blue vlink="#954F72"><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><o:p> </o:p></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><o:p> </o:p></p><p class=MsoNormal>What currently is missing from X3DUOM that is present in the MU protocol?</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Do we want to use XQuery?</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>John</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Sent from <a href="https://go.microsoft.com/fwlink/?LinkId=550986">Mail</a> for Windows 10</p><p class=MsoNormal><o:p> </o:p></p><div style='mso-element:para-border-div;border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0in 0in 0in'><p class=MsoNormal style='border:none;padding:0in'><b>From: </b><a href="mailto:yottzumm@gmail.com">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">Christoph Valentin</a><br><b>Cc: </b><a href="mailto:x3d-public@web3d.org">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><o:p> </o:p></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.<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></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.<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></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.<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></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.<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></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?<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>By Broker do you mean Message Transfer Agent/MX Host?  <a href="https://en.wikipedia.org/wiki/Message_transfer_agent">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">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.<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></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.<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Requirements of a transport for HLAP:<o:p></o:p></p><ol style='margin-top:0in' start=1 type=1><li class=MsoListParagraph style='margin-left:0in;mso-list:l1 level1 lfo1'>Many to Many topics and messaging capable of carrying or referring to X3D multimedia, Avatars, Inventory and Communication.  At up to ?? messages per second<o:p></o:p></li><li class=MsoListParagraph style='margin-left:0in;mso-list:l1 level1 lfo1'>Federated messaging (possibly spatiotemporal)<o:p></o:p></li><li class=MsoListParagraph style='margin-left:0in;mso-list:l1 level1 lfo1'>Conferences/Rooms/Channels/Topics for private X3D worlds<o:p></o:p></li><li class=MsoListParagraph style='margin-left:0in;mso-list:l1 level1 lfo1'>Block a publisher<o:p></o:p></li><li class=MsoListParagraph style='margin-left:0in;mso-list:l1 level1 lfo1'>Report a publisher<o:p></o:p></li><li class=MsoListParagraph style='margin-left:0in;mso-list:l1 level1 lfo1'>Message log/replay.<o:p></o:p></li><li class=MsoListParagraph style='margin-left:0in;mso-list:l1 level1 lfo1'>Edit own messages.<o:p></o:p></li><li class=MsoListParagraph style='margin-left:0in;mso-list:l1 level1 lfo1'>Conference/Topic/Room/Channel search?<o:p></o:p></li><li class=MsoListParagraph style='margin-left:0in;mso-list:l1 level1 lfo1'>Usable from HTML5 web.<o:p></o:p></li></ol><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Please provide input for this list.<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Valentin, you may post this to the SP-ARK site.<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></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?<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>John<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Sent from <a href="https://go.microsoft.com/fwlink/?LinkId=550986">Mail</a> for Windows 10<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><div style='border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0in 0in 0in'><p class=MsoNormal><b>From: </b><a href="mailto:christoph.valentin@gmx.at">Christoph Valentin</a><br><b>Sent: </b>Sunday, March 31, 2019 6:19 PM<br><b>To: </b><a href="mailto:yottzumm@gmail.com">John Carlson</a>; <a href="mailto:brutzman@nps.edu">Don Brutzman</a><br><b>Cc: </b><a href="mailto:x3d-public@web3d.org">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<o:p></o:p></p></div><p class=MsoNormal><o:p> </o:p></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.<o:p></o:p></p><div><p class=MsoNormal>Am 01.04.19, 00:51, Christoph Valentin <christoph.valentin@gmx.at> schrieb:<o:p></o:p></p><blockquote style='border:none;border-left:solid #CCCCCC 1.0pt;padding:0in 0in 0in 6.0pt;margin-left:4.8pt;margin-top:4.8pt;margin-right: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.<o:p></o:p></p></div><div><p class=MsoNormal style='margin-left:19.2pt'>Am 01.04.19, 00:35, John Carlson <yottzumm@gmail.com> schrieb:<o:p></o:p></p><blockquote style='border:none;border-left:solid #CCCCCC 1.0pt;padding:0in 0in 0in 6.0pt;margin-left:4.8pt;margin-top:4.8pt;margin-right: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.<o:p></o:p></p><p> </p><p class=MsoNormal style='margin-left:38.4pt'>Maybe we should step back and define the objects we are communicating.<o:p></o:p></p><p> </p><ol style='margin-top:0in' start=1 type=1><li class=MsoListParagraph style='margin-left:0in;mso-list:l0 level1 lfo2'>Avatar (initial H-Anim figure) and position, orientation, motion (ongoing).   This is done by pc.multiplayer tag around the world<o:p></o:p></li><li class=MsoListParagraph style='margin-left:0in;mso-list:l0 level1 lfo2'>Things the avatar might be carrying (shapes transformed by the avatars position, orientation and motion)<o:p></o:p></li><li class=MsoListParagraph style='margin-left:0in;mso-list:l0 level1 lfo2'>Sounds-chat-video applied to avatar position<o:p></o:p></li><li class=MsoListParagraph style='margin-left:0in;mso-list:l0 level1 lfo2'>???<o:p></o:p></li></ol><p> </p><p> </p><p> </p><p class=MsoNormal style='margin-left:38.4pt'>Thus some actions might be:<o:p></o:p></p><p> </p><p class=MsoNormal style='margin-left:38.4pt'>Subscribe to Avatar Topic, Reply Address<o:p></o:p></p><p class=MsoNormal style='margin-left:38.4pt'>Subscribe to Inventory Topic, Reply Address<o:p></o:p></p><p class=MsoNormal style='margin-left:38.4pt'>Subscribe to Communication Topic, Reply Address<o:p></o:p></p><p class=MsoNormal style='margin-left:38.4pt'>Avatar Publish<o:p></o:p></p><p class=MsoNormal style='margin-left:38.4pt'>Inventory Publish<o:p></o:p></p><p class=MsoNormal style='margin-left:38.4pt'>Communication Publish<o:p></o:p></p><p class=MsoNormal style='margin-left:38.4pt'>Receive Avatar Publish<o:p></o:p></p><p class=MsoNormal style='margin-left:38.4pt'>Receive Inventory Publish<o:p></o:p></p><p class=MsoNormal style='margin-left:38.4pt'>Receive Communication Publish<o:p></o:p></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.<o:p></o:p></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.<o:p></o:p></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.<o:p></o:p></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?<o:p></o:p></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?<o:p></o:p></p><p> </p><p class=MsoNormal style='margin-left:38.4pt'>John<o:p></o:p></p></blockquote></div></blockquote></div><p class=MsoNormal style='margin-left:4.8pt'>_______________________________________________ x3d-public mailing list x3d-public@web3d.org http://web3d.org/mailman/listinfo/x3d-public_web3d.org <o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal><o:p> </o:p></p></div></body></html>