WO2001006364A2 - Method and apparatus for prioritizing data change requests and maintaining data consistency in a distributed computer system equipped for activity-based collaboration - Google Patents

Method and apparatus for prioritizing data change requests and maintaining data consistency in a distributed computer system equipped for activity-based collaboration Download PDF

Info

Publication number
WO2001006364A2
WO2001006364A2 PCT/US2000/017759 US0017759W WO0106364A2 WO 2001006364 A2 WO2001006364 A2 WO 2001006364A2 US 0017759 W US0017759 W US 0017759W WO 0106364 A2 WO0106364 A2 WO 0106364A2
Authority
WO
WIPO (PCT)
Prior art keywords
data
data change
telespace
change request
accordance
Prior art date
Application number
PCT/US2000/017759
Other languages
French (fr)
Other versions
WO2001006364A8 (en
WO2001006364A3 (en
Inventor
Raymond E. Ozzie
Jack E. Ozzie
Original Assignee
Groove Networks, Inc.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Groove Networks, Inc. filed Critical Groove Networks, Inc.
Priority to JP2001511554A priority Critical patent/JP4750332B2/en
Priority to DE60042662T priority patent/DE60042662D1/en
Priority to CA002380141A priority patent/CA2380141C/en
Priority to EP00943244A priority patent/EP1456772B1/en
Priority to AT00943244T priority patent/ATE438148T1/en
Priority to IL14770500A priority patent/IL147705A0/en
Publication of WO2001006364A2 publication Critical patent/WO2001006364A2/en
Publication of WO2001006364A8 publication Critical patent/WO2001006364A8/en
Priority to IL147705A priority patent/IL147705A/en
Publication of WO2001006364A3 publication Critical patent/WO2001006364A3/en

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/40Network security protocols
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/176Support for shared access to files; File sharing support
    • G06F16/1767Concurrency control, e.g. optimistic or pessimistic approaches
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q10/00Administration; Management
    • G06Q10/10Office automation; Time management
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1095Replication or mirroring of data, e.g. scheduling or transport for data synchronisation between network nodes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L51/00User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail
    • H04L51/04Real-time or near real-time messaging, e.g. instant messaging [IM]
    • H04L51/043Real-time or near real-time messaging, e.g. instant messaging [IM] using or handling presence information
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/30Definitions, standards or architectural aspects of layered protocol stacks
    • H04L69/32Architecture of open systems interconnection [OSI] 7-layer type protocol stacks, e.g. the interfaces between the data link level and the physical level
    • H04L69/322Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions
    • H04L69/329Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions in the application layer [OSI layer 7]
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99951File or database maintenance
    • Y10S707/99952Coherency, e.g. same view to multiple users

Definitions

  • the invention relates generally to computers interconnected for communication over a network such as the Internet, and more particularly to a distributed computer- based system for coordinating and otherwise maintaining data pursuant to a distributed data model.
  • the Internet has established a dynamic, public environment for communication and interaction among its millions of users.
  • the Internet has redefined vendor-manufacturer, manufacturer-distributor, distributor-customer, and other relationships.
  • the "intranet” or “private Internet” With extension of the Internet technology into internal, secured networks of individual companies, the "intranet” or “private Internet”, as it is called, has enabled new forms of document and information sharing between individual employees and work groups using company directory and network infrastructure.
  • Online services such as electronic bulletin boards and chat rooms, electronic commerce, and technical support for products, are available on the World Wide Web (“WWW” or "Web”) operating over the Internet.
  • WWW World Wide Web
  • the Internet has, at its core, a server-client architecture, in which individual clients (i.e., Internet-content users) interface via computer-executable applications such as browsers with servers (i.e., Internet-content providers) to obtain documents from Web sites.
  • Browsers are software programs that enable personal computers to request, receive (e.g., download), interpret, and present Internet documents, and generally navigate the Internet.
  • Web servers typically have standard interfaces for running external programs, the most common is the Common Gateway Interface (CGI).
  • Web sites are collections of documents, usually consisting of a home page and related, linked documents, located on servers remote from the client.
  • the documents can be compound documents, containing data, graphics, video, sound, and/or other types of media, as well as links to other documents.
  • the WWW is a web of interconnected documents, or, more precisely, document objects that are located at various sites on the Internet.
  • a script is an executable program, or a set of commands stored in a file, that can be run by a Web server to produce a document that is then returned to the Web browser.
  • Typical script actions include running library routines or other applications to get information from a file or database, or initiating a request to get information from another computer, or retrieving a document corresponding to a selected hypertext link.
  • a script is run on the Web server when, for example, a user selects a particular hypertext link in the Web browser.
  • URLs provide location addresses for all document objects on the WWW.
  • a URL uniquely references a document object and often defines an access algorithm using Internet protocols.
  • Internet protocols are defined as current or future language conventions and present or future communication protocols that are generally-accepted and used for generating messages including documents for transmission over the Internet, or for transmitting such messages over the Internet, respectively.
  • Such language conventions include, for example, at present, Hypertext Markup Language (“HTML”) and extensible Markup Language (“XML”).
  • Such communication protocols include, for example, at present, Hypertext Transfer Protocol (“HTTP”), TCP/IP, FTP and GOPHER. Those skilled in the art will be familiar with these language conventions and protocols.
  • HTML is a language used for writing hypertext documents, containing multimedia content and links to other documents.
  • An HTML document includes a hierarchical set of markup elements, where most elements have a start tag, followed by content, followed by an end tag. Tags are enclosed in angle brackets (" ⁇ " and ">") and indicate how the document is structured and how to display the document, as well as destinations and labels for hypertext links. There are tags for markup elements such as titles, headers, text attributes such as bold and italic, lists, paragraph boundaries, external links to other documents, and internal links to other parts of the same document, graphic images, and many other document features. Many books are in wide circulation regarding programming using HTML.
  • XML is another of the language conventions included in the Internet protocols. XML is compatible with and complementary to HTML, at least in its current version. It is a standard way of describing a class of data objects as stored in computers, called XML documents, and behavior of programs that process these objects. XML documents are made up of storage units called entities, which contain either text or binary data. Text is made up of characters, some of which form the character content of the documents, and some of which form markup. Markup encodes a description of the document, such as its storage layout and logical structure. A software module called an XML processor is used to read XML documents and provide access to their content and structure.
  • a Web server and a Web browser communicate typically using the HTTP message protocol and the underlying TCP/IP data transport protocol of the Internet.
  • HTTP the Web browser establishes a connection to a Web server and sends an HTTP request message to the server.
  • the Web server checks authorization, performs any requested action such as downloading a document identified by its URL, and returns an HTTP response message containing either the HTML document resulting from the requested action or an error message.
  • the returned document may simply be a static file stored on the Web server, or it may be generated dynamically using a script called in response to the request message.
  • E-mail is electronic mail, by means of which documents are sent and received electronically at selected addresses. It has been estimated that a vast majority of Internet-based interaction is through the use of e-mail and other browser-based media that follow a "document send and receive" model. Perhaps due to that model, users often view the Internet as inherently “peer-to-peer", with individuals accessing documents provided by other individuals, without intervention by a higher authority.
  • the Internet is dynamic and flexible in providing users with entertaining and useful ways of communicating, though it does not meet all the needs of users. While users interact increasingly through the Internet, they continue to interact "off of the Internet in more conventional ways, such as through multi-medium (phone, fax, whiteboard), multi-temporal (real-time, overnight mail) and other informal means of communication.
  • Such a technique should permit any of the users to issue change requests regarding the documents, which changes can then be made asynchronously to the copies at all the local sites in a coordinated fashion even if the sites are disconnected from the network when the change requests are issued.
  • the technique should provide a high level of data consistency across all the sites so that each site presents essentially the same document for viewing and/or editing by the various, geographically dispersed users.
  • the invention resides in an apparatus called an activity, which is operable in a personal computer system, communication appliance or other network-capable device, for performing a shared, focused task with other, remotely-located users, such as, for example, a "chat", gaming, or business application.
  • the activity includes a tool for generating data change requests, called deltas, responsive to user interactions.
  • the activity also has a data-change engine for maintaining data in preferably nonvolatile, persistent memory pursuant to a data model.
  • the data-change engine includes a tool end for receiving deltas from the tool, providing the deltas with activity- specific commands for carrying out the request, and providing notification to the tool of data changes caused by delta execution.
  • the data-change engine also includes a dynamics manager end for receiving, from a dynamics manager, data-change directions to execute the deltas, i.e., perform the deltas' commands to make the requested changes to the data.
  • the invention resides in a system for providing communications and other shared and mutual activities between individuals and small groups in shared private spaces, called "telespaces".
  • participants or members of a telespace interact through network-capable devices, which can communicate with one-another over a network, e.g., the Internet and store individually local copies of telespace data.
  • Each telespace is an instantiation of one or more activities operable on each of the network-capable devices of members of the telespace.
  • Each activity includes one or more tools for initiating data change requests or deltas responsive to telespace member interactions.
  • Each activity also includes one or more data-change engines, separate from the tools, for maintaining the local copy of telespace data pursuant to a common data model.
  • Each network-capable device also includes a dynamics manager, responsive to the deltas, for directing the data-change engine to execute the deltas by making the requested changes to the local copy of data, and for coordinating the execution of the deltas from the various network-capable devices.
  • the invention can be practiced in a networked system including plural, preferably network-capable devices at different locations connected for communication preferably in accordance with Internet protocols.
  • Each network- capable device has (a) a memory for storing a local copy of activity-related data pursuant to a common data model, (b) one or more activities each including one or more tools and corresponding data-change engines as described above, (c) a communications manager for causing deltas to be shared among all the network- capable devices of the networked system that participate in the telespace to which the deltas pertain; and (d) a dynamics manager for coordinating execution of both locally- generated and remotely-generated deltas.
  • the user interactions can be initiated, and the resulting deltas generated, at any of the network-capable devices of the networked system, and the deltas are transmitted to each of the devices preferably over the network.
  • the dynamics managers direct the operation of their local data- change engines, preferably to prioritize execution of deltas and to maintain substantial consistency of the data across the networked system.
  • the networked system thus allows users at various remote sites, e.g., to share and edit data or perform other activities independently, on a peer-to-peer basis, while maintaining substantially consistent copies of the data at each of the network-capable devices for use even when disconnected from the network.
  • the invention can be implemented as an activity-based collaboration (ABC) system for interpersonal interaction.
  • the ABC system includes plural, network-capable devices connectable, e.g., via public networks (e.g., the Internet or wide area networks (WANs)) or via private networks (e.g., local area networks (LANs) or intranets), by cable, fiberoptics, infrared (IR) or other forms of communication links, to form the above-described networked system.
  • Each network- capable device is equipped with the above-described memory, and a framework including one or more dynamics managers.
  • the network-capable devices are preferably plug-compatible with the public network infrastructure, personal desktop applications and infrastructure (sometimes called "personal Internets"), and, where applicable, a company intranet.
  • the ABC system preferably uses dynamic, snap-in activity components, each for performing a specific task, such as "chat", document editing, gaming, etc.
  • the activity components can comprise software made available, for example, as shrink-wrapped products or downloaded over the network, e.g., the Internet.
  • the activity components can operate through common application programming interfaces (API) with the framework. Accordingly, the framework can be viewed and function as a platform for applications in the form of the activity components.
  • API application programming interfaces
  • a dynamics manager implements a data change request priority scheme that determines an order for executing the data change requests to promote data consistency.
  • each data change request has (and preferably contains) request sequence number information and dependency information.
  • the dynamics manager can cause the appropriate engine to make, roll-back ("undo"), and remake ("redo") data changes in response to this information.
  • the dependency information can specify, for example, a single prior data change request, in which case the dynamics manager will ensure that the prior data change request has indeed been processed at the corresponding peer unit prior to processing the data change request that depended on that prior request.
  • a dependency collision resolution scheme can be employed. For example, priority can be awarded based on date or sponsor of telespace membership, characteristic of the endpoint (such as job title, work group or department), nature or document location of the change requested, or other considerations.
  • the invention can be implemented as separate commercial products and services, including provision of the individual activity components, the framework for individual network-capable devices, and/or networked or ABC system, as well as communication services for effecting interactions between devices forming the system.
  • Figure 1 is a block diagram of an illustrative architecture of a conventional computer system
  • Figure 2 is a block diagram of a conventional application run on the computer system of Figure 1 , in which a control module is responsible for both interfacing with a display or other user interface and for maintaining data in accordance with a data model;
  • Figure 3 is a block diagram of an Internet-based system, showing both a client- server system for the WWW and a peer-to-peer system for a personal Web in accordance with an embodiment of the invention
  • Figure 4 is a block diagram of a portion of ABC system as implemented on the computer system of Figure 1 in accordance with an embodiment of the invention
  • FIG. 5 is a block diagram of a portion of ABC system as implemented on the computer system of Figure 1 , and illustrating typical telespace applications in accordance with an embodiment of the invention
  • Figure 6 is a block diagram of a portion of the ABC system as implemented for the chess telespace of Figure 5;
  • Figure 7 is a block diagram of a framework 700 including portions of the ABC system of Figure 4;
  • Figure 8 is a block diagram of an embodiment of portions of the ABC system of
  • Figure 9 is an illustration of an exemplary format for a delta for processing by the ABC system of Figure 4.
  • Figure 10 is a block diagram of a memory structure for supporting delta processing by the ABC system of Figure 4;
  • Figures 11 A and 11 B are flow charts depicting a method for delta processing by the ABC system of Figure 4 in accordance with an embodiment of the invention.
  • Figure 12 is a flow chart for resolving dependency conflicts in the method of Figure 11.
  • Activity refers to what a user actually does with the ABC system in order to interact with other users.
  • the term “activity” can have either of two meanings, depending on context. From an “outside view,” it means a runtime interaction between the ABC system and a computer user; e.g., an activity of this type permits users to draw on a shared whiteboard or permits two or more users to chat in real-time.
  • An activity in this sense can also be a background service (i.e., agent) running on a user's behalf on a local or server device, such as an archive server agent, or an inbound FAX agent.
  • activity means a modular, computer-executable program that can run on a user's personal computer or other form of device and perform a focused task.
  • An activity in this sense is comprised of two types of components, a tool and an engine, which are combined at design time to create an "activity template".
  • An activity template can be distributed in many ways, for example as shrink-wrapped software or as software that can be downloaded off the Web. It is envisioned that widely-distributed programs used for word-processing, spread-sheets, etc. will have versions designed for use in the ABC system, and sold as such in activity template form conforming to ABC system programmer interfaces.
  • Client refers to a user's personal computer, communication appliance or other form of device that is capable of human interaction, and connectable to a network, e.g., the Internet.
  • Background programs that run on the user's personal computer are called “Client Service Controllers”.
  • Foreground user interface (UI) programs that run on the user's personal computer are called “Client UI Controllers”.
  • Communication Manager refers to a mechanism for directing inbound and outbound deltas to appropriate destinations.
  • the communications manager can be implemented, for example, as a computer-executable program, which directs locally-initiated deltas created by a tool/engine pair for transmission over a network, e.g., the Internet, to another remote personal computer or other form of network-capable device, or to a relay when that remote device is not connected to the network; and which directs remotely- generated deltas received over a network, e.g., Internet, to a dynamics manager.
  • “Component” refers to a computer-executable program and its resources used within an activity. All components are identified by URLs.
  • the Web can be a global repository for components, with versions securely downloadable onto an appropriate component platform in the ABC system.
  • Computer refers to a device, as that term is defined hereinbelow.
  • Controller refers to a top-level, computer-executable program that drives the “inner” functionality of the ABC system.
  • a controller is tuned for a given platform, for example, a UNIXTM Daemon controller, or a controller for Microsoft WindowsTM running on an IntelTM microprocessor-based computer system.
  • Two general types of controllers are a service controller, which runs as a background process generally invisible to users, and a user interface (UI) controller, which is interactively controlled by a user.
  • UI user interface
  • “Delta” refers to a self-contained unit of data that contains one or more tool-to-engine data change requests (i.e., notifications or prompts regarding desired changes to the data).
  • Tools initiate delta creation by the dynamics manager in response to user interaction, and submit them to engines for asynchronous execution, as described below, under the direction of a dynamics manager.
  • a delta has a specific format, including a header portion for providing control information and a payload portion for providing information regarding the data to which the request pertains.
  • An individual delta can have one or more payloads, and where multiple payloads are employed, each can be targeted to telespace members with unique device capabilities or user roles.
  • Tools request information regarding potential data changes from engines for display or other form of presentation to users, and are asynchronously notified when deltas cause display changes.
  • Device refers to a physical hardware device, such as a personal computer (pc) or communication appliance, which, for purposes hereof, unless the context indicates otherwise, is typically network-capable, i.e., can communicate with other network-capable devices over the network, e.g. the Internet using Internet protocols. All devices are assigned a unique identity code by the ABC system, have URLs, and are distinct from the persons using the devices. A device potentially hosts many telespaces.
  • a device can be, for example, a pc, cellular telephone, fax machine, hand-held organizer, cable TV set top box, electronic entertainment unit (such as electronic toys and games and stereo equipment, or any other such network capable appliance, equipment or product).
  • Dynamics manager refers to the part of the framework of the ABC system, which facilitates the creation and coordinates the execution of deltas.
  • the dynamics manager can be implemented, for example, as a computer- executable program that runs on a user's personal computer or other form of network-capable device.
  • Endpoint refers to a unique pairing of a device and a person.
  • the ABC system uses this concept as a method of uniquely distinguishing a person among multiple users of a device, or devices among multiple computers used by the same person.
  • Engine refers to what can be called the "bottom half of an activity that implements the management and modification of persistent storage and data structures within the ABC system. Engines are packaged as components, have no user interfaces themselves but rather depend on their corresponding tools for user interfaces, and are substantially portable. Engines preferably exist exclusively to serve their corresponding tools. Engines preferably operate in universal synchrony.
  • Framework refers to the “inner workings” of the ABC system and contains most of its subsystems, including the dynamics manager, but no user interface.
  • the framework is a computer-executable program that can run on a user's personal computer or other form of network-capable device, and sits logically between the high-level controllers and the activities.
  • Identity is generally synonymous with "person”, though generally refers to one of the names, represented by an URL, by which a person is known by others. This concept comes into play because the ABC system embraces the notion that a person may have many identities or aliases, and, for example, many different URLs.
  • Member refers to a participant within or subscriber to a telespace, and is generally synonymous with the person portion (as opposed to device portion) of an endpoint when referring to telespace membership.
  • Vigation refers to the act of moving between URLs, and is analogous in the ABC system to navigation between Web pages and sites by a Web browser.
  • Person refers to a human being, or a server acting as a human's proxy, and generally refers to one who is participating in activities within a telespace. Each person has one or more identities, each of which is uniquely identified with an URL.
  • Server refers to a device that is normally incapable of direct human interaction except over a communications channel and can only run as background programs under service controllers.
  • Telespace refers to a virtual place were people gather to participate in one or more activities, and where people share things.
  • the telespace and the results of activities are persistently stored in memories on users' personal computers or other forms of network-capable devices.
  • a telespace is generally kept in synchrony between a user's device and other peoples' devices.
  • a telespace represents the logical unit of "membership” and access to activities.
  • a telespace is an instantiation of one or more activities.
  • Tool refers to what can be called the 'top half of an activity that implements the activity's user interfaces. Tools are packaged as components, initiate delta creation in response to user gestures, and interact with corresponding engines of the individual activities to perform specific tasks.
  • URL is an abbreviation for universal resource locator, which is an unique structured address of a resource such as a document, and, in some instances, represents a method by which a resource should be handled. URLs are used herein for substantially all persistent objects, user-visible objects, and external program-visible objects.
  • XML is an abbreviation for extended Markup Language, which is a standard, structured data format derivative of SGML intended for use on the Web. Depending on the context it also refers to an in- memory object structure used in the ABC system, which is compliant with the
  • XML XML standard's semantics. Many XML concepts are used herein, such as “ documents”, “ elements”, “ tags”, “attributes”, “ values”, “ content”, “ entities”, “ links”, and “pointers”. XML is used herein, for example, for structuring data in a document.
  • FIG. 1 illustrates a conventional system architecture for an exemplary computer system 100, with which the disclosed invention can be implemented.
  • the exemplary computer system of Figure 1 is discussed only for descriptive purposes, however, and should not be considered a limitation of the invention.
  • the invention is further not limited to devices traditionally thought of as computer systems, since it may be implemented in any of various types of network-capable devices, including, e.g., video game consoles, personal appliances or cable set-top boxes.
  • network-capable devices including, e.g., video game consoles, personal appliances or cable set-top boxes.
  • cable set-top boxes may not contain mass storage but do contain video tuners built with digital signal processors.
  • the computer system 100 includes a central processing unit (CPU) 105, which may include a conventional microprocessor, random access memory (RAM) 110 for temporary storage of information, and read only memory (ROM) 115 for permanent storage of information.
  • CPU central processing unit
  • RAM random access memory
  • ROM read only memory
  • a memory controller 120 is provided for controlling system RAM 110.
  • a bus controller 125 is provided for controlling bus 130, and an interrupt controller 135 is used for receiving and processing various interrupt signals from the other system components.
  • Mass storage may be provided by diskette 142, CD-ROM 147, or hard disk 152. Data and software may be exchanged with client computer 100 via removable media, such as diskette 142 and CD-ROM 147.
  • Diskette 142 is insertable into diskette drive 141 , which is connected to bus 130 by controller 140.
  • CD- ROM 147 is insertable into CD-ROM drive 146, which is connected to bus 130 by controller 145.
  • the hard disk 152 is part of a fixed disk drive 151, which is connected to bus 130 by controller 150.
  • a keyboard 156 and a mouse 157 may be connected to bus 130 by keyboard and mouse controller 155.
  • An audio transducer 196 which may act as both a microphone and a speaker, is connected to bus 130 by audio controller 197.
  • DMA controller may be connected to client computer 100 through bus 130 and an appropriate controller.
  • DMA controller may be connected to client computer 100 through bus 130 and an appropriate controller.
  • Computer system 100 also includes a network adapter 190 that allows the client computer 100 to be interconnected to a network 195 via a bus 191.
  • the network 195 which may be a local area network (LAN), a wide area network (WAN), or the Internet, may utilize general-purpose communication lines that interconnect multiple network devices.
  • Computer system 100 generally is controlled and coordinated by operating system software. Among other computer system control functions, the operating system controls allocation of system resources and performs tasks such as process scheduling, memory management, networking and I/O services.
  • FIG. 2 shows a conventional system 200 for controlling a data model using a technique known as "model view controller".
  • a data model module 202 stores and maintains data, for example a database, in accordance with a data model.
  • a controller module 204 responsive to a locally initiated event 206 (such as a user input) or to an externally initiated event 208 (such as event notifications received from remote computer systems), directs a "set current value" command to the data model module 202 to cause a change in the stored data.
  • the controller module 204 notifies an output device such as display 206 of the data change.
  • the display 206 obtains the changed data from the data model module 202 and updates the display of the data so that the current data can be viewed by a user.
  • the foregoing technique is strictly event driven and linear in operation.
  • internal or external events that cause the controller module 204 to command a change to the data are stored in a FIFO (first-in, first-out) buffer in the controller module 204, and then handled in the order in which the event notification reaches the controller module.
  • FIFO first-in, first-out
  • model mediated control in which a dynamics manager mediates changes effected by the data-change engine to the data model.
  • FIG 3 illustrates an Internet environment 300, in which the present invention can be advantageously employed.
  • individual clients 306, 308 separately communicate over the Internet 309 with a server 310.
  • Each client 306, 308 can direct a request through the Internet 309 to the server, and, responsively, the server 310 may respond to the request, for example, by providing documents stored on the server over the Internet 309 to the clients.
  • Each server 310 and client 306, 308 can be implemented as a personal computer as illustrated in Figure 1 (with certain UI components optional in the case of the server), capable of execution of appropriate programs such as a client browser 311 and/or other communication interface, as described below.
  • peers 314A-D In a peer-to- peer view 312 of Internet use, the users' computer systems constitute peer units 314A-D, and communications through the Internet can be directed from one peer unit to another, without apparent intermediaries.
  • Each peer unit 314A-D can be implemented as a personal computer such as that illustrated in Figure 1 or other form of network-capable device.
  • the invention can be implemented advantageously in either clients 306, 308, or peer units, 314A-D, though that description will focus on implementation with a peer-to-peer view of the system.
  • peer-to-peer communications can be made directly or via a relay device 316.
  • the relay device 316 is preferably a "store and forward", which can store messages destined to a peer unit 314 which is temporarily disconnected from the Internet, and later, on reconnection, can forward the messages to that peer unit.
  • E. ABC system Architecture and Operation Figure 4 shows the ABC system 400 as implemented on one of the peer units
  • the ABC system on peer unit 314A has a framework 402, at least one telespace 404, and a user interface 406.
  • the framework 402 preferably provides a platform for servicing a number of telespaces 404.
  • the framework 402 preferably is of modular construction, with a programmer interface on which the activities run and through which they communicate with framework components.
  • the framework 402 includes a user interface manager 408, identity manager 410, telespace manager 412, activity manager 414, storage manager 416, controller services manager 418, dynamics manager 420, and communications manager 422.
  • the user interface (UI) manager 408 is responsible for managing shared services for a number of user interface controllers (not separately shown).
  • the UI manager 408 manages layout of activities within panes of a display window, and otherwise provides a desired "look and feel" for the user interface.
  • the UI manager 408 also manages activity navigation (for example, go to, next, previous, etc.) and maintains a navigation history.
  • the identity manager 410 is responsible for maintaining identities of a telespace's member. As noted above, an identity is the name, and corresponding URL, by which each user is known by others. Individual users may have one or many identities.
  • the identity manager 410 maintains a record or table, preferably in XML, of the identities.
  • the identity manager 410 can also maintain a record or table, preferable in XML, of the URL's of telespace members and their corresponding device URL's. Alternatively, a separate member manager can be implemented.
  • the telespace manager 412 is responsible for managing each of the telespaces 404 that may be opened on the peer unit 314A. Each telespace 404 is an instantiation of one or more activities. Each telespace 404 has a corresponding activity manager 414.
  • the activity manager 414 is responsible for (a) adding new activities to a telespace, (b) opening existing activities in a telespace, and (c) updating telespace activities from new activity template versions. To add a new activity, the activity manager 414 is provided with the URL of an activity template, opens the template, and extracts and propagates the template information (such as component URLs) into the telespace.
  • the template defines the initial activity configuration for a telespace.
  • a user may add additional activities to the telespace 404 later as needed.
  • an activity is "part of the telespace and visible to all telespace members.
  • a telespace has a tag to identify its activity manager and bind the activity manager and data.
  • each document has a local registry linked to it, with XML tag names maintained in the registry to express mapping (reference pointers or associations) in an extensible, platform-independent way, between the document and its corresponding telespace.
  • Each telespace member has a framework and an activity template for the telespace available on his or her peer unit 314A-D.
  • Each activity includes a tool, such as tool 424 and an engine, such as engine
  • the tool 424 provides the user interface (UI) capability for the activity, interacting via UI 406 with a member.
  • UI interaction may include UI events initiated, for example, via the keyboard 156 ( Figure 1 ) or mouse 157 ( Figure 1 ).
  • the tool 424 may request its corresponding engine 426 to effect data model changes, subscribing to the engine 426 for asynchronous data change notifications for updating Uls asynchronously when data changes occur.
  • a tool 424 also implements application program interfaces (APIs) for interacting with background services provided under the direction of the controller manager 418.
  • the engine 426 is responsible for maintaining and changing the data that supports the telespace 404 and/or results from user interaction obtained through the tool.
  • the engine 426 can modify persistent model data, and emit asynchronous data change notifications to the tool 424, both under the direction and control of the dynamics manager 420, as will be explained below.
  • the storage manager 416 controls access to the stored data.
  • An activity template is a persistent representation of the tool and engine components comprising an activity.
  • An activity template can be distributed, for example, as shrink wrapped software or downloaded, for example, over the Internet to peer unit 314A from a remote server.
  • Activity components can be regarded as Web documents and are represented persistently via URLs.
  • the activity template itself preferably has a URL, which allows for tracking activity design changes.
  • the activity template can be a single activity template or an activity collection template.
  • a single activity template pertains to only one activity, such as "chat”.
  • An activity collection template pertains to a collection of activities, such as "chat and outline”.
  • the ABC system 400 gets a member's identity via the identity manager 410, opens a telespace manager, requests the telespace manager to open a telespace via a URL, requests the telespace manager for an activity manager, and, then, the activity manager opens an activity, typically by using the activity's URL. Then, the ABC system 400 is ready for members to use the telespace to perform the shared, focused tasks offered by the particular activity.
  • Figure 5 shows an exemplary, multi-telespace use of an ABC system 500 on peer units 314A-D. It should be understood that the ABC system 500 is a distributed system. As such, while a description is provided of components only of peer unit 314A, peer units 314B-D have analogous components, and no separate description of them is necessary.
  • the ABC system 500 includes a number of illustrative telespaces in which peer unit 314A is subscribed as a member, including a car designing telespace 502, a chat telespace 504, and a chess playing telespace 506.
  • peer unit 314 has a number of components used during operation of the telespaces 502, 504, 506.
  • Peer unit 314A has a memory 510 that maintains a telespace record 508, which lists and describes each of the telespaces 502, 504, 506 in which it is member, and a member record 512, which lists and describes each of the identities of telespace members that may participate in those telespaces.
  • a UI 512 can receive user-initiated changes to the telespace and member records 508, 514.
  • Each of the telespaces 502, 504, 506 instantiates a different one of the illustrated activities 522, 524, 526.
  • the illustrated activites 522, 524, 526 could reside in a single telespace, in which case all members of the single telespace would have access to each of the activities.
  • Each activity 522, 524, 526 includes a respective tool 532, 534, 536 specific to the activity, and under control of a respective engine 542, 544, 546 for carrying out changes to a corresponding data model 552, 554, 556 contained in memory 510, and which is persisted in each of the telespaces 502, 504, 506.
  • the car design telespace 502 is an instance of an activity 522 that can include a tool 532 in the form of CAD (computer-aided design) software
  • the chess-playing telespace 506 is an instance of an activity 526 that can include a tool 536 in the form of a software chess game.
  • telespaces 502, 504, 506 Users pursue the activities 522, 524, 526 of the telespaces 502, 504, 506, via the user interface 514, which interfaces with the tools 532, 534, 536 for providing the tools with user requests. Responsive to the requests, the engines 542, 544, 546 change the persistent state of a corresponding data model 552, 554, 556 in memory 510, under the control of the dynamics manager 501 to reflect a current state.
  • the persistent state of the data for the chess-playing telespace 506 might include a chess board and locations of the chess pieces on the board; a user request may specify a chess piece move, which constitutes a change in the data, i.e., a delta; and the current state would reflect the execution of the delta and the consummation of the move.
  • Figure 6 illustrates the operation of the ABC system 500, with reference to components thereof located in the peer unit 314A and described with respect to Figure 5.
  • the engine 546 presents to the tool 536 potential actions or options (e.g., chess piece moves) that can be implemented in furtherance of the particular focused task of the activity 526.
  • the tool 536 interacts with a user who is a member of telespace 506 (as recorded in the member record 512) through the user interface 514, presenting a view of the activity (e.g., a view of the chessboard, and, possibly, a list of moves).
  • a delta is a unit of requested change, preferably, in the form of a container object.
  • Container objects are well known by those familiar with object-oriented programming techniques.
  • the tool 536 is responsible for determining the granularity of the change requested in the delta.
  • the delta container object can hold (contain) one or more commands for carrying out the change, in addition to user-specified data, e.g., an identification of a particular chess piece and the original and target locations on the board constituting a move of that chess piece.
  • the delta Upon generation, the delta is empty of any commands, and itself constitutes merely a request for change until filled with the appropriate commands by the engine 546 to effectuate the change. It is the responsibility of the engine 546 to record in the delta in an engine-specific way (which need not be known to the tool 536) the commands required to effect the change.
  • the tool 536 initiates creation of a delta by requesting its generation by the dynamics manager 501.
  • the dynamics manager 501 creates the delta and returns it over line a' to the tool 536, and may record the created delta in case fault recovery is required.
  • the tool 536 passes control of the delta through a tool interface 602 to a tool-end 604 of the engine 546, thereby invoking the engine.
  • the deltas are objects allocated in memory whose pointer is passed as XML elements.
  • the engine's tool interface 602 exposes a set of application programming interfaces for creating commands that can effectuate the requested change encoded in the delta, or, in other words, for filling a delta with appropriate, typically engine-specific commands in serial form to fulfill the user's intent.
  • the engine 546 then passes control of the delta, now filled with the commands, back to the tool 536.
  • the tool 536 passes control of (i.e., submits) the filled delta to the dynamics manager 501 for execution.
  • the dynamics manager 501 may also receive inbound deltas over line “b' " from other peer units 314B-D.
  • the dynamics manager 501 along with the dynamics managers in peer units 314B-D, are responsible for maintaining consistency of executed changes to the data model 556 from one end of the ABC system to the other for all members who participate in the chess game telespace.
  • the dynamics manager 501 includes queue structures 612 and a dynamo process 614, preferably a computer-executable program containing the main logic of the dynamics manager.
  • the dynamics manager 501 and its dynamo process 614, are in bi-directional communication with the communications manager 622.
  • the dynamics manager 501 enqueues the received deltas in the queue structures 612 for ordering purposes, then the dynamo process 614 services the queue structure in processing the enqueued deltas, and directing the engine 546 to execute them in an appropriate order.
  • the dynamo process 614 of dynamics manager 501 sends a control signal in the form of a "delta command execution" message through the interface 615 to the dynamics manager end 616 of the engine 546 over line "c" of Figure 6.
  • the delta command execution message directs the engine 546 to proceed with execution of the delta received from the tool 536 by making the requested change to the data model 556 contained in the memory 510, and which is persisted in the telespace.
  • the dynamo process 614 of dynamics manager 501 also disseminates all locally-initiated deltas to other endpoints via the communications manager 622, which transmits them over the network, e.g., 626 to the peer units 314B-D.
  • the respective dynamics manager enqueues received deltas in its local queue structures, and then passes them in a specified order to its respective engine for execution.
  • a single dynamics manager can support a single telespace or multiple telespaces, depending on the application, and thus can be responsible for directing a number of engines to execute deltas for the various telespaces.
  • the dynamics manager 501 determines which engine should execute a delta by examining the delta's information.
  • the delta contains commands that are identified to a specific one of the engines, and tagged with an engine identifier or code carried in the delta's payload.
  • the dynamics manager associates the engine code with the referenced delta, and directs the delta's execution by the appropriate engine.
  • the engine 546 sends a "data change notification" message to notify the tool 536 of the execution of the delta, and of a new current state of the data in the data model 556.
  • the data change notification can be made by value or reference. That is, the notification can include the new data values themselves or can include a pointer to the new data in memory.
  • the tool 536 causes the user interface 514 to make the change available to the user, e.g., by displaying the move on a chess board graphic.
  • the other peer units 314B-D are making the analogous change to their locally stored data so as to effect the intent of the delta in a consistent manner. Situations may arise where one or another of the peer units 314A-D is not connected to the network, e.g., the Internet.
  • the communications manager 622 employs a device presence detector 430 to ascertain whether the peer unit 314A is connected and, if not, stores outbound deltas in an outbound delta store 628 until such time as connection is restored, and then transmits the stored deltas.
  • the communications manager 622 of peer unit 314A can proceed to transmit the outbound delta to relay 316 ( Figure 3) without regard to whether the other peer units are disconnected.
  • the relay 316 ( Figure 3) receives such outbound deltas, stores them as necessary in an outbound delta store 318 ( Figure 3), and forward them upon the destination peer unit 314B-D being reconnected.
  • the communications manager 622 can send all outbound deltas to the URL of the relay 316, and the relay can utilize an on-board look-up table 320 to ascertain the endpoint URL of the destination peer unit 314B-D to be used for relaying the delta.
  • the relay service can be provided, in practice, by an Internet Service Provider (ISP) or other Internet organizations.
  • ISP Internet Service Provider
  • separation of the tool from the engine permits the process of execution of deltas to be carried out asynchronously. This is useful because it takes time for the dynamics manager 501 and engine 546 to carry out their responsibilities in a manner, e.g., that will maintain data consistency for all telespace members. It is also useful because inbound deltas from other peer units 314B-D can affect timing of execution of locally-initiated deltas.
  • FIG. 7 shows an embodiment of a framework 700 for use with separately implemented activities (not shown).
  • a framework can be sold or licensed, e.g., as a computer program product, distinct from individual activities, which may be application specific snap-ins operable over the framework.
  • the framework hosts collaborations with respect to telespaces.
  • the illustrated framework 700 includes one or more dynamics managers 702, a communications manager 704, and a data structure template 706.
  • the data structure template 706 can contain object primitives, preferably in XML format, for use by activity developers.
  • the framework 700 can be implemented, for example, as computer-readable media 706, on which is stored computer-executable code comprising the dynamics managers 702 and communications manager 704, and computer readable data, including the object primitives of the data structure template 700.
  • FIG 8 shows an ABC system 800 equipped for communication between a number of peer units 802A-D via a network, e.g., Internet 803.
  • Each peer unit 802A-D can include the components described above with respect to peer unit 314A. (The exact number of peer units shown in Figure 8 was selected merely for illustrative purposes, and will depend on the configuration of a particular implementation and may vary over time.)
  • Each peer unit 802A-D includes a dynamics manager 804A-D for coordinating processing of deltas as initiated by tools 805A-D and performed by engines 807A-D, and a communications manager 806A-D for controlling communication between the peer units 802A-D.
  • the responsibilities of the communications manager 806A-D include transmitting and receiving messages (including deltas) over the network, e.g., Internet 803 using Internet protocols, such as, for example, TCP/IP.
  • Each peer unit 802A-D includes a memory 808A-D for storing data in support of operation, among other functions, of the communications managers 830A-D, respectively.
  • each communications manager 806A-D is responsible for managing all communications between its peer unit and the other peer units.
  • communications manager 822 manages bi-directional communications between peer unit 802A and peer units 802B-D.
  • the communications can include messages sent either from the peer unit 802A to one or more of peer units 802B-D, or from one of the peer units 802B-D to peer unit 802A.
  • the transmissions can be made directly and without intermediaries, provided the destination peer unit(s) 802B-D (in the former case) or peer unit 802A (in the latter case) are connected to the network, e.g., the Internet ("on-line").
  • a device presence server 812 can be employed to ascertain whether the intended destination is on-line, or temporarily disconnected (“off-line"). If the destination is off-line, the communications can be made via a relay 814 (as noted above), which then forwards the message on to its destination when it returns on-line.
  • peer unit 802A seeks to send a message to peer unit 802C, and the presence server 812 has informed the communications manager 806A that peer unit 802C is on-line, then the communications manager 806A sends the message via the network, e.g., the Internet 803, directly to the URL of peer unit 802C.
  • the message is received by communications manager 806C, which passes the message to dynamics manager 804C.
  • peer unit 802A seeks to send a message to peer unit 802C, and the device presence server 812 has informed the communications manager 806A that peer unit 802C is off-line, then the communications manager 806A sends the message via the network, e.g., Internet 803, to the URL of the relay 814.
  • the relay 814 can be implemented as a high-performance file server, which stores the en route message until peer unit 802C returns on-line, and then forwards the message to the URL of peer unit 802C.
  • the message is received as noted before, and passed through communications manager 806C to dynamics manager 804C.
  • the presence server 812 can serve the purpose within the ABC system 800 of monitoring whether the peer units 802A-D are on-line, and notifying each of the peer units of the connection status of the other peer units.
  • the presence server 812 can be configured, for example, as shown for computer system 100 of Figure 1.
  • each of the peer units 802A-D can be responsible for notifying the presence server 812 of its connection status, i.e., whether it is on-line or about to go off-line.
  • the presence server 812 can poll the peer units 802A-D from time to time to obtain their connection status.
  • This information is stored in the presence server 812 in a preferably volatile memory 816 in a connection directory 818.
  • the connection directory 818 is initially empty, and remains so until the peer units 802A-D provide the presence server 812 with their connection status, e.g., provide connection status notifications. Then, upon receipt of the status information, the connection directory 818 stores the notifying peer unit's URL and its connection status.
  • the presence server 812 can also provide a connection-status subscription service for the peer units 802A-D.
  • the presence server 812 will notify each subscribing peer unit 802A-D of the connection status of each other peer unit 802A-D, and of a change in that connection status.
  • the presence server 812 can send the connection status notifications to the subscribing peer units 802A-D either (a) upon request of status change notifications from the peer unit 802A-D "wishing" to send a message; (b) upon connection of the peer unit to the network, e.g., the Internet 803; (c) from time to time, e.g., upon a change in status of any of the peer units; or (d) a combination of the foregoing.
  • each peer unit 802A-D can also subscribe to a membership-status service, and, by so doing, thereafter learn on an on-going basis of the membership of each telespace in which it is a member.
  • the presence server 812 has a member directory 822 maintained in memory 816 for storing records for each member supported by the presence server.
  • Each peer unit provides the presence server with its current membership status from time to time or, alternatively, upon any change it its membership status.
  • peer unit 802A wishes to send a message, such as a delta, to peer unit 802B
  • peer unit 802A accesses the presence server 430 and obtains the URL of peer unit 802B to obtain its connection status.
  • peer unit 802A subscribes to the subscription service, it will have received notification of the status of peer unit 802B.
  • the dynamics manager 804A will have passed the message to the communications manager 806A without knowledge of whether the destination peer unit 802B is connected to the network.
  • the dynamics managers 804A-D in the peer units 802A-D are responsible for receiving locally-generated and remotely-generated deltas and maintaining a proper order for their execution by their respective engines 807A-D so as to maintain a high level of consistency of the data models across all the peer units 314A-D of the ABC system 800 participating in a telespace. This is made all the more difficult because deltas originating from one or another of the peer units may be received and/or executed out of order, or even after significant delays due to peer units being temporarily disconnected from the network. Moreover, the deltas may be generated based on different and inconsistent local data states.
  • data consistency can be described in terms of three properties, each achievable to some degree in collaboration systems, namely causality preservation, intention preservation, and convergence. More specifically, these properties of consistency can be described as follows:
  • Intention preservation i.e., semantic consistency
  • satisfaction of this property requires that, for any pair of deltas, e.g., delta A and delta B, the execution of each must preserve the intention of the other.
  • the system records the data state at the time a user requested a change to that data state. For example, in a shared document, when change "x" was requested, the next word was "y” and the same is true when "x" is executed. Put another way, the effects of executing a delta on the data stored at each peer unit must be the same as the effects of executing the same delta on the data stored at the originating peer unit.
  • Convergence requires that the copies of data maintained by each and every peer unit 802A-D must be identical after executing the same deltas. This is known as "total ordering.”
  • the ABC system 800 records the necessary information to maintain a high level of data consistency and imposes delta execution order constraints on deltas whose execution is dependent on the prior execution of other deltas. For example, where deltas are designated with capital letters A, B, C, D, assigned in the order of delta receipt by the dynamics manager 804A of peer unit 802A, it is possible that the deltas A, B, C, D may be properly executed in that order of receipt to preserve causality. This may even be the case if, e.g., deltas A and C originated locally from peer unit 802A and deltas B and D came from remote peer unit 802D. In some cases, however, execution of those deltas in the order of receipt will result in the changes being made out of order giving rise to a causality violation.
  • delta B may seek to insert "four" before
  • each dynamics manager 804A-D preferably creates deltas of a predetermined format, and records in the deltas and in their respective memories certain information used to maintain data consistency. Specifically, each dynamics manager 804A-D assigns to each delta it creates a sequence number ("Seq.No.") to indicate the sequencial position of the delta among all deltas created by that dynamics manager at the particular peer unit 802A-D. The dynamics manager 804A-D then records the assigned sequence number in the delta along with the endpoint identifier ("EP") specifying the endpoint (peer unit and person) that originated the delta. The dynamics manager 804A-D also records in the delta at the time of its creation information specifying a single dependency.
  • Seq.No. sequence number
  • EP endpoint identifier
  • the dependency information recorded in the delta is, e.g., in the form of the sequence number and EP of the endpoint originating one other delta, for example, usually, the delta last executed immediately prior to the creation of the subject delta by the engine 807A-D for the same activity as the subject delta and at the originating peer unit for that delta.
  • Some deltas do not depend on prior deltas, for example, because the state of the telespace data is unimportant to their execution. They are called "independent deltas". For independent deltas, no such dependent sequence number need be provided.
  • Each dynamics manager 804A-D extracts consistency information from the headers of received deltas, and maintains the information along with the rest of the delta information in memory.
  • Figure 9 shows a format for a delta 900 in accordance with an embodiment of the invention, which can accommodate the consistency information just described.
  • the delta 900 has a header 902, followed by a payload 904.
  • the header 902 identifies the delta, contains consistency information, and may contain other "house- keeping" information.
  • the payload 902 has one or more command fields 908 for specifying commands recorded in the delta by one of the engines 807A-D.
  • the header 902 specifies consistency information, for example, as follows: Seq. No. @ EP No.: Seq. No. @ EP No.
  • Figure 10 shows an illustrative memory structure 1000 for storing the information extracted from deltas by, for example, dynamics manager 804A.
  • the dynamics manager 804A persistently maintains the following records: A) a delta log 1002, which is a record of all the deltas executed by it within the telespace, e.g., Delta 1 , Delta 2, ...
  • Delta n where "n" is the count corresponding to the delta most recently executed by dynamics manager 804A in the telespace; B) a delta storage 1004, which stores the contents of such deltas and, e.g., can be implemented in the delta log 1002; C) a vector 1006, which is an array specifying the highest sequence number of deltas that dynamics manager 804A of peer unit 802A received from each of the other peer units 802B-D of the telespace and the highest sequence number of deltas generated by the dynamics manager 804A itself for the telespace; D) an endpoints (EPs) log 1008, which is a list of endpoints that are members of telespaces of which peer unit 314A is also a member, and provides the endpoint identifier of each; E) a data model space 1010, which provides storage for data, in accordance with an activity-specific, data model, for use in each activity; F) a local delta queue 1012, G) an inbound delta queue 1014, and H) a hold delta queue 10
  • the vector 1006 is important in this regard for storing information used in maintaining a high level of data consistency, and thus deserves further discussion.
  • the vector 1006 stores, for example, the following consistency information regarding each received delta: (a) an originating endpoint identifier ("UID"), which is an identification of that endpoint that is unique across the telespace; (b) an endpoint- relative sequence number, which is a running count of deltas in the telespace received from each end-point, and corresponds essentially to a per-endpoint time stamp for ordering purposes of the received deltas; (c) a dependent sequence number for the deltas, which indicates, as of the time an endpoint created a delta, it did so based on a certain prior delta in the sequence that had been executed by that peer unit (i.e., the "user seen" current state). In the preferred embodiment, all of this information can be extracted from the received deltas.
  • UID originating endpoint identifier
  • an endpoint- relative sequence number which is a running count of deltas in the telespace
  • the dynamics manager 804A places the received delta in either one of the local delta queue 1012 or the inbound delta queue 1014, depending on whether the received delta was locally initiated or remotely initiated. Some implementations can store only a pointer to each such delta in the appropriate queue.
  • the queues 1012, 1014 are implemented, for example, as FIFO (first-in-first-out) workload buffers. (Alternatively, a single queue can be utilized in some implementations for holding both inbound and local deltas.)
  • the dynamics manager 804A processes the deltas from the queues 1012, 1014 on a first in, first out basis.
  • Some implementations can use an appropriate priority algorithm for processing deltas from one or the other of the local or inbound delta queues 1012, 1014, for example, for load balancing and/or latency control. It may be desirable to process all inbound deltas in the inbound queue prior to local deltas in the local queue to constrain average latency in delta processing. Alternatively, the opposite order in which local deltas are processed with priority may avoid long latency in the event of a long inbound delta queue upon reconnection of the peer unit to the network.
  • FIG 11 A shows an exemplary implementation of a delta processing method 1100, using the foregoing ordering and data consistency information.
  • the dynamics manager 804A fetches a next or "current" delta from one of the local and inbound delta queues 1012, 1014.
  • the dynamics manager 804A checks the vector 1006, and determines, from the sequence and dependency information, if the current delta is independent and does not have a corresponding dependent sequence number. If so, step 1108 processes the current delta immediately in the order received, by calling or invoking the subroutine 1110 of Figure 11 B.
  • step 1112 of subroutine 1110 the dynamics manager 804A registers or assimilates the delta in the delta log by storing its UID, sequence number and dependency sequency number in the delta log. Then, step 1114 causes the delta to be executed. Afterwards, step 1116 updates the time stamp vector 1006. For that, the dynamics manager 804A extracts the header information, and updates the endpoint number and the highest sequence number of its peer unit in the vector 1006. Then the subroutine returns to continue delta processing per Figure 11 A at step 1128.
  • step 1118 the dynamics manager 804A checks for the dependent sequence number (specified in the delta's leader) in the vector 1006, and determines whether the delta on which the current delta depends has been processed. It has been processed if its sequence number is less than that stored in the vector 1006 for the corresponding endpoint. (although theoretically this information could be stored in the delta log, the delta log is preferably purged from time to time to keep its size within practical bounds.) If it has not been processed, in step 1122, the current delta is placed in the hold queue 1016. If the delta on which the current delta depends has already been processed, then the current delta can be processed as will be next described in detail.
  • the dynamics manager 804A determines the order of delta processing, and then involves the subroutine 1110 of Figure 11B, as described above. If the current delta is dependent on a previously executed delta and if no other received delta depends on the same prior delta, as indicated by the delta sequence numbers in the delta log 1002, the current delta is immediately executed without further consistency concerns. On the other hand, if the current delta has the same dependent sequence number, i.e., Seq. No. @ EP as another pending delta registered in the delta log 1002, then a collision condition occurs between those deltas. In this embodiment, the ordering of execution of deltas in the event of a collision depends on the endpoint that originated the delta, although other implementations can alternatively use other priority schemes or default ordering to resolve collisions.
  • each endpoint that is a member of a telespace is assigned (e.g., by the first endpoint member of the telespace) a unique endpoint number, corresponding, for example, to the order in which the endpoint originally joined the telespace.
  • peer unit 314A was the first in the telespace, it may be numbered EP1 , and successive new members receive numbers according to a hierarchical numbering scheme, for example, reflecting the sponsoring endpoint that invited the new member into the telespace.
  • endpoint EP1 invited two new members into the telespace they may be numbered EP1.1 and EP1.2.
  • endpoint EP1.1 invited three new members to join the new members may be numbered EP1.1.1 , EP1.1.2, and EP1.1.3.
  • the digits from left to right in the endpoint numbers can be referred to as first order, second order, etc.
  • the number "one' on the left is the first order
  • the "one" in the middle digit position is the second order
  • the "three" is the third order.
  • the foregoing numbering scheme has special qualities, particularly suited for assigning unique designations to endpoints for use in a peer-to-peer, fully distributed collaboration system, where members can join or discontinue membership at any time or connect or disconnect temporarily from the telespace at any time.
  • this scheme assigns a unique designation to each endpoint of each of the telespace members.
  • Each designation of a member indicates the order in which the member joined the telespace, and, for each member invited to join (or otherwise sponsored) by another telespace member (the "inviting member"), it also indicates the inviting member. As more and more members are invited to join by those new members, the designations add additional orders of digits to indicate the family tree or chain of inviting members.
  • the designations can be thought of as indicating the ancestry of each member added to a telespace after the founding members of a telespace.
  • the first order designates a founding member of the telespace
  • each successive order after the first order designates a member invited to join the telespace by an inviting member specified by the preceding order digit.
  • the inviting member may be a founding member or another member of the telespace of intermediate seniority and with telespace membership sponsoring privileges.
  • each inviting member is responsible for assigning telespace numbers to members it sponsors.
  • step 1126 of Figure 11 A the dynamics manager 304A resolves dependency collisions, maintaining total ordering.
  • dependency collision resolution can be performed by step 1202 comparing EP numbers on an order by order basis, and step 1204 determining a processing order based on that comparison so that deltas with the lowest numbers in the lowest orders are scheduled for processing first.
  • step 1206 tests whether any of the deltas have already been processed out of order and ahead of other delta(s) that should have been processed first. If no deltas have been processed out of order, then step 1208 processes the next delta. On the other hand, if any have been processed out of order, step 1210 rolls-back such processing to the data state immediately prior to that delta execution, and then step 1212 "redoes" the processing of the deltas in the proper order.
  • this scheme of dependency conflict resolution assures that any endpoint number having, for example, a "one" in the first order will be processed ahead of an endpoint number with a "two", “three” or other higher value in the first order.
  • deltas have the same number value in the first order, then the second order digits are compared, etc., until an order is specified, and then that order of delta execution is realized by performing a "do”, and, where necessary, "undo” and “redo", operations on the deltas.
  • delta log 1002 may for illustrative purposes contain deltas and related information in the form
  • sequence number AA at endpoint number BB is dependent on sequence number CC at endpoint number DD.
  • the deltas may be identified as A through C for explanatory purposes herein, and received in alphabetical order according to that designation.
  • the delta log 1002 may appear as follows:
  • delta A has a sequence number 1 from endpoint 1.2, which is dependent on sequence number 0 from endpoint 1. Both deltas B and C are dependent on the same delta from the same endpoint, and that delta is delta A. Delta B was generated at endpoint 1.2, and delta C was generated at endpoint 1. According to the present embodiment, all three deltas are dependent deltas, and are processed in the following order: First delta A is processed because it was the first of these deltas to be received, and accordingly, the dynamics manager causes the appropriate engine to perform the data change specified by delta A. Then, delta B (as the next received delta) is processed by causing the appropriate engine to perform the data change specified by delta B.
  • delta B is "undone", or more specifically, the data change that was made to the stored data is unmade so as to restore or roll-back the data to its state prior to executing that data change.
  • delta C is processed and the data change specified by delta C effected.
  • delta B is reprocessed and its data change remade. Accordingly, the order of execution of the requested data changes in this example, after roll-back and remaking, is delta A, then delta C, then delta B.
  • priority upon dependency collision can be based on endpoint numbering assigned according to characteristics of the endpoint (e.g., job title, work group or department), nature of change requested (e.g., delete paragraph or add chapter), location of change in data (e.g., change document title or change document summary), or other considerations.
  • characteristics of the endpoint e.g., job title, work group or department
  • nature of change requested e.g., delete paragraph or add chapter
  • location of change in data e.g., change document title or change document summary
  • deltas from endpoints having, for example, certain characteristics can be processed in cases of collision ahead of those having other characteristics, such as the deltas from a product design team prior to the deltas from a marketing team or vice versa.
  • Implementations may provide alternative priority strategies, for example, depending on activity. Some activities can have one type of conflict resolution or basis for awarding priority, while others can have other types, depending, for example, on the significance of data consistency for the particular activity. Real-time activities like chat rooms may avoid roll-back and remaking of changes in order to lower response time, particularly since order of execution may be less important.
  • deltas in delta clusters may execute deltas in delta clusters where they are related in some way, e.g., to changes to a certain part of a document being edited or to a certain type of change, so that they all may be made at about the same time. Furthermore, excessively-delayed deltas that have sequence numbers earlier by a predetermined value than the highest sequence number for the endpoint stored in the vector 1006 can be discarded in some implementations to avoid thrashing due to excessive redo's.
  • the dynamics manager 304A determines if the hold queue 1016 has any deltas that were not processed previously because they depended on the prior processing of the current delta. If so, the method returns to step 1124 to process such deltas.
  • the method 1100 returns to step 1102.
  • the foregoing method of processing deltas so as to optimize data consistency is particularly advantageous in implementations, such as that discussed herein, wherein A) peer units may be temporarily disconnected from the network and thus may not receive deltas until after a long delay during which local deltas may be processed out of order; B) endpoints may dynamically join or fall off membership lists; and C) overhead associated with data consistency is minimized and distributed among the peer units.
  • endpoint numbering schemes can be employed advantageously in particular embodiments of the invention.
  • a scheme could be implemented that uses a pseudo-random number generator to assign unique telespace member identifiers. Uniqueness can be guaranteed if the random number generator generates adequately random numbers and the seed is fairly unique. For example, using a network adapter's MAC address as a seed for the generator and creating a 32 byte value can quarantee uniqueness not only within the telespace but also within the ABC system.
  • the ABC system can be multitasking and multithreading in that each tool- engine combination forming an activity can correspond to a separate dynamics manager, and multiple dynamics managers can be provided to accommodate multiple simultaneously operating activities. While a one-to-one relationship between telespaces and dynamics managers may introduce the least latency in handling deltas, thread starvation could give rise to an error or fault condition. On the other hand, single dynamics managers supporting many telespaces could give rise to congestion problems. The optimal numbers of each component will depend on the hardware application, number of participating peer units, and traffic conditions.
  • the ABC system can comprise plural computer systems (CS), each with one or more telespaces (TS), each instantiating one or more activity components, each activity component having one or more tool (T), engine(E) pairs, each of whose operation is coordinated by a dynamics manager (DM).
  • CS computer systems
  • TS telespaces
  • T tool
  • E engine(E) pairs
  • DM dynamics manager
  • the ABC system can have multiple telespaces with one or more dynamics managers. Accordingly, the ABC system can be formed, for example, as follows:
  • telespaces where all the activities A, A 2 and A n reside in one or more telespaces, and "n" is a positive integer.
  • each telespace can instantiate of one or more activities, and the framework can have a single telespace; alternatively, each telespace can instantiate of one or more activities, and the framework can have multiple telespaces.
  • a software implementation of components of the above-described embodiment may comprise computer instructions and routines either fixed on a tangible medium, such as a computer-readable media, e.g. the diskette 142, CD-ROM 147, ROM 115, or fixed disk 152 of Figure 1 , or transmittable via a modem or other interface device, such as communications adapter 190 connected to the network 195 over a medium 191.
  • Medium 191 can be either a tangible medium, including but not limited to optical or hard-wire communications lines, or may be implemented with wireless techniques, including but not limited to microwave, infrared or other transmission techniques. It may also be the Internet.
  • a series of computer instructions embodies all or part of the functionality previously described herein with respect to the invention.
  • Such computer instructions can be written in a number of programming languages for use with many computer architectures or operating systems. Further, such instructions may be stored using any memory technology, present or future, including, but not limited to, semiconductor, magnetic, optical or other memory devices, or transmitted using any communications technology, present or future, including but not limited to optical, infrared, microwave, or other transmission technologies. It is contemplated that such a computer program product may be distributed as a removable media with accompanying printed or electronic documentation, e.g., shrink wrapped software, pre-loaded with a computer system, e.g., on system ROM or fixed disk, or distributed from a server or electronic bulletin board over a network, e.g., the Internet or World Wide Web.
  • a removable media with accompanying printed or electronic documentation, e.g., shrink wrapped software, pre-loaded with a computer system, e.g., on system ROM or fixed disk, or distributed from a server or electronic bulletin board over a network, e.g., the Internet or World Wide Web.

