System and Method for Merging Edits for a Conversation in a Hosted Conversation System
First Claim
1. A method of resolving edits to electronic messages, comprising:
- at a server system, hosting a plurality of conversations, including, for a respective conversation;
receiving a first sequence of edits to a respective content unit of the conversation from a first participant of the conversation and converting the first sequence of edits into a first merged sequence of edits;
receiving a second sequence of edits to the respective content unit of the conversation from a second participant of the conversation and converting the second sequence of edits into a second merged sequence of edits;
responding to a determination that the first sequence of edits and the second sequence of edits meet predefined conflict criteria by transforming the first merged sequence of edits to produce a first transformed sequence of edits and transforming the second merged sequence of edits to produce a second transformed sequence of edits;
wherein the first transformed sequence is different from the first merged sequence;
sending the first transformed sequence of edits to the second participant and sending the second transformed sequence of edits to the first participant;
wherein applying the first sequence of edits followed by the second transformed sequence of edits at the first participant to the respective content unit of the conversation produces a same result as applying the second sequence of edits followed by the first transformed sequence of edits at the second participant to the respective content unit of the conversation.
3 Assignments
0 Petitions
Accused Products
Abstract
A server system hosts a plurality of conversations. For a respective conversation the server system receives a first sequence of edits and a second sequence of edits to a respective content unit of the conversation from different participants of the conversation. The server system converts the first and second sequences of edits into respective first and second merged sequences of edits. The server system responds to a determination that the first merged sequence of edits and the second merged sequence of edits meet predefined conflict criteria by transforming the first and second merged sequences of edits. The server system sends the respective transformed sequences of edits to respective participants so that respective participants can apply either the first sequence of edits followed by the second transformed sequence of edits or applying the second sequence of edits followed by the first transformed sequence of edits to produce a same result.
164 Citations
15 Claims
-
1. A method of resolving edits to electronic messages, comprising:
-
at a server system, hosting a plurality of conversations, including, for a respective conversation; receiving a first sequence of edits to a respective content unit of the conversation from a first participant of the conversation and converting the first sequence of edits into a first merged sequence of edits; receiving a second sequence of edits to the respective content unit of the conversation from a second participant of the conversation and converting the second sequence of edits into a second merged sequence of edits; responding to a determination that the first sequence of edits and the second sequence of edits meet predefined conflict criteria by transforming the first merged sequence of edits to produce a first transformed sequence of edits and transforming the second merged sequence of edits to produce a second transformed sequence of edits;
wherein the first transformed sequence is different from the first merged sequence;sending the first transformed sequence of edits to the second participant and sending the second transformed sequence of edits to the first participant; wherein applying the first sequence of edits followed by the second transformed sequence of edits at the first participant to the respective content unit of the conversation produces a same result as applying the second sequence of edits followed by the first transformed sequence of edits at the second participant to the respective content unit of the conversation. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9)
-
-
10. A server system, comprising:
-
one or more processors; memory; and one or more programs stored in the memory for execution by the one or more processors, the one or more programs comprising instructions for hosting a plurality of conversations, the hosting including, for a respective conversation, instructions for; receiving a first sequence of edits to a respective content unit of the conversation from a first participant of the conversation and converting the first sequence of edits into a first merged sequence of edits; receiving a second sequence of edits to the respective content unit of the conversation from a second participant of the conversation and converting the second sequence of edits into a second merged sequence of edits; responding to a determination that the first sequence of edits and the second sequence of edits meet predefined conflict criteria by transforming the first merged sequence of edits to produce a first transformed sequence of edits and transforming the second merged sequence of edits to produce a second transformed sequence of edits;
wherein the first transformed sequence is different from the first merged sequence;sending the first transformed sequence of edits to the second participant and sending the second transformed sequence of edits to the first participant; wherein applying the first sequence of edits followed by the second transformed sequence of edits at the first participant to the respective content unit of the conversation produces a same result as applying the second sequence of edits followed by the first transformed sequence of edits at the second participant to the respective content unit of the conversation. - View Dependent Claims (11)
-
-
12. A computer readable storage medium storing one or more programs configured for execution by one or more processors of a server system, the one or more programs comprising instructions, which when executed cause the server system to:
-
store data representing a plurality of conversations, including, a respective conversation; receive a first sequence of edits to a respective content unit of the conversation from a first participant of the conversation and convert the first sequence of edits into a first merged sequence of edits; receive a second sequence of edits to the respective content unit of the conversation from a second participant of the conversation and convert the second sequence of edits into a second merged sequence of edits; respond to a determination that the first sequence of edits and the second sequence of edits meet predefined conflict criteria by transforming the first merged sequence of edits to produce a first transformed sequence of edits and transforming the second merged sequence of edits to produce a second transformed sequence of edits;
wherein the first transformed sequence is different from the first merged sequence;send the first transformed sequence of edits to the second participant and send the second transformed sequence of edits to the first participant; wherein applying the first sequence of edits followed by the second transformed sequence of edits at the first participant to the respective content unit of the conversation produces a same result as applying the second sequence of edits followed by the first transformed sequence of edits at the second participant to the respective content unit of the conversation.
-
-
13. A method of resolving edits to electronic messages, comprising:
at a server system, hosting a plurality of conversations, the hosting including, for a respective conversation; receiving a sequence of first edits to a respective content unit of the conversation from a first client, used by a first participant of the conversation, and receiving a sequence of second edits to the same respective content unit from a second client, used by a second participant of the conversation, during overlapping time periods; responding to a determination that the sequence of first edits and sequence of second edits meet predefined conflict criteria by transforming edits in the sequence of first edits to produce a sequence of first transformed edits, and transforming edits in the sequence of second edits to produce a sequence of second transformed edits;
wherein the sequence of first transformed edits is different from the sequence of first edits;wherein the transforming at the server system takes into account (A) edits to the content unit made at first and second clients, (B) secondary transformations of the first transformed edits generated at the second client to resolve conflicts between the first transformed edits and edits made at the second client to a respective copy of the content unit at the second client, and (C) secondary transformations of the second transformed edits generated at the first client to resolve conflicts between the second transformed edits and edits made at the first client to a respective copy of the content unit at the first client; sending the sequence of first transformed edits to the second client and sending the sequence of second transformed edits to the first client. wherein a consistent conversation state at the server system and the first and second clients results from the transforming, from the secondary transformations generated at the second client and at the first client, from applying to a respective copy of the content unit at the second client edits corresponding to the transformed sequence of first edits and the secondary transformations generated at the second client, and from applying to a respective copy of the content unit at the first client edits corresponding to the transformed sequence of second edits and the secondary transformations generated at the first client.
-
14. A server system, comprising:
-
one or more processors; memory; and one or more programs stored in the memory for execution by the one or more processors, the one or more programs comprising instructions for hosting a plurality of conversations, the hosting including, for a respective conversation, instructions for; receiving a sequence of first edits to a respective content unit of the conversation from a first client, used by a first participant of the conversation, and receiving a sequence of second edits to the same respective content unit from a second client, used by a second participant of the conversation, during overlapping time periods; responding to a determination that the sequence of first edits and the sequence of second edits meet predefined conflict criteria by transforming edits in the sequence of first edits to produce a sequence of first transformed edits, and transforming edits in the sequence of second edits to produce a sequence of second transformed edits; wherein the transforming at the server system takes into account (A) edits to the content unit made at first and second clients, (B) secondary transformations of the first transformed edits generated at the second client to resolve conflicts between the first transformed edits and edits made at the second client to a respective copy of the content unit at the second client, and (C) secondary transformations of the second transformed edits generated at the first client to resolve conflicts between the second transformed edits and edits made at the first client to a respective copy of the content unit at the first client; and sending the sequence of first transformed edits to the second client and sending the sequence of second transformed edits to the first client; wherein a consistent conversation state at the server system and the first and second clients results from the transforming, from the secondary transformations generated at the second client and at the first client, from applying to a respective copy of the content unit at the second client edits corresponding to the transformed sequence of first edits and the secondary transformations generated at the second client, and from applying to a respective copy of the content unit at the first client edits corresponding to the transformed sequence of second edits and the secondary transformations generated at the first client.
-
-
15. A computer readable storage medium storing one or more programs configured for execution by one or more processors of a server system, the one or more programs comprising instructions, which when executed cause the server system to:
-
store data representing a plurality of conversations, including, a respective conversation; receive a sequence of first edits to a respective content unit of the conversation from a first client, used by a first participant of the conversation, and receive a sequence of second edits to the same respective content unit from a second client, used by a second participant of the conversation, during overlapping time periods; respond to a determination that the sequence of first edits and the sequence of second edits meet predefined conflict criteria by transforming edits in the sequence of first edits to produce a sequence of first transformed edits, and transforming edits in the sequence of second edits to produce a sequence of second transformed edits; wherein the transforming at the server system takes into account (A) edits to the content unit made at first and second clients, (B) secondary transformations of the first transformed edits generated at the second client to resolve conflicts between the first transformed edits and edits made at the second client to a respective copy of the content unit at the second client, and (C) secondary transformations of the second transformed edits generated at the first client to resolve conflicts between the second transformed edits and edits made at the first client to a respective copy of the content unit at the first client; and send the sequence of first transformed edits to the second client and sending the sequence of second transformed edits to the first client; wherein a consistent conversation state at the server system and the first and second clients results from the transforming, from the secondary transformations generated at the second client and at the first client, from applying to a respective copy of the content unit at the second client edits corresponding to the transformed sequence of first edits and the secondary transformations generated at the second client, and from applying to a respective copy of the content unit at the first client edits corresponding to the transformed sequence of second edits and the secondary transformations generated at the first client.
-
Specification