IP Library Granted Patent US 9,832,237
Granted Patent B2
US 9,832,237 · App. 14/091,848 · Granted Nov 28, 2017

Collaborative online document editing

View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 9,832,237
App. No.
14/091,848
Granted
Nov 28, 2017
Kind
B2
Abstract

A technique for facilitating online collaboration among users of client machines allows multiple users to work together and concurrently on a set of documents. In response to a request from a user, a server opens a document in a software application running on the server and virtualizes the software application to the client machines. Multiple users can then operate the software application from the respective client machines to edit the document via remote control. The server multiplexes pointer input from the client machines to provide pointer input to the software application from one user at a time. Multiplexing of pointer input takes place seamlessly and automatically in response to user activity with respect to the virtualized software application.

Claims (81)

1. A method of facilitating online collaboration among multiple users of client machines, comprising:

opening a document in a software application running on a server in response to the server receiving a document-open request from any of the client machines;

virtualizing the software application running on the server to the client machines to enable the users of the client machines to concurrently operate the software application running on the server via remote control for editing the document by the software application running on the server; and

multiplexing pointer input from the client machines to select pointer input from one client machine at a time as pointer input to the software application running on the server,

wherein the software application running on the server has a graphical user interface (GUI) that supports one and only one internal pointer, the internal pointer having a single location relative to the GUI of the software application,

wherein multiplexing pointer input includes steering pointer input from one client machine at a time to the software application to supply the location of the internal pointer supported by the software application,

wherein multiplexing pointer input further includes:

steering pointer input from a first client machine to the software application for establishing the location of the internal pointer supported by the software application; and

in response to an indication of pointer movement relative to the GUI of the software application in pointer input received from a second client machine, steering the pointer input from the second client machine to the software application for establishing the location of the internal pointer supported by the software application,

and

wherein the method further comprises

mirroring a pointer position from each of the client machines to each of the other client machines to enable each user to visualize the location of each other user's pointer; and

tagging each user's pointer to display a name of each user in connection with that user's pointer.

2. The method of claim 1 , further comprising:

identifying a name of a user of a client machine from which pointer input is currently being steered for establishing the location of the internal pointer supported by the software application; and

sending the identified name of the user to the client machines to enable users of the client machines to see the name of the user who is currently controlling the software application for editing the document.

3. The method of claim 1 ,

wherein the pointer input from the first client machine includes (i) pointer location input of a pointer of the first client machine relative to the GUI of the software application and (ii) pointer selection input from the first client machine indicating pointer selections made by a user of the first client machine, and

wherein multiplexing pointer input further includes, after steering the pointer input from the second client machine to the software application:

receiving pointer selection input from the first client machine indicating that the user of the first client machine has made a pointer selection; and

steering the pointer location input from the first client machine to the software application for establishing the location of the internal pointer when the user of the first client machine made the pointer selection, such that the software application running on the server associates the pointer selection made by the user of the first client machine with the pointer location of the first client machine when the user of the first client machine made the pointer selection.

4. The method of claim 1 , wherein the document is a first document, the software application is a first software application, and the method further comprises:

opening a second document in a second software application running on the server in response to the server receiving a second document-open request from any of the client machines;

virtualizing the second software application running on the server to the client machines to enable the users of the client machines to concurrently operate the second software application running on the server via remote control for editing the second document, at the same time that the server is virtualizing the first software application to the client machines to enable operation of the first software application via remote control for editing the first document; and

multiplexing pointer input from the client machines to select pointer input from one client machine at a time as pointer input to the second software application running on the server.

5. The method of claim 4 , wherein the method is performed in a context of an online collaboration among the users of the client machines, and wherein the method further comprises:

assigning a collaboration identifier to the online collaboration; and

storing the first document and the second document on the server in connection with the collaboration identifier.

6. The method of claim 5 ,

wherein storing the first document on the server is performed in response to receiving an indication from the first client machine that a user of the first client machine has performed an action to add the first document to the online collaboration,

wherein storing the second document on the server is performed in response to receiving an indication from the second client machine that a user of the second client machine has performed an action to add the second document to the online collaboration.

7. The method of claim 6 , further comprising:

transmitting to the client machines document identifiers of all documents stored on the server in connection with the online collaboration; and