Abstract

A distributed, activity-based collaboration system can employ a data change request priority scheme for determining an order of execution of data change requests in effecting changes to local copies of data so as to optimize data consistency for collaborative activities. The data change request priority scheme can entail encoding sequence number information and dependency information in the data change requests, responsive to which data changes can be made, unmade and remade to the data.

Description

METHOD AND APPARATUS FOR PRIORITIZING DATA CHANGE REQUESTS
AND MAINTAINING DATA CONSISTENCY IN A DISTRIBUTED COMPUTER
SYSTEM EQUIPPED FOR ACTIVITY-BASED COLLABORATION
METHOD AND APPARATUS FOR PRIORITIZING DATA CHANGE REQUESTS
AND MAINTAINING DATA CONSISTENCY IN A DISTRIBUTED COMPUTER
SYSTEM EQUIPPED FOR ACTIVITY-BASED COLLABORATION
FIELD OF THE INVENTION
The invention relates generally to computers interconnected for communication over a network such as the Internet, and more particularly to a distributed computer- based system for coordinating and otherwise maintaining data pursuant to a distributed data model.
BACKGROUND OF THE INVENTION The Internet has established a dynamic, public environment for communication and interaction among its millions of users. In business, the Internet has redefined vendor-manufacturer, manufacturer-distributor, distributor-customer, and other relationships. With extension of the Internet technology into internal, secured networks of individual companies, the "intranet" or "private Internet", as it is called, has enabled new forms of document and information sharing between individual employees and work groups using company directory and network infrastructure. Online services, such as electronic bulletin boards and chat rooms, electronic commerce, and technical support for products, are available on the World Wide Web ("WWW" or "Web") operating over the Internet.
The Internet has, at its core, a server-client architecture, in which individual clients (i.e., Internet-content users) interface via computer-executable applications such as browsers with servers (i.e., Internet-content providers) to obtain documents from Web sites. Browsers are software programs that enable personal computers to request, receive (e.g., download), interpret, and present Internet documents, and generally navigate the Internet. Web servers typically have standard interfaces for running external programs, the most common is the Common Gateway Interface (CGI). Web sites are collections of documents, usually consisting of a home page and related, linked documents, located on servers remote from the client. The documents can be compound documents, containing data, graphics, video, sound, and/or other types of media, as well as links to other documents. Essentially, the WWW is a web of interconnected documents, or, more precisely, document objects that are located at various sites on the Internet.
Among the types of document objects on the WWW are documents and scripts. A script is an executable program, or a set of commands stored in a file, that can be run by a Web server to produce a document that is then returned to the Web browser. Typical script actions include running library routines or other applications to get information from a file or database, or initiating a request to get information from another computer, or retrieving a document corresponding to a selected hypertext link. A script is run on the Web server when, for example, a user selects a particular hypertext link in the Web browser.
Underlying the Internet technology are advances in standardization, including personal computer hardware, software, network protocols, and infrastructural conventions (such as the "Uniform Resource Locator" or "URL"). URLs provide location addresses for all document objects on the WWW. A URL uniquely references a document object and often defines an access algorithm using Internet protocols.
"Internet protocols", as that expression is used herein, are defined as current or future language conventions and present or future communication protocols that are generally-accepted and used for generating messages including documents for transmission over the Internet, or for transmitting such messages over the Internet, respectively. Such language conventions include, for example, at present, Hypertext Markup Language ("HTML") and extensible Markup Language ("XML"). Such communication protocols include, for example, at present, Hypertext Transfer Protocol ("HTTP"), TCP/IP, FTP and GOPHER. Those skilled in the art will be familiar with these language conventions and protocols. HTML is a language used for writing hypertext documents, containing multimedia content and links to other documents. An HTML document includes a hierarchical set of markup elements, where most elements have a start tag, followed by content, followed by an end tag. Tags are enclosed in angle brackets ("<" and ">") and indicate how the document is structured and how to display the document, as well as destinations and labels for hypertext links. There are tags for markup elements such as titles, headers, text attributes such as bold and italic, lists, paragraph boundaries, external links to other documents, and internal links to other parts of the same document, graphic images, and many other document features. Many books are in wide circulation regarding programming using HTML.
XML is another of the language conventions included in the Internet protocols. XML is compatible with and complementary to HTML, at least in its current version. It is a standard way of describing a class of data objects as stored in computers, called XML documents, and behavior of programs that process these objects. XML documents are made up of storage units called entities, which contain either text or binary data. Text is made up of characters, some of which form the character content of the documents, and some of which form markup. Markup encodes a description of the document, such as its storage layout and logical structure. A software module called an XML processor is used to read XML documents and provide access to their content and structure. Further information regarding XML can be had with reference to Version 1.0 of the XML specification, available at <HTTP://www.w3.org/XML>, and incorporated herein by reference. A Web server and a Web browser communicate typically using the HTTP message protocol and the underlying TCP/IP data transport protocol of the Internet. In HTTP, the Web browser establishes a connection to a Web server and sends an HTTP request message to the server. In response to the request message, the Web server checks authorization, performs any requested action such as downloading a document identified by its URL, and returns an HTTP response message containing either the HTML document resulting from the requested action or an error message. The returned document may simply be a static file stored on the Web server, or it may be generated dynamically using a script called in response to the request message. To take advantage of the Internet, tools and resources have been developed in compliance with the Internet protocols, including company-critical applications such as e-mail. E-mail is electronic mail, by means of which documents are sent and received electronically at selected addresses. It has been estimated that a vast majority of Internet-based interaction is through the use of e-mail and other browser-based media that follow a "document send and receive" model. Perhaps due to that model, users often view the Internet as inherently "peer-to-peer", with individuals accessing documents provided by other individuals, without intervention by a higher authority. The Internet is dynamic and flexible in providing users with entertaining and useful ways of communicating, though it does not meet all the needs of users. While users interact increasingly through the Internet, they continue to interact "off of the Internet in more conventional ways, such as through multi-medium (phone, fax, whiteboard), multi-temporal (real-time, overnight mail) and other informal means of communication.
It would be desirable to extend the Internet paradigm to personal and private communications and other shared and mutual activities between individuals and small groups in shared private spaces. Such interactions should preferably occur instantly, directly, and confidentially between participants' personal computers, or other network-capable devices, without exposing such interactions to server bottlenecks through which Internet traffic is typically tunneled to third-party Web sites where communications can be intercepted and confidences violated.
It would also be desirable to provide a technique that allows users at various remote sites to share and edit documents on a peer-to-peer basis, while maintaining consistent copies of the documents at local sites. Such a technique should permit any of the users to issue change requests regarding the documents, which changes can then be made asynchronously to the copies at all the local sites in a coordinated fashion even if the sites are disconnected from the network when the change requests are issued. The technique should provide a high level of data consistency across all the sites so that each site presents essentially the same document for viewing and/or editing by the various, geographically dispersed users.
SUMMARY OF THE INVENTION The invention resides in an apparatus called an activity, which is operable in a personal computer system, communication appliance or other network-capable device, for performing a shared, focused task with other, remotely-located users, such as, for example, a "chat", gaming, or business application. The activity includes a tool for generating data change requests, called deltas, responsive to user interactions. The activity also has a data-change engine for maintaining data in preferably nonvolatile, persistent memory pursuant to a data model. The data-change engine includes a tool end for receiving deltas from the tool, providing the deltas with activity- specific commands for carrying out the request, and providing notification to the tool of data changes caused by delta execution. The data-change engine also includes a dynamics manager end for receiving, from a dynamics manager, data-change directions to execute the deltas, i.e., perform the deltas' commands to make the requested changes to the data.
In another aspect, the invention resides in a system for providing communications and other shared and mutual activities between individuals and small groups in shared private spaces, called "telespaces". In the system, participants or members of a telespace interact through network-capable devices, which can communicate with one-another over a network, e.g., the Internet and store individually local copies of telespace data. Each telespace is an instantiation of one or more activities operable on each of the network-capable devices of members of the telespace. Each activity includes one or more tools for initiating data change requests or deltas responsive to telespace member interactions. Each activity also includes one or more data-change engines, separate from the tools, for maintaining the local copy of telespace data pursuant to a common data model. The data model is, for example, activity-specific, and preferably telespace-wide. Each network-capable device also includes a dynamics manager, responsive to the deltas, for directing the data-change engine to execute the deltas by making the requested changes to the local copy of data, and for coordinating the execution of the deltas from the various network-capable devices.
In yet another aspect, the invention can be practiced in a networked system including plural, preferably network-capable devices at different locations connected for communication preferably in accordance with Internet protocols. Each network- capable device has (a) a memory for storing a local copy of activity-related data pursuant to a common data model, (b) one or more activities each including one or more tools and corresponding data-change engines as described above, (c) a communications manager for causing deltas to be shared among all the network- capable devices of the networked system that participate in the telespace to which the deltas pertain; and (d) a dynamics manager for coordinating execution of both locally- generated and remotely-generated deltas. The user interactions can be initiated, and the resulting deltas generated, at any of the network-capable devices of the networked system, and the deltas are transmitted to each of the devices preferably over the network. The dynamics managers direct the operation of their local data- change engines, preferably to prioritize execution of deltas and to maintain substantial consistency of the data across the networked system. The networked system thus allows users at various remote sites, e.g., to share and edit data or perform other activities independently, on a peer-to-peer basis, while maintaining substantially consistent copies of the data at each of the network-capable devices for use even when disconnected from the network.
In still another aspect, the invention can be implemented as an activity-based collaboration (ABC) system for interpersonal interaction. The ABC system includes plural, network-capable devices connectable, e.g., via public networks (e.g., the Internet or wide area networks (WANs)) or via private networks (e.g., local area networks (LANs) or intranets), by cable, fiberoptics, infrared (IR) or other forms of communication links, to form the above-described networked system. Each network- capable device is equipped with the above-described memory, and a framework including one or more dynamics managers. The network-capable devices are preferably plug-compatible with the public network infrastructure, personal desktop applications and infrastructure (sometimes called "personal Internets"), and, where applicable, a company intranet. The ABC system preferably uses dynamic, snap-in activity components, each for performing a specific task, such as "chat", document editing, gaming, etc. The activity components can comprise software made available, for example, as shrink-wrapped products or downloaded over the network, e.g., the Internet. The activity components can operate through common application programming interfaces (API) with the framework. Accordingly, the framework can be viewed and function as a platform for applications in the form of the activity components.
Yet another aspect of the invention resides in a distributed technique for maintaining a high level of data consistency across the ABC system. In each peer unit, a dynamics manager implements a data change request priority scheme that determines an order for executing the data change requests to promote data consistency. In an exemplary embodiment of the data change request priority scheme, each data change request has (and preferably contains) request sequence number information and dependency information. The dynamics manager can cause the appropriate engine to make, roll-back ("undo"), and remake ("redo") data changes in response to this information. The dependency information can specify, for example, a single prior data change request, in which case the dynamics manager will ensure that the prior data change request has indeed been processed at the corresponding peer unit prior to processing the data change request that depended on that prior request. In case of a dependency collision between data change requests depending on the same prior request, a dependency collision resolution scheme can be employed. For example, priority can be awarded based on date or sponsor of telespace membership, characteristic of the endpoint (such as job title, work group or department), nature or document location of the change requested, or other considerations.
Thus, the invention can be implemented as separate commercial products and services, including provision of the individual activity components, the framework for individual network-capable devices, and/or networked or ABC system, as well as communication services for effecting interactions between devices forming the system.
BRIEF DESCRIPTION OF THE DRAWINGS The above and further advantages of the invention may be better understood by referring to the following description in conjunction with the accompanying drawings in which:
Figure 1 is a block diagram of an illustrative architecture of a conventional computer system; Figure 2 is a block diagram of a conventional application run on the computer system of Figure 1 , in which a control module is responsible for both interfacing with a display or other user interface and for maintaining data in accordance with a data model;
Figure 3 is a block diagram of an Internet-based system, showing both a client- server system for the WWW and a peer-to-peer system for a personal Web in accordance with an embodiment of the invention; Figure 4 is a block diagram of a portion of ABC system as implemented on the computer system of Figure 1 in accordance with an embodiment of the invention;
Figure 5 is a block diagram of a portion of ABC system as implemented on the computer system of Figure 1 , and illustrating typical telespace applications in accordance with an embodiment of the invention;
Figure 6 is a block diagram of a portion of the ABC system as implemented for the chess telespace of Figure 5;
Figure 7 is a block diagram of a framework 700 including portions of the ABC system of Figure 4; Figure 8 is a block diagram of an embodiment of portions of the ABC system of
Figure 4 involved in communication between peer units;
Figure 9 is an illustration of an exemplary format for a delta for processing by the ABC system of Figure 4;
Figure 10 is a block diagram of a memory structure for supporting delta processing by the ABC system of Figure 4;
Figures 11 A and 11 B are flow charts depicting a method for delta processing by the ABC system of Figure 4 in accordance with an embodiment of the invention; and
Figure 12 is a flow chart for resolving dependency conflicts in the method of Figure 11.
DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENT A. Terminology
It may prove useful to introduce at the outset certain terminology and abbreviations used in this specification, including: activity, client, communications manager, component, controller, delta, device, dynamics manager, engine, framework, identity, member, navigation, person, server, telespace, tool, URL, and XML.
"Activity" refers to what a user actually does with the ABC system in order to interact with other users. The term "activity" can have either of two meanings, depending on context. From an "outside view," it means a runtime interaction between the ABC system and a computer user; e.g., an activity of this type permits users to draw on a shared whiteboard or permits two or more users to chat in real-time. An activity in this sense can also be a background service (i.e., agent) running on a user's behalf on a local or server device, such as an archive server agent, or an inbound FAX agent. From an "inside view" of a software designer, "activity" means a modular, computer-executable program that can run on a user's personal computer or other form of device and perform a focused task. An activity in this sense is comprised of two types of components, a tool and an engine, which are combined at design time to create an "activity template". An activity template can be distributed in many ways, for example as shrink-wrapped software or as software that can be downloaded off the Web. It is envisioned that widely-distributed programs used for word-processing, spread-sheets, etc. will have versions designed for use in the ABC system, and sold as such in activity template form conforming to ABC system programmer interfaces. "Client" refers to a user's personal computer, communication appliance or other form of device that is capable of human interaction, and connectable to a network, e.g., the Internet. Background programs that run on the user's personal computer are called "Client Service Controllers". Foreground user interface (UI) programs that run on the user's personal computer are called "Client UI Controllers".
"Communications Manager" refers to a mechanism for directing inbound and outbound deltas to appropriate destinations. The communications manager can be implemented, for example, as a computer-executable program, which directs locally-initiated deltas created by a tool/engine pair for transmission over a network, e.g., the Internet, to another remote personal computer or other form of network-capable device, or to a relay when that remote device is not connected to the network; and which directs remotely- generated deltas received over a network, e.g., Internet, to a dynamics manager. "Component" refers to a computer-executable program and its resources used within an activity. All components are identified by URLs. It is envisioned that the Web can be a global repository for components, with versions securely downloadable onto an appropriate component platform in the ABC system. "Computer" refers to a device, as that term is defined hereinbelow. "Controller" refers to a top-level, computer-executable program that drives the "inner" functionality of the ABC system. A controller is tuned for a given platform, for example, a UNIX™ Daemon controller, or a controller for Microsoft Windows™ running on an Intel™ microprocessor-based computer system. Two general types of controllers are a service controller, which runs as a background process generally invisible to users, and a user interface (UI) controller, which is interactively controlled by a user.
"Delta" refers to a self-contained unit of data that contains one or more tool-to-engine data change requests (i.e., notifications or prompts regarding desired changes to the data). Tools initiate delta creation by the dynamics manager in response to user interaction, and submit them to engines for asynchronous execution, as described below, under the direction of a dynamics manager. A delta has a specific format, including a header portion for providing control information and a payload portion for providing information regarding the data to which the request pertains. An individual delta can have one or more payloads, and where multiple payloads are employed, each can be targeted to telespace members with unique device capabilities or user roles.
Tools request information regarding potential data changes from engines for display or other form of presentation to users, and are asynchronously notified when deltas cause display changes.
"Device" refers to a physical hardware device, such as a personal computer (pc) or communication appliance, which, for purposes hereof, unless the context indicates otherwise, is typically network-capable, i.e., can communicate with other network-capable devices over the network, e.g. the Internet using Internet protocols. All devices are assigned a unique identity code by the ABC system, have URLs, and are distinct from the persons using the devices. A device potentially hosts many telespaces. A device can be, for example, a pc, cellular telephone, fax machine, hand-held organizer, cable TV set top box, electronic entertainment unit (such as electronic toys and games and stereo equipment, or any other such network capable appliance, equipment or product).
"Dynamics manager" refers to the part of the framework of the ABC system, which facilitates the creation and coordinates the execution of deltas. The dynamics manager can be implemented, for example, as a computer- executable program that runs on a user's personal computer or other form of network-capable device.
"Endpoint" refers to a unique pairing of a device and a person. The ABC system uses this concept as a method of uniquely distinguishing a person among multiple users of a device, or devices among multiple computers used by the same person.
"Engine" refers to what can be called the "bottom half of an activity that implements the management and modification of persistent storage and data structures within the ABC system. Engines are packaged as components, have no user interfaces themselves but rather depend on their corresponding tools for user interfaces, and are substantially portable. Engines preferably exist exclusively to serve their corresponding tools. Engines preferably operate in universal synchrony.
"Framework" refers to the "inner workings" of the ABC system and contains most of its subsystems, including the dynamics manager, but no user interface. The framework is a computer-executable program that can run on a user's personal computer or other form of network-capable device, and sits logically between the high-level controllers and the activities.
"Identity" is generally synonymous with "person", though generally refers to one of the names, represented by an URL, by which a person is known by others. This concept comes into play because the ABC system embraces the notion that a person may have many identities or aliases, and, for example, many different URLs.
"Member" refers to a participant within or subscriber to a telespace, and is generally synonymous with the person portion (as opposed to device portion) of an endpoint when referring to telespace membership. "Navigation" refers to the act of moving between URLs, and is analogous in the ABC system to navigation between Web pages and sites by a Web browser.
"Person" refers to a human being, or a server acting as a human's proxy, and generally refers to one who is participating in activities within a telespace. Each person has one or more identities, each of which is uniquely identified with an URL.
"Server" refers to a device that is normally incapable of direct human interaction except over a communications channel and can only run as background programs under service controllers.
"Telespace" refers to a virtual place were people gather to participate in one or more activities, and where people share things. The telespace and the results of activities are persistently stored in memories on users' personal computers or other forms of network-capable devices. A telespace is generally kept in synchrony between a user's device and other peoples' devices. A telespace represents the logical unit of "membership" and access to activities. A telespace is an instantiation of one or more activities.
"Tool" refers to what can be called the 'top half of an activity that implements the activity's user interfaces. Tools are packaged as components, initiate delta creation in response to user gestures, and interact with corresponding engines of the individual activities to perform specific tasks.
"URL" is an abbreviation for universal resource locator, which is an unique structured address of a resource such as a document, and, in some instances, represents a method by which a resource should be handled. URLs are used herein for substantially all persistent objects, user-visible objects, and external program-visible objects.
"XML", as noted above, is an abbreviation for extended Markup Language, which is a standard, structured data format derivative of SGML intended for use on the Web. Depending on the context it also refers to an in- memory object structure used in the ABC system, which is compliant with the
XML standard's semantics. Many XML concepts are used herein, such as " documents", " elements", " tags", "attributes", " values", " content", " entities", " links", and "pointers". XML is used herein, for example, for structuring data in a document.
B. Conventional Computer System Figure 1 illustrates a conventional system architecture for an exemplary computer system 100, with which the disclosed invention can be implemented. The exemplary computer system of Figure 1 is discussed only for descriptive purposes, however, and should not be considered a limitation of the invention. The invention is further not limited to devices traditionally thought of as computer systems, since it may be implemented in any of various types of network-capable devices, including, e.g., video game consoles, personal appliances or cable set-top boxes. Although the description below may refer to terms commonly used in describing particular computer systems, the described concepts apply equally to other computer systems, including systems having architectures that are dissimilar to that shown in Figure 1. For example, cable set-top boxes may not contain mass storage but do contain video tuners built with digital signal processors.
The computer system 100 includes a central processing unit (CPU) 105, which may include a conventional microprocessor, random access memory (RAM) 110 for temporary storage of information, and read only memory (ROM) 115 for permanent storage of information. A memory controller 120 is provided for controlling system RAM 110. A bus controller 125 is provided for controlling bus 130, and an interrupt controller 135 is used for receiving and processing various interrupt signals from the other system components.
Mass storage may be provided by diskette 142, CD-ROM 147, or hard disk 152. Data and software may be exchanged with client computer 100 via removable media, such as diskette 142 and CD-ROM 147. Diskette 142 is insertable into diskette drive 141 , which is connected to bus 130 by controller 140. Similarly, CD- ROM 147 is insertable into CD-ROM drive 146, which is connected to bus 130 by controller 145. Finally, the hard disk 152 is part of a fixed disk drive 151, which is connected to bus 130 by controller 150.
User input to the computer system 100 may be provided by a number of devices. For example, a keyboard 156 and a mouse 157 may be connected to bus 130 by keyboard and mouse controller 155. An audio transducer 196, which may act as both a microphone and a speaker, is connected to bus 130 by audio controller 197.
It should be obvious to those reasonably skilled in the art that other input devices, such as a pen and/or tablet and a microphone for voice input, may be connected to client computer 100 through bus 130 and an appropriate controller. DMA controller
160 is provided for performing direct memory access to system RAM 110. A visual display is generated by a video controller 165, which controls video display 170. Computer system 100 also includes a network adapter 190 that allows the client computer 100 to be interconnected to a network 195 via a bus 191. The network 195, which may be a local area network (LAN), a wide area network (WAN), or the Internet, may utilize general-purpose communication lines that interconnect multiple network devices.
Computer system 100 generally is controlled and coordinated by operating system software. Among other computer system control functions, the operating system controls allocation of system resources and performs tasks such as process scheduling, memory management, networking and I/O services.
C. Conventional Approach to Controlling a Data Model
Figure 2 shows a conventional system 200 for controlling a data model using a technique known as "model view controller". In system 200, a data model module 202 stores and maintains data, for example a database, in accordance with a data model. A controller module 204, responsive to a locally initiated event 206 (such as a user input) or to an externally initiated event 208 (such as event notifications received from remote computer systems), directs a "set current value" command to the data model module 202 to cause a change in the stored data. The controller module 204 notifies an output device such as display 206 of the data change. The display 206 obtains the changed data from the data model module 202 and updates the display of the data so that the current data can be viewed by a user. The foregoing technique is strictly event driven and linear in operation. Typically, internal or external events that cause the controller module 204 to command a change to the data are stored in a FIFO (first-in, first-out) buffer in the controller module 204, and then handled in the order in which the event notification reaches the controller module. Typically, also, no provision is made in system 200 for global consistency issues, that is, for assuring that copies of the model data in the system 200 are consistent with data in other remote systems.
The conventional approach for controlling a data model as exemplified in the system 200 was appropriate in an age in which computer systems, whether mainframes or personal computers, operated in relative isolation. With the advent of the Internet, computer users demand improved ways of collaborating, and the invention provides what can be called "model mediated control", in which a dynamics manager mediates changes effected by the data-change engine to the data model.
P. Internet Paradigm for Intercomputer Operation
Figure 3 illustrates an Internet environment 300, in which the present invention can be advantageously employed. From the perspective of a user, in a conventional client-server view 302, individual clients 306, 308 separately communicate over the Internet 309 with a server 310. Each client 306, 308 can direct a request through the Internet 309 to the server, and, responsively, the server 310 may respond to the request, for example, by providing documents stored on the server over the Internet 309 to the clients. Each server 310 and client 306, 308 can be implemented as a personal computer as illustrated in Figure 1 (with certain UI components optional in the case of the server), capable of execution of appropriate programs such as a client browser 311 and/or other communication interface, as described below. In a peer-to- peer view 312 of Internet use, the users' computer systems constitute peer units 314A-D, and communications through the Internet can be directed from one peer unit to another, without apparent intermediaries. Each peer unit 314A-D can be implemented as a personal computer such as that illustrated in Figure 1 or other form of network-capable device. The invention can be implemented advantageously in either clients 306, 308, or peer units, 314A-D, though that description will focus on implementation with a peer-to-peer view of the system.
As will be explained in more detail below, such peer-to-peer communications can be made directly or via a relay device 316. The relay device 316 is preferably a "store and forward", which can store messages destined to a peer unit 314 which is temporarily disconnected from the Internet, and later, on reconnection, can forward the messages to that peer unit.
E. ABC system Architecture and Operation Figure 4 shows the ABC system 400 as implemented on one of the peer units
314A-D, such as, for example, peer unit 314A. The ABC system on peer unit 314A has a framework 402, at least one telespace 404, and a user interface 406. The framework 402 preferably provides a platform for servicing a number of telespaces 404. The framework 402 preferably is of modular construction, with a programmer interface on which the activities run and through which they communicate with framework components.
The framework 402 includes a user interface manager 408, identity manager 410, telespace manager 412, activity manager 414, storage manager 416, controller services manager 418, dynamics manager 420, and communications manager 422. The user interface (UI) manager 408 is responsible for managing shared services for a number of user interface controllers (not separately shown). The UI manager 408 manages layout of activities within panes of a display window, and otherwise provides a desired "look and feel" for the user interface. The UI manager 408 also manages activity navigation (for example, go to, next, previous, etc.) and maintains a navigation history.
The identity manager 410 is responsible for maintaining identities of a telespace's member. As noted above, an identity is the name, and corresponding URL, by which each user is known by others. Individual users may have one or many identities. The identity manager 410 maintains a record or table, preferably in XML, of the identities. The identity manager 410 can also maintain a record or table, preferable in XML, of the URL's of telespace members and their corresponding device URL's. Alternatively, a separate member manager can be implemented.
The telespace manager 412 is responsible for managing each of the telespaces 404 that may be opened on the peer unit 314A. Each telespace 404 is an instantiation of one or more activities. Each telespace 404 has a corresponding activity manager 414. The activity manager 414 is responsible for (a) adding new activities to a telespace, (b) opening existing activities in a telespace, and (c) updating telespace activities from new activity template versions. To add a new activity, the activity manager 414 is provided with the URL of an activity template, opens the template, and extracts and propagates the template information (such as component URLs) into the telespace. The template defines the initial activity configuration for a telespace. A user may add additional activities to the telespace 404 later as needed. After being added, an activity is "part of the telespace and visible to all telespace members. A telespace has a tag to identify its activity manager and bind the activity manager and data. Preferably, each document has a local registry linked to it, with XML tag names maintained in the registry to express mapping (reference pointers or associations) in an extensible, platform-independent way, between the document and its corresponding telespace. Each telespace member has a framework and an activity template for the telespace available on his or her peer unit 314A-D. Each activity includes a tool, such as tool 424 and an engine, such as engine
426. The tool 424 provides the user interface (UI) capability for the activity, interacting via UI 406 with a member. UI interaction may include UI events initiated, for example, via the keyboard 156 (Figure 1 ) or mouse 157 (Figure 1 ). In response to such UI events, the tool 424 may request its corresponding engine 426 to effect data model changes, subscribing to the engine 426 for asynchronous data change notifications for updating Uls asynchronously when data changes occur. A tool 424 also implements application program interfaces (APIs) for interacting with background services provided under the direction of the controller manager 418. The engine 426 is responsible for maintaining and changing the data that supports the telespace 404 and/or results from user interaction obtained through the tool. The engine 426 can modify persistent model data, and emit asynchronous data change notifications to the tool 424, both under the direction and control of the dynamics manager 420, as will be explained below. The storage manager 416 controls access to the stored data.
For creation of an activity template, a software developer may write or adapt a tool and engine for use within the framework. An activity template is a persistent representation of the tool and engine components comprising an activity. An activity template can be distributed, for example, as shrink wrapped software or downloaded, for example, over the Internet to peer unit 314A from a remote server. Activity components can be regarded as Web documents and are represented persistently via URLs. The activity template itself preferably has a URL, which allows for tracking activity design changes. The activity template can be a single activity template or an activity collection template. A single activity template pertains to only one activity, such as "chat". An activity collection template pertains to a collection of activities, such as "chat and outline".
For use, the ABC system 400 gets a member's identity via the identity manager 410, opens a telespace manager, requests the telespace manager to open a telespace via a URL, requests the telespace manager for an activity manager, and, then, the activity manager opens an activity, typically by using the activity's URL. Then, the ABC system 400 is ready for members to use the telespace to perform the shared, focused tasks offered by the particular activity.
Figure 5 shows an exemplary, multi-telespace use of an ABC system 500 on peer units 314A-D. It should be understood that the ABC system 500 is a distributed system. As such, while a description is provided of components only of peer unit 314A, peer units 314B-D have analogous components, and no separate description of them is necessary.
As shown for peer unit 314A, the ABC system 500 includes a number of illustrative telespaces in which peer unit 314A is subscribed as a member, including a car designing telespace 502, a chat telespace 504, and a chess playing telespace 506. As also shown, peer unit 314 has a number of components used during operation of the telespaces 502, 504, 506. Peer unit 314A has a memory 510 that maintains a telespace record 508, which lists and describes each of the telespaces 502, 504, 506 in which it is member, and a member record 512, which lists and describes each of the identities of telespace members that may participate in those telespaces. A UI 512 can receive user-initiated changes to the telespace and member records 508, 514.
Each of the telespaces 502, 504, 506 instantiates a different one of the illustrated activities 522, 524, 526. (Alternatively, the illustrated activites 522, 524, 526 could reside in a single telespace, in which case all members of the single telespace would have access to each of the activities.) Each activity 522, 524, 526 includes a respective tool 532, 534, 536 specific to the activity, and under control of a respective engine 542, 544, 546 for carrying out changes to a corresponding data model 552, 554, 556 contained in memory 510, and which is persisted in each of the telespaces 502, 504, 506. For example, the car design telespace 502 is an instance of an activity 522 that can include a tool 532 in the form of CAD (computer-aided design) software, and the chess-playing telespace 506 is an instance of an activity 526 that can include a tool 536 in the form of a software chess game.
Users pursue the activities 522, 524, 526 of the telespaces 502, 504, 506, via the user interface 514, which interfaces with the tools 532, 534, 536 for providing the tools with user requests. Responsive to the requests, the engines 542, 544, 546 change the persistent state of a corresponding data model 552, 554, 556 in memory 510, under the control of the dynamics manager 501 to reflect a current state. For example, the persistent state of the data for the chess-playing telespace 506 might include a chess board and locations of the chess pieces on the board; a user request may specify a chess piece move, which constitutes a change in the data, i.e., a delta; and the current state would reflect the execution of the delta and the consummation of the move.
Figure 6 illustrates the operation of the ABC system 500, with reference to components thereof located in the peer unit 314A and described with respect to Figure 5. The engine 546 presents to the tool 536 potential actions or options (e.g., chess piece moves) that can be implemented in furtherance of the particular focused task of the activity 526. The tool 536 interacts with a user who is a member of telespace 506 (as recorded in the member record 512) through the user interface 514, presenting a view of the activity (e.g., a view of the chessboard, and, possibly, a list of moves). In response to a user input, called a user gesture, (e.g., move BISHOP from X to Y) entered via the user interface 514, the tool 536 records a user selection in memory by causing a delta to be generated and stored in the system. A delta is a unit of requested change, preferably, in the form of a container object. Container objects are well known by those familiar with object-oriented programming techniques. The tool 536 is responsible for determining the granularity of the change requested in the delta. The delta container object can hold (contain) one or more commands for carrying out the change, in addition to user-specified data, e.g., an identification of a particular chess piece and the original and target locations on the board constituting a move of that chess piece. Upon generation, the delta is empty of any commands, and itself constitutes merely a request for change until filled with the appropriate commands by the engine 546 to effectuate the change. It is the responsibility of the engine 546 to record in the delta in an engine-specific way (which need not be known to the tool 536) the commands required to effect the change.
More specifically, as indicated by line "a' ", the tool 536 initiates creation of a delta by requesting its generation by the dynamics manager 501. The dynamics manager 501 creates the delta and returns it over line a' to the tool 536, and may record the created delta in case fault recovery is required.
As indicated at line "a" of Figure 6, the tool 536 passes control of the delta through a tool interface 602 to a tool-end 604 of the engine 546, thereby invoking the engine. (This description shall from time to time state that deltas are passed or that control to deltas shall pass from one component to another. Preferably, the deltas are objects allocated in memory whose pointer is passed as XML elements.) The engine's tool interface 602 exposes a set of application programming interfaces for creating commands that can effectuate the requested change encoded in the delta, or, in other words, for filling a delta with appropriate, typically engine-specific commands in serial form to fulfill the user's intent. The engine 546 then passes control of the delta, now filled with the commands, back to the tool 536.
As indicated at line "b" of Figure 6, the tool 536 passes control of (i.e., submits) the filled delta to the dynamics manager 501 for execution. The dynamics manager 501 may also receive inbound deltas over line "b' " from other peer units 314B-D. The dynamics manager 501 , along with the dynamics managers in peer units 314B-D, are responsible for maintaining consistency of executed changes to the data model 556 from one end of the ABC system to the other for all members who participate in the chess game telespace.
The dynamics manager 501 includes queue structures 612 and a dynamo process 614, preferably a computer-executable program containing the main logic of the dynamics manager. The dynamics manager 501 , and its dynamo process 614, are in bi-directional communication with the communications manager 622. The dynamics manager 501 enqueues the received deltas in the queue structures 612 for ordering purposes, then the dynamo process 614 services the queue structure in processing the enqueued deltas, and directing the engine 546 to execute them in an appropriate order. More specifically, the dynamo process 614 of dynamics manager 501 sends a control signal in the form of a "delta command execution" message through the interface 615 to the dynamics manager end 616 of the engine 546 over line "c" of Figure 6. The delta command execution message directs the engine 546 to proceed with execution of the delta received from the tool 536 by making the requested change to the data model 556 contained in the memory 510, and which is persisted in the telespace. The dynamo process 614 of dynamics manager 501 also disseminates all locally-initiated deltas to other endpoints via the communications manager 622, which transmits them over the network, e.g., 626 to the peer units 314B-D. At each peer unit 314B-D, the respective dynamics manager enqueues received deltas in its local queue structures, and then passes them in a specified order to its respective engine for execution.
A single dynamics manager can support a single telespace or multiple telespaces, depending on the application, and thus can be responsible for directing a number of engines to execute deltas for the various telespaces. In systems having multiple telespaces, as illustrated in Figure 5, the dynamics manager 501 determines which engine should execute a delta by examining the delta's information. The delta contains commands that are identified to a specific one of the engines, and tagged with an engine identifier or code carried in the delta's payload. When the enqueued delta is processed by the dynamics manager, the dynamics manager associates the engine code with the referenced delta, and directs the delta's execution by the appropriate engine.
Finally, as indicated at line "d" of Figure 6, the engine 546 sends a "data change notification" message to notify the tool 536 of the execution of the delta, and of a new current state of the data in the data model 556. The data change notification can be made by value or reference. That is, the notification can include the new data values themselves or can include a pointer to the new data in memory. In response to the notification, the tool 536 causes the user interface 514 to make the change available to the user, e.g., by displaying the move on a chess board graphic. If a user is viewing the display 170 (Figure 1 ), the user will be able to see the change to the chess game caused by execution of the delta; otherwise, the change is effected to the data in memory 510 without the user "seeing" the change at the time it is made. Preferably, at substantially the same time that the change is being made by engine 546 to the data model 556 stored in memory 556 of peer unit 314A, the other peer units 314B-D are making the analogous change to their locally stored data so as to effect the intent of the delta in a consistent manner. Situations may arise where one or another of the peer units 314A-D is not connected to the network, e.g., the Internet. Where the peer unit 314A may be disconnected, the communications manager 622 employs a device presence detector 430 to ascertain whether the peer unit 314A is connected and, if not, stores outbound deltas in an outbound delta store 628 until such time as connection is restored, and then transmits the stored deltas. Where one or more destination peer units 314B-D are disconnected from the network, the communications manager 622 of peer unit 314A can proceed to transmit the outbound delta to relay 316 (Figure 3) without regard to whether the other peer units are disconnected. The relay 316 (Figure 3) receives such outbound deltas, stores them as necessary in an outbound delta store 318 (Figure 3), and forward them upon the destination peer unit 314B-D being reconnected. In operation, the communications manager 622 can send all outbound deltas to the URL of the relay 316, and the relay can utilize an on-board look-up table 320 to ascertain the endpoint URL of the destination peer unit 314B-D to be used for relaying the delta. The relay service can be provided, in practice, by an Internet Service Provider (ISP) or other Internet organizations.
It can be seen that, as between the tool 536 and the engine 546, user interface activities are effected directly only via the tool 536 and data model changes are effected directly only via the engine 546. In the vernacular, the tool 536 "owns" the UI and the engine 546 "owns" the data model. This can be contrasted with current, typical applications as illustrated in Figure 2. For example, spreadsheet programs today typically combine the functions of the tool and the engine rather than separating them as in the foregoing embodiment of the invention. By separating the tool from the engine, and thus the UI from the data model, the dynamics manager can intervene and mediate between deltas originating from the various peer units, e.g., for purposes of maintaining data consistency. Moreover, separation of the tool from the engine permits the process of execution of deltas to be carried out asynchronously. This is useful because it takes time for the dynamics manager 501 and engine 546 to carry out their responsibilities in a manner, e.g., that will maintain data consistency for all telespace members. It is also useful because inbound deltas from other peer units 314B-D can affect timing of execution of locally-initiated deltas.
Figure 7 shows an embodiment of a framework 700 for use with separately implemented activities (not shown). A framework can be sold or licensed, e.g., as a computer program product, distinct from individual activities, which may be application specific snap-ins operable over the framework. Generally speaking, the framework hosts collaborations with respect to telespaces. The illustrated framework 700 includes one or more dynamics managers 702, a communications manager 704, and a data structure template 706. The data structure template 706 can contain object primitives, preferably in XML format, for use by activity developers. The framework 700 can be implemented, for example, as computer-readable media 706, on which is stored computer-executable code comprising the dynamics managers 702 and communications manager 704, and computer readable data, including the object primitives of the data structure template 700.
F. Communications manager. Presence Server, and Relay
Figure 8 shows an ABC system 800 equipped for communication between a number of peer units 802A-D via a network, e.g., Internet 803. Each peer unit 802A-D can include the components described above with respect to peer unit 314A. (The exact number of peer units shown in Figure 8 was selected merely for illustrative purposes, and will depend on the configuration of a particular implementation and may vary over time.) Each peer unit 802A-D includes a dynamics manager 804A-D for coordinating processing of deltas as initiated by tools 805A-D and performed by engines 807A-D, and a communications manager 806A-D for controlling communication between the peer units 802A-D. The responsibilities of the communications manager 806A-D include transmitting and receiving messages (including deltas) over the network, e.g., Internet 803 using Internet protocols, such as, for example, TCP/IP. Each peer unit 802A-D includes a memory 808A-D for storing data in support of operation, among other functions, of the communications managers 830A-D, respectively.
As noted, each communications manager 806A-D is responsible for managing all communications between its peer unit and the other peer units. For example, communications manager 822 manages bi-directional communications between peer unit 802A and peer units 802B-D. The communications can include messages sent either from the peer unit 802A to one or more of peer units 802B-D, or from one of the peer units 802B-D to peer unit 802A. The transmissions can be made directly and without intermediaries, provided the destination peer unit(s) 802B-D (in the former case) or peer unit 802A (in the latter case) are connected to the network, e.g., the Internet ("on-line"). As noted above, a device presence server 812 can be employed to ascertain whether the intended destination is on-line, or temporarily disconnected ("off-line"). If the destination is off-line, the communications can be made via a relay 814 (as noted above), which then forwards the message on to its destination when it returns on-line.
Thus, if peer unit 802A seeks to send a message to peer unit 802C, and the presence server 812 has informed the communications manager 806A that peer unit 802C is on-line, then the communications manager 806A sends the message via the network, e.g., the Internet 803, directly to the URL of peer unit 802C. At peer unit 802C, the message is received by communications manager 806C, which passes the message to dynamics manager 804C.
On the other hand, if peer unit 802A seeks to send a message to peer unit 802C, and the device presence server 812 has informed the communications manager 806A that peer unit 802C is off-line, then the communications manager 806A sends the message via the network, e.g., Internet 803, to the URL of the relay 814. The relay 814 can be implemented as a high-performance file server, which stores the en route message until peer unit 802C returns on-line, and then forwards the message to the URL of peer unit 802C. At peer unit 802C, the message is received as noted before, and passed through communications manager 806C to dynamics manager 804C.
Accordingly, the presence server 812 can serve the purpose within the ABC system 800 of monitoring whether the peer units 802A-D are on-line, and notifying each of the peer units of the connection status of the other peer units. To fulfill this purpose, the presence server 812 can be configured, for example, as shown for computer system 100 of Figure 1.
During operation, each of the peer units 802A-D can be responsible for notifying the presence server 812 of its connection status, i.e., whether it is on-line or about to go off-line. Alternatively, the presence server 812 can poll the peer units 802A-D from time to time to obtain their connection status. This information is stored in the presence server 812 in a preferably volatile memory 816 in a connection directory 818. The connection directory 818 is initially empty, and remains so until the peer units 802A-D provide the presence server 812 with their connection status, e.g., provide connection status notifications. Then, upon receipt of the status information, the connection directory 818 stores the notifying peer unit's URL and its connection status.
The presence server 812 can also provide a connection-status subscription service for the peer units 802A-D. The presence server 812 will notify each subscribing peer unit 802A-D of the connection status of each other peer unit 802A-D, and of a change in that connection status. The presence server 812 can send the connection status notifications to the subscribing peer units 802A-D either (a) upon request of status change notifications from the peer unit 802A-D "wishing" to send a message; (b) upon connection of the peer unit to the network, e.g., the Internet 803; (c) from time to time, e.g., upon a change in status of any of the peer units; or (d) a combination of the foregoing. Preferably, all communications are made pursuant to Internet protocols. These protocols can include, among others, those mentioned above. Each peer unit 802A-D can also subscribe to a membership-status service, and, by so doing, thereafter learn on an on-going basis of the membership of each telespace in which it is a member. To enable this service, the presence server 812 has a member directory 822 maintained in memory 816 for storing records for each member supported by the presence server. Each peer unit provides the presence server with its current membership status from time to time or, alternatively, upon any change it its membership status. To illustrate, if peer unit 802A wishes to send a message, such as a delta, to peer unit 802B, peer unit 802A accesses the presence server 430 and obtains the URL of peer unit 802B to obtain its connection status. Assuming peer unit 802A subscribes to the subscription service, it will have received notification of the status of peer unit 802B. Thus the dynamics manager 804A will have passed the message to the communications manager 806A without knowledge of whether the destination peer unit 802B is connected to the network.
G. Distributed Data Consistency Model and Delta Processing As noted above, the dynamics managers 804A-D in the peer units 802A-D are responsible for receiving locally-generated and remotely-generated deltas and maintaining a proper order for their execution by their respective engines 807A-D so as to maintain a high level of consistency of the data models across all the peer units 314A-D of the ABC system 800 participating in a telespace. This is made all the more difficult because deltas originating from one or another of the peer units may be received and/or executed out of order, or even after significant delays due to peer units being temporarily disconnected from the network. Moreover, the deltas may be generated based on different and inconsistent local data states.
Theoretically, data consistency can be described in terms of three properties, each achievable to some degree in collaboration systems, namely causality preservation, intention preservation, and convergence. More specifically, these properties of consistency can be described as follows:
1. Causality preservation (i.e., sequential consistency) requires that, if delta A causes delta B, then delta A must be executed first so that the sequence that gave rise to the creation of the deltas is preserved in their execution. In other words, satisfaction of this property requires that the execution order of dependent operations be the same as their natural cause/effect order.
2. Intention preservation (i.e., semantic consistency) requires that the meaning of the deltas and the intention behind their creation be preserved. In other words, satisfaction of this property requires that, for any pair of deltas, e.g., delta A and delta B, the execution of each must preserve the intention of the other. To achieve this, the system records the data state at the time a user requested a change to that data state. For example, in a shared document, when change "x" was requested, the next word was "y" and the same is true when "x" is executed. Put another way, the effects of executing a delta on the data stored at each peer unit must be the same as the effects of executing the same delta on the data stored at the originating peer unit. 3. Convergence requires that the copies of data maintained by each and every peer unit 802A-D must be identical after executing the same deltas. This is known as "total ordering."
The ABC system 800 records the necessary information to maintain a high level of data consistency and imposes delta execution order constraints on deltas whose execution is dependent on the prior execution of other deltas. For example, where deltas are designated with capital letters A, B, C, D, assigned in the order of delta receipt by the dynamics manager 804A of peer unit 802A, it is possible that the deltas A, B, C, D may be properly executed in that order of receipt to preserve causality. This may even be the case if, e.g., deltas A and C originated locally from peer unit 802A and deltas B and D came from remote peer unit 802D. In some cases, however, execution of those deltas in the order of receipt will result in the changes being made out of order giving rise to a causality violation. This may arise, for example, because of differential latencies in the communication paths traversed by locally-generated and remotely-generated deltas, which can result in the deltas being received in an interleaved fashion. Moreover, even if causality preservation is achieved, the result may violate the intention preservation property, and the changes may even be nonsensical. For example, delta B may seek to insert "four" before
"legs" in the sentence "A cow has legs." If delta A sought, without knowledge of delta B's change, to change "legs" to "a head" in that sentence, and is executed before delta B so as to change the context for delta B, the result is "A cow has four a head." Indeed, this result makes no sense, and nor would the result if delta A were processed after delta B. As for convergence, a number of conditions may compromise the "sameness" (i.e., replication) of the copies of the data at the peer units 802A-D. For example, communication faults in the network may prevent deltas from being received by some peer units 802A-D, causing different delta execution results. It is difficult, if not impossible, to achieve total convergence, causality preservation, and intention preservation in a practical system, but a high level of data consistency is desirable for collaboration between the peer units. In order to achieve a high level of data consistency, each dynamics manager
804A-D preferably creates deltas of a predetermined format, and records in the deltas and in their respective memories certain information used to maintain data consistency. Specifically, each dynamics manager 804A-D assigns to each delta it creates a sequence number ("Seq.No.") to indicate the sequencial position of the delta among all deltas created by that dynamics manager at the particular peer unit 802A-D. The dynamics manager 804A-D then records the assigned sequence number in the delta along with the endpoint identifier ("EP") specifying the endpoint (peer unit and person) that originated the delta. The dynamics manager 804A-D also records in the delta at the time of its creation information specifying a single dependency. The dependency information recorded in the delta is, e.g., in the form of the sequence number and EP of the endpoint originating one other delta, for example, usually, the delta last executed immediately prior to the creation of the subject delta by the engine 807A-D for the same activity as the subject delta and at the originating peer unit for that delta. Some deltas do not depend on prior deltas, for example, because the state of the telespace data is unimportant to their execution. They are called "independent deltas". For independent deltas, no such dependent sequence number need be provided. Each dynamics manager 804A-D extracts consistency information from the headers of received deltas, and maintains the information along with the rest of the delta information in memory.
Figure 9 shows a format for a delta 900 in accordance with an embodiment of the invention, which can accommodate the consistency information just described. The delta 900 has a header 902, followed by a payload 904. The header 902 identifies the delta, contains consistency information, and may contain other "house- keeping" information. The payload 902 has one or more command fields 908 for specifying commands recorded in the delta by one of the engines 807A-D.
The header 902 specifies consistency information, for example, as follows: Seq. No. @ EP No.: Seq. No. @ EP No.
where the initial "Seq. No. @ EP" No. (before the colon) specifies the sequence number of the present delta at a generating peer unit, e.g., at peer unit 314A as identified by its URL; the colon should be read as "depends on"; the second "Seq. No. @ EP" after the colon specifies a dependent sequence number specifying, e.g., the immediately prior delta generated at the same peer unit, e.g., peer unit 314A as identified by its URL, which is referred to as the delta on which the present delta depends.
Figure 10 shows an illustrative memory structure 1000 for storing the information extracted from deltas by, for example, dynamics manager 804A. The dynamics manager 804A persistently maintains the following records: A) a delta log 1002, which is a record of all the deltas executed by it within the telespace, e.g., Delta 1 , Delta 2, ... Delta n, where "n" is the count corresponding to the delta most recently executed by dynamics manager 804A in the telespace; B) a delta storage 1004, which stores the contents of such deltas and, e.g., can be implemented in the delta log 1002; C) a vector 1006, which is an array specifying the highest sequence number of deltas that dynamics manager 804A of peer unit 802A received from each of the other peer units 802B-D of the telespace and the highest sequence number of deltas generated by the dynamics manager 804A itself for the telespace; D) an endpoints (EPs) log 1008, which is a list of endpoints that are members of telespaces of which peer unit 314A is also a member, and provides the endpoint identifier of each; E) a data model space 1010, which provides storage for data, in accordance with an activity-specific, data model, for use in each activity; F) a local delta queue 1012, G) an inbound delta queue 1014, and H) a hold delta queue 1016.
The vector 1006 is important in this regard for storing information used in maintaining a high level of data consistency, and thus deserves further discussion. The vector 1006 stores, for example, the following consistency information regarding each received delta: (a) an originating endpoint identifier ("UID"), which is an identification of that endpoint that is unique across the telespace; (b) an endpoint- relative sequence number, which is a running count of deltas in the telespace received from each end-point, and corresponds essentially to a per-endpoint time stamp for ordering purposes of the received deltas; (c) a dependent sequence number for the deltas, which indicates, as of the time an endpoint created a delta, it did so based on a certain prior delta in the sequence that had been executed by that peer unit (i.e., the "user seen" current state). In the preferred embodiment, all of this information can be extracted from the received deltas.
During operation, when a delta is received, for example, by the dynamics manager 804A, the dynamics manager places the received delta in either one of the local delta queue 1012 or the inbound delta queue 1014, depending on whether the received delta was locally initiated or remotely initiated. Some implementations can store only a pointer to each such delta in the appropriate queue. The queues 1012, 1014 are implemented, for example, as FIFO (first-in-first-out) workload buffers. (Alternatively, a single queue can be utilized in some implementations for holding both inbound and local deltas.) The dynamics manager 804A processes the deltas from the queues 1012, 1014 on a first in, first out basis. Some implementations can use an appropriate priority algorithm for processing deltas from one or the other of the local or inbound delta queues 1012, 1014, for example, for load balancing and/or latency control. It may be desirable to process all inbound deltas in the inbound queue prior to local deltas in the local queue to constrain average latency in delta processing. Alternatively, the opposite order in which local deltas are processed with priority may avoid long latency in the event of a long inbound delta queue upon reconnection of the peer unit to the network.
Figure 11 A shows an exemplary implementation of a delta processing method 1100, using the foregoing ordering and data consistency information. In step 1102, the dynamics manager 804A fetches a next or "current" delta from one of the local and inbound delta queues 1012, 1014. In step 1106, the dynamics manager 804A checks the vector 1006, and determines, from the sequence and dependency information, if the current delta is independent and does not have a corresponding dependent sequence number. If so, step 1108 processes the current delta immediately in the order received, by calling or invoking the subroutine 1110 of Figure 11 B. In step 1112 of subroutine 1110, the dynamics manager 804A registers or assimilates the delta in the delta log by storing its UID, sequence number and dependency sequency number in the delta log. Then, step 1114 causes the delta to be executed. Afterwards, step 1116 updates the time stamp vector 1006. For that, the dynamics manager 804A extracts the header information, and updates the endpoint number and the highest sequence number of its peer unit in the vector 1006. Then the subroutine returns to continue delta processing per Figure 11 A at step 1128. If the test of step 1106 determines that the current delta is not independent, in step 1118, the dynamics manager 804A checks for the dependent sequence number (specified in the delta's leader) in the vector 1006, and determines whether the delta on which the current delta depends has been processed. It has been processed if its sequence number is less than that stored in the vector 1006 for the corresponding endpoint. (While theoretically this information could be stored in the delta log, the delta log is preferably purged from time to time to keep its size within practical bounds.) If it has not been processed, in step 1122, the current delta is placed in the hold queue 1016. If the delta on which the current delta depends has already been processed, then the current delta can be processed as will be next described in detail. In step 1124, the dynamics manager 804A determines the order of delta processing, and then involves the subroutine 1110 of Figure 11B, as described above. If the current delta is dependent on a previously executed delta and if no other received delta depends on the same prior delta, as indicated by the delta sequence numbers in the delta log 1002, the current delta is immediately executed without further consistency concerns. On the other hand, if the current delta has the same dependent sequence number, i.e., Seq. No. @ EP as another pending delta registered in the delta log 1002, then a collision condition occurs between those deltas. In this embodiment, the ordering of execution of deltas in the event of a collision depends on the endpoint that originated the delta, although other implementations can alternatively use other priority schemes or default ordering to resolve collisions. As implemented, each endpoint that is a member of a telespace is assigned (e.g., by the first endpoint member of the telespace) a unique endpoint number, corresponding, for example, to the order in which the endpoint originally joined the telespace. Thus, if peer unit 314A was the first in the telespace, it may be numbered EP1 , and successive new members receive numbers according to a hierarchical numbering scheme, for example, reflecting the sponsoring endpoint that invited the new member into the telespace. Thus, if endpoint EP1 invited two new members into the telespace, they may be numbered EP1.1 and EP1.2. Then, if endpoint EP1.1 invited three new members to join, the new members may be numbered EP1.1.1 , EP1.1.2, and EP1.1.3. The digits from left to right in the endpoint numbers can be referred to as first order, second order, etc. Thus, in EP1.1.3, the number "one' on the left is the first order, the "one" in the middle digit position is the second order and the "three" is the third order.
The foregoing numbering scheme has special qualities, particularly suited for assigning unique designations to endpoints for use in a peer-to-peer, fully distributed collaboration system, where members can join or discontinue membership at any time or connect or disconnect temporarily from the telespace at any time. As noted, this scheme assigns a unique designation to each endpoint of each of the telespace members. Each designation of a member indicates the order in which the member joined the telespace, and, for each member invited to join (or otherwise sponsored) by another telespace member (the "inviting member"), it also indicates the inviting member. As more and more members are invited to join by those new members, the designations add additional orders of digits to indicate the family tree or chain of inviting members. Accordingly, the designations can be thought of as indicating the ancestry of each member added to a telespace after the founding members of a telespace. Thus, where the designations comprise a number of orders, the first order designates a founding member of the telespace, and each successive order after the first order (e.g., second, third, etc, order) designates a member invited to join the telespace by an inviting member specified by the preceding order digit. The inviting member may be a founding member or another member of the telespace of intermediate seniority and with telespace membership sponsoring privileges. In one embodiment, each inviting member is responsible for assigning telespace numbers to members it sponsors.
With this numbering scheme, in step 1126 of Figure 11 A, the dynamics manager 304A resolves dependency collisions, maintaining total ordering. As shown in Figure 12, dependency collision resolution can be performed by step 1202 comparing EP numbers on an order by order basis, and step 1204 determining a processing order based on that comparison so that deltas with the lowest numbers in the lowest orders are scheduled for processing first. Then, step 1206 tests whether any of the deltas have already been processed out of order and ahead of other delta(s) that should have been processed first. If no deltas have been processed out of order, then step 1208 processes the next delta. On the other hand, if any have been processed out of order, step 1210 rolls-back such processing to the data state immediately prior to that delta execution, and then step 1212 "redoes" the processing of the deltas in the proper order.
Thus, this scheme of dependency conflict resolution assures that any endpoint number having, for example, a "one" in the first order will be processed ahead of an endpoint number with a "two", "three" or other higher value in the first order. Where deltas have the same number value in the first order, then the second order digits are compared, etc., until an order is specified, and then that order of delta execution is realized by performing a "do", and, where necessary, "undo" and "redo", operations on the deltas.
For example, the delta log 1002 may for illustrative purposes contain deltas and related information in the form
"Seq.No.AA@EP.No.BB:Seq.No.CC@EP.No.DD"
which can be read "sequence number AA at endpoint number BB is dependent on sequence number CC at endpoint number DD". The deltas may be identified as A through C for explanatory purposes herein, and received in alphabetical order according to that designation. The delta log 1002 may appear as follows:
Delta "A" - Seq. No. 1@ EP1.2:Seq.No.0@EP1 Delta "B" - Seq.No. 2@ EP1.2:Seq.No.1@EP1.2 Delta "C" - Seq.No. 1@ EP1 :Seq.No.1@EP1.2
In this example, delta A has a sequence number 1 from endpoint 1.2, which is dependent on sequence number 0 from endpoint 1. Both deltas B and C are dependent on the same delta from the same endpoint, and that delta is delta A. Delta B was generated at endpoint 1.2, and delta C was generated at endpoint 1. According to the present embodiment, all three deltas are dependent deltas, and are processed in the following order: First delta A is processed because it was the first of these deltas to be received, and accordingly, the dynamics manager causes the appropriate engine to perform the data change specified by delta A. Then, delta B (as the next received delta) is processed by causing the appropriate engine to perform the data change specified by delta B. Then the dynamics manager processes delta C and notes that there is a dependency collision with delta B and that delta C has a lower endpoint number (i.e., EP1 ) than delta B (i.e, EP1.2). Consequently, delta B is "undone", or more specifically, the data change that was made to the stored data is unmade so as to restore or roll-back the data to its state prior to executing that data change. Then, delta C is processed and the data change specified by delta C effected. Finally, delta B is reprocessed and its data change remade. Accordingly, the order of execution of the requested data changes in this example, after roll-back and remaking, is delta A, then delta C, then delta B.
The foregoing example relates to endpoint numbers having first and second order numbers only, though the principles illustrated apply equally well to other endpoint numbers having additional, higher orders, where collision resolution requires comparison of these higher orders, as described above. Accordingly, priority upon dependency collision is assigned in the order of membership sponsorship and then chronology based on membership date as described above.
Alternatively, priority upon dependency collision can be based on endpoint numbering assigned according to characteristics of the endpoint (e.g., job title, work group or department), nature of change requested (e.g., delete paragraph or add chapter), location of change in data (e.g., change document title or change document summary), or other considerations. To illustrate the principle behind each of these bases for awarding priority, deltas from endpoints having, for example, certain characteristics can be processed in cases of collision ahead of those having other characteristics, such as the deltas from a product design team prior to the deltas from a marketing team or vice versa.
Moreover, since roll-back and remaking of data changes (sometimes called UNDOs and REDOs) are expensive in terms of overhead, it may be desirable to provide in some implementations still other forms of prioritization of delta processing. Implementations may provide alternative priority strategies, for example, depending on activity. Some activities can have one type of conflict resolution or basis for awarding priority, while others can have other types, depending, for example, on the significance of data consistency for the particular activity. Real-time activities like chat rooms may avoid roll-back and remaking of changes in order to lower response time, particularly since order of execution may be less important.
Other implementations may execute deltas in delta clusters where they are related in some way, e.g., to changes to a certain part of a document being edited or to a certain type of change, so that they all may be made at about the same time. Furthermore, excessively-delayed deltas that have sequence numbers earlier by a predetermined value than the highest sequence number for the endpoint stored in the vector 1006 can be discarded in some implementations to avoid thrashing due to excessive redo's. Returning to Figure 11 A, in step 1128, the dynamics manager 304A determines if the hold queue 1016 has any deltas that were not processed previously because they depended on the prior processing of the current delta. If so, the method returns to step 1124 to process such deltas. After all such deltas have been processed by the loop of steps 1124, 1126 and 1128, the method 1100 returns to step 1102. The foregoing method of processing deltas so as to optimize data consistency is particularly advantageous in implementations, such as that discussed herein, wherein A) peer units may be temporarily disconnected from the network and thus may not receive deltas until after a long delay during which local deltas may be processed out of order; B) endpoints may dynamically join or fall off membership lists; and C) overhead associated with data consistency is minimized and distributed among the peer units.
Yet other endpoint numbering schemes can be employed advantageously in particular embodiments of the invention. For example, a scheme could be implemented that uses a pseudo-random number generator to assign unique telespace member identifiers. Uniqueness can be guaranteed if the random number generator generates adequately random numbers and the seed is fairly unique. For example, using a network adapter's MAC address as a seed for the generator and creating a 32 byte value can quarantee uniqueness not only within the telespace but also within the ABC system.
The ABC system can be multitasking and multithreading in that each tool- engine combination forming an activity can correspond to a separate dynamics manager, and multiple dynamics managers can be provided to accommodate multiple simultaneously operating activities. While a one-to-one relationship between telespaces and dynamics managers may introduce the least latency in handling deltas, thread starvation could give rise to an error or fault condition. On the other hand, single dynamics managers supporting many telespaces could give rise to congestion problems. The optimal numbers of each component will depend on the hardware application, number of participating peer units, and traffic conditions.
The ABC system can comprise plural computer systems (CS), each with one or more telespaces (TS), each instantiating one or more activity components, each activity component having one or more tool (T), engine(E) pairs, each of whose operation is coordinated by a dynamics manager (DM). Thus, the ABC system can have multiple telespaces with one or more dynamics managers. Accordingly, the ABC system can be formed, for example, as follows:
ABC system = CS! = DMT + A1 f where A^T, + E,
CS2 = DM2 + A2, where A2=T2 +E2
CSn = DMn + An, where An= Tn +E„
where all the activities A, A2 and An reside in one or more telespaces, and "n" is a positive integer. Thus, by way of illustration, the following are examples of various telespace instantiations:
TS c A , or
TS c ^ ÷ A2 or TS c A^ A^.A,. or
TS, c A,
TS,
., and
TSm z Am
where the symbol "c" means "a set comprising", and "m" is a positive integer. Accordingly, each telespace can instantiate of one or more activities, and the framework can have a single telespace; alternatively, each telespace can instantiate of one or more activities, and the framework can have multiple telespaces.
A software implementation of components of the above-described embodiment may comprise computer instructions and routines either fixed on a tangible medium, such as a computer-readable media, e.g. the diskette 142, CD-ROM 147, ROM 115, or fixed disk 152 of Figure 1 , or transmittable via a modem or other interface device, such as communications adapter 190 connected to the network 195 over a medium 191. Medium 191 can be either a tangible medium, including but not limited to optical or hard-wire communications lines, or may be implemented with wireless techniques, including but not limited to microwave, infrared or other transmission techniques. It may also be the Internet. A series of computer instructions embodies all or part of the functionality previously described herein with respect to the invention. Those skilled in the art will appreciate that such computer instructions can be written in a number of programming languages for use with many computer architectures or operating systems. Further, such instructions may be stored using any memory technology, present or future, including, but not limited to, semiconductor, magnetic, optical or other memory devices, or transmitted using any communications technology, present or future, including but not limited to optical, infrared, microwave, or other transmission technologies. It is contemplated that such a computer program product may be distributed as a removable media with accompanying printed or electronic documentation, e.g., shrink wrapped software, pre-loaded with a computer system, e.g., on system ROM or fixed disk, or distributed from a server or electronic bulletin board over a network, e.g., the Internet or World Wide Web. Although an exemplary embodiment of the invention has been disclosed, it will be apparent to those skilled in the art that various changes and modifications can be made which will achieve some of the advantages of the invention without departing from the spirit and scope of the invention. It will be obvious to those skilled in the art that other components performing the same functions may be suitably substituted. Further, the methods of the invention may be achieved in either all software implementations, using the appropriate processor instructions, or in hybrid implementations that utilize a combination of hardware logic and software logic to achieve the same results. Further, aspects such as the size of memory, the specific configuration of logic and/or instructions utilized to achieve a particular function, as well as other modifications to the inventive concept are intended to be covered by the appended claims.
What is claimed is:

Claims

Claims
1. A local network-capable device adapted for collaborative operation and communication over a network with at least one remote network-capable device, said local network-capable device comprising: A) a memory for storing a local copy of data in accordance with a data model; B) a data-change engine coupled with the memory, and responsive to a plurality of data change requests, for controlling storage of the local copy of data in the memory in accordance with the data model and making changes to the local copy of the data; the data change requests including a locally-generated data change request and a remotely- generated data change request; and C) a dynamics manager, coupled with the data-change engine, and responsive to the data change requests for controlling the engine and coordinating execution of the data change requests; wherein the dynamics manager, responsive to the data change requests, can cause the making of data changes, the rolling-back of data changes and the remaking of data changes.
2. The local network-capable device in accordance with claim 1 , wherein the dynamics manager causes making, rolling-back and remaking of data changes in response to a data change request priority scheme.
3. The local network-capable device in accordance with claim 1 , wherein the data change request priority scheme includes encoding the data change requests with request sequence numbers, and the dynamics manager is responsive to the request sequence numbers in determining an order for making data changes specified by the data change requests.
4. The local network-capable device in accordance with claim 3, wherein the data change request priority scheme includes encoding the data change requests with an identifier corresponding to a characteristic of the network-capable device that generated the request, and the dynamics manager is responsive to the identifier in causing making of data changes.
5. The local network-capable device in accordance with claim 4, wherein each network capable device and a user thereof corresponds to an endpoint, and the identifier comprises an endpoint number corresponding to the endpoint that originated the data change request.
6. The local network-capable device in accordance with claim 5, wherein the request sequence numbers comprise endpoint relative sequence numbers, and the dynamics manager causes the data change requests to be processed in an order dependent on the endpoint relative sequence numbers and the endpoint numbers.
7. The local network-capable device in accordance with claim 3, wherein the data change request priority scheme includes encoding the data change requests with a dependency identifier, and the dynamics manager is responsive to the dependency identifier in causing rolling-back and remaking of data changes.
8. The local network-capable device in accordance with claim 7, wherein the dependency identifier specifies a data change request on which the encoded data change request depends.
9. The local network-capable device in accordance with claim 8, wherein the dependency identifier specifies one data change request on which encoded data change request depends.
10. The local network-capable device in accordance with claim 8, wherein the dynamics manager executes do, undo and redo operations with respect to data change requests to ensure that each one of the data change requests is processed only after the specified data change request on which the one data change request depends has been processed.
11. The local network-capable device in accordance with claim 8, wherein A) the request sequence numbers comprise endpoint relative sequence numbers; B) the dynamics manager causes the data change requests to be processed in an order dependent on the endpoint relative sequence numbers and the endpoint numbers; and C) the dynamics manager causes data changes to be rolled back and remade responsive to the dependency identifier.
12. A distributed, coordinated system for maintaining plural copies of data pursuant to a distributed data model, wherein the copies can be changed responsive to users' actions, the system comprising: A) a plurality of computer systems, each of the computer systems capable of locally generating a plurality of data change requests for changing a local copy of the data and of executing data change requests including the locally-generated data change requests and remotely-generated data change requests generated by others of the computer systems so as to make the requested changes to the local copy of the data; B) each of the computer systems including a dynamics manager for determining, responsive to information contained in the data change requests, an order in which the requested changes are made to the local copy.
13. The system in accordance with claim 12, wherein the dynamics manager of each computer system is responsive to data dependency information and request sequence information recorded in the data change requests in determining the order in which the requested changes are made to the local copy of the data; the data dependency information comprising an indication of at least one prior data change request on which the data change request depends; and the request sequence information indicating a sequential position of the data change request among a plurality of data change requests generated by the computer system that generated the data change request.
14. A framework apparatus for providing communication services for an activity- based collaboration system in which data change requests comprising deltas are communicated over a network between network-capable devices, the framework apparatus comprising a communications manager operable on a local network capable device for sending locally-generated deltas over a network to at least one remote network-capable devices and for receiving remotely-generated deltas from the at least one remote network-capable device; and a dynamics manager responsive to dependency information contained in the deltas for determining an order for processing the deltas.
15. A method for providing communication services for an activity-based collaboration system, in which data change requests comprising deltas are communicated over a network between network-capable devices, the method comprising the steps of: A) sending locally-generated deltas from a local network-capable device over a network to at least one remote network-capable devices and for receiving remotely-generated deltas from the at least one remote network-capable device; B) determining an order for processing the deltas based on sequence information contained within the deltas; and C) processing the deltas in the determined order thereby making changes to data as requested by the deltas.
16. The method in accordance with claim 15, further comprising the step of rolling back changes made to the data in response to dependency information contained within the deltas.
17. A computer data signal embodied in a carrier wave, comprising: A) a payload code comprising a data change request code for requesting an identified data change comprising a first data change request, and a command code for specifying at least one command for implementing the first data change request; and B) a header code comprising dependency collision resolution code.
18. The computer data signal in accordance with claim 17, wherein the dependency collision resolution code comprises a recorded indication of telespace membership sponsorship for use in resolving dependency collisions between the data change request and a second data change request on the basis of, at least in part, telespace membership sponsorship.
19. The computer data signal in accordance with claim 17, wherein the dependency collision resolution code comprises a recorded indication of characteristics of an endpoint that originated the data change request for use in resolving dependency collisions between the data change request and a second data change request on the basis of, at least in part, the recorded indication of endpoint characteristics.
20. The computer data signal in accordance with claim 17, wherein the dependency collision resolution code comprises a recorded indication of a type of data change for use in resolving dependency collisions between the data change request and a second data change request on the basis of, at least in part, the data change type.
21. The computer data signal in accordance with claim 17, wherein the dependency collision resolution code comprises a recorded indication of type of activity for use in resolving dependency collisions between the data change request and a second data change request on the basis of, at least in part, the activity type.
22. The computer data signal in accordance with claim 17, wherein the header comprises a portion substantially in the form: Seq.No.AA@EP.No.BB:Seq.No.CC@EP.No.DD.
23. The computer data signal in accordance with claim 17, wherein the dependency collision resolution code comprises an identification code for identifying data to which the data change request pertains, and a consistency data code for identifying an endpoint and a data change request sequence number for the first data change request, and for identifying an endpoint and a data change request sequence number for a second data change request on which the first data change request depends.
24. The computer data signal in accordance with claim 23, wherein the consistency data code identifies the endpoint and the data change request sequence number for the first data change request, and identifies an endpoint and a data change request sequence number for only one data change request on which the first data change request depends, said one data change request being the second data change request.
25. A distributed, activity-based collaboration system comprising: A) a data change request priority logic for determining an order of execution of data change requests for effecting changes to a local copy of data for collaborative activities; and B) a dependency collision resolution logic for resolving a dependency collision between first and second data change requests which both depend for execution on a third data change request.
26. The system in accordance with claim 25, wherein the data change request priority logic and the dependency collision resolution logic are responsive to sequence number information and dependency information recorded in the data change requests for controlling computer-implemented operations including making, unmaking and remaking of changes to the data during execution of the data change requests.
27. A distributed method for assigning designations to endpoints for use in a peer- to-peer collaboration system, the method comprising the steps of: assigning a unique designation to each endpoint of each of a plurality of members of a telespace, each designation of a member indicative of the order in which the member joined the telespace, and, for each member invited to join by another telespace member comprising the inviting member, indicative of the inviting member, and storing the assigned designation.
28. The method in accordance with claim 27, wherein a plurality of the designations of different endpoints each indicate a chain of inviting members.
29. The method in accordance with claim 27, wherein the designations comprise a number of orders, including a first order designating a founding member of the telespace, and at least a second order designating a member invited to join the telespace by the founding member.
30. The method in accordance with claim 27, wherein the assigning step comprises the steps of: A) upon creation of the telespace, an endpoint corresponding to a founding telespace member assigning itself a unique designation comprising a first order digit; and B) subsequent to creation of the telespace, assigning, by the founding member, each of a plurality of endpoints corresponding to a new member of the telespace invited into the telespace by the founding member a unique designation comprising the first order digit of the founding telespace member, and a second order digit, the second order digits of the designations of endpoints of the new members being in a sequential order indicating the order in which the new members joined the telespace.
31. The method in accordance with claim 27, wherein the assigning step includes each of the inviting members assigning a unique designation to each new telespace member that the inviting endpoint invites into the telespace.
32. A distributed method for assigning designations to endpoints for use in a peer- to-peer collaboration system, the method comprising the step of: each inviting member of a telespace assigning a unique designation to each endpoint of each new telespace member that the inviting member subsequently invites into the telespace; and guarantying, for a plurality of telespace members that the inviting member invites into the telespace, that each designation of a member is unique within the telespace.
33. The method in accordance with claim 32, wherein the guarantying step includes guarantying, for a plurality of telespace members that the inviting member invites into the telespace, that each designation of a member is unique within the collaboration system.
34. The method in accordance with claim 32, wherein the assigning step includes using a pseudo-random number generator for assigning the designations.
PCT/US2000/017759 1999-07-19 2000-06-28 Method and apparatus for prioritizing data change requests and maintaining data consistency in a distributed computer system equipped for activity-based collaboration WO2001006364A2 (en)

