Method and apparatus for a file sharing and synchronization system
A computer-implemented method is provided for managing and sharing picture files. In one embodiment of the present invention, the method comprises providing a server platform and providing a datastore on the server platform for maintaining full resolution copies of the files shared between a plurality of sharing clients. A synchronization engine is provided on the server platform and is configured to send real-time updates to a plurality of sharing clients when at least one of the sharing clients updates or changes one of said files. A web interface may also be provided that allows a user to access files in the datastore through the use of a web browser.
Latest DROPBOX, INC. Patents:
- Systems and methods for selecting content items to store and present locally on a user device
- Link file sharing and synchronization
- Enabling collaboration on an object from a backup service through integration with an object synchronization service
- System and method of adding content items to a content management system
- File journal interface for synchronizing content
This application is a continuation of application Ser. No. 14/075,598 entitled “METHOD AND APPARATUS FOR A FILE SHARING AND SYNCHRONIZATION SYSTEM” and filed on Nov. 8, 2013, which is a continuation of application Ser. No. 13/757,024 entitled “METHOD AND APPARATUS FOR A FILE SHARING AND SYNCHRONIZATION SYSTEM” and filed on Feb. 1, 2013, which is a continuation of application Ser. No. 12/928,998 entitled “METHOD AND APPARATUS FOR A FILE SHARING AND SYNCHRONIZATION SYSTEM” and filed on Dec. 23, 2010, which is a continuation of application Ser. No. 12/157,772 entitled “METHOD AND APPARATUS FOR A FILE SHARING AND SYNCHRONIZATION SYSTEM” and filed on Jun. 13, 2008, which is a continuation of application Ser. No. 11/269,498 entitled “METHOD AND APPARATUS FOR A FILE SHARING AND SYNCHRONIZATION SYSTEM” and filed on Nov. 8, 2005, which claims priority from provisional application No. 60/626,121 filed Nov. 8, 2004, each of which are expressly incorporated herein by reference in their entirety.
TECHNICAL FIELDThe field of the invention generally relates to data management, and more specifically, to methods of synchronizing data used in personal information managers or other programs, especially when the file or data is used or shared among multiple computing devices.
BACKGROUNDFile sharing and data management, in general, is a problem today. With all of the various types of files on different devices such as personal computers, personal digital assistants, or cellular phones, the management of data in an efficient manner from device-to-device is a challenge for users.
In the context of data files in general, files worked on at one location by a user may not be accessible from a device at another location. For example, a user working at home may have files left there on a home computer that are not accessible from a computer at work. Data on one device may be lost because the user failed to regularly back-up the data files on the device. In other situations, short of forwarding each file or email to another account, switching accounts at an internet service providers may cause a user to lose their emails and other personal files resident on that ISPs server. All of these problems with data portability, management, and access create inefficiencies for a user.
Some known systems have tried to address these issues. In the photo sharing context, websites such as Ofoto have allowed users to load files to the Ofoto website to share among multiple devices and multiple users. This does allow some access to images when the user is not at his/her home computer and to share photos with users at remote locations. The sharing of files, however, among multiple users is typically limited to low-resolution versions of the original images, and this sharing of lower quality files may cause a user difficulty in viewing the image. Additionally, there is no data persistence as the files on the server may be deleted after a certain period of inactivity. In systems where users use peer-to-peer sharing or email picture files to each other, images may be lost or hard to track down because the original email was lost or poorly organized among the users files. Additionally, dynamic updating of shared files is not present. The data or file is copied one time and is then static on the sharee's system.
SUMMARYThe present invention provides solutions for at least some of the drawbacks discussed above. Specifically, some embodiments of the present invention provide a repository for a database of files shared in-sync, in real-time across multiple computers or computing devices. Embodiments of the present invention may provide an improved desktop or client application which offers easy sharing of files, automatic synchronization, file access from anywhere, and transparent backup. The present invention desires to be user centric (instead of computer or desktop centric) in the sense that the user can access the user's data regardless of which physical computer or device the user is using. At least some of these and other objectives described herein will be met by embodiments of the present invention.
In one embodiment of the present invention, an improved data management system is provided. The system may comprise a server platform that enables synchronization, back-up, web access, and sharing of applications and data. This allows for a user's data to be accessible from any pc or web browser. Changes to files, email, and/or calendar entries may be synchronized automatically across a user's computers. The shared files will be updated including but not limited to new metadata, improvements to the files, or the like. The system may be configured for transparent backup to a central server. Such systems give the user an ability to reproduce applications with the user's settings and data on any computer with “one click”.
In another embodiment of the present invention, a native suite of client applications may be provided that allows for management and access of all the user's data locally on the user's hard drive. The client applications may be downloaded to reside on a user's computer and provide access to a server platform that functions to synchronize files across multiple computing devices and allows for backup of the user's files. The client applications may allow for management of personal email, photo files, video files, personal calendar entries or the like. A rich user interface is provided to make file access and management fast and easy. The client applications take the thinking out of data management and back-up by making it automatic and transparent.
In another embodiment of the present invention, a synchronization engine is provided that allows users to synchronize metadata on files on the system. By way of example and not limitation, this is particularly useful in the sharing of electronic photos where collaborative tagging of files by different users may be enabled by the invention to more accurately organize and search for picture files. The updating and synchronizing of metadata allows all users to benefit from more detailed metadata that may be provided by one user, which is then cascaded or pushed to picture files resident on other computers of other users that share the file.
In one aspect, the present invention allows for the persistence of data. The user can change computers, emails accounts, but the emails, photos, or other user files may persist and can be downloaded to the user's system at different computer terminals or portable devices. These applications may be accessed through a web application if the user is on a public terminal or if the user is at a computer they do not own. The client may be also be downloaded to the computer. The present invention provides real-time, synchronized storage of a users files at a central server. This creates a backup for the user and no longer ties the user to any one particular physical device, so long as the user has access to the server.
A further understanding of the nature and advantages of the invention will become apparent by reference to the remaining portions of the specification and drawings.
The accompanying drawings, which are included as part of the present specification, illustrate the presently preferred embodiment of the present invention and together with the general description given above and the detailed description of the preferred embodiment given below serve to explain and teach the principles of the present invention.
It is to be understood that both the foregoing general description and the following detailed description are exemplary and explanatory only and are not restrictive of the invention, as claimed. It may be noted that, as used in the specification and the appended claims, the singular forms “a”, “an” and “the” include plural referents unless the context clearly dictates otherwise. Thus, for example, reference to “a processor” may include may include multiple processors, and the like. References cited herein are hereby incorporated by reference in their entirety, except to the extent that they conflict with teachings explicitly set forth in this specification.
A “server” in a hardware configuration may be a computer such as a personal computer (PC) or other intelligent device. A server typically performs the bulk of the centralized or generalized tasks in the network and often has more memory, processing speed, and storage than the other device on the client-server network. Alternatively, the server may perform specialized tasks such as distributing electronic mail, data storage or printing. In the software arrangement, a “server” typically is a program that provides data, stores data, or provides some service to other programs to lo which the server is connected. A server may be a program with higher priority, greater memory, or greater capabilities compared to the other programs connected through the network. A server also may be a program that includes specialized capabilities or has higher priority with respect to certain tasks or functions.
A “client” in the software arrangement is generally a program used by a user. A client program typically makes use of data, processing, storage, or other resources of another program. A client may be used to communicate with a source or destination through a higher priority, more powerful, more capable or different program. The client may run on a computer such as a personal computer (PC), intelligent device, personal digital assistant (PDA) or workstation used by a user. In use, the client may carryout tasks in the process of which the client may request information or otherwise may use the resources of another object such as the server or another client to accomplish such tasks.
Synchronization
Referring now to
The respective servers 22, 24, and 26 can communicate with one another directly or indirectly. The actual clients may not have the capability to communicate with any other entity besides the respective server to which they arc connected but through the wide area network and the ability of the servers to communicate.
The net effect of such an arrangement allows any client to communicate with any other client through the transport connection between servers. This allows each client, regardless of the server to which it is connected, the ability to send messages to each other client over the wide area network 20. In this manner, clients may be given the ability to control replication as will be shown hereafter without regard to the type of server to which they may be connected or the client's ability to directly communicate with another client. By way of example and not limitation, the servers 22, 24, and 26 may form a server platform and at least one of the servers may run a synchronization engine for distributing updates among different clients.
There are a variety of ways to notify the sharing clients 34 that a change has been made. In one embodiment of the present invention, if changes are made by one of the sharing clients 34 to a particular data object, an update message 30 is sent from the particular sharing client to the synchronization engine 32. The synchronization engine, in turn, will make the particular adjustment to the original or copy of the data object on the server and distribute the data object out to each of the sharing clients 34. The update message 30 may include instructions, such as a delete command to remove a particular data object or a modify command for modifying a particular data object. One way of representing a modification to an existing data object or the creation of a new data object is to include the actual data object in its modified form. Thus in some embodiments, updates are represented by sending a new copy of the entire object.
This two way synchronization may occur in real-time which, for example and not limitation, may occur with the files being updated whenever an autosave occurs to the data or file being edited. The autosaved version may be updated to the server having the synchronization engine and then pushed out or cascaded to the sharing clients. Some sharing clients may be configured to accept updates to files that are not currently being edited on at the local client, to prevent any conflicts. In some embodiments, the user may be prompted that there has been an update on a file they are editing locally and may accept or reject the changes. For changes to metadata, some embodiments of the present invention may allow simultaneous edits and merge them without notifying the user. If two users are editing separate fields, both changes will persist. If both users modify the same field, one of the changes will be silently discarded. For files, the user will be prompted to choose which version to keep.
Referring now to
As seen in
Although files may be accessed through the web interface and are not limited to the following, the primary method of accessing information is through a native client on the user's local hard drive or computing device. The files being accessed are accessed from the user's local hard drive. This also allows the user to access files while offline. When connections are continuously available, the files are continuously synchronized. When a continuous connection is not available, then the next time the user s connected, the changes will be synchronized.
In one embodiment, the sharing client 34 may have two modes of operation namely (1) an off-line mode wherein the client machine is not connected to the network and (2) an on-line mode wherein the client machine is connected to the network. In the off-line mode, the sharing client 34 performs only local operations. When operating in the on-line mode, the client 34 will be configured to receive real-time updates with the synchronization engine 32 to perform global synchronization operations.
When communications are first established between the server 22 and the desktop computer, there are potentially a number of modified, unsynchronized objects on the two computers. Again there may be variety of ways to determine which files need updating. Synchronization may be based on the time of the last update or may be based on some other criteria set by the user. For example and not limitation, the system may utilize an appropriate sequence number scheme employed by the local database on a sharing client 34. Specifically, a sequence number may be communicated of the last activity with respect to the local database of which the server database was aware. The synchronization engine 32 will then communicate records for all activity occurrences that have sequence numbers greater than the sequence number communicated. Other embodiments may have the synchronization engine maintain a log of changes. The log is provided to sharing client 34 when communications are established. The log indicates object identifiers for the objects that have been modified, added, or deleted in the server's datastore.
In some cases, an object will have changed in both the server and the local device. If so, the user is prompted to resolve the conflict by deciding which modification should be retained. In one embodiment of the invention, the server instance of the object is received by sharing client 34 from a synchronization engine and used to create a new object in desktop object store. The sharing client 34 may prompt a user to decide which of the two objects (server or client) should be retained. If the server version of the object is selected, it replaces the desktop version. If the desktop version is selected, it is sent to the server synchronization engine to overwrite the existing version of the object in server object store.
When a user with a sharing client 34 makes changes to albums or files on a local computer, the changes are synchronized automatically across all devices. The saved changes are sent from one sharing client 34 to the synchronization engine 32 on the server 122. The synchronization engine 32 will have the datastore 40 updated with the latest file and also transmit this latest version to other sharing clients 34 that are designated as sharing with the sharing client 34 that originated the changes. Changes are synchronized even when annotation or metadata is updated for a file. This allows for collaborative annotation of pictures or other files.
The present invention allows fast, easy access to high-resolution images on the computer of each user sharing the files. Access is also available through a website that mirrors the view from the user desktop. Furthermore, since full resolution copies of files are resident in the datastore 40 of the server 22, server backup of shared pictures and application settings occur automatically. This allows for easy restoration of application settings, preferences and data on any PC.
Two-Level Sharing:
Referring now to
For example, an application may automatically save changes to a document as a user edits it. These changes will be saved to the datastore and synchronized to other computers belonging to the user who made the changes. They will not be visible to other users until the owner chooses to publish them. This could be a multi-phase process where the changes are first published to a group which is a subset of all users who have access to the data object before being published to a wider audience. This is analogous to a two phase commit in a transactional database with a few important distinctions. In a traditional database, the changed record is locked (inaccessible to other users) until the transaction is committed and uncommitted changes are only visible within a single session. In this model, the original object is not locked, and the changes are stored in the database and are accessible to other sessions.
In one embodiment of the present invention, when a user first accesses a repository in the datastore, a separate logical branch is created. This branch is accessible to the user from any computer. In the beginning, this branch is empty, and all accesses are passed through to the original repository. As the user edits objects in the repository, the revisions are stored in the branch, and accesses to modified objects will incorporate these revisions. When the user publishes his changes, the modified records in the branch will be integrated with the main repository, where they will be available to other users. It is possible to create multiple levels of branches, some of which may be shared with other users, allowing the sharing of draft changes with a group of users before they are committed. The user does not need to understand the concept of a branch, only the concept of publishing changes.
For instance, in the photo sharing case, the user can modify a picture with red eye reduction, after the user has already shared the original file with a plurality of people. Immediately, those changes will be synchronized across all of the user's multiple computers or device, but not with the previous shares. Once the user is completely done editing the picture, the server can publish the changes to all his/her shares. It should be understood of course that additional layers of sharing may be implemented to more precisely control the level of access to any particular files. Some embodiments may have multiple layers of sharing.
File Restoration
Embodiments of the present invention may also provide a method for installing applications in which all of a user's settings and data are automatically restored. An application utilizing the platform of the present invention will automatically synchronize all of its settings and data to at least one server. When a user installs an application that he has previously used on another system, all settings and data are automatically restored to their most recent state as part of the install process. In the photo sharing instance, what this means is if a user suffers a hard drive crash or other catastrophic loss of data, the user can automatically reinstall the application and all the data, including buddy lists, album structures, preferences, etc., without having to manually recreate it. If the system was configured to share these files, then the system will have a copy of the files on datastore 40.
Thus data is restored as it was, the last time the user used it. All of the preferences, applications, and data are the same as the last time the user used it. A user would start the installer and would not need to reconfigure the computer to have the preferences and settings from the last use.
Collaborative Metatagging
The present invention also allows for improved metatagging. Tagging is painful and sometimes too much of a burden for a single user. Any updates or tagging will then be synchronized. The sharing experience becomes much richer when the files can be more accurately sorted through metadata. The collaborative tagging improves organizing of pictures. For example and not limitation, all the pictures that a user likes can be sorted and will then be on the user local drive.
The present invention provides a method for allowing photo metadata to be collaboratively created and edited. When a user shares a photo album with others, the user may choose to grant the recipients permission to update metadata relating to the photos in the album (e.g., location and people or objects in the pictures). In the present embodiment, these changes will be propagated to all recipients of the album, allowing them to search on the metadata. So, if one user is not organized enough to enter captions or people for the metadata for that file, if the user shares the album with a plurality of other people, changes entered by any of those people will be propagated to everyone sharing the files, thus enhancing everyone's viewing experience.
Email Aggregation and Synchronization
Referring now to
For the present invention, the email integration is based on: 1) aggregation of multiple personal email accounts (all from a central place and all on a central account) and 2) centralization on the server to allow a user to access from multiple computers with the same inbox and contact list. If an email is moved on one server, it moves it in all inboxes. This occurs for personal email aggregated from POP, IMAP accounts, etc). Files are synchronized by the server 22 to all other clients which may access the integrated email. Thus, the present embodiments build a synchronization engine and layer the email client application on top of the synchronization engine. The datastore integrates with the synchronization engine to send updated files to the sharing clients.
Thus, the server 22 in this embodiment also handles aggregation of emails from multiple accounts. The client runs on the local computer and accesses the server with the datastore. The synchronization and aggregation occurs at the server. As mentioned, this system is for the personal email accounts. Multiple personal email accounts are checked through multiple browsers or multiple sessions. In the user's local client, the emails are aggregated. This creates some email portability. All the emails are on the local server and not just on the server of the email service. The present invention provides real-time synchronization among multiple devices and provides aggregation of multiple personal email accounts. The synchronization keeps the connection open at all times so that update changes will be reflected on the new computers.
In one embodiment of the invention, the mailstore will receive email from the personal email accounts for integration and storage on a datastore 40 on server 22. Files on those personal email accounts may then be deleted to reflect changes made in the mailstore. For example and not limitation, spam email that a user deletes from the files on the mailstore will also be deleted from the individual personal accounts so that they are not present if the user accesses the personal accounts directly. Most of these personal accounts are web-based, browser-based accounts. Updates that the user makes to mailstore on the server 22 will be reflected back to those email services. Changes may be reflected back to the originating service via POP, IMAP, or another protocol such as but not limited to Web-DAV.
While the invention has been described and illustrated with reference to certain particular embodiments thereof, those skilled in the art will appreciate that various adaptations, changes, modifications, substitutions, deletions, or additions of procedures and protocols may be made without departing from the spirit and scope of the invention. For example, with any of the above embodiments, the synchronization engine may synchronize with a personal information module (PIM) (such as but not limited to Microsoft Outlook or the Palm Desktop) or with a Personal Digital Assistant (PDA) (such as but not limited to a Palm device or any Windows CE device). In a further alternative, the present invention may also be used to update a user's personal calendar. This may be a calendar that is separate from the one the user may have at work. Additionally, the integrated email, calendar, and other applications may form a suite of applications where there is one interface accessed by the user that synchronizes multiple sources (emails, photos, and calendars). This will be a way to synchronize all personal data.
The publications discussed or cited herein arc provided solely for their disclosure prior to the filing date of the present application. Nothing herein is to be construed as an admission that the present invention is not entitled to antedate such publication by virtue of prior invention. Further, the dates of publication provided may be different from the actual publication dates which may need to be independently confirmed. All publications mentioned herein are incorporated herein by reference to disclose and describe the structures and/or methods in connection with which the publications are cited.
Expected variations or differences in the results are contemplated in accordance with the objects and practices of the present invention. It is intended, therefore, that the invention be defined by the scope of the claims which follow and that such claims be interpreted as broadly as is reasonable.
Claims
1. A method for updating metadata, the method comprising:
- while simultaneously providing a data object for editing to a first client device and a second client device: receiving, from the first client device, by a synchronization server, a first notification of a first update to metadata associated with the data object; receiving, from the second client device, by the synchronization server, a second notification of a second update to the metadata associated with the data object; generating updated metadata by: based on determining that the first update and the second update edit separate fields, merging the first update and the second update to generate the updated metadata for the data object by including the first update and the second update in the updated metadata; or based on determining that the first update and the second update edit a same field, merging the first update and the second update to generate the updated metadata by discarding one of the first update or the second update; and
- synchronizing, by the synchronization server, the updated metadata with each of a plurality of client devices storing a copy of the data object.
2. The method of claim 1, wherein the data object is a photo album.
3. The method of claim 2, wherein the first update to the metadata associated with the data object comprises editing of captions or people associated with photos of the photo album.
4. The method of claim 1, wherein each of the plurality of client devices runs a synchronization application.
5. The method of claim 4, wherein the synchronization application includes a contact list for enabling sharing of the data object across each of the plurality of client devices.
6. The method of claim 1, further comprising providing a web interface through which the data object is accessed from the synchronization server via a web browser.
7. The method of claim 6, wherein the first update to the metadata associated with the data object comprises an update to the metadata received via the web browser.
8. The method of claim 6, further comprising providing real-time updates for the data object to the web browser.
9. The method of claim 1, wherein the synchronization server comprises a plurality of servers networked together.
10. The method of claim 1, wherein the data object comprises a file.
11. The method of claim 10, wherein the file comprises one of a photo, an audio file, a video file, or a document.
12. The method of claim 10, wherein the file comprises a photo and the metadata associated with the photo comprises one of location, people, or objects in the photo.
13. A non-transitory computer readable storage medium comprising instructions that, when executed by at least one processor, cause a computing device to:
- while simultaneously providing a data object for editing to a first client device and a second client device: receive, from the first client device, a first notification of a first update to metadata associated with the data object; receive, from the second client device, a second notification of a second update to the metadata associated with the data object; generate updated metadata by: based on determining that the first update and the second update edit separate fields, merging the first update and the second update to generate the updated metadata for the data object by including the first update and the second update in the updated metadata; or based on determining that the first update and the second update edit a same field, merging the first update and the second update to generate the updated metadata by discarding one of the first update or the second update; and
- synchronize the updated metadata with each of a plurality of client devices storing a copy of the data object.
14. The non-transitory computer readable storage medium of claim 13, wherein the instructions, when executed by the at least one processor, cause the computing device to simultaneously provide the data object for editing to the first client device and the second client device by providing a web interface through which the data object can be simultaneously accessed via web browsers running on the first client device and the second client device.
15. The non-transitory computer readable storage medium of claim 14, wherein the first update to the metadata associated with the data object comprises an update to the metadata received via the web browser running on the first client device.
16. The non-transitory computer readable storage medium of claim 14, further comprising instructions that, when executed by the at least one processor, cause the computing device to provide real-time updates for the data object to the web browsers running on the first client device and the second client device.
17. The non-transitory computer readable storage medium of claim 13, wherein the data object comprises one of a photo, an audio file, a video file, or a document.
18. A system, comprising:
- at least one processor; and
- a non-transitory computer readable storage medium comprising instructions that, when executed by the at least one processor, cause the system to: while simultaneously providing a data object for editing to a first client device and a second client device: receive, from the first client device, a first notification of a first update to metadata associated with the data object; receive, from the second client device, a second notification of a second update to the metadata associated with the data object; generate updated metadata by: based on determining that the first update and the second update edit separate fields, merging the first update and the second update to generate the updated metadata for the data object by including the first update and the second update in the updated metadata; or based on determining that the first update and the second update edit a same field, merging the first update and the second update to generate the updated metadata by discarding one of the first update or the second update; and synchronize the updated metadata with each of a plurality of client devices storing a copy of the data object.
19. The system of claim 18, wherein the instructions, when executed by the at least one processor, cause the system to simultaneously provide the data object for editing to the first client device and the second client device by providing a web interface through which the data object can be simultaneously accessed via web browsers running on the first client device and the second client device.
20. The system of claim 19, wherein the first update to the metadata associated with the data object comprises an update to the metadata received via the web browser running on the first client device.
5165031 | November 17, 1992 | Pruul et al. |
5862346 | January 19, 1999 | Kley et al. |
6052735 | April 18, 2000 | Ulrich et al. |
6125369 | September 26, 2000 | Wu et al. |
6256634 | July 3, 2001 | Moshaiov et al. |
6272545 | August 7, 2001 | Flanagin et al. |
6348932 | February 19, 2002 | Nishikawa et al. |
6407750 | June 18, 2002 | Gioscia et al. |
6496979 | December 17, 2002 | Chen et al. |
6636873 | October 21, 2003 | Carini et al. |
6636888 | October 21, 2003 | Bookspan et al. |
6725281 | April 20, 2004 | Zintel et al. |
6795688 | September 21, 2004 | Plasson et al. |
6904185 | June 7, 2005 | Wilkins et al. |
6938076 | August 30, 2005 | Meyer et al. |
7039723 | May 2, 2006 | Hu et al. |
7103357 | September 5, 2006 | Kirani et al. |
7139555 | November 21, 2006 | Apfel |
7143194 | November 28, 2006 | Curley et al. |
7162454 | January 9, 2007 | Donner et al. |
7228352 | June 5, 2007 | Yaguchi et al. |
7263712 | August 28, 2007 | Spencer |
7319536 | January 15, 2008 | Wilkins et al. |
7321919 | January 22, 2008 | Jacobs et al. |
7369161 | May 6, 2008 | Earswar et al. |
7372485 | May 13, 2008 | Bodnar et al. |
7421458 | September 2, 2008 | Taylor |
7441180 | October 21, 2008 | Kaczmarek et al. |
7502795 | March 10, 2009 | Svendsen et al. |
7576752 | August 18, 2009 | Benson et al. |
7644124 | January 5, 2010 | Porter |
7680067 | March 16, 2010 | Prasad et al. |
7707500 | April 27, 2010 | Martinez |
7747596 | June 29, 2010 | Bigioi et al. |
7774326 | August 10, 2010 | Arrouye et al. |
7809682 | October 5, 2010 | Paterson et al. |
7873353 | January 18, 2011 | Kloba et al. |
7885925 | February 8, 2011 | Strong et al. |
7962137 | June 14, 2011 | Coppinger et al. |
7962622 | June 14, 2011 | Friend et al. |
8230026 | July 24, 2012 | Gilhuly et al. |
8370298 | February 5, 2013 | Strong et al. |
8600934 | December 3, 2013 | Strong et al. |
9037540 | May 19, 2015 | Strong et al. |
9131054 | September 8, 2015 | Vendrow et al. |
20020013852 | January 31, 2002 | Janik |
20020044159 | April 18, 2002 | Kuroiwa et al. |
20020059604 | May 16, 2002 | Papagan et al. |
20020065848 | May 30, 2002 | Walker et al. |
20020066050 | May 30, 2002 | Lerman et al. |
20020099772 | July 25, 2002 | Deshpande et al. |
20020129096 | September 12, 2002 | Mansour et al. |
20020184264 | December 5, 2002 | Berg et al. |
20030004952 | January 2, 2003 | Nixon et al. |
20030014478 | January 16, 2003 | Noble |
20030037114 | February 20, 2003 | Nishio et al. |
20030055825 | March 20, 2003 | Chen et al. |
20030074418 | April 17, 2003 | Coker |
20030097361 | May 22, 2003 | Huang et al. |
20030131098 | July 10, 2003 | Huntington et al. |
20030159136 | August 21, 2003 | Huang et al. |
20030172127 | September 11, 2003 | Northrup et al. |
20030218633 | November 27, 2003 | Mikhail et al. |
20040024979 | February 5, 2004 | Kaminsky et al. |
20040044732 | March 4, 2004 | Fushiki et al. |
20040054736 | March 18, 2004 | Danielle et al. |
20040068524 | April 8, 2004 | Aboulhosn et al. |
20040088420 | May 6, 2004 | Allen et al. |
20040107236 | June 3, 2004 | Nakagawa et al. |
20040123048 | June 24, 2004 | Mullins |
20040126750 | July 1, 2004 | Theilmann et al. |
20040148207 | July 29, 2004 | Smith et al. |
20040148375 | July 29, 2004 | Levett et al. |
20040172423 | September 2, 2004 | Kaasten |
20040267905 | December 30, 2004 | McDonough et al. |
20050015441 | January 20, 2005 | Attwood et al. |
20050038863 | February 17, 2005 | Onyon et al. |
20050044164 | February 24, 2005 | O'Farrell et al. |
20050044165 | February 24, 2005 | O'Farrell |
20050165869 | July 28, 2005 | Huang et al. |
20050198015 | September 8, 2005 | Sezan et al. |
20050208803 | September 22, 2005 | Rohatgi et al. |
20050223061 | October 6, 2005 | Auerbach et al. |
20050246373 | November 3, 2005 | Faulkner et al. |
20050246374 | November 3, 2005 | Blinn et al. |
20050278458 | December 15, 2005 | Berger |
20060018444 | January 26, 2006 | Pantana et al. |
20060052091 | March 9, 2006 | Onyon et al. |
20060085429 | April 20, 2006 | Wener et al. |
20060101064 | May 11, 2006 | Strong et al. |
20060123010 | June 8, 2006 | Landry et al. |
20060170669 | August 3, 2006 | Walker |
20060242206 | October 26, 2006 | Brezak et al. |
20070005581 | January 4, 2007 | Arrouye et al. |
20070016695 | January 18, 2007 | Rabbers et al. |
20070043830 | February 22, 2007 | Housenbold et al. |
20070156434 | July 5, 2007 | Martin et al. |
20070179989 | August 2, 2007 | Maes |
20070180075 | August 2, 2007 | Chasman et al. |
20070239898 | October 11, 2007 | Friend et al. |
20070250645 | October 25, 2007 | Meadows et al. |
20070276836 | November 29, 2007 | Chatterjee et al. |
20080109448 | May 8, 2008 | Aboel-Nil et al. |
20080126936 | May 29, 2008 | Williams |
20080168185 | July 10, 2008 | Robbin et al. |
20080208998 | August 28, 2008 | Warren |
20090183060 | July 16, 2009 | Heller et al. |
20090187609 | July 23, 2009 | Barton et al. |
20130198868 | August 1, 2013 | Georgiev |
20150213101 | July 30, 2015 | Strong et al. |
20160026704 | January 28, 2016 | Strong et al. |
20160028809 | January 28, 2016 | Strong et al. |
20160028810 | January 28, 2016 | Strong et al. |
20160028812 | January 28, 2016 | Strong et al. |
20160028814 | January 28, 2016 | Strong et al. |
20160028815 | January 28, 2016 | Strong et al. |
20160028852 | January 28, 2016 | Strong et al. |
- U.S. Appl. No. 11/269,498, Mail Date Mar. 7, 2007, Office Action.
- U.S. Appl. No. 11/269,498, Mail Date Aug. 22, 2007, Office Action.
- U.S. Appl. No. 11/269,498, Mail Date Mar. 25, 2008, Office Action.
- U.S. Appl. No. 12/157,772, Mail Date Oct. 6, 2010, Notice of Allowance.
- U.S. Appl. No. 12/928,998, Mail Date Apr. 22, 2011, Office Action.
- U.S. Appl. No. 12/928,998, Mail Date Nov. 23, 2011, Office Action.
- U.S. Appl. No. 12/928,998, Mail Date Oct. 9, 2012, Notice of Allowance.
- U.S. Appl. No. 13/757,024, Mail Date Jul. 25, 2013, Notice of Allowance.
- U.S. Appl. No. 13/757,024, Mail Date Oct. 30, 2013, Notice of Allowance.
- U.S. Appl. No. 14/075,598, Mail Date Jan. 14, 2015, Notice of Allowance.
- U.S. Appl. No. 14/683,341, Mail Date Nov. 16, 2017, Office Action.
- U.S. Appl. No. 14/872,019, Mail Date Nov. 16, 2017, Office Action.
- U.S. Appl. No. 14/873,197, Mail Date Oct. 5, 2017, Office Action.
- U.S. Appl. No. 14/872,943, Mail Date Oct. 4, 2017, Office Action.
- U.S. Appl. No. 14/872,004, Mail Date Jan. 18, 2018, Office Action.
- U.S. Appl. No. 14/873,186, Mail Date Mar. 22, 2018, Office Action.
- U.S. Appl. No. 14/683,341, Mail Date Jun. 25, 2018, Notice of Allowance.
- U.S. Appl. No. 14/873,187, Mail Date Apr. 17, 2018, Office Action.
- U.S. Appl. No. 14/873,199, Mail Date Jun. 1, 2018, Office Action.
- U.S. Appl. No. 14/872,019, Mail Date Aug. 29, 2018, Office Action.
- U.S. Appl. No. 14/873,197, Mail Date Jul. 11, 2018, Office Action.
- U.S. Appl. No. 14/872,943, Mail Date Jul. 11, 2018, Office Action.
- U.S. Appl. No. 14/872,004, Mail Date Sep. 6, 2018, Office Action.
- U.S. Appl. No. 14/873,197, Mail Date Dec. 14, 2018, Office Action.
- U.S. Appl. No. 14/872,943, Mail Date Dec. 19, 2018, Office Action.
- U.S. Appl. No. 14/873,186, Mail Date Dec. 13, 2018, Office Action.
- U.S. Appl. No. 14/873,187, Mail Date Dec. 10, 2018, Office Action.
- U.S. Appl. No. 14/873,199, Mail Date Jan. 25, 2019, Notice of Allowance.
- U.S. Appl. No. 14/872,019, dated Feb. 26, 2019, Office Action.
- U.S. Appl. No. 14/872,004, dated Mar. 28, 2019, Office Action.
- U.S. Appl. No. 14/873,186, dated May 15, 2019, Notice of Allowance.
- U.S. Appl. No. 14/873,187, Apr. 24, 2019, Office Action.
- U.S. Appl. No. 14/873,197, dated Jun. 3, 2019, Office Action.
- U.S. Appl. No. 14/872,943, dated Jun. 17, 2019, Office Action.
Type: Grant
Filed: Oct 2, 2015
Date of Patent: Aug 13, 2019
Patent Publication Number: 20160028813
Assignee: DROPBOX, INC. (San Francisco, CA)
Inventors: Jack Benjamin Strong (Austin, TX), Gibu Thomas (San Francisco, CA)
Primary Examiner: James Trujillo
Assistant Examiner: Fariborz Khoshnoodi
Application Number: 14/873,195
International Classification: G06F 16/23 (20190101); G06F 16/48 (20190101); G06F 16/51 (20190101); G06F 16/176 (20190101); G06F 16/182 (20190101); H04L 29/06 (20060101); H04L 12/58 (20060101); H04L 29/08 (20060101);