receiving an additional document-open request from any of the client machines, the additional document-open request specifying one of the document identifiers transmitted to the client machines and requesting that the server open the document identified with the document identifier in a software application.

8. The method of claim 6 ,

wherein the action to add the first document to the online collaboration is an action to add the first document from a storage location on the first client machine, and

wherein the action to add the second document to the online collaboration is an action to add the second document from a storage location on a computer network to which the second client machine is connected.

9. The method of claim 6 , further comprising synchronizing the first document stored on the server with a copy of the first document stored on the first client machine.

10. The method of claim 6 , wherein the method further comprises:

opening a third document in a third software application in response to the server receiving a third document-open request from any of the client machines; and

virtualizing the third software application running on the server to the client machines to enable the users of the client machines to concurrently operate the third software application running on the server via remote control for editing the third document,

wherein the third software application supports multiple pointer locations at a time relative to the third document to allow simultaneous edits of the third document by different users of the client machines at different locations within the third document.

11. The method of claim 6 , further comprising:

virtualizing a whiteboard application running on the server to the client machines to enable users of the client machines to concurrently operate the whiteboard running on the server via remote control; and

persistently storing a state of the whiteboard in connection with the online collaboration such that the client machines can access changes to the whiteboard after the online collaboration has ended and when the collaboration session is later resumed.

12. The method of claim 1 , further comprising performing web conferencing among the client machines, including exchanging audio signals among the client machines to enable users of the client machines to communicate verbally as the users collaborate in editing the document.

13. The method of claim 1 , further comprising performing web conferencing among the client machines, including exchanging audio and video signals among the client machines to enable users of the client machines to communicate verbally and face-to-face as the users collaborate in editing the document.

14. The method of claim 1 , wherein the server stores a list that associates multiple file types with respective software applications, and wherein opening the document includes the server (i) server identifying a file type of the document from the document-open request and (ii) opening the document in a software application that the list associates with the file type.

15. The method of claim 14 , wherein the software application running on the server is one of (i) a word processing application or (ii) a spreadsheet application.

16. The method of claim 14 , wherein the server is physically distinct from any of the client machines and is coupled to the client machines over a computing network.

17. The method of claim 1 ,

wherein steering pointer input from the first client machine to the software application grants the first client machine control over the software application,

wherein steering pointer input from the second client machine to the software application grants the second client machine control over the software application, and

wherein steering the pointer input from the second client machine to the software application is performed automatically after steering pointer input from the first client machine to the software application in response to detecting the pointer movement relative to the GUI in the pointer input from the second client machine.

18. A server for facilitating online collaboration among multiple users of client machines, the server comprising:

a set of processors; and

memory, coupled to the set of processors, the set of processors and the memory together form control circuitry constructed and arranged to:

open a document in a software application running on the server in response to the server receiving a document-open request from any of the client machines;

virtualize the software application running on the server to the client machines to enable the users of the client machines to concurrently operate the software application running on the server via remote control for editing the document by the software application running on the server; and

multiplex pointer input from the client machines to select pointer input from one client machine at a time as pointer input to the software application running on the server,

wherein the software application running on the server has a graphical user interface (GUI) that supports one and only one internal pointer, the internal pointer having a single location relative to the GUI of the software application,

wherein the control circuitry, constructed and arranged to multiplex pointer input, is further constructed and arranged to:

steer pointer input from a first client machine to the software application for establishing the location of the internal pointer supported by the software application; and

in response to an indication of pointer movement relative to the GUI of the software application in pointer input received from a second client machine, steer the pointer input from the second client machine to the software application for establishing the location of the internal pointer supported by the software application,

and

wherein the control circuitry is further constructed and arranged to:

mirror a pointer position from each of the client machines to each of the other client machines to enable each user to visualize the location of each other user's pointer; and

tag each user's pointer to display a name of each user in connection with that user's pointer.

19. A computer program product including a non-transitory computer-readable medium having instructions which, when executed by a set of processors of a computing device, cause the set of processors to perform a method for facilitating online collaboration among multiple users of client machines, the method comprising:

opening a document in a software application running on a server in response to the server receiving a document-open request from any of the client machines;

virtualizing the software application running on the server to the client machines to enable the users of the client machines to concurrently operate the software application running on the server via remote control for editing the document by the software application running on the server; and