Priority Applications (7)

Application Number Priority Date Filing Date Title
JP2001511554A JP4750332B2 (en) 1999-07-19 2000-06-28 Method and apparatus for ranking data change requests and maintaining data consistency in a distributed computer system with active collaboration
DE60042662T DE60042662D1 (en) 1999-07-19 2000-06-28 METHOD AND APPARATUS FOR CLASSIFYING THE PRIORITY OF DATA CHANGE REQUESTS AND FOR PRESERVING DATA CONSISTENCY IN A DECENTRALIZED COMPUTER SYSTEM EQUIPPED FOR ACTIVITY-BASED COOPERATION
CA002380141A CA2380141C (en) 1999-07-19 2000-06-28 Method and apparatus for prioritizing data change requests and maintaining data consistency in a distributed computer system equipped for activity-based collaboration
EP00943244A EP1456772B1 (en) 1999-07-19 2000-06-28 Method and apparatus for prioritizing data change requests and maintaining data consistency in a distributed computer system equipped for activity-based collaboration
AT00943244T ATE438148T1 (en) 1999-07-19 2000-06-28 METHOD AND APPARATUS FOR PRIORITIZING DATA CHANGE REQUESTS AND MAINTAINING DATA CONSISTENCY IN A DECENTRALIZED COMPUTER SYSTEM EQUIPPED FOR ACTIVITY-BASED COLLABORATION
IL14770500A IL147705A0 (en) 1999-07-19 2000-06-28 Method and apparatus for prioritizing data change requests and maintaining data consistency in a distributed computer system equipped for activity-based collaboration
IL147705A IL147705A (en) 1999-07-19 2002-01-17 Method and apparatus for prioritizing data change requests and maintaining data consistency in a distributed computer system equipped for activity-based collaboration

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/356,148 US6859821B1 (en) 1999-07-19 1999-07-19 Method and apparatus for prioritizing data change requests and maintaining data consistency in a distributed computer system equipped for activity-based collaboration
US09/356,148 1999-07-19

