This disclosure relates generally to collaborative editing, and more particularly to systems and methods to provide real-time collaborative editing.
A collaborative editor is a software application that allows several people using different computers to edit a computer file. Collaborative editors include both real-time and non-real-time editors. Real-time collaborative editors allow users to edit the same file at the same time. A challenge encountered in providing real-time collaborative editing is the coordination of edits from remote users. These remote edits may conflict with the user's own local edits and are originally created in versions of the file that never existed locally.
Another challenge with collaborative editors is to reduce or minimize the network traffic attributed to edit updates sent to the other computers involved with the collaborative editing. This is a particular challenge for real-time collaborative editors that broadcast their updates to all the other computers. For example, Nbrain, Inc. has implemented a real-time collaborative editor which uses a broadcast-based update of the files, in which all computers broadcast their changes to all other computers. These broadcasts are collated by each local copy of the real-time collaborative editor and the files are kept synchronized across all the computers. Though this architecture may work for a small number of users, it will not scale well for medium to large number of users because the number of transmissions required by this architecture is an order of n*n where ‘n’ is the number of computers involved in the real-time collaborative editing. Current real-time collaborative editors are tied to a particular file type for editing (for example, the editors can edit only text files).
An embodiment collaboratively edits a computer file using a plurality of computers in a network, where the computers are connected using a token ring, each of the computers has a local copy, and a first computer has edited its local copy and performs the method. According to the embodiment of the method performed by the first computer in the network, a token circulating around the token ring is captured, and a location of the edited portion of the local copy of the file is determined. The location is broadcast to the other computers. Conflicts are received from the other computers, and the conflicts from the other computers are reconciled with the edited portion of the local copy of the file to provide reconciled edits to the file. The local copy of the file is updated with the reconciled edits. A data packet with the reconciled edits is created and transmitted around the token ring.
This Summary is an overview of some of the teachings of the present application and not intended to be an exclusive or exhaustive treatment of the present subject matter. Further details about the present subject matter are found in the detailed description and appended claims. Other aspects will be apparent to persons skilled in the art upon reading and understanding the following detailed description and viewing the drawings that form a part thereof, each of which are not to be taken in a limiting sense. The scope of the present invention is defined by the appended claims and their equivalents.
The present subject matter uses a modified token ring architecture to exchange updates among the various computers used to perform the real-time collaborative editing. The token ring local area network (LAN) technology is a local area network protocol which resides at the data link layer (DLL) of the Open Systems Interconnection basic reference model (OSI model). The computers that are involved in the real-time collaborative editing are connected in the form of a virtual token ring (not a physical LAN). Thus, the virtual token ring may be formed on top of an existing Internet connection. This technology uses a special frame (e.g. a three-byte frame) called a token that travels around the ring. The frame travels completely around the loop. As in a token ring network, an empty token keeps circulating in the ring. When a computer has been used to edit a file in the real-time collaborative editor, then that computer grabs the token and changes the token into a data frame.
XML is used as the internal storage format for the files edited using the real-time editor. The use of the XML format to represent these files permits the real-time editor to handle a variety of types of files (e.g. spreadsheets, PowerPoint presentations, various styled documents, source code, and images). The data frame contains the edited portion of the file, which is an XML fragment represented as a SOAP (Simple Object Access Protocol) message. SOAP is a protocol for exchanging XML-based messages over computer networks, normally using HTTP/HTTPS. SOAP forms the foundation layer of the web services protocol stack, and provides a basic messaging framework upon which abstract layers can be built. Since XML documents are used to represent the files, presentations, spreadsheets, documents and images can be edited by the real-time collaborative editor. SOAP messages enable the real-time collaborative editor to function over the Internet since the SOAP messages are transmitted using the HTTP/HTTPS protocol. Secure Sockets Layer (SSL) encryption may be used to send the edit updates secure over the Internet.
When the user edited a file, the user's computer grabs the token and locates the portion of the XML representation of the file where the edit has been made. The computer sends out a broadcast message containing the location of the change in the XML internal representation. The broadcast message does not include the edited changes themselves. Broadcasting the location and not the entire change minimizes the amount of data that is broadcast, thus reducing the network traffic.
According to various embodiments, the location of the change in the XML document is represented by numbers obtained from a post-order or in-order traversal of the DOM (Document Object Model) of the XML representation. DOM is a platform-independent and language-independent standard object model used to represent HTML or XML and related formats. DOM provides a structural representation (e.g. a tree) of the document used to identify the location of the edit.
Upon receiving the broadcast location of the edit, the other computers check their local edited documents for any conflicts. A conflict occurs when overlapping portions of the file have been edited by the user whose computer broadcasted the message and by the user whose computer received the broadcast message. All computers that have conflict with the location of the sent message send their portion of the edited file that has the conflict back to the broadcasting computer. The broadcasting computer waits for a fixed time and merges all the conflicting portions of the file. The fixed or predetermined amount of time is a length of time appropriate to allow the other computers to check for conflicts and send their portion of the edited file that has conflict back to the broadcasting computer. The broadcasting computer incorporates the merged portions into its local copy of the file, and loads the data frame with the edited file. The token containing the data frame travels around the token ring. Each computer in the ring reads the edits from the token and makes corresponding changes to its local copy of the file. Once the token completes a cycle and returns to the sender, the data in the data frame is cleared and an empty token once again travels around the token ring waiting for the next computer to grab the token to broadcast the location of its edited portion of the file. Since the updates are merged by the broadcasting computer, the files are not locked when the real-time collaborative editor performs an update. Since the files are not locked, the editing of the files can proceed simultaneously.
The edits to the file in the real-time collaborative editor are exchanged in a coordinated manner by the token ring architecture. Each computer which has edited its local copy of the file is able to grab an empty token, broadcast the location of the change(s) to the other computers, receive any conflicts from the other computers, and then transmit its changes to the file after broadcasting the location of the changes to the other computers and merging any conflicts from the other computers into the file. Synchronization of the updates from the various computers is thus achieved.
The use of token ring architecture for transmitting the edit updates is not network intensive since only a single token needs to be transmitted around the virtual token ring. It is a well established fact that the token ring architecture has excellent performance under heavy load. Thus, the real-time collaborative editor scales up as additional users to edit the file are added. The user broadcasts only the location of the changes to the XML representation of the file to allow the conflicting portions of the file to be merged, which reduces the network traffic since only a few numbers, obtained using a DOM representation of the XML files, are involved in the broadcast as opposed to the entire edited portion of the file being broadcast.
The addition or deletion of a computer to the token ring is a simple process with only two links being added or deleted to the neighboring computers as opposed to connection with all the computers in a broadcast based real-time collaborative editor. To avoid failure of the token ring due to one of the links being down, some embodiments use a dual ring such that the backup ring takes over if the primary ring fails. The dual ring provides redundancy to the virtual token ring architecture.
As is understood by those of ordinary skill in the art, the memory 206 includes sets of instructions capable of being operated on by the processor(s) and directing the processor(s) to perform various processes, including but not limited to processes to provide real-time editing. The illustrated memory instance(s) 206 include applications 208 and data 209. The illustrated data 209 includes a file 210 that is being edited using the real-time collaborative editor.
The first computer determines the location of the edited portion of the file, and as illustrated in
Each of the other computers receive the broadcast signal, calculate the location of its portion of the edited file, and compare the broadcasted location identifying the edited portion of the file in the broadcast computer to its own local copy of the file to determine if it has also edited this portion of the file. If a conflict is found, these other computers report the conflicts (illustrated as signals 512) back to the broadcasting computer. The signals 512 sent back to the broadcasting computer include the conflicting portion of the file. Computers need not send a signal if a conflict is not detected by the computer.
The broadcasting computer is in a state to receive these conflict signals for a predetermined amount of time after the broadcasting computer broadcasts the location of its edited portion. All conflicts are expected to be reported during this predetermined amount time. After this predetermined amount of time elapses, the broadcasting computer merges all of the conflicting portions with its changed portion, and updates its local copy of the file. The broadcasting computer merges all the XML fragments that are received from the other computers. This merging need not be done at the level of internal XML representation. The real-time collaborative editor takes care of rendering these conflicting edited portions and the merging of the conflicting portions is done at the editor level. The broadcasting computer also loads a data frame 613 with the edited portion of the file into the token, which circulates around the token ring 604. The data packet contains the edited portions as well as the location of the edited portions of the file. The location of the edited portions are computed based on the in-order or pre-order traversal of the DOM representation. Each computer in the ring reads the edits from the token and makes corresponding changes to its local copy of the file. The data in the data frame is cleared once the token completely travels around the token ring, and an empty token travels around the token ring waiting for the next computer to grab it update the network with its edited portion of the file.
It may be possible that a non-broadcasting computer will have a late edit to the file that conflicts with the broadcasted location. For example, the edit may have occurred after the broadcasting computer had sent its edit location and the predetermined amount of time expired for the broadcasting computer receive the conflicting edits. In this case, the non-broadcasting computer that has the late conflicting edit would set a bit in the data packet upon receiving the data packet as it circulated around the token ring. This bit is similar to the priority bit in the token ring, where the priority bit is used when a computer wants to transmit a data packet on priority. The computer that has the conflicting edit does not immediately grab the data packet and transmit. Instead the computer waits for the data packet to complete a circle in the ring and for the data packet to be cleared by the original transmitting computer. Once the data packet is cleared by the original computer, the other computers see that the priority bit has been set and do not grab the token. The computer that had the conflicting edit grabs the token and becomes the new broadcasting computer that performs the process described above to generate the data packet. After the data packet is read by all the other computers and the data packet reaches back the computer that had the conflicting edit, it clears the priority bit and clears the data packet. The empty token now circulates in the ring. The computers that have conflicting portions but have missed the broadcast are thus able to incorporate their conflicting portions without having other computers intervene by grabbing the token to update other portions of the file with its updates.
The present subject can be used in real-time collaborative editors for synchronizing the update of the files across networks. The modified token ring architecture may be employed for other kinds of collaboration for example a collaborative session in which several computers simultaneously remote control another computer on the network and the computers synchronize their updates. The modified token ring architecture may also be used for simultaneous updates to Wiki pages, web page design across the globe and any other document that can be internally represented by an XML document. The XML documents may be processed and merged by simple implementations. Several implementations of the SOAP protocol exist which may be used for packaging the XML document edits as SOAP messages. Synchronization of the various computers for updates is handled at the application level using the token ring architecture and does not require any real time support from the OS.
One of ordinary skill in the art will understand that, the illustrated processes and entities can be implemented using software, hardware, and combinations of software and hardware. The methods illustrated in this disclosure are not intended to be exclusive of other methods within the scope of the present subject matter. Those of ordinary skill in the art will understand, upon reading and comprehending this disclosure, other methods within the scope of the present subject matter. The above-identified embodiments, and portions of the illustrated embodiments, are not necessarily mutually exclusive. These embodiments, or portions thereof, can be combined. In various embodiments, the methods are implemented as a set of instructions contained on a computer-accessible medium capable of directing a processor to perform the respective method. The Abstract is provided to comply with 37 C.F.R. §1.72(b) and will allow the reader to quickly ascertain the nature and gist of the technical disclosure. It is submitted with the understanding that it will not be used to interpret or limit the scope or meaning of the claims.
The above detailed description is intended to be illustrative, and not restrictive. Other embodiments will be apparent to those of skill in the art upon reading and understanding the above description. The scope of the invention should, therefore, be determined with reference to the appended claims, along with the full scope of equivalents to which such claims are entitled.
Number | Name | Date | Kind |
---|---|---|---|
5337407 | Bates et al. | Aug 1994 | A |
5339388 | Bates et al. | Aug 1994 | A |
5339389 | Bates et al. | Aug 1994 | A |
5515491 | Bates et al. | May 1996 | A |
5940082 | Brinegar et al. | Aug 1999 | A |
6233600 | Salas et al. | May 2001 | B1 |
6280325 | Fisk | Aug 2001 | B1 |
6426962 | Cabezas et al. | Jul 2002 | B1 |
6529905 | Bray et al. | Mar 2003 | B1 |
6631137 | Lorrain et al. | Oct 2003 | B1 |
6665675 | Mitaru | Dec 2003 | B1 |
6687878 | Eintracht et al. | Feb 2004 | B1 |
6772216 | Ankireddipally et al. | Aug 2004 | B1 |
6948163 | Melahn et al. | Sep 2005 | B2 |
7127501 | Beir | Oct 2006 | B1 |
7233933 | Horvitz et al. | Jun 2007 | B2 |
7242389 | Stern | Jul 2007 | B1 |
20040003042 | Horvitz et al. | Jan 2004 | A1 |
20040215772 | Dinker et al. | Oct 2004 | A1 |
20050008163 | Leser et al. | Jan 2005 | A1 |
20050028006 | Leser et al. | Feb 2005 | A1 |
20050033811 | Bhogal et al. | Feb 2005 | A1 |
20050033813 | Bhogal et al. | Feb 2005 | A1 |
20050084082 | Horvitz et al. | Apr 2005 | A1 |
20050125536 | Bucher | Jun 2005 | A1 |
20060010206 | Apacible et al. | Jan 2006 | A1 |
20060029296 | King et al. | Feb 2006 | A1 |
20060098899 | King et al. | May 2006 | A1 |
20060294467 | Auterinen | Dec 2006 | A1 |
20070064005 | Antoine | Mar 2007 | A1 |
20070244906 | Colton et al. | Oct 2007 | A1 |
20070250506 | Stevens et al. | Oct 2007 | A1 |
20070288415 | Sapp et al. | Dec 2007 | A1 |
20080115103 | Datars et al. | May 2008 | A1 |
20080195945 | Vaughan et al. | Aug 2008 | A1 |
20080244418 | Manolescu et al. | Oct 2008 | A1 |
20090070388 | Kolke et al. | Mar 2009 | A1 |
20100057785 | Khosravy et al. | Mar 2010 | A1 |
20100083136 | Komine et al. | Apr 2010 | A1 |
Entry |
---|
“N-Brain, Inc. Releases World's First Real-Time Collaborative Development Tool for Software Engineers”, Business Wire, http://www.reuters.com/article/pressRelease/idUS115828+06-Mar-2008+BW20080306, (Mar. 6, 2008), 4 pgs. |
“Simple Object Access Protocol (SOAP) 1.1”, W3C Note, http://www.w3.org/TR/2000/NOTE-SOAP-20000508/, (May 8, 2000), 30 pgs. |
Number | Date | Country | |
---|---|---|---|
20100169269 A1 | Jul 2010 | US |