Given by Geoffrey C. Fox at CEWES(ERDC) Tango Traing on Sept 16-17 1999. Foils prepared October 3 1999
Outside Index
Summary of Material
We describe the essentials of shared event collaboration and how it is naturally integrated with the Web for both replicated client and server side shared objects. |
We describe TangoInteractive and its applications |
One use of XML is to define Shared Web Pages which implement both asynchronous (portal) and synchronous collaboration |
Another use of XML is to support universal access and to link diverse display devices in collaborative sessions |
We define the resultant event based architecture to be used in a new implementation of TangoInteractive |
We conclude with original presentation abstract |
Outside Index Summary of Material
NPAC |
111 College Place |
Syracuse NY 13244 4100 |
Phone: 3154432163 |
Geoffrey Fox |
Syracuse University |
We describe the essentials of shared event collaboration and how it is naturally integrated with the Web for both replicated client and server side shared objects. |
We describe TangoInteractive and its applications |
One use of XML is to define Shared Web Pages which implement both asynchronous (portal) and synchronous collaboration |
Another use of XML is to support universal access and to link diverse display devices in collaborative sessions |
We define the resultant event based architecture to be used in a new implementation of TangoInteractive |
We conclude with original presentation abstract |
Internet is universal delivery infrastructure |
XML is universal data structure (or object serialization mechanism) |
Java is universal programming language |
Distributed Objects are basic electronic building blocks |
Jini is universal mechanism for registration and look up of distributed objects |
Databases are useful way of persistently storing and managing objects |
Pagers/PalmTops/Cell Phones/PC's render objects |
W3C DOM describes Web Pages -- the universal view of all objects |
Messages or Events link objects together (Java programs this producing information in XML format) |
Collaboration means sharing objects |
Web-based Collaboration implies use of Web to share distributed objects accessible through the Web
|
Specify Page |
Receive Identical Page |
Web Site |
Web Pages are an example where there is a single copy of an object; perhaps simpler is the replicated object model used in chat-rooms and more generally shared applets where sharing is maintaining consistent state of replicas |
Server Shares Events |
Java Chat Rooms (applications or applets). Share text typed by users |
These educational resources are |
shared replicated client side objects |
Web Page Sharing is a special case of sharing server side objects -- CGI Scripts, Databases, Object Repositories etc. |
This can be done by sharing the Web specification of these objects which can be done client side without ANY change to basic object |
This is sharing of client side interface (proxy) to server side object |
Specify Object |
Collaboration Server Shares Object Specification |
Receive Identical Specification |
Fetch Identical Objects |
We have used the shared proxy notion to implement
|
Server does not need to know about detail of |
collaboration. |
It is more efficient if it |
caches information for |
re-use. |
Thus use custom data-base |
caching or general |
proxy server |
So if all clients want exactly same view at all times, then the "shared event" model is a waste. |
Might as well, just share the display produced on originating client (cf. Microsoft NetMeeting) |
In fact, shared event typically enables each client to get the same view but instead one shares the object but has different presentation layers on each client |
For instance, share a single XML document but apply different style sheets on each client |
Again in command and control, basic application is a 3D map (Geographical Information System) but not so interested clients can present a simple 2D view |
So let us imagine that we can redo all of this and assume that
|
Collaboration implies sharing of electronic objects and is needed in Asynchronous and Synchronous modes |
Asynchronous mode is MOST important (in all applications including distance education) and will be supported by run of the mill object web infrastructure
|
Synchronous mode has important applications and not done fully by giants ... |
Objects register and then define their state via a stream of events |
Need to share (federate) events between domains (your PC and mine) whose event services are normally isolated |
"Tango Server" |
Clients which receive events which are either queued (asynchronous) |
or processed synchronously |
Initial Load plus |
Stream of events reflecting
|
Event Stream becomes set of time stamped XML messages
|
One or More Shared Places |
One or More Shared Places |
............. |
Each "Shared Place on the Web" or SPW is a set of XML and HTML documents |
An XML document defines the collaboration Structure -- who is allowed in "Shared Place"; what objects can be there; where they are stored
|
There is an HTML document defines the shared place itself; it instantiates particular objects and is presentation layer
|
We will re-use some existing client side Java as SP agent and control objects invoked from style sheets |
The TangoInteractive Server can also be largely re-used |
There is a lot of interest in portals these days |
We build Web-based computing environments which are portals to Supercomputers and Web-based education or portals to a virtual university |
Merrill Lynch predicts that Enterprise Information portal market will be $15B by 2002 |
Portals are built (by us) as a customizable set of XML components ( e.g. Run a Particular Program or display thumbnail of the next web-page in lecture) |
SPW's can be thought of as customizable collaborative portals which define both synchronous and asynchronous shared components |
Electronic Mail and News Updates are just "events" which can be handed to viewer objects in an SPW
|
Integration of Synchronous and Asynchronous Events is essential in "Next Generation" TangoInteractive |
Customization is available as you can choose which objects are in your SPW and you can define customization parameters such as area for which you want weather and which sports results should be displayed |
Such customized portals are commonplace but SPDL has the advantage that it specifies both synchronous and asynchronous portal components. |
Currently TangoInteractive produces a very cluttered desktop as each capability is invoked as a separate window |
We build Java and JavaScript window managers to help out but doesn't seem right ... |
SPW will allow one design more coherent systems using either frames or windows as appropriate |
For instance, for distance education, one could put chat room, audio-video conferencing controls and whiteboard as separate frames of a single window |
We have introduced XML used to define the nature of collaboration in terms of objects, clients, policies |
We have discussed user customization in terms of portals |
Consider the JavaScript Shared Browser (JSSB) in TangoInteractive |
It is an example of collaborative content built around sharing events defined in Web Page
|
Here we discuss "content" Web pages and not the "Collaboration Definition" Web pages we discussed already |
Remember that "shared event" Collaborative systems share the object and not its particular presentation layer on each client |
Clicks on form/link in layers or frames |
Clicks on layers |
mouseover and mouseout ... |
Can veto default action on clicks or other events on nonmaster side
|
Save Form Contents at any time
|
Resizing so all clients have same scaling |
Scrolling |
Sharing can be customized from dialog window |
Download times to monitor bad networks at application level |
JSSB does monitor client page to detect unwanted page changes (One can capture clicks on Page links but not on "back button" ) |
Shared Pointer added to Internet Assistant PowerPoint on the Web |
Illustrates sharing of Web Object Model internal to document |
Null Window Holds All |
Permanent |
Data |
Tango Control Applet |
Launches and Positions auxiliary windows |
Cannot be signed Cannot do SetTimeout |
(has LiveConnect restrictions) |
Clock and Event Record |
Signed JavaScript Capture Events Control Clock |
and Inspect Shared Page for events |
Shared Page is a frame |
Dummy Page |
Position Control Bar |
Can be Destroyed without restarting Tango Session |
Shared Multiple List |
Shared Buttons |
Shared Text field |
Shared Checkbox |
One can either share raw system message (click event occurred) or higher level user event generated by JavaScript invoked by event |
Note Netscape 4.5 does NOT allow you to generate a general event in a page
|
So User events are convenient and sometimes required |
Function process() ... |
Invoke Tango JS Interface |
with user defined meaning |
Click on Button which happens to |
invoke some User JavaScript Code |
Capture Click and |
Invoke Tango JS Interface |
with meaning that click occurred |
Or |
Dialog Box Invokes Shared User Events |
Cards are 56 DHTML Layers |
All of this |
implies XML |
Framework |
for Card Games |
and Internet Gambling |
So "new version of JSSB" for SPW should implement:
|
Note TangoInteractive can map object specification on each client and so customization can be performed either before or after web page generated
|
Content Server |
Shared by SPW |
Events |
Trapped by XML JSSB |
Master |
Nonmaster |
Support of Collaboration between PC client, Palmtop and high graphics devices such as CAVE's |
So in education, can support a mix of wireless palmtops and laptops in the class, with distance PC's
|
Linkage of geographically distributed researchers is necessary to support collaborative computational science
|
A common XML specification of visualization is mapped according to display capabilities of client device |
1) Education (and lectures):
|
2) Computing Portals:
|
As communication and computing capabilities of micro devices improve one will see a growing suite of capabilities |
Micro Tango Agent |
Micro Device |
Palmtop/Pager |
XML Parser General Micro-Styles and |
Application Specific Styles to render XML |
Event Queues |
on "Permanent" |
Machine |
Event Generator |
Custom Filter |
Some Generic Libraries |
Abstract Event (a.k.a. message) to suitable size Convert to (and from) XML |
Reject Inappropriate Applications |
Asynchronous (mail/Computing Portal) |
or Synchronous (Selected Tango Applications) |
Permanent or Erratic Link |
Two features present in all future such collaboration systems will be incorporated
|
In Synchronous case, interesting Tango applications include
|
Asynchronous events of interest include
|
Jini and Java implementations are most elegant for micro device to Tango agent linkage. The necessary robust Java infrastructure will be available on a 12 month time scale
|
Note events are instantiated (serialized) as XML messages and event processing is more or less synonymous to message routing,queuing, archiving and rendering |
XML data structures could include general <micro> tags as well as more specific sub-tags for each application |
The micro device display should be similar to display of applications such as memos and mail on existing Palm applications with hierarchical structure |
So although we use a browser like language (specify messages in XML and render with a device dependent style), the rendering engine is extremely simple compared to a workstation browser
|
One can either view micro Tango as a standalone client or always invoke a full Tango client on a PC and view this as a proxy for micro device |
We need to provide a general architecture (libraries) to aid the piping (a.k.a. generating appropriate filter and transmitting events through it to Micro Tango Agent) of events from Tango client to micro Tango agent. Note this piping is responsibility of those applications that can be rendered on a micro device
|
As a byproduct of this new system, we will get a whiteboard that serializes drawings to XML (presumably in official VML (vector graphics) dialect) |
Some interesting events are associated with Jini enabled entities registering themselves in a lookup service which registration generates events |
For a pager, use one with a digital interconnect. It is essentially permanently connected |
For a Palm V, buy digital modems and assume they intermittently dial in to connect to Micro Tango Agent
|
Note that current Tango JavaScript shared browser (JSSB) has some similarities in architecture with that proposed here.
|
It is essential that collaborative technologies support all users independent of their hardware and physical capabilities |
Hardware issues are essentially illustrated by palmtop to CAVE example on previous foil |
Suppose we wish to teach a class where some students and/or teachers have impaired sight and hearing. |
Then we need to share same object content but render it differently on each client.
|
Essential to share content (as in XML JSSB) and this enables you to choose right presentation for given client
|
Concepts of XML JSSB for universal access developed with Al Gilman from Trace Center |
Assume that all education will be web-based |
Assume that we need to provide web resources of equal quality for all citizens |
This will not work if one has to translate each course from material for "regular user" to that for "user for different access capabilities" |
Thus only chance is to define curriculum in XML and produce customized presentation layers |
One will need a powerful indexing/abstracting scheme to be able design appropriate navigation schemes for all users and clients
|
There is a lot of TangoInteractive Software lying around to implement collaboration and so natural to implement customization in Java or JavaScript as an alternative to XSL
|
Note JavaScript very fast but phenomenological
|
Note that on detects events at presentation layer but must share at object layer -- only works if this object- presentation layer connection well defined |
XML Content |
Pages |
Events Trapped |
by XML JSSB |
define object state |
Converted by Browser etc. |
Shared Object |
Current Web-based Curriculum are rarely based on XML
|
Largest concern of (some) universities is the 80% of the faculty, who have little or no web expertise
|
Note advantage of XML and DOM is that seems relatively clear how to make collaborative with universal access |
Javabeans allow Java applets to be made collaborative but there is no separation between presentation and object layers |
Shared Place/Portal on the Web - the virtual place on the Web where people can meet and work together. They can use provided content and tools for collaboration and possibly creating new content. Basically, it is a ordinary Web page with collaboration and customization functionality added |
Shared Place Definition Language (SPDL) is an XML based application that implements the idea of collaboration as a Web page content. It enables creation of Shared Places. HTML includes Java Applets Active X etc. |
SPDL offers:
|
Shared Place Definition Language is a language for defining properties of shared places. SPDL conforms to XML specification |
Shared Object is a piece of software that can be embedded as a part of a Web page content. Shared Objects offer collaboration functionality using mechanisms provided by SP framework. To interact with SP framework, Shared Objects must implement the defined SP interface. Examples: Java Applets, Plug-ins, ActiveX objects, JavaScript Applications |
SP Framework is a set of mechanisms that implement (roughly equivalent to Tango server + local daemon) collaboration services and expose them to Shared Objects using SP interfaces (discussed later) |
In this example we define a simple shared place where the results of some scientific computations are available. |
The place can be used also for discussion among collaborating scientists. The discussion is supported by two shared objects: chat and data viewer. |
The chat can be used for the text based discussion about presented results. |
The data viewer can be used for the graphical presentation of the results. The authors of the results (`creators') have access to the advanced functionality of the data viewer. (e.g. support of particular XML dialects) They can use this functionality to present their findings visually to the `observers'. |
The shared place is defined by two documents. The presentation layer is described by the HTML document and the collaboration functionality is defined by the SPDL XML/XSL document. |
The SPDL document defines several collaboration aspects of the shared place. |
The header defines the communication protocol used for contact with collaboration server. (could be CORBA or what have you) |
Next, all the shared objects embedded in the shared place are enumerated. |
The following fragments define the user groups that have access to the shared place, specific user roles, and types of the collaborative sessions that are established in the shared place. |
Other fragments describe how the data visible by different users are synchronized and specify the sources of the content presented by the shared objects. |
Note how some Shared Place properties (e.g. users and files) are useful in non-collaborative page mode and others support both synchronous and asynchronous collaboration |
<?xml version="1.0"?> |
<placedef> |
<head> |
<title>Result Presentation</title> |
<protocol type="plain"> |
<server>kopernik.npac.syr.edu</server> |
<port</port> |
</protocol> |
</head> |
The Header contains the title of the place. |
It also declares how the shared place communicates with the collaboration framework. (I.e. server in Tango language) |
The plain client/server protocol is chosen here with the collaboration server running on the machine: kopernik.npac.syr.edu on the port: 5555. |
Other protocols such as IIOP can be used as well. |
Initialize shared place definition |
<sharedobject name="viewer"/><location> http://www.npac.syr.edu/experiments/apps/viewer.jar
|
</shared_object> |
<sharedobject name="chat">......</sharedobject> |
This fragment describes shared objects that are used in the shared place.
|
Collaboration functionality: |
Session management: Defines how the Shared Objects initiate or join collaborative sessions |
Synchronization: Describes mechanisms for assuring the consistence of data observed by collaborating users |
Control mechanisms: Defines how the behavior of Shared Objects can be controlled and how the state of the collaboration session can be accessed |
Shared Object data: |
Initial state: Defines how the Shared Object are initialized when they start running |
Persistence: Describes whether and how the content of the collaborative session is stored |
Content: Describes the data to be processed by Shared Objects during collaboration session |
Users: |
Grouping: Defines user groups with possibility of assigning roles |
User identity based configuration: It is possible to define different behavior of Shared Object depending on the user, user group or user role |
Referencing Shared Objects: |
Shared Object ID: SPDL uses Shared Object ID to define properties for specific Shared Object |
Granularity: It is possible to define different behavior for individual Shared Objects, classes of Shared Objects or for the whole Shared Place |
<groups> |
<group name="syracuse"> |
<user>morgan</user> |
<user>cheng</user> |
</group> |
<group name="boston"> |
<user>smith</user> |
<user>johnson</user> |
</group> |
<group name="washington"> |
<user>anderson</user> |
<user>brown</user> |
</group> |
</groups> |
This fragment of the SPDL document defines user groups. Those groups are used in further sections of the SPDL document to define other properties of the shared place. Three user groups, each with two users, are defined: syracuse, boston and washington. |
<users> |
<place_access> |
<user_group>syracuse</user_group> |
<user_group>boston</user_group> |
<user_group>washington</user_group> |
</place_access> |
<users> |
This fragment declares that only members of the groups: syracuse, boston, and washington can access the shared place. |
The declaration uses the `place_access' tag, therefore the access restriction applies to the whole place (chat and viewer objects). However, it is possible to define separate settings for the specific objects. |
<roles> |
<object_roles name="viewer">
|
</object_roles> |
</roles> |
The fragment of the SPDL document on this page defines the roles for the users of the shared object: in particular we illustrate with the roles creator and observer. |
We suppose that the content handled by the viewer object were produced by scientists from Syracuse therefore the role of the creator is assigned to them. The two other groups have the observer roles. |
The shared object `viewer' behaves in different way depending on the role of the user. The user that has the role of the creator (must belong to `syracuse' group) obtains access to the viewer interface with more functionality. This extended functionality enables presenting the gathered material to the observers. |
On the other hand, observers obtain access to the simpler interface suitable only for viewing the content presented by the creators. |
The shared object `chat' does not have this distinction. All users (that belong to the previously declared groups) can access it in the same way without any limitations. |
<sessions>
|
</sessions> |
This fragment defines how the collaboration sessions are created in the shared place. |
The members of all three groups automatically enter the collaboration session when they access the result analysis page. |
This means that when a user opens the page with the shared place defined by this document, she immediately starts the collaboration with other users without executing any special actions. |
<synchronization>
|
</synchronization> |
This fragment of the SPDL document specifies that whenever one of the users change the state of their shared object, this change will be immediately propagated to the shared objects of the other users. |
Such a "instant" mode is declared for all shared objects present in the shared place. |
<content>
|
</content> |
</placedef> |
This fragment of the SPDL document states that the shared object that implements the result viewer has access to the data from the location: http://www.npac.syr.edu/experiments/results/ in "read-only" mode. |
This place should be used for storing the data that can be displayed by the viewer. |
HTML documents containing:
|
SPDL XML document defining collaboration functionality of Shared Objects embedded in the HTML document |
Style Sheet for SPDL XML file defining applet that interprets page |
<placedef> |
. |
. . |
</placedef> |
SPDL document |
Web browser |
Regular content |
Web page |
Shared objects |
So Web Page is defined as a set of Nodes |
-- You choose which nodes (and their children) |
that you wish to share and then events are exchanged |
maintaining state consistency |
<HTML> |
<head><title>Page with the computation results</title></head> |
<body> |
<xml id="placeDocument" src="results.xml"></xml> |
<xml id="chatDef"> |
<embedobject name="chat"> |
<location>http://www.npac.syr.edu/experiments/apps/chat.jar |
</location ></embedobject></xml> |
<xml id="viewerDef"> |
<embedobject name="viewer"> |
<location>http://www.npac.syr.edu/experiments/apps/viewer.jar |
</location ></embedobject></xml> |
<xml id="style" src="spdl.xsl"></xml> |
SPDL Definitions Page |
Style Sheet |
Shared Objects |
Interpret 3 XML islands in style sheet and instantiate them in three (other) regions of document. ( Previously we loaded XML islands but they were not instantiated by browser) |
<SCRIPT FOR="window" EVENT="onload"> |
docTarget.innerHTML = placeDocument.transformNode(style.XMLDocument); |
chatTarget.innerHTML = chatDef.transformNode(style.XMLDocument); |
viewerTarget.innerHTML = viewerDef.transformNode(style.XMLDocument); |
</SCRIPT> |
<div id="docTarget"></div> |
<p>This page contains the results of our latest computations. |
The most interesting fragments are presented below. |
<p>results here ..... ANY OLD HTML |
<p>The authors of those computations will come here to discuss latest results on Monday at 3:00pm. |
Please join them in the discussion: |
<p>Visualization of some results presented by the authors is |
available here: |
<div id="viewerTarget"></div> |
<p>Talk with others about the results here: ANY OLD HTML |
<div id="chatTarget"></div> </body></HTML> |
The display of two shared objects |
Control Display |
Now we turn to implementation and architecture |
We remarked that SP Framework exposed a set of interfaces to Shared Objects and tools that manipulate them |
SP Interfaces are the entry points for accessing collaboration functionality provided by SP Framework (major extension of functionality provided by Tango API in Java applet, application, C++ and JavaScript):
|
Shared Objects
|
Shared Place Framework
|
Collaboration Framework offers low-level collaboration services to SP Agent (messaging and event service shared between collaborating clients as in current Tango Server) |
Web browser |
Collaboration Framework |
SP Agent |
Shared Object |
Web page |
Other Clients |
We have analyzed a successful Web-based collaboration system TangoInteractive and in particular its JavaScript interface enabling shared interactive web pages |
We have noted that it is very helpful to
|
XML can be used in defining portal/shared collaboration space |
XML can support universal access to collaborative environments to those with disabilities -- hence giving them access to education |
XML can support collaboration between clients from palmtops, to PC's and high-end virtual environments |
TangoInteractive is available now at http://www.npac.syr.edu/tango |
Prototypes involving SPDL and Collaborative PC's/palmtops will be available in Jan 00 |
This talk is: http://www.npac.syr.edu/users/gcf/suratangoxmlsep99 |