multiplexing pointer input from the client machines to select pointer input from one client machine at a time as pointer input to the software application running on the server,

wherein the software application running on the server has a graphical user interface (GUI) that supports one and only one internal pointer, the internal pointer having a single location relative to the GUI of the software application, and

wherein multiplexing pointer input further comprises:

steering pointer input from a first client machine to the software application for establishing the location of the internal pointer supported by the software application; and

in response to an indication of pointer movement relative to the GUI of the software application in pointer input received from a second client machine, steering the pointer input from the second client machine to the software application for establishing the location of the internal pointer supported by the software application,

and

wherein the method further comprises:

mirroring a pointer position from each of the client machines to each of the other client machines to enable each user to visualize the location of each other user's pointer; and

tagging each user's pointer to display a name of each user in connection with that user's pointer.

20. The computer program product of claim 19 , wherein the method further comprises performing web conferencing among the client machines, including exchanging audio signals among the client machines to enable users of the client machines to communicate verbally as the users collaborate in editing the document.

Assignments (12)
TERMINATION AND RELEASE OF SECURITY INTEREST IN PATENTS (REEL/FRAME 053667/0169, REEL/FRAME 060450/0171, REEL/FRAME 063341/0051) Recorded Mar 15, 2024
From: BARCLAYS BANK PLC, AS COLLATERAL AGENT
To: GOTO GROUP, INC. (F/K/A LOGMEIN, INC.)
Reel/Frame 066800/0145 →
SECURITY INTEREST Recorded Feb 16, 2024
From: GOTO COMMUNICATIONS, INC.; GOTO GROUP, INC.; LASTPASS US LP
To: U.S. BANK TRUST COMPANY, NATIONAL ASSOCIATION, AS THE NOTES COLLATERAL AGENT
Reel/Frame 066614/0355 →
SECURITY INTEREST Recorded Feb 16, 2024
From: GOTO COMMUNICATIONS, INC.,; GOTO GROUP, INC., A; LASTPASS US LP,
To: U.S. BANK TRUST COMPANY, NATIONAL ASSOCIATION, AS THE NOTES COLLATERAL AGENT
Reel/Frame 066614/0402 →
SECURITY INTEREST Recorded Feb 7, 2024
From: GOTO GROUP, INC.,; GOTO COMMUNICATIONS, INC.; LASTPASS US LP
To: BARCLAYS BANK PLC, AS COLLATERAL AGENT
Reel/Frame 066508/0443 →
CHANGE OF NAME Recorded Apr 8, 2022
From: LOGMEIN, INC.
To: GOTO GROUP, INC.
Reel/Frame 059644/0090 →
TERMINATION AND RELEASE OF SECURITY INTEREST IN PATENTS (SECOND LIEN) Recorded Feb 16, 2021
From: BARCLAYS BANK PLC, AS COLLATERAL AGENT
To: LOGMEIN, INC.
Reel/Frame 055306/0200 →
NOTES LIEN PATENT SECURITY AGREEMENT Recorded Sep 1, 2020
From: LOGMEIN, INC.
To: U.S. BANK NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
Reel/Frame 053667/0032 →
SECOND LIEN PATENT SECURITY AGREEMENT Recorded Sep 1, 2020
From: LOGMEIN, INC.
To: BARCLAYS BANK PLC, AS COLLATERAL AGENT
Reel/Frame 053667/0079 →
FIRST LIEN PATENT SECURITY AGREEMENT Recorded Sep 1, 2020
From: LOGMEIN, INC.
To: BARCLAYS BANK PLC, AS COLLATERAL AGENT
Reel/Frame 053667/0169 →
RELEASE OF SECURITY INTEREST RECORDED AT REEL/FRAME 041588/0143 Recorded Aug 31, 2020
From: JPMORGAN CHASE BANK, N.A.
To: LOGMEIN, INC.; GETGO, INC.
Reel/Frame 053650/0978 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 4, 2019
From: GETGO, INC.
To: LOGMEIN, INC.
Reel/Frame 049843/0833 →
SECURITY INTEREST Recorded Feb 1, 2017
From: GETGO, INC.
To: JPMORGAN CHASE BANK, N.A.
Reel/Frame 041588/0143 →