Publications (3)

Publication Number Publication Date
WO2001006364A2 true WO2001006364A2 (en) 2001-01-25
WO2001006364A8 WO2001006364A8 (en) 2001-06-28
WO2001006364A3 WO2001006364A3 (en) 2004-05-13

Family

ID=23400334

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/US2000/017759 WO2001006364A2 (en) 1999-07-19 2000-06-28 Method and apparatus for prioritizing data change requests and maintaining data consistency in a distributed computer system equipped for activity-based collaboration

Country Status (9)

Country Link
US (3) US6859821B1 (en)
EP (2) EP2105849A3 (en)
JP (2) JP4750332B2 (en)
KR (1) KR100711661B1 (en)
AT (1) ATE438148T1 (en)
CA (1) CA2380141C (en)
DE (1) DE60042662D1 (en)
IL (2) IL147705A0 (en)
WO (1) WO2001006364A2 (en)

Cited By (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1418726A2 (en) * 2002-10-24 2004-05-12 Groove Networks, Inc. Method and apparatus for maintaining consistency of a shared space across multiple endpoints in a peer-to-peer collaborative computer system
EP1385104A3 (en) * 2002-07-25 2004-08-18 Microsoft Corporation A system and method for image editing
WO2004089006A2 (en) 2003-04-03 2004-10-14 Nokia Corporation Managing context-related information with a mobile station
JP2005527878A (en) * 2001-10-19 2005-09-15 イービーエス・ディーリング・リソースィズ・インターナショナル・リミテッド Conversation trading system
US6973464B1 (en) 1999-11-15 2005-12-06 Novell, Inc. Intelligent replication method
US7097957B2 (en) 2001-10-24 2006-08-29 Toyo Boseki Kabushiki Kaisha Photosensitive resin laminate
WO2006129931A1 (en) * 2005-05-31 2006-12-07 Nhn Corporation Method and system for synchronizing status of member servers belonging to same replication group
US7225226B2 (en) 2002-09-27 2007-05-29 International Business Machines Corporation Chat messaging channel redirection
WO2007090645A1 (en) * 2006-02-08 2007-08-16 Combots Product Gmbh & Co. Kg Method for the common processing of a data quantity and a network system and communication system for carrying out said method
WO2008085672A1 (en) * 2007-01-05 2008-07-17 Apple Inc. Wide area peer-to-peer syncing in a decentralized environment
WO2009004276A1 (en) * 2007-07-02 2009-01-08 British Telecommunications Public Limited Company Method of synchronizing intermittently connected mobile terminals
US7523146B2 (en) 2005-06-21 2009-04-21 Apple Inc. Apparatus and method for peer-to-peer N-way synchronization in a decentralized environment
US7657769B2 (en) 2007-01-08 2010-02-02 Marcy M Scott N-way synchronization of data
US7730026B2 (en) 2004-07-01 2010-06-01 Apple Inc. Method and system using reusable state information for synchronization and maintenance of data
US7860826B2 (en) 2006-08-04 2010-12-28 Apple Inc. Method and system for using global equivalency sets to identify data during peer-to-peer synchronization
US8495015B2 (en) 2005-06-21 2013-07-23 Apple Inc. Peer-to-peer syncing in a decentralized environment
WO2014178901A1 (en) * 2013-04-29 2014-11-06 Microsoft Corporation Preventing sync interruptions
AU2018267672B2 (en) * 2001-10-17 2019-10-31 Aristocrat Technologies Australia Pty Limited Gaming system customer service techniques

Families Citing this family (118)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7539628B2 (en) * 2000-03-21 2009-05-26 Bennett James D Online purchasing system supporting buyer affordability screening
US7356390B2 (en) 1999-06-29 2008-04-08 Space Data Corporation Systems and applications of lighter-than-air (LTA) platforms
WO2002087112A2 (en) 2001-04-18 2002-10-31 Space Data Corporation Unmanned lighter-than-air safe termination and recovery methods
US6598074B1 (en) * 1999-09-23 2003-07-22 Rocket Network, Inc. System and method for enabling multimedia production collaboration over a network
US6839735B2 (en) * 2000-02-29 2005-01-04 Microsoft Corporation Methods and systems for controlling access to presence information according to a variety of different access permission types
US7802010B1 (en) * 2000-06-14 2010-09-21 Sprint Communications Company L.P. Computer network method and system for guaranteed messaging service
EP1189161A1 (en) * 2000-09-13 2002-03-20 iMediation, S.A. A method and system for managing network-based partner relationships
US6657647B1 (en) * 2000-09-25 2003-12-02 Xoucin, Inc. Controlling the order in which content is displayed in a browser
US7594030B2 (en) * 2000-11-22 2009-09-22 Microsoft Corporation Locator and tracking service for peer to peer resources
US7072982B2 (en) * 2000-11-22 2006-07-04 Microsoft Corporation Universal naming scheme for peer to peer resources
US8255791B2 (en) * 2000-11-29 2012-08-28 Dov Koren Collaborative, flexible, interactive real-time displays
CN1304952C (en) * 2001-03-16 2007-03-14 夏普株式会社 Data synchronization system, apparatus used for the system, and data synchonization method
US8156223B2 (en) * 2001-03-20 2012-04-10 Microsoft Corporation Distribution of binary executables and content from peer locations/machines
US9632503B2 (en) 2001-04-18 2017-04-25 Space Data Corporation Systems and applications of lighter-than-air (LTA) platforms
US9908608B2 (en) 2001-04-18 2018-03-06 Space Data Corporation Systems and applications of lighter-than-air (LTA) platforms
US9643706B2 (en) 2001-04-18 2017-05-09 Space Data Corporation Systems and applications of lighter-than-air (LTA) platforms
US20030023677A1 (en) * 2001-07-25 2003-01-30 Graham Morison Zuill On-line project collaboration system
JP2003076624A (en) * 2001-09-03 2003-03-14 Nec Corp System and method for automatically setting computer environment using portable information terminal
JP2003085345A (en) * 2001-09-07 2003-03-20 Ricoh Co Ltd Device and method for supporting decision making, recording medium, and computer program
US7296055B2 (en) * 2001-09-11 2007-11-13 Sony Corporation Information providing system, information providing apparatus, information providing method, information processing apparatus, information processing method, and program
JP4446368B2 (en) * 2001-09-14 2010-04-07 富士通株式会社 Collaboration method, system, program, and recording medium
US7546359B2 (en) * 2001-10-24 2009-06-09 Groove Networks, Inc. Method and apparatus for managing a peer-to-peer collaboration system
US8751247B1 (en) * 2002-05-23 2014-06-10 At&T Intellectual Property Ii, L.P. Network-based collaborative control of distributed multimedia content
KR100878764B1 (en) * 2002-07-06 2009-01-14 삼성전자주식회사 Wireless local area network system with a guarantee of users' anonymity and method of guaranteeing users' anonymity therein
US20040019640A1 (en) * 2002-07-25 2004-01-29 Bartram Linda Ruth System and method for distributing shared storage for collaboration across multiple devices
US7395255B2 (en) * 2002-09-13 2008-07-01 General Motors Corporation Data management system having a common database infrastructure
US20040103370A1 (en) * 2002-11-27 2004-05-27 International Business Machines Corporation System and method for rendering MFS XML documents for display
US20040054969A1 (en) * 2002-09-16 2004-03-18 International Business Machines Corporation System and method for generating web services definitions for MFS-based IMS applications
US7421701B2 (en) 2002-09-16 2008-09-02 International Business Machines Corporation System for facilitating transactions between thin-clients and message format service (MFS)-based information management system (IMS) applications
US7130893B2 (en) 2003-05-19 2006-10-31 International Business Machines Corporation System and method for representing MFS control blocks in XML for MFS-based IMS applications
US7379732B2 (en) * 2002-09-24 2008-05-27 Research In Motion Limited System and method of wireless instant messaging
US7103597B2 (en) * 2002-10-03 2006-09-05 Mcgoveran David O Adaptive transaction manager for complex transactions and business process
US8176186B2 (en) 2002-10-30 2012-05-08 Riverbed Technology, Inc. Transaction accelerator for client-server communications systems
US7120666B2 (en) * 2002-10-30 2006-10-10 Riverbed Technology, Inc. Transaction accelerator for client-server communication systems
US20040122843A1 (en) * 2002-12-19 2004-06-24 Terris John F. XML browser markup and collaboration
US7516204B2 (en) * 2003-02-28 2009-04-07 Canon Kabushiki Kaisha Information processing method and apparatus
JP2004265193A (en) * 2003-03-03 2004-09-24 Canon Inc Information processing method, information processor, control method of server device, and server device
US7370280B2 (en) * 2003-09-23 2008-05-06 International Business Machines Corporation Apparatus, system, and method for defining a web services interface for MFS-based IMS applications
US7467190B2 (en) * 2003-10-06 2008-12-16 Hitachi, Ltd. Method and apparatus for alert distribution and archive sharing
JP3686415B2 (en) * 2003-11-10 2005-08-24 コナミ株式会社 GAME DEVICE, GAME METHOD, AND GAME PROGRAM
US7590614B2 (en) * 2003-12-11 2009-09-15 Sap Ag Method, apparatus, and computer program product for implementing techniques for visualizing data dependencies
US7418508B2 (en) 2004-01-26 2008-08-26 International Machines Corporation System and method to facilitate XML enabled IMS transactions between a remote client and an IMS application program
US7617531B1 (en) * 2004-02-18 2009-11-10 Citrix Systems, Inc. Inferencing data types of message components
US7580867B2 (en) * 2004-05-04 2009-08-25 Paul Nykamp Methods for interactively displaying product information and for collaborative product design
US8171387B2 (en) 2004-05-13 2012-05-01 Boardwalk Collaboration, Inc. Method of and system for collaboration web-based publishing
US20060010205A1 (en) * 2004-05-21 2006-01-12 Bea Systems, Inc. Systems and methods for collaboration impersonation
US20050262075A1 (en) * 2004-05-21 2005-11-24 Bea Systems, Inc. Systems and methods for collaboration shared state management
US20060010125A1 (en) * 2004-05-21 2006-01-12 Bea Systems, Inc. Systems and methods for collaborative shared workspaces
US8279461B2 (en) * 2004-06-03 2012-10-02 Sharp Laboratories Of America, Inc. Systems and methods for managing a plurality of resources across multiple printing devices
CN101044770B (en) 2004-08-16 2016-05-04 高通股份有限公司 Be used for the method and apparatus of the membership for group of management group group communication
US8135426B2 (en) * 2004-08-24 2012-03-13 Qualcomm Incorporated Optimistic talk-permit reliability enhancement in a push-to-talk system
US7707498B2 (en) * 2004-09-30 2010-04-27 Microsoft Corporation Specific type content manager in an electronic document
US20060117075A1 (en) * 2004-12-01 2006-06-01 International Business Machines Corporation Prerequisite, dependent and atomic deltas
US7092778B2 (en) * 2004-12-06 2006-08-15 Taiwan Semiconductor Manufacturing Co., Ltd. Fabrication management systems and methods
US7730394B2 (en) * 2005-01-06 2010-06-01 Microsoft Corporation Data binding in a word-processing application
US7617234B2 (en) * 2005-01-06 2009-11-10 Microsoft Corporation XML schema for binding data
US7945590B2 (en) * 2005-01-06 2011-05-17 Microsoft Corporation Programmability for binding data
US7752224B2 (en) * 2005-02-25 2010-07-06 Microsoft Corporation Programmability for XML data store for documents
US7668873B2 (en) * 2005-02-25 2010-02-23 Microsoft Corporation Data store for software application documents
JP4900891B2 (en) * 2005-04-27 2012-03-21 キヤノン株式会社 Communication apparatus and communication method
US20060265396A1 (en) * 2005-05-19 2006-11-23 Trimergent Personalizable information networks
US20060265394A1 (en) * 2005-05-19 2006-11-23 Trimergent Personalizable information networks
US20060265395A1 (en) * 2005-05-19 2006-11-23 Trimergent Personalizable information networks
US8054496B1 (en) * 2005-07-13 2011-11-08 Adobe Systems Incorporated Previewing a compound document
US7953696B2 (en) * 2005-09-09 2011-05-31 Microsoft Corporation Real-time synchronization of XML data between applications
US8533169B1 (en) 2005-09-21 2013-09-10 Infoblox Inc. Transactional replication
US8290910B2 (en) * 2005-09-21 2012-10-16 Infoblox Inc. Semantic replication
US8250030B2 (en) 2005-09-21 2012-08-21 Infoblox Inc. Provisional authority in a distributed database
US20070184903A1 (en) * 2006-02-08 2007-08-09 Derek Liu Network-based game system capable of serving massive number of game players
US20070218446A1 (en) * 2006-03-03 2007-09-20 Burck Smith Student interaction management system
US20070266003A1 (en) * 2006-05-09 2007-11-15 0752004 B.C. Ltd. Method and system for constructing dynamic and interacive family trees based upon an online social network
US7778965B2 (en) * 2006-05-23 2010-08-17 Sap Ag Systems and methods for common instance handling of providers in a plurality of frameworks
US7681144B2 (en) * 2006-06-13 2010-03-16 Mlb Advanced Media, L.P. Prioritized presentation of content
US7882064B2 (en) * 2006-07-06 2011-02-01 Emc Corporation File system replication
US7895512B2 (en) * 2006-09-21 2011-02-22 International Business Machines Corporation Capturing and processing change information in a web-type environment
EP1903452B1 (en) * 2006-09-25 2012-08-22 Software AG Method and system for processing the input in an XML form
US8627211B2 (en) * 2007-03-30 2014-01-07 Uranus International Limited Method, apparatus, system, medium, and signals for supporting pointer display in a multiple-party communication
US7765261B2 (en) * 2007-03-30 2010-07-27 Uranus International Limited Method, apparatus, system, medium and signals for supporting a multiple-party communication on a plurality of computer servers
US7950046B2 (en) * 2007-03-30 2011-05-24 Uranus International Limited Method, apparatus, system, medium, and signals for intercepting a multiple-party communication
US8702505B2 (en) 2007-03-30 2014-04-22 Uranus International Limited Method, apparatus, system, medium, and signals for supporting game piece movement in a multiple-party communication
WO2008119149A1 (en) * 2007-03-30 2008-10-09 Uranus International Limited Method, apparatus, system, and medium for supporting multiple-party communications
US7765266B2 (en) * 2007-03-30 2010-07-27 Uranus International Limited Method, apparatus, system, medium, and signals for publishing content created during a communication
US8060887B2 (en) * 2007-03-30 2011-11-15 Uranus International Limited Method, apparatus, system, and medium for supporting multiple-party communications
US7958516B2 (en) * 2007-04-18 2011-06-07 Google Inc Controlling communication within a container document
US20080270153A1 (en) * 2007-04-30 2008-10-30 International Business Machines Corporation Service oriented architecture (soa) lifecycle model migration
US9104323B2 (en) * 2007-08-16 2015-08-11 International Business Machines Corporation Apparatus and method for storage cluster control
US20090083738A1 (en) * 2007-09-25 2009-03-26 Microsoft Corporation Automated data object set administration
US8190987B2 (en) 2007-10-25 2012-05-29 Microsoft Corporation Private views of data and local calculations during real time collaboration
US20090119415A1 (en) * 2007-11-02 2009-05-07 Chiang Chenhuei J System and method for representing mfs control blocks in xml for mfs-based ims applications
US7937273B2 (en) * 2007-12-07 2011-05-03 Hewlett-Packard Development Company, L.P. Change collision calculation system and method
US8352906B2 (en) * 2007-12-28 2013-01-08 Cadence Design Systems, Inc. Method, system, and computer program product for implementing external domain independent modeling framework in a system design
US7895156B2 (en) * 2007-12-28 2011-02-22 Cadence Design Systems, Inc. Method, system, and computer program product for implementing a model exchange framework generating a synchronization record in response to a model exchange request using fusion technology
US8509569B2 (en) * 2008-02-11 2013-08-13 Apple Inc. Optimization of image processing using multiple processing units
US20090276712A1 (en) * 2008-04-30 2009-11-05 Caterpillar Inc. Safety awareness system
US8655953B2 (en) 2008-07-18 2014-02-18 Porto Technology, Llc System and method for playback positioning of distributed media co-viewers
GB2464948A (en) 2008-10-29 2010-05-05 Quolos Limited Online collaboration
US8140478B2 (en) * 2009-01-29 2012-03-20 Microsoft Corporation Commit rate management with decoupled commit operations
US9154462B2 (en) * 2009-12-22 2015-10-06 At&T Intellectual Property I, L.P. Methods, systems, and computer program products for managing firewall change requests in a communication network
KR20110095612A (en) * 2010-02-19 2011-08-25 삼성전자주식회사 Method for providing link and eelectronic apparatus thereof
US9734124B2 (en) * 2010-03-04 2017-08-15 International Business Machines Corporation Direct linked two way forms
JP5598089B2 (en) * 2010-05-28 2014-10-01 富士通株式会社 Program, information processing apparatus and information processing method
US10503817B2 (en) 2011-01-12 2019-12-10 Crucs Holdings, Llc System and method for multi-party document revision
US8909667B2 (en) 2011-11-01 2014-12-09 Lemi Technology, Llc Systems, methods, and computer readable media for generating recommendations in a media recommendation system
US9055043B2 (en) * 2011-11-10 2015-06-09 Qualcomm Incorporated Adaptive media sharing
US9864365B2 (en) * 2011-11-11 2018-01-09 Rockwell Automation, Inc. Control environment change communication
CN104205779A (en) * 2012-04-06 2014-12-10 交互数字专利控股公司 Optimization of peer-to-peer content delivery service
US8858322B2 (en) 2012-05-03 2014-10-14 Gamesys Ltd. Systems and methods for referral benefits
US9116971B2 (en) 2012-05-08 2015-08-25 Softframe, Inc. Data synchronization using a composite change clock
US8769480B1 (en) * 2013-07-11 2014-07-01 Crossflow Systems, Inc. Integrated environment for developing information exchanges
WO2016105523A1 (en) 2014-12-24 2016-06-30 Space Data Corporation Techniques for intelligent balloon/airship launch and recovery window location
WO2016105522A1 (en) 2014-12-24 2016-06-30 Space Data Corporation Breaking apart a platform upon pending collision
US10059421B2 (en) 2014-12-30 2018-08-28 Space Data Corporation Multifunctional balloon membrane
US9800659B2 (en) * 2015-02-02 2017-10-24 International Business Machines Corporation Enterprise peer-to-peer storage and method of managing peer network storage
US20160321226A1 (en) * 2015-05-01 2016-11-03 Microsoft Technology Licensing, Llc Insertion of unsaved content via content channel
US10909080B2 (en) * 2015-05-04 2021-02-02 Microsoft Technology Licensing, Llc System and method for implementing shared document edits in real-time
US11102313B2 (en) * 2015-08-10 2021-08-24 Oracle International Corporation Transactional autosave with local and remote lifecycles
US10931733B2 (en) * 2017-08-24 2021-02-23 Re Mago Ltd Method, apparatus, and computer-readable medium for transmission of files over a web socket connection in a networked collaboration workspace
CN112954664B (en) * 2019-12-10 2022-07-12 华为技术有限公司 Data processing method, device and system

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5446842A (en) * 1993-02-26 1995-08-29 Taligent, Inc. Object-oriented collaboration system
GB2303946A (en) * 1995-07-29 1997-03-05 Ibm Data conferencing system
WO1997036406A1 (en) * 1996-03-25 1997-10-02 Nokia Telecommunications Oy Method of assigning addresses in nodes of a telecommunication network
WO1998038594A1 (en) * 1997-02-14 1998-09-03 David Hingston A system and method for distributed collaborative drawing
EP0891064A2 (en) * 1997-07-09 1999-01-13 Hewlett-Packard Company Method of configuring network device

Family Cites Families (49)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5008853A (en) * 1987-12-02 1991-04-16 Xerox Corporation Representation of collaborative multi-user activities relative to shared structured data objects in a networked workstation environment
US5220657A (en) * 1987-12-02 1993-06-15 Xerox Corporation Updating local copy of shared data in a collaborative system
US5170480A (en) * 1989-09-25 1992-12-08 International Business Machines Corporation Concurrently applying redo records to backup database in a log sequence using single queue server per queue at a time
JP3020539B2 (en) * 1990-03-07 2000-03-15 株式会社日立製作所 Parallel operation type database management method
JPH0552972A (en) 1991-08-27 1993-03-02 Iwatsu Electric Co Ltd Frequency distribution measuring circuit
US5538255A (en) 1992-02-18 1996-07-23 Barker; Bruce J. Remote controlled multiplayer video game
US5555404A (en) * 1992-03-17 1996-09-10 Telenor As Continuously available database server having multiple groups of nodes with minimum intersecting sets of database fragment replicas
US5765717A (en) 1992-06-03 1998-06-16 Gottselig; John C. Wet hygienic towel dispenser
US5392400A (en) * 1992-07-02 1995-02-21 International Business Machines Corporation Collaborative computing system using pseudo server process to allow input from different server processes individually and sequence number map for maintaining received data sequence
AU7684094A (en) 1993-09-24 1995-04-10 Oracle Corporation Method and apparatus for data replication
JPH07135530A (en) * 1993-11-11 1995-05-23 Matsushita Electric Ind Co Ltd Conference terminal equipment and conference equipment
JP2860442B2 (en) * 1993-12-28 1999-02-24 パイオニア株式会社 Two-way communication system
US5434994A (en) * 1994-05-23 1995-07-18 International Business Machines Corporation System and method for maintaining replicated data coherency in a data processing system
CA2152528C (en) * 1994-07-29 2000-04-18 Chung-Hwa Herman Rao Distributed systems with replicated files
GB2296167A (en) * 1994-12-16 1996-06-19 Ibm Serialising updates in a data conferencing network
US5794252A (en) * 1995-01-24 1998-08-11 Tandem Computers, Inc. Remote duplicate database facility featuring safe master audit trail (safeMAT) checkpointing
US5765171A (en) * 1995-12-29 1998-06-09 Lucent Technologies Inc. Maintaining consistency of database replicas
US5823879A (en) * 1996-01-19 1998-10-20 Sheldon F. Goldberg Network gaming system
GB9604987D0 (en) 1996-03-08 1996-05-08 Ibm Data management system and method for replicated data
US5894556A (en) * 1996-03-21 1999-04-13 Mpath Interactive, Inc. Network match maker matching requesters based on communication attribute between the requesters
US6353596B1 (en) * 1996-04-12 2002-03-05 Lucent Technologies Inc. System and method for multipoint-to-multipoint multicasting
US6104871A (en) * 1996-04-30 2000-08-15 International Business Machines Corporation Utilizing batch requests to present membership changes to process groups
US6199116B1 (en) * 1996-05-24 2001-03-06 Microsoft Corporation Method and system for managing data while sharing application programs
US5787262A (en) * 1996-06-26 1998-07-28 Microsoft Corporation System and method for distributed conflict resolution between data objects replicated across a computer network
US5918019A (en) * 1996-07-29 1999-06-29 Cisco Technology, Inc. Virtual dial-up protocol for network communication
US6016478A (en) * 1996-08-13 2000-01-18 Starfish Software, Inc. Scheduling system with methods for peer-to-peer scheduling of remote users
US5898834A (en) * 1996-08-16 1999-04-27 Starwave Corporation System, method, and medium for control of objects in a multi-platform environment
US5892949A (en) 1996-08-30 1999-04-06 Schlumberger Technologies, Inc. ATE test programming architecture
US5899810A (en) * 1997-01-24 1999-05-04 Kaon Interactive Corporation Distributed game architecture to overcome system latency
US6751669B1 (en) * 1997-03-24 2004-06-15 Avaya Technology Corp. Multimedia multiparty communication system and method
US6030288A (en) * 1997-09-02 2000-02-29 Quixotic Solutions Inc. Apparatus and process for verifying honest gaming transactions over a communications network
US6112181A (en) * 1997-11-06 2000-08-29 Intertrust Technologies Corporation Systems and methods for matching, selecting, narrowcasting, and/or classifying based on rights management and/or other information
JPH11167510A (en) * 1997-12-04 1999-06-22 Hitachi Ltd Replication method, replication tool, and replication server
US6012096A (en) * 1998-04-23 2000-01-04 Microsoft Corporation Method and system for peer-to-peer network latency measurement
JP3368833B2 (en) * 1998-06-30 2003-01-20 日本電気株式会社 Material distribution method and computer-readable recording medium in conference system
US6321252B1 (en) * 1998-07-17 2001-11-20 International Business Machines Corporation System and method for data streaming and synchronization in multimedia groupware applications
US6463078B1 (en) * 1998-07-22 2002-10-08 Microsoft Corporation Method for switching protocols transparently in multi-user applications
US6119147A (en) * 1998-07-28 2000-09-12 Fuji Xerox Co., Ltd. Method and system for computer-mediated, multi-modal, asynchronous meetings in a virtual space
US6321250B1 (en) * 1998-10-01 2001-11-20 Ericsson Inc. Data communication system and method for transporting objects over a permanent connections
JP3578385B2 (en) * 1998-10-22 2004-10-20 インターナショナル・ビジネス・マシーンズ・コーポレーション Computer and replica identity maintaining method
US6449622B1 (en) * 1999-03-08 2002-09-10 Starfish Software, Inc. System and methods for synchronizing datasets when dataset changes may be received out of order
US6192395B1 (en) * 1998-12-23 2001-02-20 Multitude, Inc. System and method for visually identifying speaking participants in a multi-participant networked event
US6480506B1 (en) * 1999-04-15 2002-11-12 Sharewave Inc Co-location negotiation scheme for wireless computer networks
US20030069874A1 (en) * 1999-05-05 2003-04-10 Eyal Hertzog Method and system to automate the updating of personal information within a personal information management application and to synchronize such updated personal information management applications
US6564261B1 (en) * 1999-05-10 2003-05-13 Telefonaktiebolaget Lm Ericsson (Publ) Distributed system to intelligently establish sessions between anonymous users over various networks
US20020073163A1 (en) * 2000-12-12 2002-06-13 Fuji Xerox Co., Ltd. Systems and methods for supporting document centered discussion across heterogeneous devices and displays
US20020076025A1 (en) * 2000-12-18 2002-06-20 Nortel Networks Limited And Bell Canada Method and system for automatic handling of invitations to join communications sessions in a virtual team environment
US20030158900A1 (en) * 2002-02-05 2003-08-21 Santos Richard A. Method of and apparatus for teleconferencing
US7340502B2 (en) * 2002-10-24 2008-03-04 Microsoft Corporation Method and apparatus for maintaining consistency of a shared space across multiple endpoints in a peer-to-peer collaborative computer system

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5446842A (en) * 1993-02-26 1995-08-29 Taligent, Inc. Object-oriented collaboration system
GB2303946A (en) * 1995-07-29 1997-03-05 Ibm Data conferencing system
WO1997036406A1 (en) * 1996-03-25 1997-10-02 Nokia Telecommunications Oy Method of assigning addresses in nodes of a telecommunication network
WO1998038594A1 (en) * 1997-02-14 1998-09-03 David Hingston A system and method for distributed collaborative drawing
EP0891064A2 (en) * 1997-07-09 1999-01-13 Hewlett-Packard Company Method of configuring network device

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
INTERNATIONAL BUSINESS MACHINES CORPORATION: "Automatic assignment of unique client identifiers" RESEARCH DISCLOSURE, KENNETH MASON PUBLICATIONS, HAMPSHIRE, GB, vol. 407, no. 70, March 1998 (1998-03), XP007122466 ISSN: 0374-4353 *
See also references of EP1456772A2 *

Cited By (34)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6973464B1 (en) 1999-11-15 2005-12-06 Novell, Inc. Intelligent replication method
AU2018267672B2 (en) * 2001-10-17 2019-10-31 Aristocrat Technologies Australia Pty Limited Gaming system customer service techniques
JP2005527878A (en) * 2001-10-19 2005-09-15 イービーエス・ディーリング・リソースィズ・インターナショナル・リミテッド Conversation trading system
US7097957B2 (en) 2001-10-24 2006-08-29 Toyo Boseki Kabushiki Kaisha Photosensitive resin laminate
EP1385104A3 (en) * 2002-07-25 2004-08-18 Microsoft Corporation A system and method for image editing
US7225226B2 (en) 2002-09-27 2007-05-29 International Business Machines Corporation Chat messaging channel redirection
EP1418726A2 (en) * 2002-10-24 2004-05-12 Groove Networks, Inc. Method and apparatus for maintaining consistency of a shared space across multiple endpoints in a peer-to-peer collaborative computer system
EP1418726A3 (en) * 2002-10-24 2005-06-01 Groove Networks, Inc. Method and apparatus for maintaining consistency of a shared space across multiple endpoints in a peer-to-peer collaborative computer system
JP2004152289A (en) * 2002-10-24 2004-05-27 Groove Networks Inc Method and apparatus for maintaining consistency of shared space across a plurality of end points in peer to peer collaboration computer system
US7340502B2 (en) 2002-10-24 2008-03-04 Microsoft Corporation Method and apparatus for maintaining consistency of a shared space across multiple endpoints in a peer-to-peer collaborative computer system
US8073905B2 (en) 2002-10-24 2011-12-06 Microsoft Corporation Method and apparatus for maintaining consistency of a shared space across multiple endpoints in a peer-to-peer collaborative computer system
KR101021399B1 (en) 2002-10-24 2011-03-14 마이크로소프트 코포레이션 Method and apparatus for maintaining consistency of a shared space across multiple endpoints in a peer-to-peer collaborative computer system
WO2004089006A2 (en) 2003-04-03 2004-10-14 Nokia Corporation Managing context-related information with a mobile station
EP1609290B1 (en) * 2003-04-03 2009-09-02 Nokia Corporation Managing context-related information with a mobile station
US7730026B2 (en) 2004-07-01 2010-06-01 Apple Inc. Method and system using reusable state information for synchronization and maintenance of data
US8868493B2 (en) 2004-07-01 2014-10-21 Apple Inc. Method and system using reusable state information for synchronization and maintenance of data
US8332352B2 (en) 2004-07-01 2012-12-11 Apple Inc. Method and system using reusable state information for synchronization and maintenance of data
WO2006129931A1 (en) * 2005-05-31 2006-12-07 Nhn Corporation Method and system for synchronizing status of member servers belonging to same replication group
US9338232B2 (en) 2005-05-31 2016-05-10 Nhn Entertainment Corporation Method and system for synchronizing status of member servers belonging to same replication group
US7523146B2 (en) 2005-06-21 2009-04-21 Apple Inc. Apparatus and method for peer-to-peer N-way synchronization in a decentralized environment
US8321374B2 (en) 2005-06-21 2012-11-27 Apple Inc. Peer-to-peer N-way syncing in decentralized environment
US8495015B2 (en) 2005-06-21 2013-07-23 Apple Inc. Peer-to-peer syncing in a decentralized environment
US8635209B2 (en) 2005-06-21 2014-01-21 Apple Inc. Peer-to-peer syncing in a decentralized environment
WO2007090645A1 (en) * 2006-02-08 2007-08-16 Combots Product Gmbh & Co. Kg Method for the common processing of a data quantity and a network system and communication system for carrying out said method
US7860826B2 (en) 2006-08-04 2010-12-28 Apple Inc. Method and system for using global equivalency sets to identify data during peer-to-peer synchronization
US7760767B2 (en) 2007-01-05 2010-07-20 Apple Inc. Wide area peer-to-peer synching in a decentralized environment
WO2008085672A1 (en) * 2007-01-05 2008-07-17 Apple Inc. Wide area peer-to-peer syncing in a decentralized environment
US7657769B2 (en) 2007-01-08 2010-02-02 Marcy M Scott N-way synchronization of data
US8250397B2 (en) 2007-01-08 2012-08-21 Apple Inc. N-way synchronization of data
EP2028813A1 (en) * 2007-07-02 2009-02-25 British Telecmmunications public limited campany Method of synchronizing intermittently connected mobile terminals
WO2009004276A1 (en) * 2007-07-02 2009-01-08 British Telecommunications Public Limited Company Method of synchronizing intermittently connected mobile terminals
CN105229611A (en) * 2013-04-29 2016-01-06 微软技术许可有限责任公司 Preventing of sync break
WO2014178901A1 (en) * 2013-04-29 2014-11-06 Microsoft Corporation Preventing sync interruptions
US9875149B2 (en) 2013-04-29 2018-01-23 Microsoft Technology Licensing, Llc Preventing sync interruptions

Also Published As

Publication number Publication date
IL147705A (en) 2009-05-04
JP2011175654A (en) 2011-09-08
CA2380141C (en) 2009-11-03
DE60042662D1 (en) 2009-09-10
CA2380141A1 (en) 2001-01-25
US8024404B2 (en) 2011-09-20
WO2001006364A8 (en) 2001-06-28
JP5031113B2 (en) 2012-09-19
US7490126B2 (en) 2009-02-10
JP4750332B2 (en) 2011-08-17
US6859821B1 (en) 2005-02-22
EP2105849A3 (en) 2009-10-28
EP1456772B1 (en) 2009-07-29
WO2001006364A3 (en) 2004-05-13
IL147705A0 (en) 2002-08-14
EP2105849A2 (en) 2009-09-30
KR100711661B1 (en) 2007-04-27
EP1456772A2 (en) 2004-09-15
US20050102364A1 (en) 2005-05-12
ATE438148T1 (en) 2009-08-15
JP2003526837A (en) 2003-09-09
KR20020042806A (en) 2002-06-07
US20040024820A1 (en) 2004-02-05

Similar Documents

Publication Publication Date Title
US6859821B1 (en) Method and apparatus for prioritizing data change requests and maintaining data consistency in a distributed computer system equipped for activity-based collaboration
EP1212679B1 (en) Method, apparatus and computer program product for activity-based collaboration by a computer system equipped with a dynamics manager
US6640241B1 (en) Method and apparatus for activity-based collaboration by a computer system equipped with a communications manager
US6842779B1 (en) Agent accessory tool cooperating with integrated application on WEB server by HTTP protocol
US5809512A (en) Information provider apparatus enabling selective playing of multimedia information by interactive input based on displayed hypertext information
US6735741B1 (en) Method system, and program for dynamic resource linking when copies are maintained at different storage locations
US7012627B1 (en) System and method for presentation of room navigation
JP2000035951A (en) Method and device for multiuser recognition and collaboration
McKinley et al. Pavilion: a middleware framework for collaborative Web-based applications
Broll SmallTool-a toolkit for realizing shared virtual environments on the Internet
Hawkes et al. Livingspace: A living worlds implementation using an event-based architecture
Brouwer et al. A proposal for a distributed virtual reality system for architectural simulations
Smeltzer et al. Other issues in the series of BIT Notes are: 9411 Future Organisation of the Building Process
Lee A flexible framework for Internet-based collaboration
JP2001290743A (en) System and method for circulating electronic mail

Legal Events

Date Code Title Description
AK Designated states

Kind code of ref document: A2

Designated state(s): CA IL JP KR

AL Designated countries for regional patents

Kind code of ref document: A2

Designated state(s): AT BE CH CY DE DK ES FI FR GB GR IE IT LU MC NL PT SE

121 Ep: the epo has been informed by wipo that ep was designated in this application
DFPE Request for preliminary examination filed prior to expiration of 19th month from priority date (pct application filed before 20040101)
AK Designated states

Kind code of ref document: C1

Designated state(s): AU CA CN IL IN JP KR SG

AL Designated countries for regional patents

Kind code of ref document: C1

Designated state(s): AT BE CH CY DE DK ES FI FR GB GR IE IT LU MC NL PT SE

CFP Corrected version of a pamphlet front page
CR1 Correction of entry in section i

Free format text: PAT. BUL. 04/2001 UNDER (81) ADD "AU, CN, IN, SG"; DUE TO LATE TRANSMITTAL BY THE RECEIVING OFFICE

WWE Wipo information: entry into national phase

Ref document number: 147705

Country of ref document: IL

WWE Wipo information: entry into national phase

Ref document number: 2000943244

Country of ref document: EP

Ref document number: 2380141

Country of ref document: CA

WWE Wipo information: entry into national phase

Ref document number: 1020027000818

Country of ref document: KR

WWP Wipo information: published in national office

Ref document number: 1020027000818

Country of ref document: KR

WWP Wipo information: published in national office

Ref document number: 2000943244

Country of ref document: EP

WWG Wipo information: grant in national office

Ref document number: 1020027000818

Country of ref document: KR