[go: nahoru, domu]

US20150180980A1 - Systems and methods for preserving shared virtual spaces on a content management system - Google Patents

Systems and methods for preserving shared virtual spaces on a content management system Download PDF

Info

Publication number
US20150180980A1
US20150180980A1 US14/247,494 US201414247494A US2015180980A1 US 20150180980 A1 US20150180980 A1 US 20150180980A1 US 201414247494 A US201414247494 A US 201414247494A US 2015180980 A1 US2015180980 A1 US 2015180980A1
Authority
US
United States
Prior art keywords
user
content
room
virtual space
shared virtual
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Abandoned
Application number
US14/247,494
Inventor
Nils Peter Welinder
Thomas Kleinpeter
Thomas Wright
Ramesh Balakrishnan
Tina Wen
Rajeev Nayak
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Dropbox Inc
Original Assignee
Dropbox Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Dropbox Inc filed Critical Dropbox Inc
Priority to US14/247,494 priority Critical patent/US20150180980A1/en
Publication of US20150180980A1 publication Critical patent/US20150180980A1/en
Assigned to JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT reassignment JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT SECURITY INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: DROPBOX, INC.
Assigned to JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT reassignment JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT PATENT SECURITY AGREEMENT Assignors: DROPBOX, INC.
Abandoned legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/40Support for services or applications
    • H04L65/403Arrangements for multi-party communication, e.g. for conferences
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2053Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
    • G06F11/2056Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant by mirroring
    • G06F11/2082Data synchronisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/048Interaction techniques based on graphical user interfaces [GUI]
    • G06F3/0481Interaction techniques based on graphical user interfaces [GUI] based on specific properties of the displayed interaction object or a metaphor-based environment, e.g. interaction with desktop elements like windows or icons, or assisted by a cursor's changing behaviour or appearance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/048Interaction techniques based on graphical user interfaces [GUI]
    • G06F3/0481Interaction techniques based on graphical user interfaces [GUI] based on specific properties of the displayed interaction object or a metaphor-based environment, e.g. interaction with desktop elements like windows or icons, or assisted by a cursor's changing behaviour or appearance
    • G06F3/0482Interaction with lists of selectable items, e.g. menus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/048Interaction techniques based on graphical user interfaces [GUI]
    • G06F3/0484Interaction techniques based on graphical user interfaces [GUI] for the control of specific functions or operations, e.g. selecting or manipulating an object, an image or a displayed text element, setting a parameter value or selecting a range
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/542Event management; Broadcasting; Multicasting; Notifications
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L51/00User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail
    • H04L51/04Real-time or near real-time messaging, e.g. instant messaging [IM]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L51/00User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail
    • H04L51/04Real-time or near real-time messaging, e.g. instant messaging [IM]
    • H04L51/046Interoperability with other network applications or services
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/06Protocols specially adapted for file transfer, e.g. file transfer protocol [FTP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1097Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/14Session management
    • H04L67/141Setup of application sessions

Definitions

  • Various embodiments generally relate to systems and methods for creating shared virtual spaces.
  • Certain content items such as, for example, photographs and videos, are understood to be related not just by their inherent content, but also by the set of people with whom they are naturally shared.
  • content items may be organized based on the content included within the content items. For example, a user may organize certain subsets of their image content, for example, as “family vacation shots,” “Bob's wedding photos,” “videos from grandma and grandpa's fortieth wedding anniversary” or, for example, “photos of the new restaurant site our architecture team is developing.” Should a user wish to share such content items, or even a collection of them, he or she may do so with whomever the user wishes.
  • the collective sharing may allow groups of users to communicate shared content with each user of the group as well as providing a forum that the shared content may be easily accessed and interacted with by any of the parties included therein.
  • a room may be automatically created anytime a user of a content management system shares content items or messages about content items with another user.
  • a share request may be received to share one or more content items with one or more of a user's contacts.
  • a shared virtual space may be automatically created and may include a copy of the one or more content items selected to be shared.
  • the shared virtual space may be associated with an assigned memory location on a system server, for example.
  • the shared virtual space may be accessed by both the user and the other members, and they may each add further content (e.g., content items and messages) to the shared virtual space.
  • content e.g., content items and messages
  • all member parties may be notified.
  • other non-members may also be notified, even persons not registered as users with the content management system that provides the rooms service or application. Notifications may be by in-band (i.e., within a content management system or application provided by such a system), out-of-band (e.g., email, SMS, social media notification or post), or any combination of these communications pathways.
  • a room is said to have “members.”
  • members may be exclusively limited to registered users of the content management system that provides the functionality of the rooms.
  • non-registered users of the content management system may also be allowed to be members of the rooms, with either limited or unlimited access rights.
  • a user of a given content management system may therefore be a “member” or a “non-member” of any given room.
  • someone who is not even a user may be a member, in whole or in part, of a room, depending upon the embodiment.
  • members of a room may copy any content in the room to their own individual account on the content management system, and may also freely send copies of content from a room to other persons via email, SMS or post to social media.
  • Each of the parties invited to a room may conveniently access the room at any time, the room being a permanent data structure designed to hold, as well as facilitate, mutual interaction with all of the content in the room.
  • a content item added to a room may be copied to a separate “rooms” database, and “locked.” That is, it cannot be modified further, even if its original owner subsequently modifies the original content item within his or her own account. In such case, those modifications will not be applied to the content items previously copied to the room.
  • the content may be saved in the room for a defined period of time, which may, for example, be indefinitely or any shorter period of time.
  • local changes e.g., additions of content, posts, adding new people, etc.
  • the content management system's server may display locally as soon as the changes have been made, such that there being no need to wait for the information to be sent to the server.
  • a number of rooms may be created locally, various content items may be added to them, and various persons may be added as members to those rooms, prior to any of this information reaching the content management system's server. To the user it simply appears as if the rooms are configured and “shared” as soon as the interaction occurs.
  • Any content item a user adds to the shared space may be displayed locally on the mobile device, and all interactivity therewith may be facilitated, as if (i) the shared virtual space had already been created on the content management system, and (ii) the at least one content item had already been copied to it.
  • a similar functionality may be applied for adding content to an already existing shared virtual space, whether created by a given user, or by a contact who was invited to join the shared virtual space by the user.
  • FIG. 1 shows an exemplary system in accordance with various embodiments
  • FIG. 2 shows a schematic illustration of an exemplary user interface displaying sets of content items stored on a mobile device in accordance with various embodiments
  • FIG. 3 shows a schematic illustration of a user interface displaying six exemplary rooms in accordance with various embodiments
  • FIG. 4 shows a schematic illustration of the user interface of FIG. 2 where a user has selected six content items from a set for sharing in accordance with various embodiments;
  • FIG. 5 shows a schematic illustration of a user interface displaying one of the exemplary content items that was selected for sharing, and a corresponding share bar being displayed at the top of the user interface, in accordance with various embodiments;
  • FIG. 6 shows a schematic illustration of a “rooms” user interface displaying various contacts of the user with whom a selected content item may be shared in accordance with various embodiments
  • FIG. 7 shows the schematic illustration of the “rooms” user interface of FIG. 6 after the user has selected two contacts with whom to share an content item (thus check marks appear near the names of those contacts) in accordance with various embodiments;
  • FIG. 8 shows the schematic illustration of a follow-up user interface to that of FIG. 7 , within the “room” known as “Kayleigh and Keegan”, where the user is informed that six content items were shared from the event known as “Venice Aug. 13, 2013”, and is further prompted to add a message to the room, if desired, in accordance with various embodiments;
  • FIG. 9 shows the schematic illustration of a follow-up user interface to that of FIG. 8 , where the user has added a comment to the “room” (via, for example, the keyboard of FIG. 8 ), which now appears in the interactive window in accordance with various embodiments;
  • FIG. 10 shows a schematic illustration of a “rooms” user interface, here the “room” known as “Kayleigh and Keegan”, displaying the members of the room, listed by name and profile picture, in accordance with various embodiments;
  • FIG. 11 shows a schematic illustration of a general “rooms” user interface, listing the various rooms available to the user as well as a “Create New Room” active button, in accordance with various embodiments;
  • FIGS. 12 and 13 show two variants of an exemplary illustrative screen shot of a list of rooms in accordance with various embodiments
  • FIG. 14 shows an illustrative flowchart of a process for creating and providing rooms in accordance with various embodiments.
  • FIG. 15 shows another exemplary system in accordance with various embodiments.
  • Methods, systems, and computer readable media for supporting the creation of, and a full set of interactivity features with, virtual shared spaces are provided.
  • This functionality may be integrated into an existing content management system or service, or it may be provided as a separate application, or as one of many features in a separate application providing enhanced content management services.
  • An exemplary application providing virtual shared spaces may run on a user device, such as, for example, a smartphone, and may access a user's account with a content management system and thus the content management system's remote server or servers. While in such case the application is ultimately supported from such a server or servers, extended functionality may, for example, be built in to a local client running on the user device.
  • the virtual shared space functionality appears to the user as if it is running locally on the user's device—regardless of whether the user's device is weakly, intermittently, or even not at all, connected to the server.
  • the user experience and richness of functionality provided to the user may be greatly increased.
  • the terms “device” and “content management system” are used herein to refer broadly to a wide variety of storage providers and data management service providers, electronic devices and user devices.
  • content item is user herein to refer broadly to a wide variety of digital data, documents, text content items, audio content items, video content items, portions of content items, and/or other types of data. Content items may also include files, folders or other mechanisms of grouping content items together with different behaviors, such as collections of content items, playlists, albums, etc.
  • the term “user” is also used herein broadly, and may correspond to a single user, multiple users, authorized accounts, an application or program operating automatically on behalf of, or at the behest of a person, or any other user type, or any combination thereof.
  • gesture and “gestures” are also used herein broadly, and may correspond to one or more motions, movements, hoverings, inferences, signs, or any other such physical interactions with one or more sensors, or any combination thereof, including vocal commands or interpretations of eye movements based on retinal tracking.
  • continuous real-time image is also used herein broadly, and may correspond to live images captured via one or more image capturing components, continuous images captured, recorded images, or any other type of image that may be captured via an image capturing component, or any combination thereof.
  • the present invention may take form in various components and arrangements of components, and in various techniques, methods, or procedures and arrangements of steps.
  • the referenced drawings are only for the purpose of illustrating embodiments, and are not to be construed as limiting the present invention.
  • Various inventive features are described below that can each be used independently of one another or in combination with other features.
  • FIG. 1 shows an exemplary system in accordance with various embodiments.
  • System 100 may include user devices 102 a and 102 b , which may communicate with content management system 104 across network 106 .
  • Persons of ordinary skill in the art will recognize that although only two user devices are shown within system 100 , any number of user devices may interact with content management system 104 and/or network 106 , and the aforementioned illustration is merely exemplary.
  • Network 106 may support any number of protocols, including, but not limited to, Transfer Control Protocol and Internet Protocol (“TCP/IP”), Hypertext Transfer Protocol (“HTTP”), and/or wireless application protocol (“WAP”).
  • TCP/IP Transfer Control Protocol and Internet Protocol
  • HTTP Hypertext Transfer Protocol
  • WAP wireless application protocol
  • user device 102 a and user device 102 b may communicate with content management system 104 using TCP/IP, and, at a higher level, use a web browser to communicate with a web server at content management system 104 using HTTP.
  • a variety of user devices 102 may communicate with content management system 104 , including, but not limited to, desktop computers, mobile computers, mobile communication devices (e.g., mobile phones, smart phones, tablets), televisions, set-top boxes, and/or any other network enabled device.
  • mobile communication devices e.g., mobile phones, smart phones, tablets
  • televisions set-top boxes
  • user devices may include, but are not limited to, smart phones, mobile phones, tablet computers, personal digital assistants (PDAs), laptop computers, digital music players, and/or any other type of user device capable of including a touch-sensing display interface.
  • PDAs personal digital assistants
  • touch-sensing display interfaces may include, but are not limited to, liquid crystal displays (LCD), monochrome displays, color graphics adapter (CGA) displays, enhanced graphics adapter (EGA) displays, variable-graphics array (VGA) displays, or any other display, or any combination thereof.
  • the touch-sensing display interface may include a multi-touch panel coupled to one or more processors to receive and detect gestures.
  • Multi-touch panels may include capacitive sensing mediums having a one or more of row traces and/or driving line traces, and one or more column traces and/or sensing lines.
  • user devices may, in some embodiments, include one or more image capturing components.
  • user devices 102 may include a front-facing camera and/or a rear facing camera.
  • Content management system 100 may allow a user with an authenticated account to store content, as well as perform management tasks, such as retrieve, modify, browse, synchronize, and/or share content with other accounts.
  • a counter-part user interface e.g., stand-alone application, client application, etc.
  • a content management interface module to allow a user to perform functions offered by modules of content management system 104 .
  • FIGS. 1-14 use this term to designate such a shared space.
  • the core idea of “rooms” is that whenever a user shares a set of photos (or other content items) to anyone, they automatically create a virtual shared space, known as a “room,” for themselves and those people.
  • the room is a running conversation thread that is shared between the user and his/her sharee(s), which is accessible to any of them at any time. All content in a given room is accessible to any member of the room at any time, and they may, for example, download it to their own account on a content management system, either piece by piece, or automatically, as described more fully below.
  • a room is permanent. Thus, any content a user shares with a room remains part of the room and members of the room can access all of the room's content. In some embodiments, if a member of a room leaves the room, or is removed from the room by one of the other members or the creator of the room, as the case may be, such a former member will not have continued access to the contents of the room, but any content that he or she contributed prior to leaving will remain in the room.
  • any member can, for example, access content items in a room and/or download them to his or her own account, incorporate them in an email or text message, or post them to a social media website or system, or any combination of those options.
  • the idea of a room in exemplary embodiments according to the present invention is a place where the user goes to continue that conversation with the other members.
  • a room is focused more on private in-band sharing. Rooms do not have the same privacy issues as appending comments and audiences to photos in a user's account on a content management system, for example. This is because a room is a by invitation-only shared space. Rooms also allow for a response to a shared photo, as most people that send photos want to know that they are seen and also appreciated. In addition, a room allows for certain optimizations over conventional content management system functionality. Instead of repeatedly sharing related content to the same group of people, the user need only add the content to the room. For example, a room may be used to collect all the photos from an event.
  • a user of a content management system may create a new room by sharing content with at least one other user (this assumes that there is no existing room with the same people in it).
  • a room may thus be defined by the set of people that are provided with access to the room. So, for example, if User A and User B are in a room, and User A subsequently sends something else to User B, that additional content goes in the same room. Similarly, if there are three users in the room together, anytime any of them sends something to the other two, then all that content may always go into that room.
  • any member can add more people to a room. Once added, the new member has access to the full history of the room. In others, this may be more restricted. In some embodiments, any member can leave a room that they are in, and once they leave, it is as if they were never part of that room. Therefore, to get back in, they must be added back in by a member of that room, for example, or, by whatever more restrictive rule is in place. In some embodiments, a member cannot leave a room if there are only two members.
  • a scenario may arise where, for example, Persons A, B, and C are part of a room and Person C decides to leave. This then creates a “derived” or “survivor” room between Person A and Person B. If there is already a room between A and B, the newly created room does not merge with the existing room, but rather, it may act as a different room. In such case, the new room is not the default room for shares between A and B, but rather the original room for Persons A and B would be. In some embodiments, even if there is not already a room for Persons A and B when Person C leaves, this new room would still not be the default room for shares for Persons A and B. In various embodiments Person C may be added back by either A or B, unless Person C blocks their own re-entry.
  • identical groups of users may have as many rooms as they want to, as long as the room size, which, as noted, is defined by audience size, is greater than one.
  • a single user may create a room or rooms, such as, for example, by a defined action, which is treated as a share by the user with himself/herself. Allowing for the creation of multiple rooms with the same member or members thus allows an exemplary system to define events or time bounded rooms. For example, say Persons A, B and C are best friends and have a room among them to share photos. They decide to go to Lake Tahoe for fun and decide to make a ‘Tahoe” room for just that event.
  • rooms may be defined by its members until such time as someone in the room creates a new one, and then invites the original members into it, in which case they become more differentiated, and defined by both the members and content.
  • a default parameter may be set that adds any content to a room that was shared by a member to the other members of that room.
  • such a sharing to the other members, but not to the room would create a new room, each having the identical audience, as above.
  • the user will be prompted to name the new room, and may be prompted to also rename the existing room with the identical audience.
  • specialized sets of content and conversation surrounding such content may be created.
  • the two rooms may be merged, for example. In some exemplary embodiments this can only be done if the members of the two rooms are identical. In other embodiments, two rooms with overlapping, but not identical members can be merged.
  • rooms may, for example, have a construct called “posts” which may be one of many things.
  • Posts may include, for example, one photo, one video, a set of photos or videos, or a comment with some photos or videos.
  • a post may also include a “like” to a previous post, someone adding a member to a room, someone leaving the room, or someone renaming the room, for example.
  • any sort of activity that happens within the room can constitute a post.
  • no user may remove any other member from it.
  • a user may leave a room, and thereby dissociate himself or herself from access to the room, people may not be forcefully removed.
  • people may not be forcefully removed.
  • a user may always stay unless they choose to leave, and thereby remove their own access to it. If that occurs, all the posts that they added to the room prior to leaving it may remain in the room, as will be described in greater detail below.
  • a user may want to “mute,” or not see, a given room for a period of time.
  • a user may thus mute one or more rooms, and during such a mute period, the content will not be loaded onto the user's device.
  • Given a finite capacity on a user's device it may be useful to let a user manually designate which rooms he or she sees at any given time.
  • a user may mute conversations within a single room, i.e., by implementing a setting that does not display a given conversation within the room, such as, for example, his two sisters having a discussion about certain wedding photos.
  • read receipts may be provided, in terms of knowing what posts a user has seen and has not seen. This is needed when a user goes to a room, so that she may continue where she left off. In some embodiments this feature may be a user level read item. In some embodiments there may be notifications to senders that their recipients have read the post, or seen the shared content.
  • a user may be “locked.” In other words, the user cannot remove, or modify that content in the room. Moreover, even if he or she subsequently deletes the content from their own account, that content remains in the room.
  • a copy of a content item is created when the content item is shared with a room. The copy is then stored in a separate data structure, for example, than the account of the user where it originated. The user is free to modify or delete “his” copy, but may not modify in any way the copy in the room.
  • a user may take some photos on his smartphone, and upload them to his account on a content management system.
  • the same treatment applies to text messages provided as comments to content items shared with a room.
  • a notification to a user may be pushed (sent) upon the occurrence of any of the following: (i) someone added the user to a room, (ii) someone added one or more photos to a room, (iii) someone added a new person to a room that the user is a member of, (iv) someone added a new message to a room, (v) someone “liked” a photo, (vi) a room name has changed, (vii) the user's photos are loaded (first time experience), (viii) the user's photos are capable of being shared, (ix) the user has unread messages within a room, and/or (x) the application has not been opened for a period of time.
  • This latter notification may notify the user that he/she has used the application recently, and that there may be unread messages or activity that has occurred while the user has “been away.”
  • notifications may be sent to users of a content management system that provides rooms functionality, even if those users are not members of a room. For example, even if a user has not registered for or obtained the rooms service, the user may still be notified of the application and certain activities or events that take place therein. For example, this may occur if the user is a candidate for the room but has not yet been added. As an illustrative example, members of a class of students may create a class related room. In this scenario, non-class members may be invited to join the class related room. A notification may then be sent that allows a user to choose whether or not to join. In some instances, notifications may be sent to an individual even if the individual is not a registered user of the content management system.
  • the sharing of content to a room that would be of interest to an individual may be used to offer that individual the opportunity to join the content management system, service, and/or application that supports the room functionality.
  • photos that an individual appears in, or photos that may include content that may indicate that both the individual and the sharer of the photos have some shared affinity to may be shared with the individual as part of the offer to join the content management system.
  • incentives may be provided to the member of the room sharing the photos to get the individual to join.
  • he or she may be a contact of a registered user, and that contact's information may be obtained by a contact importer technology utilized by the content management system.
  • a notification to any person may be sent in various ways. These may include, for example, email, SMS, or a message sent within a social media network, or any combination of these communications pathways.
  • the notification may be sent as a message or as an email to that person's corresponding social media network email address, or both.
  • a notification may include a link, a button that retrieves a link to a room, or any other relevant user interface within the content management system that is relevant to the notification.
  • the notification may contain a link, which the recipient may use to see the shared photos, the room to which they have been shared, the room that has been named, etc.
  • room activity may be notified to such a user or member via an in-band notification, such as, for example, a notification tray in either the content management system application in general, or within a rooms application aspect of it.
  • a notification functionality may include both SMS and email notifications, the ability to sign up to a content management system or an application or service thereof that supports rooms.
  • the notification may form an access control list, which may include various steps to make the signup process as seamless as possible.
  • a member of a room may signal that she “likes” a post to the room. This may be considered a type of post in itself, and may be sent as a notification to the room members.
  • the likes may be aggregated together. For example, aggregating by photo: “Person A and B like this photo” or “Person A likes Photos 1, 2, and 4.”
  • mixes of photo and person aggregation may be implemented.
  • members may choose to see all likes within a room, and may also choose to disable them (this may be done globally, across all of that user's rooms, as well).
  • different members of the same room may have different views of the room.
  • likes and posts to a room may only be visible in a room, and thus may not be associated with the snapshot of the photo or other content items as part of its metadata.
  • a user may share a photo or set of photos to many rooms, and each one would have a different set of likes, comments and reactions, at the room level, but all such room would reference the same snapshot, which is stored in a “rooms” database, as described above.
  • the members may be empowered to remove content items by vote, which may be unanimous, or a simple majority, for example.
  • a management group may be set up for a given room, and that group may be given the power to delete content.
  • a duplicate/near duplicate detection algorithm may be used to delete redundant content, as may be defined by one or more similarity indices. This may be a system default, for example, and may or may not be allowed to be member adjustable.
  • a similarity detector may, be used as a share recommender.
  • the content management system may suggest to that user to also share content that is related, or very similar, to enhance the user's experience.
  • an exemplary system that knows who is in a user's room and who the individual has been sharing photos with, may infer that the user has established a relationship with that person. Thus, if it is detected that the two people are in the same location, and they are taking photos at the same time, a prompt or suggestion may be made to the other person regarding sharing to a room. For example, by tracking that they both took photos at the same time and place, it may be inferred that they may be, or are, part of the same event. So, for example, if they went to Thanksgiving together, and one of the two shared photos of Thanksgiving, in some embodiments that data may be used to say, in effect “It seems like you were there too.
  • an exemplary system may suggest ways that users may more easily share relevant content, which is a far superior experience than the other user having to realize “oh well, I actually was there too. Let me go back into my cameral roll and select the photos that I want to share with the room.” For example, this may be optimized by sending a notification or query stating “Do you want to share your 26 photos too?”
  • a system may actually assist or prompt a user to create a room. For example, by using photo tagging, and identifying who is in a given user's photos, an exemplary system may advise the user to share those photos with the person detected in them, and thus create a room. For example, if a user shares a photo with another user, and the system detects who is in the photo, it may, for example, prompt the user as follows: “You just indicated that you want to share this one photo. We actually know who is in the photo. would you like to share the photo with him as well?” This functionality would rely on photo detection or face detection/face recognition, using known techniques. Another related feature that may be used in some embodiments is to create a facial profile for each person that is in a user's photos, and apply the facial profiles to filter any newly added photos so as to make sharing suggestions.
  • a subset of a room may be created.
  • this is a new room, but based on the current room's contents.
  • a couple may have set up a room for sharing wedding photos with the guests of the wedding. If a couple has two hundred people at their wedding, for example, and the groom wishes to select the guests that were from his university and share more personal content, he may, for example, start a new room by initially grabbing all the people from the wedding room and then remove the ones that are not his university friends. Or, for example, a user may have nicely curated a set of photos from, for example, Thanksgiving, and decided to share the best ones with his parents.
  • a user may, for example, take any of the posts that he posted in the room with his parents, and just share it again to another room.
  • a “sync to my account” feature may be provided. For example, if a user and his wife had a shared room together, it may be very likely that the user would always want her photos around, because they are so close, live together and their lives are very much intertwined. Thus, if, for example the user's wife tends to take most of the pictures of their children, the user likely wants her photos to be in his account on the content management system (and not just in a room with his wife which he may access).
  • a user may turn on a setting in a room that saves all photos, new or old, into his personal account on the content management system. This would create, for example, a continuous room of content automatically saved to his personal account, whenever new photos are added to that room. More granularly, for example, where the room has more members than just the wife, such a switch may only download content shared with the room by the wife. Alternatively, such a switch may be configured to only automatically download certain types of content shared by a single person. For example, using facial recognition, as described above, a user may set the switch to automatically download to his account all photos shared by his wife that contain their children.
  • a user interface may contain the following features.
  • Rooms may have an icon in a navigation bar, which yields a full view of all of a user's rooms when activated.
  • the icon may be badged for new notifications with count of unique rooms with new notifications.
  • Each room may show the last activity of the room and the person that posted that activity, when that activity happened, and it may also show the set of people in the whole room.
  • a room may have an unread indicator, and within a room there may preferably be no paging (effectively infinite scroll on the UI side).
  • there may be an empty state when a user has no rooms, which may inform him what rooms are.
  • the members' names appear in the order added to the room. In some embodiments, at most two names may be shown, and then just “+ ⁇ number more>.” For activity in a room, the last activity (newest post) may be shown.
  • a user may not make a new room from within a rooms view. In order to make a new room, one must start with content. In some embodiments tapping on a room goes to a room. In general a user may not delete rooms or reorder rooms, but may filter down or search for people or content in rooms globally, or within a given room. Posts are displayed in order of most recent activity (by others). This shows a user the items she has not yet seen. The same ordering may be implemented for messages and notifications. It is noted, however, that this causes content that a user may not care about to bubble up. Thus, in some embodiments, as noted, a user may “mute” persons, conversations, types of messaging (e.g., likes), etc., either globally or within a particular room.
  • FIG. 2 shows a schematic illustration of an exemplary user interface.
  • the displayed content items may be stored on the user device (e.g., client device 102 ) and/or within a user account on a content management system (e.g., content management system 100 ).
  • user interface 200 displays the user's profile picture 216 , and application title 205 , as shown here “Carousel”, to indicate to the user the current program and/or mode of the user interface and the application of which it is a part.
  • User interface 200 may include content item collections 220 and 240 , which each may include one or more content items.
  • Content item collection 220 includes a main window image 218 , as well as remaining images 230 , as described below.
  • Content items included within content item collections 220 and 240 may correspond to any type of image and/or video including, but not limited to, high-quality (“HQ”) images, low-quality (“LQ”) images, high resolution images, low resolution images, thumbnail resolution or thumb images, high-definition (“HD”) images, panoramic images, mosaic images, short videos, short looping videos, movies, video clips, or any other type of image, or any combination thereof.
  • HQ high-quality
  • LQ low-quality
  • HD high-definition
  • content item collections 220 and/or 240 may be obtained from any suitable source.
  • a user may obtain content items via one or more image capturing components located on their user device. For example, one or more images and/or videos may be captured using camera 138 .
  • one or more content items may be obtained from a received message or email. For example, a user may receive an SMS message from a contact, where the message includes a content item. The user may save the content item to their device, and the content item may then be displayed within user interface 200 .
  • the user may obtain one or more content items from a social media network, a website, a photo rooming service, and/or a content management system.
  • content item collection 220 which has the identifier “Venice, Italy Today 6 Photos” as shown. In the depicted example of FIG. 2 , this is the most recent collection acquired in this user's account. As noted, content item collection 220 actually includes the single content item in main window 218 , as well as the remaining five content items shown at 230 . Below this section of user interface 200 appears another collection, content item collection 240 , entitled “Vatican City, Rome, Friday, August 15 th 12 Photos.”
  • the user may share one or more of the content items within content item collections 220 and/or 240 , as described more fully below.
  • the user may share selected content items with one or more of the user's contacts, one or more social media networks, and/or a content management system. Such sharing will create a “room,” as described above.
  • FIG. 3 shows a schematic illustration of a user interface 300 displaying a set of current rooms 320 of which the user is a member.
  • Each room may, for example, be identified by its members other than the current user, and may display the last post within the room.
  • Each room thus occupies an area of user interface 300 , with three sub areas—from left to right: last picture posted, room name and last message/last activity, and profile picture.
  • the rooms may be presented in reverse chronological order of updated content.
  • the room “Kayleigh Curie,” to which two new photos have just been added appears on the top of the room listing, and the room “Greg Gauss,” which was updated sometime prior, appears at the bottom of the listing.
  • the interface identifier 305 reads “Rooms,” for example.
  • room profile pictures 315 , 317 that when one other person is a member of the room, as shown at 315 , their profile picture may be displayed to identify the given room.
  • a composite room profile picture may be displayed, as shown in profile picture 317 , which has a “split screen” effect, with each other member's profile image displayed in half of the circular room profile picture. If there is no last comment posted in a room, such as is the case with the bottom three rooms “Tom Trailblazer,” “Taylor Hertz,” and “Greg Gauss,” then only the last activity is displayed.
  • a composite picture for a room may be limited to including 3, or 4 members, so as to be tractable, and recognizable.
  • FIG. 4 shows a schematic illustration of the user interface of FIG. 2 in a grid selection mode after a user has selected.
  • the user may have selected six content items, shown in collection 415 “Venice, Italy Today,” for sharing.
  • “Share” indicator 410 may indicate that six (6) content items have been selected for sharing.
  • each collection may include total count box 420 and/or 445 , indicating how many content items are in the collection.
  • each photograph may have, for example, a check box, which may be located in a top right corner and may indicate that each photograph may be selected.
  • a check box in the upper right corner of each photo may be filled in by a solid color to indicate that the photo has been selected. If the check box is not filled in, the photograph may subsequently not be selected. Any indication of a photograph being selected may be used, and the use of a check box is merely exemplary.
  • the selected six content items described above may correspond to all of the content items from collection 415 .
  • interface area 430 may be seen including collection 440 “Vatican City, Rome Friday, August 15th” and its indicator 445 may inform the user that the collection includes twelve (12) photos, and that they are also available for selection.
  • a user may select one or more content items from various collections using any suitable means, as previously mentioned.
  • one or more features of the user interface may change.
  • there may be a user interface similar to 200 of FIG. 2 which may correspond to a grid view of a set of a user's photographs.
  • the user may, for example, use a gesture, or an interactive button to select some of the figures, and then perform another gesture, or interact with a “share” button, and be presented with a user interface such as is shown in FIG. 5 .
  • FIG. 5 At the top of FIG.
  • FIG. 5 is a share bar, and one of the photos 505 in the set shown in the share bar may be selected, as indicated by the frame around the edges of the photograph.
  • the selected photo is also shown in the main window 518 , and if desired can be shared with one or more contacts of the user to create a room or add to a room.
  • FIG. 6 shows a schematic illustration of a “Rooms” user interface displaying various contacts of the user with whom a selected content item may be shared in accordance with various embodiments of the present invention.
  • This user interface may naturally follow that of FIG. 4 , for example, or that of FIG. 5 , for example, after a user has selected several content items for sharing.
  • the user interface of FIG. 6 continues with the example of FIG. 4 , and thus presents the six photographs of collection 415 (“Venice, Italy Aug. 13, 2013”) at 610 for sharing with one or more of the contacts listed 630 , or a new contact to be entered at 620 .
  • the contact list includes the name of the contact, and, as shown, their profile picture.
  • FIG. 7 shows the schematic illustration of the “Rooms” user interface of FIG. 6 after the user has selected two contacts with whom to share the selected content item, “Kaleigh Curie” and “Keegan Kurs.” This selection may be made by checking each of these contacts, at 735 and 740 , and thus their names appear in the “To:” line 720 .
  • Persons of ordinary skill in the art will recognize that various symbols and means of indicating a selection of a “share” may be used, and the aforementioned is merely exemplary.
  • FIG. 8 shows the schematic illustration of a follow-up user interface to that of FIG. 7 , within the newly created “Room” known as “Kayleigh and Keegan.”
  • the name of the new room may be displayed as the user interface title or caption.
  • the user may be informed in informational bar 815 that six content items were shared to this room from the collection known as “Venice Aug. 13, 2013,” and the user may be further prompted to add a message to go with the shared photos, if desired, in accordance with various embodiments.
  • FIG. 8 shows the schematic illustration of a follow-up user interface to that of FIG. 7 , within the newly created “Room” known as “Kayleigh and Keegan.”
  • the name of the new room may be displayed as the user interface title or caption.
  • the user may be informed in informational bar 815 that six content items were shared to this room from the collection known as “Venice Aug. 13, 2013,” and the user may be further prompted to add a message to go with the shared photos, if desired,
  • the profile picture of the user 816 (who has just done the sharing) may be shown within informational bar 815 , and below that the first content item of the set that was shared, at 818 .
  • a virtual keyboard 830 may be displayed to facilitate the user entering an optional message.
  • At the top may be a title bar including active buttons “Cancel” and “Done,” which may be used to either cancel, or indicate that the message is now complete, at which point (in either case) virtual keyboard 830 may be removed.
  • FIG. 9 shows the situation where the user did in fact enter a message when prompted, as shown in FIG. 8 .
  • the message is shown in informational bar 915 , and reads “Check out these photos from Venice that I took last week. So glad ya'll were there!”.
  • the user's profile picture is shown at 913 so it is clear who the system understands to be, and will identify to the room, as the “sharer.” This is a typical example of the benefit of rooms, where three people shared a common vacation or trip to a given venue, and one or more of them took photographs and/or video.
  • the user has available two active buttons, 960 to send the message, akin to a “send” button in an email client, and 950 , an “Add Photos” button, which allows the user to add additional photos to this room.
  • FIG. 10 shows a schematic illustration of a “Rooms” user interface, here the “Room” known as “Kayleigh and Keegan”, displaying the members of the room at 1015 , listed by name and profile picture, in accordance with various embodiments.
  • FIG. 11 shows a schematic illustration of a general “Rooms” user interface, where a user has selected a content item and may desire to share it with one of his or her rooms.
  • the exemplary user has selected the first photograph from collection 220 from FIG. 2 , shown at 218 , for sharing with a room.
  • a low-resolution version of that image may be shown in informational area 1115 , with a “Write a message” prompt.
  • the available rooms to which the image could be added are listed, and at 1120 is a button “Create New Room” facilitating the creation of a new room, if desired.
  • the available rooms listed at 1130 when involving multiple members, display a composite profile picture for the room, as is seen, for example, in the room “Adam, Yi and 3 others.”
  • the profile picture contains the users “Adam” and “Yi” only. This is because the room was originally created by users “Adam” and “Yi”, and subsequently three other users were added.
  • the profile picture may dynamically morph as members are added or leave a given room.
  • FIGS. 12 and 13 depict two variants of exemplary screen shots of user interfaces as they may really appear, so that the detail and real world “look and feel” may be appreciated.
  • FIGS. 12 and 13 show exemplary screen shots of a “Rooms” user interface according to some embodiments, as may be actually displayed on, for example, a smartphone.
  • the two figures are variants of the identical screen, the only difference being how the information at the top of the interface is displayed.
  • Two of the listed rooms have multiple members (i.e., “Yi, Soleio” and “Taylor, Anna+3”), and thus illustrate the composite profile picture well. Even at this small size, there may be considerable detail in the profile picture of each room, and this may, in some embodiments, enhance the personal felling a user has when interacting with a room.
  • users of content management systems have a sense of interacting with the system. Users of a rooms application or functionality have a sense of interacting with their friends.
  • FIG. 14 shows an illustrative flowchart of a process for creating and providing rooms in accordance with various embodiments of the present invention.
  • the process of FIG. 14 may run on a user device, for example, and may communicate with a server of a content management system, where global data and data identifiers are stored.
  • the process may receive a user request to share a first photo or video with one or more persons.
  • personnel may, depending upon the embodiment, include registered users of the content management system, or other parties as well.
  • the process may create a room and assign a room identifier.
  • room identifiers as well as content item identifiers may be local, i.e., only known and referenced on a user device, or may be global, and thus known and used on the content management system server as well as on the user device.
  • the implications of which type of identifier is created thus depend upon the connectivity then prevailing between the user device and the server.
  • a local identifier is always first assigned by a client application running on the user device, and an essentially simultaneous request for a global identifier sent to the server. The local identifier is then replaced by the global identifier as soon as it is received. Under full connectivity, the local identifier thus has a very short lifespan, and essentially all interactivity on the user device references the global identifier for the room or any content item in the room.
  • the photo or video which was the subject of the share request at 1410 may be copied to the newly created room, by storing it in a rooms database, thus locking it from further modification by its sharer, and associating it in the rooms database with the room identifier.
  • the rooms database may be thought of as a basic data structure which a rooms application draws from when displaying various rooms to each member. It may be logically conceived of as a database with a number of records, each record being a room. However, in reality, a content item would normally only be stored once in the rooms database, and if it was shared to many rooms, the record of each room would contain a reference to the single content item.
  • a content item stored in a user's account on a content management system is readily modifiable, and even subject to deletion by that user. For that reason, in order to “freeze” or “lock” such a content item once added to a room, a second database, different than that which, for example, serves the standard user accounts on the content management system, the rooms database, may be used. Any content item, once added to the rooms database, is no longer under the control of the user that shared it, or added it to a room.
  • the newly created room may be associated with each of the members, by associating it with the accounts of the creator and the original sharees. Once this is accomplished, the room and its then contents may be displayed on the home page (or root directory) of each member, in similar fashion to the rooms shown in FIGS. 3 and 6 , for example.
  • This may be implemented in various ways. For example, within the rooms database a data structure for each room may be created, with references to every content item—also stored in the rooms database—associated with that room. Additionally stored in the room data structure may be the identification numbers of each member, and the icon format to be displayed on each member's account, depicting the room, in the various possible formats as described above.
  • the content may be stored in the rooms database, and a notification sent to all members of the room, for example.
  • notifications of room activity may be sent to other persons as well, including users of the content management system and even non-registered users, for various purposes.
  • rooms may be ultimately managed from a server of a content management system.
  • a client application of the content management system runs on a user device, which is in communication with the server over a data communications network. While it is highly desirable for the user of the user device to be able to experience a seamless response of the system to (i) the creation of rooms, (ii) the addition of photos or messages to an existing room, (iii) the downloading of content from a room to a personal account within the content management system, and (iv) other responses to his or her interactions with the application, this is not always possible. This is due to the fact that while the connectivity on a user device between the user interface and the underlying client software is permanent, the connection between the underlying client software and the remote server may often be intermittent.
  • a room may be managed with reference to a unique index number or identifier assigned or associated with the room.
  • each user may be assigned a unique identifier, and all content and interactions of that user utilize the unique identifier to allow the content management system to properly store content items in his or her account, as well as store and implement various supported interactions.
  • a user creates a room by initiating a share, or adds content to a room, to the server the operations may appear equivalent, except that in the latter case a Room ID may already exist while in the former case there may be no Room ID when the share is made.
  • a request for a Room ID is sent from the underlying client software over the data network to the server of the content management system. If the client application has to wait until the Room ID is in turn received back from the server, it cannot create the room, and thus cannot show the content within the room, until the Room ID is received. This may likely cause wait states and latency if the connectivity between client application and server is intermittent.
  • the fundamental problem that must be solved is how to prevent a weak or intermittent data connection from interfering with what the user is actually seeing. So once the user, via the user interface, injects requests, and queues tasks, within the underlying software, to preserve local functionality to the extent possible, these actions must be reflected back into the user interface even if the server has not acknowledged the actions or fulfilled or processed the requests.
  • a user while offline, may create a room.
  • the user may take multiple photos, click share, add a person, which may send a message to the underlying software to create a room.
  • the client software may attempt tell the user interface that there is a new room created, and while it does that, it will also in parallel tell the server that a new room has been created.
  • the server might not be accessible at the time. Nonetheless, if in such a scenario the user adds a comment to a room, it may be necessary to show the user the comment in that room even if the request has not yet been sent to, or has not yet been processed on, the server.
  • the user may nonetheless have a smooth and nearly seamless local experience.
  • it can be guaranteed that creating a room will always succeed.
  • the client application is going to send the “create room and assign Room ID” message to the server, what it may do in the meantime is simulate the new post.
  • the client software creates a local ID and a new post table (a table that manages which posts are in a room, which rooms there are, etc.). The client software creates these results locally, as if the new room existed globally, and as if the content was really posted to a room.
  • the actual (global) Room ID must be associated with the local room ID, and the local room ID replaced by the actual (global) room ID in such a way so as not to execute any local action twice, or not at all.
  • the switch of IDs must occur either while the instruction is in a queue, but not yet executed, or after execution, but not during execution, which may create an ambiguity. For example, assume a user takes some photos with a smartphone on which she also has a rooms application running She uploads the photos to her content management account, and shares them with her sisters—but does not add them to the room that she and her sisters have.
  • this new share may create a new room.
  • her smartphone is not connected to the content management system's server, due to network issues. Because the photos have not been uploaded to the server, but were added to her account locally, and then added to a room locally, these photos and the new room all have only local IDs. The tasks of requesting IDs for each of these items and the room, and the task of adding the items to the room are thus queued, and executed locally.
  • the first action to be taken by a user no matter when they may be received at the server may control, or the first action received at the server may control.
  • more trivial resolutions based on details of the two users such as age of registered account with the content management system, standard or premium membership, level of activity, zip code, alphabetic order of last names, etc.
  • the problem may be further exacerbated with more than two users. For example, if there are four users, (e.g., A, B, C and D), and they each share photos with the other three, one room is created, but each believes he has created it. In embodiments where any member can change the name of a room, or where the initial creator names the room, the server will have a 4-way race condition.
  • notifications may be automatically sent to each of the members in the room, via one or more of the communications channels described above, explaining the race condition and how it was resolved, and therefore why the remaining members, besides the one who won the race, see a different name and a different order of posts to the room than they had each originally seen on their user devices.
  • Such notifications may contain a link to the room as ultimately implemented on the server so the users may see its final form and state.
  • FIG. 15 shows an exemplary system in accordance with various embodiments.
  • system 1500 of FIG. 15 may be substantially similar to system 100 of FIG. 1 , with the exception that the former may present elements of system 100 at a more granular level (e.g., modules, applications, etc.).
  • user devices 102 may be used to create, access, modify, and manage content items, such as content items 110 a and 110 b (collectively 110 ), stored locally within content item system 108 a and 108 b (collectively systems 108 ) on user device 102 and/or stored remotely on content management system 104 (e.g., within data store 118 ).
  • content items 110 a and 110 b collectively 110
  • stored locally within content item system 108 a and 108 b collectively systems 108
  • content management system 104 e.g., within data store 118
  • user device 102 a may access content items 110 b stored remotely with data store 118 of content management system 104 and may, or may not, store content item 110 b locally within content item system 108 a on user device 102 a .
  • user device 102 a may temporarily store content item 110 b within a cache locally on user device 102 a , make revisions to content item 110 b , and the revisions to content item 110 b may be communicated and stored in data store 118 of content management system 104 .
  • data store 118 may include one or more collections 132 of content items.
  • collections 132 may include one or more content items having similar properties (e.g., metadata) and/or including similar content.
  • user devices 102 may include camera 138 (e.g., 138 a and 138 b ) to capture and record digital images and/or videos.
  • User devices 102 may capture, record, and/or store content items, such as images, using camera 138 .
  • camera 138 may capture and record images and store metadata with the images.
  • Metadata may include, but is not limited to, the following: creation time timestamp, geolocation, orientation, rotation, title, and/or any other attributes or data relevant to the captured image.
  • Metadata values may be stored as attribute 112 name-value pairs, tag-value pairs, and/or any other method, or any combination thereof, to associate the metadata with the content item and easily identify the type of metadata.
  • attributes 112 may be tag-value pairs defined by a particular standard, including, but not limited to, Exchangeable Image File Format (“Exif”), JPEG File Interchange Format (Jfif), and/or any other standard.
  • user devices 102 may include time normalization module 146
  • content management system 104 may include time normalization module 148 .
  • Time normalization module 146 (e.g., 146 a and 146 b ) may be used to normalize dates and times stored with a content item.
  • Time normalization module 146 , counterpart time normalization module 148 , and/or any combination thereof, may be used to normalize dates and times stored for content items.
  • the normalized times and dates may be used to sort, group, perform comparisons, perform basic math, and/or cluster content items.
  • user devices 102 may include organization module 136
  • content management system 104 may include organization module 140 .
  • Organization module 136 (e.g., 136 a and 136 b ) may be used to organize content items into clusters or collections of content items, organize content items to provide samplings of content items for display within user interfaces, and/or retrieve organized content items for presentation.
  • Organization module 136 may utilize any clustering algorithm.
  • Organization module 136 may be used to identify similar content items for clusters in order to organize content items for presentation within user interfaces on user devices 102 and content management system 104 . Similarity rules may be defined to create one or more numeric representations embodying information on similarities between each of the content items in accordance with various similarity rules.
  • Organization module 136 may use numeric representations as a reference for similarity between content items in order to cluster the content items.
  • content items may be organized into clusters to aid with retrieval of similar content items in response to search requests.
  • organization module 136 a may identify that two images are similar and may group the images together in a cluster.
  • Organization module 136 a may process content items to determine clusters independently and/or in conjunction with counterpart organization module (e.g., 140 and/or 136 b ).
  • counterpart organization module e.g., 140 and/or 136 b
  • organization module 136 a may only provide clusters identified with counterpart organization modules (e.g., 140 and/or 136 b ) for presentation.
  • processing of content items to determine clusters may be an iterative process that may be executed upon receipt of new content items and/or new similarity rules.
  • user device 102 a may include classification module 150 a
  • user device 102 b may include classification module 150 b (collectively 150 ), which may be used independently, in combination with classification module 152 include on content management system 104 , and/or any combination thereof to classify content items, rectify content items, and/or classify images.
  • the classification modules 150 and/or 152 may be used to determine if an image includes a document, and if there so, determine a type of document stored therein.
  • Content item rectification may be performed to correct, perform further transformations, and/or crop content items to improve the display of the content items (e.g., correct the display of a document within an image).
  • user device 102 a may include search module 142 a
  • user device 102 b may include search module 142 b , which collectively may be referred to as search modules 142 .
  • Content management system 104 may also be provided with counterpart search module 144 .
  • Each of search modules 142 and 144 may be capable of supporting searches for content items located on both user devices 102 and/or content management system 104 .
  • a search request may be received by search module 142 and/or 144 that requests one or more content items.
  • the search may be handled by searching metadata and/or attributes assigned to content items during the provision of management services.
  • cluster markers stored with content items may be used to find content items by date.
  • cluster markers may indicate an approximate time, or average time, for the content items stored with the cluster marker, and the marker may be used to speed the search and/or return the search results with the contents of the cluster with particular cluster markers.
  • Content items 110 managed by content management system 104 may be stored locally within content item system 108 of respective user devices 102 and/or stored remotely within data store 118 of content management system 104 (e.g., content items 134 in data store 118 ). Content management system 104 may provide synchronization of content items managed thereon. Attributes 112 a and 112 b (collectively 112 ) or other metadata may also be stored with content items 110 . For example, a particular attribute may be stored with a content item to track content items locally stored on user devices 102 that are managed and/or synchronized by content management system 104 .
  • attributes 112 may be implemented using extended attributes, resource forks, or any other implementation that allows for storing metadata with a content item that is not interpreted by a content item system, such as content item system 108 .
  • attributes 112 a and 112 b may be content identifiers for content items.
  • the content identifier may be a unique or nearly unique identifier (e.g., number or string) that identifies the content item.
  • the content item may be tracked. For example, if a user moves the content item to another location within content item system 108 hierarchy and/or modifies the content item, then the content item may still be identified within content item system 108 of user device 102 . Any changes or modifications to the content item identified with the content identifier may be uploaded or provided for synchronization and/or version control services provided by content management system 104 .
  • a stand-alone content management application 114 a and 114 b may be implemented on user devices 102 a and 102 b , respectively, to provide a user interface to a user for interacting with content management system 104 .
  • Content management application 114 may expose the functionality provided with content management interface module 154 and accessible modules for user device 102 .
  • Web browser 116 a and 116 b may be used to display a web page front end for a client application that may provide content management 104 functionality exposed/provided with content management interface module 154 .
  • Content management system 104 may allow a user with an authenticated account to store content, as well as perform management tasks, such as retrieve, modify, browse, synchronize, and/or share content with other accounts.
  • Various embodiments of content management system 104 may have elements including, but not limited to, content management interface module 154 , account management module 120 , synchronization module 122 , collections module 124 , sharing module 126 , file system abstraction 128 , data store 118 , and organization module 140 .
  • Content management interface module 154 may expose the server-side or back end functionality/capabilities of content management system 104 .
  • a counter-part user interface e.g., stand-alone application, client application, etc.
  • on user devices 102 may be implemented using content management interface module 154 to allow a user to perform functions offered by modules of content management system 104 .
  • the user interface displayed on user device 102 may be used to create an account for a user and/or authenticate the user to use the account using account management module 120 .
  • Account management module 120 may provide the functionality for authenticating use of an account by a user and/or user device 102 with username/password, device identifiers, and/or any other authentication method.
  • Account information 130 may be maintained in data store 118 for accounts.
  • Account information may include, but is not limited to, personal information (e.g., an email address or username), account management information (e.g., account type, such as “free” or “paid”), usage information, (e.g., content item edit history), maximum storage space authorized, storage space used, content storage locations, security settings, personal configuration settings, content sharing data, etc.
  • An amount of storage space on content management system 104 may be reserved, allotted, allocated, stored, and/or may be accessed with an authenticated account.
  • the account may be used to access content items 134 and/or content items 110 within data store 118 for the account, and/or content items 134 and/or content items 110 made accessible to the account that are shared from another account.
  • account management module 120 may interact with any number of other modules of content management system 104 .
  • An account on content management system 104 may, in some embodiments, be used to store content such as documents, text items, audio items, video items, etc., from one or more user devices 102 authorized by the account.
  • the content may also include collections of various types of content with different behaviors, or other mechanisms of grouping content items together.
  • an account may include a public collection that may be accessible to any user.
  • the public collection may be assigned a web-accessible address. A link to the web-accessible address may be used to access the contents of the public folder.
  • an account may include a photos collection that may store photos and/or videos, and may provide specific attributes and actions tailored for photos and/or videos.
  • the account may also include an audio collection that provides the ability to play back audio items and perform other audio related actions.
  • the account may still further include a special purpose collection.
  • An account may also include shared collections or group collections that may be linked with and available to multiple user accounts. In some embodiments, access to a shared collection may differ for different users that may be capable of accessing the shared collection.
  • Content items 110 and/or content items 134 may be stored in data store 118 .
  • Data store 118 may, in some embodiments, be a storage device, multiple storage devices, or a server. Alternatively, data store 118 may be cloud storage provider or network storage accessible via one or more communications networks.
  • Content management system 104 may hide the complexity and details from user devices 102 by using content item system abstraction 128 (e.g., a content item system database abstraction layer) so that user devices 102 do not need to know exactly where the content items are being stored by content management system 104 .
  • Embodiments may store the content items in the same collections hierarchy as they appear on user device 102 .
  • content management system 104 may store the content items in various orders, arrangements, and/or hierarchies.
  • Content management system 140 may store the content items in a network accessible storage (SAN) device, in a redundant array of inexpensive disks (RAID), etc.
  • Content management system 104 may store content items using one or more partition types, such as FAT, FAT32, NTFS, EXT2, EXT3, EXT4, ReiserFS, BTRFS, and so forth.
  • Data store 118 may also store metadata describing content items, content item types, and the relationship of content items to various accounts, folders, collections, or groups.
  • the metadata for a content item may be stored as part of the content item and/or may be stored separately.
  • Metadata may be store in an object-oriented database, a relational database, a content item system, or any other collection of data.
  • each content item stored in data store 118 may be assigned a system-wide unique identifier.
  • Data store 118 may, in some embodiments, decrease the amount of storage space required by identifying duplicate content items or duplicate chunks of content items. Instead of storing multiple copies, data store 118 may store a single copy of content item 134 and then use a pointer or other mechanism to link the duplicates to the single copy. Similarly, data store 118 may store content items 134 more efficiently, as well as provide the ability to undo operations, by using a content item version control that tracks changes to content items, different versions of content items (including diverging version trees), and a change history. The change history may include a set of changes that, when applied to the original content item version, produce the changed content item version.
  • Content management system 104 may be configured to support automatic synchronization of content from one or more user devices 102 .
  • the synchronization may be platform independent. That is, the content may be synchronized across multiple user devices 102 of varying type, capabilities, operating systems, etc.
  • user device 102 a may include client software, which synchronizes, via synchronization module 122 at content management system 104 , content in content item system 108 of user devices 102 with the content in an associated user account.
  • the client software may synchronize any changes to content in a designated collection and its sub-collection, such as new, deleted, modified, copied, or moved content items or folders.
  • a user may manipulate content directly in a local folder, while a background process monitors the local content item for changes and synchronizes those changes to content management system 104 .
  • a background process may identify content that has been updated at content management system 104 and synchronize those changes to the local collection.
  • the client software may provide notifications of synchronization operations, and may provide indications of content statuses directly within the content management application.
  • user device 102 may not have a network connection available. In this scenario, the client software may monitor the linked collection for content item changes and queue those changes for later synchronization to content management system 104 when a network connection is available. Similarly, a user may manually stop or pause synchronization with content management system 104 .
  • a user may also view or manipulate content via a web interface generated and served by content management interface module 154 .
  • the user may navigate in a web browser to a web address provided by content management system 104 .
  • Changes or updates to content in data store 118 made through the web interface, such as uploading a new version of a content item, may be propagated back to other user devices 102 associated with the user's account.
  • multiple user devices 102 each with their own client software, may be associated with a single account, and content items in the account may be synchronized between each of user devices 102 .
  • Content management system 104 may include sharing module 126 for managing sharing content and/or collections of content publicly or privately.
  • Sharing module 126 may manage sharing independently or in conjunction with counterpart sharing module 152 a , located on user device 102 a , and sharing module 152 b located on user device 102 b (collectively sharing modules 152 ).
  • Sharing content publicly may include making the content item and/or the collection accessible from any device in network communication with content management system 104 .
  • Sharing content privately may include linking a content item and/or a collection in data store 118 with two or more user accounts so that each user account has access to the content item.
  • the sharing may be performed in a platform independent manner. That is, the content may be shared across multiple user devices 102 of varying type, capabilities, operating systems, etc.
  • one or more share links may be provided to a user, or a contact of a user, to access a shared content item.
  • the content may also be shared across varying types of user accounts.
  • the sharing module 126 may be used with collections module 124 to allow sharing of a virtual collection with another user or user account.
  • a virtual collection may be a collection of content identifiers that may be stored in various locations within content item systems 108 of user device 102 and/or stored remotely at content management system 104 .
  • the virtual collection for an account with a content management system may correspond to a collection of one or more identifiers for content items (e.g., identifying content items in storage).
  • the virtual collection is created with collections module 124 by selecting from existing content items stored and/or managed by content management system and associating the existing content items within data storage (e.g., associating storage locations, content identifiers, or addresses of stored content items) with the virtual collection.
  • data storage e.g., associating storage locations, content identifiers, or addresses of stored content items
  • a content item may be designated as part of the virtual collection without having to store (e.g., copy and paste the content item to a directory) the content item in another location within data storage in order to place the content item in the collection.
  • content management system 104 may be configured to maintain a content directory or a database table/entity for content items where each entry or row identifies the location of each content item in data store 118 .
  • a unique or a nearly unique content identifier may be stored for each content item stored in data store 118 .
  • Metadata may be stored for each content item.
  • metadata may include a content path that may be used to identify the content item.
  • the content path may include the name of the content item and a content item hierarchy associated with the content item (e.g., the path for storage locally within a user device 102 ).
  • Content management system 104 may use the content path to present the content items in the appropriate content item hierarchy in a user interface with a traditional hierarchy view.
  • a content pointer that identifies the location of the content item in data store 118 may also be stored with the content identifier.
  • the content pointer may include the exact storage address of the content item in memory.
  • the content pointer may point to multiple locations, each of which contains a portion of the content item.
  • a content item entry/database table row in a content item database entity may also include a user account identifier that identifies the user account that has access to the content item.
  • a user account identifier may be associated with a single content entry indicating that the content item has shared access by the multiple user accounts.
  • sharing module 126 may be configured to add a user account identifier to the content entry or database table row associated with the content item, thus granting the added user account access to the content item. Sharing module 126 may also be configured to remove user account identifiers from a content entry or database table rows to restrict a user account's access to the content item. The sharing module 126 may also be used to add and remove user account identifiers to a database table for virtual collections.
  • sharing module 126 may be configured to generate a custom network address, such as a uniform resource locator (“URL”), which allows any web browser to access the content in content management system 104 without any authentication.
  • sharing module 126 may be configured to include content identification data in the generated URL, which may later be used to properly identify and return the requested content item.
  • sharing module 126 may be configured to include the user account identifier and the content path in the generated URL.
  • the content identification data included in the URL may be sent to content management system 104 which may use the received content identification data to identify the appropriate content entry and return the content item associated with the content entry.
  • sharing module 126 may be configured to generate a custom network address, such as a uniform resource locator (URL), which allows any web browser to access the content in content management system 100 without any authentication.
  • sharing module 126 may be configured to include collection identification data in the generated URL, which may later be used to properly identify and return the requested content item.
  • sharing module 126 may be configured to include the user account identifier and the collection identifier in the generated URL.
  • the content identification data included in the URL may be sent to content management system 104 which may use the received content identification data to identify the appropriate content entry or database row and return the content item associated with the content entry or database TOW.
  • sharing module 126 may also be configured to record that a URL to the content item has been created.
  • the content entry associated with a content item may include a URL flag indicating whether a URL to the content item has been created.
  • the URL flag may be a Boolean value initially set to 0 or “false” to indicate that a URL to the content item has not been created. Sharing module 126 may be configured to change the value of the flag to 1 or “true” after generating a URL to the content item.
  • sharing module 126 may also be configured to deactivate a generated URL.
  • each content entry may also include a URL active flag indicating whether the content should be returned in response to a request from the generated URL.
  • sharing module 126 may be configured to only return a content item requested by a generated link if the URL active flag is set to 1 or true. Changing the value of the URL active flag or Boolean value may easily restrict access to a content item or a collection for which a URL has been generated. This may allow a user to restrict access to the shared content item without having to move the content item or delete the generated URL.
  • sharing module 126 may reactivate the URL by again changing the value of the URL active flag to 1 or true. A user may thus easily restore access to the content item without the need to generate a new URL.
  • any suitable programming language may be used to implement the routines of particular embodiments including C, C++, Java, JavaScript, Python, Ruby, CoffeeScript, assembly language, etc.
  • Different programming techniques may be employed such as procedural or object oriented.
  • the routines may execute on a single processing device or multiple processors.
  • Particular embodiments may be implemented in a computer-readable storage device or non-transitory computer readable medium for use by or in connection with the instruction execution system, apparatus, system, or device.
  • Particular embodiments may be implemented in the form of control logic in software or hardware or a combination of both.
  • the control logic when executed by one or more processors, may be operable to perform that which is described in particular embodiments.
  • Particular embodiments may be implemented by using a programmed general purpose digital computer, by using application specific integrated circuits, programmable logic devices, field programmable gate arrays, optical, chemical, biological, quantum or nanoengineered systems, components and mechanisms may be used.
  • the functions of particular embodiments may be achieved by any means as is known in the art.
  • Distributed, networked systems, components, and/or circuits may be used.
  • Communication, or transfer, of data may be wired, wireless, or by any other means.

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Multimedia (AREA)
  • Software Systems (AREA)
  • Quality & Reliability (AREA)
  • Information Transfer Between Computers (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)
  • User Interface Of Digital Computer (AREA)

Abstract

Systems and methods are provided for creating shared virtual spaces (“rooms”). In some embodiments, a share request to share a content item from a sharer to at least one sharee may be received. In response, a first virtual space may be created on the sharer's user account and each of the at least one sharee's user accounts on the content management system. A first identifier may be assigned to the content item, where the first identifier associates the sharer and each sharee as a member of the first virtual space. The first shared virtual space may then be preserved in a second shared virtual space stored on the content management system.

Description

    CROSS-REFERENCE TO RELATED APPLICATIONS
  • The present application claims the benefit of U.S. Provisional Patent Application No. 61/920,730, filed on Dec. 24, 2013, entitled “SYSTEMS AND METHODS FOR PROVIDING SHARED VIRTUAL SPACES (“STREAMS”), and U.S. Provisional Patent Application No. 61/945,814, filed on Feb. 27, 2014, entitled “SYSTEMS AND METHODS FOR CREATING SHARED VIRTUAL SPACES,” both of which are hereby incorporated herein by reference in their entirety.
  • FIELD OF THE INVENTION
  • Various embodiments generally relate to systems and methods for creating shared virtual spaces.
  • BACKGROUND
  • While photograph applications, video applications, and other content sharing applications have become increasingly popular, the services and features currently provided by these sorts of applications come with inherent limitations. Recognizing these limitations, online content management systems purport to offer a user a convenient portal for cloud storage and interactivity with his or her content. However, in such systems, as well as in the applications running on user devices which they support, content tends to be organized within a user's “account.” Within an account there may be various folders, collections, and other groupings, but such groupings may be performed by content type, and not necessarily based upon the people with whom certain content items are regularly shared. It is noted, though, that in their own minds, people do not organize data in folders or file hierarchies. Certain content items, such as, for example, photographs and videos, are understood to be related not just by their inherent content, but also by the set of people with whom they are naturally shared. In some embodiments, content items may be organized based on the content included within the content items. For example, a user may organize certain subsets of their image content, for example, as “family vacation shots,” “Bob's wedding photos,” “videos from grandma and grandpa's fortieth wedding anniversary” or, for example, “photos of the new restaurant site our architecture team is developing.” Should a user wish to share such content items, or even a collection of them, he or she may do so with whomever the user wishes. However, in order for one or more recipients of these content items or collections to share additional content items, or provide feedback to the shared content items or collections, the recipient must individually select each new recipient. This problem becomes especially cumbersome and problematic when the number of people involved in a shared collection reaches large numbers (e.g., 1,000 users). This problem may be further exacerbated by the fact that multiple users may attempt to share many similar content items, or due to network latencies experienced by different users located in different areas.
  • Thus, it would be beneficial for developing means that enable collective sharing of content between groups of users regardless of network conditions and the size of the group. The collective sharing may allow groups of users to communicate shared content with each user of the group as well as providing a forum that the shared content may be easily accessed and interacted with by any of the parties included therein.
  • SUMMARY
  • Systems, methods, and non-transitory computer readable media are provided for multi-party virtual sharing spaces, known sometimes herein as “rooms” and/or singular “room.” The parties to a room may include the room's creator, and all other persons with whom he or she shared the content with initially. These parties may sometimes be referred to as “members” of the room. In some embodiments, a room may be automatically created anytime a user of a content management system shares content items or messages about content items with another user. In one example, a share request may be received to share one or more content items with one or more of a user's contacts. In response to receiving the share request, a shared virtual space may be automatically created and may include a copy of the one or more content items selected to be shared. The shared virtual space may be associated with an assigned memory location on a system server, for example. The shared virtual space may be accessed by both the user and the other members, and they may each add further content (e.g., content items and messages) to the shared virtual space. Whenever any content is added to a shared virtual space, all member parties may be notified. In some embodiments other non-members may also be notified, even persons not registered as users with the content management system that provides the rooms service or application. Notifications may be by in-band (i.e., within a content management system or application provided by such a system), out-of-band (e.g., email, SMS, social media notification or post), or any combination of these communications pathways.
  • For ease of illustration it is noted that the following terminology will be used herein. A room is said to have “members.” Depending upon the embodiment, members may be exclusively limited to registered users of the content management system that provides the functionality of the rooms. In other exemplary embodiments, non-registered users of the content management system may also be allowed to be members of the rooms, with either limited or unlimited access rights. A user of a given content management system may therefore be a “member” or a “non-member” of any given room. As noted, someone who is not even a user may be a member, in whole or in part, of a room, depending upon the embodiment.
  • In some embodiments, members of a room may copy any content in the room to their own individual account on the content management system, and may also freely send copies of content from a room to other persons via email, SMS or post to social media. Each of the parties invited to a room may conveniently access the room at any time, the room being a permanent data structure designed to hold, as well as facilitate, mutual interaction with all of the content in the room. In some embodiments, a content item added to a room may be copied to a separate “rooms” database, and “locked.” That is, it cannot be modified further, even if its original owner subsequently modifies the original content item within his or her own account. In such case, those modifications will not be applied to the content items previously copied to the room. The content may be saved in the room for a defined period of time, which may, for example, be indefinitely or any shorter period of time. On a user's mobile device, local changes (e.g., additions of content, posts, adding new people, etc.) made by the user to the shared virtual space may be displayed locally as soon as the changes have been made, such that there being no need to wait for the information to be sent to the server. Thus, a number of rooms may be created locally, various content items may be added to them, and various persons may be added as members to those rooms, prior to any of this information reaching the content management system's server. To the user it simply appears as if the rooms are configured and “shared” as soon as the interaction occurs.
  • Any content item a user adds to the shared space may be displayed locally on the mobile device, and all interactivity therewith may be facilitated, as if (i) the shared virtual space had already been created on the content management system, and (ii) the at least one content item had already been copied to it. A similar functionality may be applied for adding content to an already existing shared virtual space, whether created by a given user, or by a contact who was invited to join the shared virtual space by the user.
  • BRIEF DESCRIPTION OF THE DRAWINGS
  • The above and other aspects and advantages of the invention will become more apparent upon consideration of the following detailed description, taken in conjunction with accompanying drawings, in which like referenced characters refer to like parts throughout, and in which:
  • FIG. 1 shows an exemplary system in accordance with various embodiments;
  • FIG. 2 shows a schematic illustration of an exemplary user interface displaying sets of content items stored on a mobile device in accordance with various embodiments;
  • FIG. 3 shows a schematic illustration of a user interface displaying six exemplary rooms in accordance with various embodiments;
  • FIG. 4 shows a schematic illustration of the user interface of FIG. 2 where a user has selected six content items from a set for sharing in accordance with various embodiments;
  • FIG. 5 shows a schematic illustration of a user interface displaying one of the exemplary content items that was selected for sharing, and a corresponding share bar being displayed at the top of the user interface, in accordance with various embodiments;
  • FIG. 6 shows a schematic illustration of a “rooms” user interface displaying various contacts of the user with whom a selected content item may be shared in accordance with various embodiments;
  • FIG. 7 shows the schematic illustration of the “rooms” user interface of FIG. 6 after the user has selected two contacts with whom to share an content item (thus check marks appear near the names of those contacts) in accordance with various embodiments;
  • FIG. 8 shows the schematic illustration of a follow-up user interface to that of FIG. 7, within the “room” known as “Kayleigh and Keegan”, where the user is informed that six content items were shared from the event known as “Venice Aug. 13, 2013”, and is further prompted to add a message to the room, if desired, in accordance with various embodiments;
  • FIG. 9 shows the schematic illustration of a follow-up user interface to that of FIG. 8, where the user has added a comment to the “room” (via, for example, the keyboard of FIG. 8), which now appears in the interactive window in accordance with various embodiments;
  • FIG. 10 shows a schematic illustration of a “rooms” user interface, here the “room” known as “Kayleigh and Keegan”, displaying the members of the room, listed by name and profile picture, in accordance with various embodiments;
  • FIG. 11 shows a schematic illustration of a general “rooms” user interface, listing the various rooms available to the user as well as a “Create New Room” active button, in accordance with various embodiments;
  • FIGS. 12 and 13 show two variants of an exemplary illustrative screen shot of a list of rooms in accordance with various embodiments;
  • FIG. 14 shows an illustrative flowchart of a process for creating and providing rooms in accordance with various embodiments; and
  • FIG. 15 shows another exemplary system in accordance with various embodiments.
  • DETAILED DESCRIPTION OF THE DISCLOSURE
  • Methods, systems, and computer readable media for supporting the creation of, and a full set of interactivity features with, virtual shared spaces are provided. This functionality may be integrated into an existing content management system or service, or it may be provided as a separate application, or as one of many features in a separate application providing enhanced content management services. An exemplary application providing virtual shared spaces may run on a user device, such as, for example, a smartphone, and may access a user's account with a content management system and thus the content management system's remote server or servers. While in such case the application is ultimately supported from such a server or servers, extended functionality may, for example, be built in to a local client running on the user device. In that manner, the virtual shared space functionality appears to the user as if it is running locally on the user's device—regardless of whether the user's device is weakly, intermittently, or even not at all, connected to the server. By enabling a user to feel as though their device is fully interactive even when connectivity is limited, the user experience and richness of functionality provided to the user may be greatly increased.
  • It is noted that the terms “device” and “content management system” are used herein to refer broadly to a wide variety of storage providers and data management service providers, electronic devices and user devices. It is also noted that the term “content item” is user herein to refer broadly to a wide variety of digital data, documents, text content items, audio content items, video content items, portions of content items, and/or other types of data. Content items may also include files, folders or other mechanisms of grouping content items together with different behaviors, such as collections of content items, playlists, albums, etc. The term “user” is also used herein broadly, and may correspond to a single user, multiple users, authorized accounts, an application or program operating automatically on behalf of, or at the behest of a person, or any other user type, or any combination thereof. The term “gesture” and “gestures” are also used herein broadly, and may correspond to one or more motions, movements, hoverings, inferences, signs, or any other such physical interactions with one or more sensors, or any combination thereof, including vocal commands or interpretations of eye movements based on retinal tracking. The term “continuous real-time image” is also used herein broadly, and may correspond to live images captured via one or more image capturing components, continuous images captured, recorded images, or any other type of image that may be captured via an image capturing component, or any combination thereof.
  • The present invention may take form in various components and arrangements of components, and in various techniques, methods, or procedures and arrangements of steps. The referenced drawings are only for the purpose of illustrating embodiments, and are not to be construed as limiting the present invention. Various inventive features are described below that can each be used independently of one another or in combination with other features.
  • FIG. 1 shows an exemplary system in accordance with various embodiments. System 100 may include user devices 102 a and 102 b, which may communicate with content management system 104 across network 106. Persons of ordinary skill in the art will recognize that although only two user devices are shown within system 100, any number of user devices may interact with content management system 104 and/or network 106, and the aforementioned illustration is merely exemplary.
  • Network 106 may support any number of protocols, including, but not limited to, Transfer Control Protocol and Internet Protocol (“TCP/IP”), Hypertext Transfer Protocol (“HTTP”), and/or wireless application protocol (“WAP”). For example, user device 102 a and user device 102 b (collectively 102) may communicate with content management system 104 using TCP/IP, and, at a higher level, use a web browser to communicate with a web server at content management system 104 using HTTP.
  • A variety of user devices 102 may communicate with content management system 104, including, but not limited to, desktop computers, mobile computers, mobile communication devices (e.g., mobile phones, smart phones, tablets), televisions, set-top boxes, and/or any other network enabled device. Various types of user devices may include, but are not limited to, smart phones, mobile phones, tablet computers, personal digital assistants (PDAs), laptop computers, digital music players, and/or any other type of user device capable of including a touch-sensing display interface. Various touch-sensing display interfaces may include, but are not limited to, liquid crystal displays (LCD), monochrome displays, color graphics adapter (CGA) displays, enhanced graphics adapter (EGA) displays, variable-graphics array (VGA) displays, or any other display, or any combination thereof. In some embodiments, the touch-sensing display interface may include a multi-touch panel coupled to one or more processors to receive and detect gestures. Multi-touch panels, for example, may include capacitive sensing mediums having a one or more of row traces and/or driving line traces, and one or more column traces and/or sensing lines. Although multi-touch panels are described herein as one example for touch-sensing display interface, persons of ordinary skill in the art will recognize that any touch-sensing display interface may be used. Furthermore, various types of user devices may, in some embodiments, include one or more image capturing components. For example, user devices 102 may include a front-facing camera and/or a rear facing camera.
  • Content management system 100 may allow a user with an authenticated account to store content, as well as perform management tasks, such as retrieve, modify, browse, synchronize, and/or share content with other accounts. In some embodiments, a counter-part user interface (e.g., stand-alone application, client application, etc.) on user devices 102 may be implemented using a content management interface module to allow a user to perform functions offered by modules of content management system 104. A more detailed description of system 100 is presented below, with reference to FIG. 15.
  • Basic Rooms Functionality: A Virtual Space for Sharing and Conversation
  • For ease of illustration, the virtual shared spaces described herein shall sometimes be referred to as “rooms.” FIGS. 1-14 use this term to designate such a shared space. In exemplary embodiments of the present invention, the core idea of “rooms” is that whenever a user shares a set of photos (or other content items) to anyone, they automatically create a virtual shared space, known as a “room,” for themselves and those people. The room is a running conversation thread that is shared between the user and his/her sharee(s), which is accessible to any of them at any time. All content in a given room is accessible to any member of the room at any time, and they may, for example, download it to their own account on a content management system, either piece by piece, or automatically, as described more fully below. Moreover, a room is permanent. Thus, any content a user shares with a room remains part of the room and members of the room can access all of the room's content. In some embodiments, if a member of a room leaves the room, or is removed from the room by one of the other members or the creator of the room, as the case may be, such a former member will not have continued access to the contents of the room, but any content that he or she contributed prior to leaving will remain in the room. Because of this feature, it is most useful to speak not of sharing with a group of other users, but rather to simply share with the “room.” Thus, any member can, for example, access content items in a room and/or download them to his or her own account, incorporate them in an email or text message, or post them to a social media website or system, or any combination of those options. The idea of a room in exemplary embodiments according to the present invention is a place where the user goes to continue that conversation with the other members.
  • It is noted that a room is focused more on private in-band sharing. Rooms do not have the same privacy issues as appending comments and audiences to photos in a user's account on a content management system, for example. This is because a room is a by invitation-only shared space. Rooms also allow for a response to a shared photo, as most people that send photos want to know that they are seen and also appreciated. In addition, a room allows for certain optimizations over conventional content management system functionality. Instead of repeatedly sharing related content to the same group of people, the user need only add the content to the room. For example, a room may be used to collect all the photos from an event.
  • In exemplary embodiments of the present invention, a user of a content management system may create a new room by sharing content with at least one other user (this assumes that there is no existing room with the same people in it). A room may thus be defined by the set of people that are provided with access to the room. So, for example, if User A and User B are in a room, and User A subsequently sends something else to User B, that additional content goes in the same room. Similarly, if there are three users in the room together, anytime any of them sends something to the other two, then all that content may always go into that room.
  • In some embodiments, any member can add more people to a room. Once added, the new member has access to the full history of the room. In others, this may be more restricted. In some embodiments, any member can leave a room that they are in, and once they leave, it is as if they were never part of that room. Therefore, to get back in, they must be added back in by a member of that room, for example, or, by whatever more restrictive rule is in place. In some embodiments, a member cannot leave a room if there are only two members.
  • In this context it is noted that a scenario may arise where, for example, Persons A, B, and C are part of a room and Person C decides to leave. This then creates a “derived” or “survivor” room between Person A and Person B. If there is already a room between A and B, the newly created room does not merge with the existing room, but rather, it may act as a different room. In such case, the new room is not the default room for shares between A and B, but rather the original room for Persons A and B would be. In some embodiments, even if there is not already a room for Persons A and B when Person C leaves, this new room would still not be the default room for shares for Persons A and B. In various embodiments Person C may be added back by either A or B, unless Person C blocks their own re-entry.
  • In other exemplary embodiments, identical groups of users may have as many rooms as they want to, as long as the room size, which, as noted, is defined by audience size, is greater than one. Alternatively, even a single user may create a room or rooms, such as, for example, by a defined action, which is treated as a share by the user with himself/herself. Allowing for the creation of multiple rooms with the same member or members thus allows an exemplary system to define events or time bounded rooms. For example, say Persons A, B and C are best friends and have a room among them to share photos. They decide to go to Lake Tahoe for fun and decide to make a ‘Tahoe” room for just that event. Or for example, if a user went on a hike with some friends and that user did not really know some of the people there, the user can invite them to a new room—the “hiking room”, rather than inviting them to, for example, a current room that had already been created with some of the people on the hike. If upon getting to know the new people the user decides to add them to the first room, there would end up being two rooms with the identical audience, but, as above, one more general, one more specific. Thus, rooms may be defined by its members until such time as someone in the room creates a new one, and then invites the original members into it, in which case they become more differentiated, and defined by both the members and content.
  • Thus, in some embodiments, a default parameter may be set that adds any content to a room that was shared by a member to the other members of that room. In other embodiments, such a sharing to the other members, but not to the room, would create a new room, each having the identical audience, as above. However, if a user chooses to create a new room, even with the same members, he or she may be permitted to do so. In such an event the user will be prompted to name the new room, and may be prompted to also rename the existing room with the identical audience. By allowing multiple rooms with the identical audience, specialized sets of content and conversation surrounding such content may be created. This can be useful, for example, with a large extended family who wishes to make a separate room for a certain type of recurring event, say Christmas, or, for example, “Graduations,” “Kids' Weddings,” etc. After a certain quantity of content has been shared to a room, the room can become very large, and thus somewhat unwieldy. It may be too large to conveniently scroll through on a user device, and may also become hard to download to a user device with limited capacity. Thus, segmentation of room content, even where the room audience is identical, may be very useful in some embodiments.
  • Alternatively, if it subsequently turns out that the conversations in the two separate rooms tend to overlap, merge, and refer to one another, and then the two rooms may be merged, for example. In some exemplary embodiments this can only be done if the members of the two rooms are identical. In other embodiments, two rooms with overlapping, but not identical members can be merged.
  • In some embodiments, rooms may, for example, have a construct called “posts” which may be one of many things. Posts may include, for example, one photo, one video, a set of photos or videos, or a comment with some photos or videos. A post may also include a “like” to a previous post, someone adding a member to a room, someone leaving the room, or someone renaming the room, for example. Thus, in exemplary embodiments of the present invention, any sort of activity that happens within the room can constitute a post.
  • In some embodiments, because of the permanent nature of a room, no user may remove any other member from it. Thus, while a user may leave a room, and thereby dissociate himself or herself from access to the room, people may not be forcefully removed. Accordingly, once a user has access to a room they may always stay unless they choose to leave, and thereby remove their own access to it. If that occurs, all the posts that they added to the room prior to leaving it may remain in the room, as will be described in greater detail below. In other exemplary embodiments there may be more of an ownership model, where an initiator, or a creator, or a majority vote of the members, may have the right to cull undesirable members from the room.
  • In some embodiments, there is no limit on how many people may be part of a room. However, this can create scaling issues, especially where very active rooms generate many notifications. Thus, in other embodiments there may be a hard coded limit of, for example, 30, 40 or 50 members per room. Additionally, with larger member sizes, the odds of one of the invitees being undesirable increases, as a matter of sheer sample size. Thus, in some embodiments, where large or unlimited numbers of members per room are supported, an ownership model may be used, where some members (e.g., the creator) may have the power to manage membership on an ongoing basis over other members.
  • In the context of rooms with many members, or rooms with small membership but many posts, a user may want to “mute,” or not see, a given room for a period of time. In some embodiments a user may thus mute one or more rooms, and during such a mute period, the content will not be loaded onto the user's device. Given a finite capacity on a user's device, it may be useful to let a user manually designate which rooms he or she sees at any given time. Similarly, in some embodiments a user may mute conversations within a single room, i.e., by implementing a setting that does not display a given conversation within the room, such as, for example, his two sisters having a discussion about certain wedding photos.
  • In exemplary embodiments according to the present invention, read receipts may be provided, in terms of knowing what posts a user has seen and has not seen. This is needed when a user goes to a room, so that she may continue where she left off. In some embodiments this feature may be a user level read item. In some embodiments there may be notifications to senders that their recipients have read the post, or seen the shared content.
  • In exemplary embodiments of the present invention, once a user shares content with a room, that content may be “locked.” In other words, the user cannot remove, or modify that content in the room. Moreover, even if he or she subsequently deletes the content from their own account, that content remains in the room. In order to support that feature, a copy of a content item is created when the content item is shared with a room. The copy is then stored in a separate data structure, for example, than the account of the user where it originated. The user is free to modify or delete “his” copy, but may not modify in any way the copy in the room. Thus, for example, a user may take some photos on his smartphone, and upload them to his account on a content management system. He may then decide to share a subset of those photos with a room. If he subsequently deletes all of the photos from his account with the content management system, the subset of photos that was shared remains in the room, and thus has its own “independent existence” that is free and independent of what the original user does to the originals. The same treatment applies to text messages provided as comments to content items shared with a room.
  • In exemplary embodiments of the present invention, a notification to a user may be pushed (sent) upon the occurrence of any of the following: (i) someone added the user to a room, (ii) someone added one or more photos to a room, (iii) someone added a new person to a room that the user is a member of, (iv) someone added a new message to a room, (v) someone “liked” a photo, (vi) a room name has changed, (vii) the user's photos are loaded (first time experience), (viii) the user's photos are capable of being shared, (ix) the user has unread messages within a room, and/or (x) the application has not been opened for a period of time. This latter notification may notify the user that he/she has used the application recently, and that there may be unread messages or activity that has occurred while the user has “been away.”
  • Additionally, notifications may be sent to users of a content management system that provides rooms functionality, even if those users are not members of a room. For example, even if a user has not registered for or obtained the rooms service, the user may still be notified of the application and certain activities or events that take place therein. For example, this may occur if the user is a candidate for the room but has not yet been added. As an illustrative example, members of a class of students may create a class related room. In this scenario, non-class members may be invited to join the class related room. A notification may then be sent that allows a user to choose whether or not to join. In some instances, notifications may be sent to an individual even if the individual is not a registered user of the content management system. In some embodiments, the sharing of content to a room that would be of interest to an individual may be used to offer that individual the opportunity to join the content management system, service, and/or application that supports the room functionality. For example, photos that an individual appears in, or photos that may include content that may indicate that both the individual and the sharer of the photos have some shared affinity to (e.g., party at a sorority, family gathering, work event, etc.), may be shared with the individual as part of the offer to join the content management system. In fact, incentives may be provided to the member of the room sharing the photos to get the individual to join. In order to send such an individual a notification, he or she may be a contact of a registered user, and that contact's information may be obtained by a contact importer technology utilized by the content management system.
  • In exemplary embodiments of the present invention, a notification to any person may be sent in various ways. These may include, for example, email, SMS, or a message sent within a social media network, or any combination of these communications pathways. For example, in a social media network the notification may be sent as a message or as an email to that person's corresponding social media network email address, or both. In some embodiments a notification may include a link, a button that retrieves a link to a room, or any other relevant user interface within the content management system that is relevant to the notification. The notification may contain a link, which the recipient may use to see the shared photos, the room to which they have been shared, the room that has been named, etc. For notifications to a member of the room, or a user of the content management system who may not be a member of the room, room activity may be notified to such a user or member via an in-band notification, such as, for example, a notification tray in either the content management system application in general, or within a rooms application aspect of it.
  • In some embodiments, a notification functionality may include both SMS and email notifications, the ability to sign up to a content management system or an application or service thereof that supports rooms. In some embodiments, the notification may form an access control list, which may include various steps to make the signup process as seamless as possible.
  • In some embodiments, a member of a room may signal that she “likes” a post to the room. This may be considered a type of post in itself, and may be sent as a notification to the room members. To optimize bandwidth, if there are a lot of likes in a short amount of time (e.g., <10 minutes), the likes may be aggregated together. For example, aggregating by photo: “Person A and B like this photo” or “Person A likes Photos 1, 2, and 4.” In some embodiments, mixes of photo and person aggregation may be implemented. In some embodiments, members may choose to see all likes within a room, and may also choose to disable them (this may be done globally, across all of that user's rooms, as well). In such case, different members of the same room may have different views of the room. For example, likes and posts to a room may only be visible in a room, and thus may not be associated with the snapshot of the photo or other content items as part of its metadata. Thus, a user may share a photo or set of photos to many rooms, and each one would have a different set of likes, comments and reactions, at the room level, but all such room would reference the same snapshot, which is stored in a “rooms” database, as described above.
  • More Advanced Features of Rooms
  • In some embodiments, if all of the members of a room, or the “mangers” of a room, may decide to delete content from a room, they may. For example, if a room is based on a set of cousins, aunts and uncles sharing photos from family gatherings. The room may be referred to as the “Thompson Family Gathering Room.” Because the members of the room are all in attendance at the same events, all take photos and video at those same events, and/or all share their photos and video in the family room, it is highly likely that near duplicate content items will often be shared in the room. Several shots of the same person or activity are technically separate photos, and thus each stored on its own in the room data structure. However, to the human eye, many are nearly indistinguishable. To address such eventualities, and prevent the room from being overburdened with essentially redundant content, two approaches may, for example, be used. First, the members may be empowered to remove content items by vote, which may be unanimous, or a simple majority, for example. Second, as noted, a management group may be set up for a given room, and that group may be given the power to delete content. Finally, for example, a duplicate/near duplicate detection algorithm may be used to delete redundant content, as may be defined by one or more similarity indices. This may be a system default, for example, and may or may not be allowed to be member adjustable.
  • Similarly, in exemplary embodiments of the present invention, a similarity detector may, be used as a share recommender. In such exemplary embodiments, when a given user shares certain content with a room, the content management system may suggest to that user to also share content that is related, or very similar, to enhance the user's experience.
  • In some embodiments, an exemplary system that knows who is in a user's room and who the individual has been sharing photos with, may infer that the user has established a relationship with that person. Thus, if it is detected that the two people are in the same location, and they are taking photos at the same time, a prompt or suggestion may be made to the other person regarding sharing to a room. For example, by tracking that they both took photos at the same time and place, it may be inferred that they may be, or are, part of the same event. So, for example, if they went to Thanksgiving together, and one of the two shared photos of Thanksgiving, in some embodiments that data may be used to say, in effect “It seems like you were there too. Do you want to share your photos back into that room?” In such embodiments, an exemplary system may suggest ways that users may more easily share relevant content, which is a far superior experience than the other user having to realize “oh well, I actually was there too. Let me go back into my cameral roll and select the photos that I want to share with the room.” For example, this may be optimized by sending a notification or query stating “Do you want to share your 26 photos too?”
  • In some embodiments, a system may actually assist or prompt a user to create a room. For example, by using photo tagging, and identifying who is in a given user's photos, an exemplary system may advise the user to share those photos with the person detected in them, and thus create a room. For example, if a user shares a photo with another user, and the system detects who is in the photo, it may, for example, prompt the user as follows: “You just indicated that you want to share this one photo. We actually know who is in the photo. Would you like to share the photo with him as well?” This functionality would rely on photo detection or face detection/face recognition, using known techniques. Another related feature that may be used in some embodiments is to create a facial profile for each person that is in a user's photos, and apply the facial profiles to filter any newly added photos so as to make sharing suggestions.
  • In some embodiments, for example, a subset of a room may be created. Technically, this is a new room, but based on the current room's contents. For example, a couple may have set up a room for sharing wedding photos with the guests of the wedding. If a couple has two hundred people at their wedding, for example, and the groom wishes to select the guests that were from his university and share more personal content, he may, for example, start a new room by initially grabbing all the people from the wedding room and then remove the ones that are not his university friends. Or, for example, a user may have nicely curated a set of photos from, for example, Thanksgiving, and decided to share the best ones with his parents. And then, he may want to share that same set of photos, with, for example, some other friends or his girlfriend. To support such functionality a user may, for example, take any of the posts that he posted in the room with his parents, and just share it again to another room.
  • In exemplary embodiments of the present invention, in addition to having content of rooms be permanent and available to all members at all times, a “sync to my account” feature may be provided. For example, if a user and his wife had a shared room together, it may be very likely that the user would always want her photos around, because they are so close, live together and their lives are very much intertwined. Thus, if, for example the user's wife tends to take most of the pictures of their children, the user likely wants her photos to be in his account on the content management system (and not just in a room with his wife which he may access). Thus, in such embodiments, a user may turn on a setting in a room that saves all photos, new or old, into his personal account on the content management system. This would create, for example, a continuous room of content automatically saved to his personal account, whenever new photos are added to that room. More granularly, for example, where the room has more members than just the wife, such a switch may only download content shared with the room by the wife. Alternatively, such a switch may be configured to only automatically download certain types of content shared by a single person. For example, using facial recognition, as described above, a user may set the switch to automatically download to his account all photos shared by his wife that contain their children.
  • In various exemplary embodiments of the present invention a user interface may contain the following features. Rooms may have an icon in a navigation bar, which yields a full view of all of a user's rooms when activated. The icon may be badged for new notifications with count of unique rooms with new notifications. Each room may show the last activity of the room and the person that posted that activity, when that activity happened, and it may also show the set of people in the whole room. A room may have an unread indicator, and within a room there may preferably be no paging (effectively infinite scroll on the UI side). In some embodiments, there may be an empty state when a user has no rooms, which may inform him what rooms are. In a room the members' names appear in the order added to the room. In some embodiments, at most two names may be shown, and then just “+<number more>.” For activity in a room, the last activity (newest post) may be shown.
  • In various exemplary embodiments according to the present invention, a user may not make a new room from within a rooms view. In order to make a new room, one must start with content. In some embodiments tapping on a room goes to a room. In general a user may not delete rooms or reorder rooms, but may filter down or search for people or content in rooms globally, or within a given room. Posts are displayed in order of most recent activity (by others). This shows a user the items she has not yet seen. The same ordering may be implemented for messages and notifications. It is noted, however, that this causes content that a user may not care about to bubble up. Thus, in some embodiments, as noted, a user may “mute” persons, conversations, types of messaging (e.g., likes), etc., either globally or within a particular room.
  • FIG. 2 shows a schematic illustration of an exemplary user interface. In some embodiments, the displayed content items may be stored on the user device (e.g., client device 102) and/or within a user account on a content management system (e.g., content management system 100). In some embodiments, as here, user interface 200 displays the user's profile picture 216, and application title 205, as shown here “Carousel”, to indicate to the user the current program and/or mode of the user interface and the application of which it is a part. User interface 200 may include content item collections 220 and 240, which each may include one or more content items. Content item collection 220 includes a main window image 218, as well as remaining images 230, as described below. Content items included within content item collections 220 and 240 may correspond to any type of image and/or video including, but not limited to, high-quality (“HQ”) images, low-quality (“LQ”) images, high resolution images, low resolution images, thumbnail resolution or thumb images, high-definition (“HD”) images, panoramic images, mosaic images, short videos, short looping videos, movies, video clips, or any other type of image, or any combination thereof.
  • In exemplary embodiments of the present invention, content item collections 220 and/or 240 may be obtained from any suitable source. In some embodiments, a user may obtain content items via one or more image capturing components located on their user device. For example, one or more images and/or videos may be captured using camera 138. In some embodiments, one or more content items may be obtained from a received message or email. For example, a user may receive an SMS message from a contact, where the message includes a content item. The user may save the content item to their device, and the content item may then be displayed within user interface 200. In still further embodiments, the user may obtain one or more content items from a social media network, a website, a photo rooming service, and/or a content management system.
  • It is noted that of the two content item collections, there is one displayed in greater resolution than the other. This is content item collection 220, which has the identifier “Venice, Italy Today 6 Photos” as shown. In the depicted example of FIG. 2, this is the most recent collection acquired in this user's account. As noted, content item collection 220 actually includes the single content item in main window 218, as well as the remaining five content items shown at 230. Below this section of user interface 200 appears another collection, content item collection 240, entitled “Vatican City, Rome, Friday, August 15th 12 Photos.”
  • In some embodiments, the user may share one or more of the content items within content item collections 220 and/or 240, as described more fully below. For example, the user may share selected content items with one or more of the user's contacts, one or more social media networks, and/or a content management system. Such sharing will create a “room,” as described above.
  • FIG. 3 shows a schematic illustration of a user interface 300 displaying a set of current rooms 320 of which the user is a member. Each room may, for example, be identified by its members other than the current user, and may display the last post within the room. Each room thus occupies an area of user interface 300, with three sub areas—from left to right: last picture posted, room name and last message/last activity, and profile picture. The rooms may be presented in reverse chronological order of updated content. Thus the room “Kayleigh Curie,” to which two new photos have just been added, appears on the top of the room listing, and the room “Greg Gauss,” which was updated sometime prior, appears at the bottom of the listing. As noted, at the left of the rectangular area may be displayed the most recent content item or photograph 310 that was posted to the room. In the center may be displayed the last message posted to the room, if any, and if not, the last activity, and at the far right may be displayed a profile picture, such as profile pictures 315, 317, by which the room may be identified. Because this user interface displays the current rooms the user has access to, the interface identifier 305 reads “Rooms,” for example.
  • It is noted in connection with room profile pictures 315, 317, that when one other person is a member of the room, as shown at 315, their profile picture may be displayed to identify the given room. However, where a room has multiple members, such as the “Kayleigh and Keegan” room, then a composite room profile picture may be displayed, as shown in profile picture 317, which has a “split screen” effect, with each other member's profile image displayed in half of the circular room profile picture. If there is no last comment posted in a room, such as is the case with the bottom three rooms “Tom Trailblazer,” “Taylor Hertz,” and “Greg Gauss,” then only the last activity is displayed. A composite picture for a room may be limited to including 3, or 4 members, so as to be tractable, and recognizable.
  • FIG. 4 shows a schematic illustration of the user interface of FIG. 2 in a grid selection mode after a user has selected. For example, the user may have selected six content items, shown in collection 415 “Venice, Italy Today,” for sharing. Thus, “Share” indicator 410 may indicate that six (6) content items have been selected for sharing. In an exemplary selection/sharing mode as shown in FIG. 4, each collection may include total count box 420 and/or 445, indicating how many content items are in the collection. In the depicted exemplary grid selection mode, each photograph may have, for example, a check box, which may be located in a top right corner and may indicate that each photograph may be selected. If the user selects a photo, a check box in the upper right corner of each photo may be filled in by a solid color to indicate that the photo has been selected. If the check box is not filled in, the photograph may subsequently not be selected. Any indication of a photograph being selected may be used, and the use of a check box is merely exemplary. The selected six content items described above may correspond to all of the content items from collection 415. Below, interface area 430 may be seen including collection 440 “Vatican City, Rome Friday, August 15th” and its indicator 445 may inform the user that the collection includes twelve (12) photos, and that they are also available for selection.
  • In general, in exemplary embodiments of the present invention, a user may select one or more content items from various collections using any suitable means, as previously mentioned. In response to the user switching from a collections display mode to a selection mode, one or more features of the user interface may change. For example, there may be a user interface similar to 200 of FIG. 2, which may correspond to a grid view of a set of a user's photographs. The user may, for example, use a gesture, or an interactive button to select some of the figures, and then perform another gesture, or interact with a “share” button, and be presented with a user interface such as is shown in FIG. 5. At the top of FIG. 5 is a share bar, and one of the photos 505 in the set shown in the share bar may be selected, as indicated by the frame around the edges of the photograph. The selected photo is also shown in the main window 518, and if desired can be shared with one or more contacts of the user to create a room or add to a room.
  • FIG. 6 shows a schematic illustration of a “Rooms” user interface displaying various contacts of the user with whom a selected content item may be shared in accordance with various embodiments of the present invention. This user interface may naturally follow that of FIG. 4, for example, or that of FIG. 5, for example, after a user has selected several content items for sharing. The user interface of FIG. 6 continues with the example of FIG. 4, and thus presents the six photographs of collection 415 (“Venice, Italy Aug. 13, 2013”) at 610 for sharing with one or more of the contacts listed 630, or a new contact to be entered at 620. In this example the contact list includes the name of the contact, and, as shown, their profile picture.
  • FIG. 7 shows the schematic illustration of the “Rooms” user interface of FIG. 6 after the user has selected two contacts with whom to share the selected content item, “Kaleigh Curie” and “Keegan Kurs.” This selection may be made by checking each of these contacts, at 735 and 740, and thus their names appear in the “To:” line 720. Persons of ordinary skill in the art will recognize that various symbols and means of indicating a selection of a “share” may be used, and the aforementioned is merely exemplary.
  • In response to the selection of “sharees” as shown in FIG. 7, FIG. 8 shows the schematic illustration of a follow-up user interface to that of FIG. 7, within the newly created “Room” known as “Kayleigh and Keegan.” The name of the new room may be displayed as the user interface title or caption. The user may be informed in informational bar 815 that six content items were shared to this room from the collection known as “Venice Aug. 13, 2013,” and the user may be further prompted to add a message to go with the shared photos, if desired, in accordance with various embodiments. As seen in FIG. 8, the profile picture of the user 816 (who has just done the sharing) may be shown within informational bar 815, and below that the first content item of the set that was shared, at 818. At the bottom of the user interface, a virtual keyboard 830 may be displayed to facilitate the user entering an optional message. At the top may be a title bar including active buttons “Cancel” and “Done,” which may be used to either cancel, or indicate that the message is now complete, at which point (in either case) virtual keyboard 830 may be removed.
  • FIG. 9 shows the situation where the user did in fact enter a message when prompted, as shown in FIG. 8. The message is shown in informational bar 915, and reads “Check out these photos from Venice that I took last week. So glad ya'll were there!”. The user's profile picture is shown at 913 so it is clear who the system understands to be, and will identify to the room, as the “sharer.” This is a typical example of the benefit of rooms, where three people shared a common vacation or trip to a given venue, and one or more of them took photographs and/or video. After the trip is over, there may be a desire to share these photographs and/or videos with each other, and to be able to return repeatedly to the “sharing space” to view them, show them to other friends, discuss or comment upon them, etc. At the bottom of the user interface of FIG. 9, the user has available two active buttons, 960 to send the message, akin to a “send” button in an email client, and 950, an “Add Photos” button, which allows the user to add additional photos to this room.
  • FIG. 10 shows a schematic illustration of a “Rooms” user interface, here the “Room” known as “Kayleigh and Keegan”, displaying the members of the room at 1015, listed by name and profile picture, in accordance with various embodiments.
  • FIG. 11 shows a schematic illustration of a general “Rooms” user interface, where a user has selected a content item and may desire to share it with one of his or her rooms. Continuing with the example of FIGS. 2-10, the exemplary user has selected the first photograph from collection 220 from FIG. 2, shown at 218, for sharing with a room. Thus, a low-resolution version of that image may be shown in informational area 1115, with a “Write a message” prompt. At 1130 the available rooms to which the image could be added are listed, and at 1120 is a button “Create New Room” facilitating the creation of a new room, if desired. The available rooms listed at 1130, when involving multiple members, display a composite profile picture for the room, as is seen, for example, in the room “Adam, Yi and 3 others.” Here, for example, the profile picture contains the users “Adam” and “Yi” only. This is because the room was originally created by users “Adam” and “Yi”, and subsequently three other users were added. In this exemplary embodiment, once a room profile picture is created, it remains even if additional users are added later. In other exemplary embodiments, this need not be the case, and the profile picture may dynamically morph as members are added or leave a given room. FIGS. 12 and 13 depict two variants of exemplary screen shots of user interfaces as they may really appear, so that the detail and real world “look and feel” may be appreciated.
  • FIGS. 12 and 13 show exemplary screen shots of a “Rooms” user interface according to some embodiments, as may be actually displayed on, for example, a smartphone. The two figures are variants of the identical screen, the only difference being how the information at the top of the interface is displayed. Two of the listed rooms have multiple members (i.e., “Yi, Soleio” and “Taylor, Anna+3”), and thus illustrate the composite profile picture well. Even at this small size, there may be considerable detail in the profile picture of each room, and this may, in some embodiments, enhance the personal felling a user has when interacting with a room. Conventionally, users of content management systems have a sense of interacting with the system. Users of a rooms application or functionality have a sense of interacting with their friends.
  • FIG. 14 shows an illustrative flowchart of a process for creating and providing rooms in accordance with various embodiments of the present invention. The process of FIG. 14 may run on a user device, for example, and may communicate with a server of a content management system, where global data and data identifiers are stored. With reference to FIG. 14, following start, at 1410 the process may receive a user request to share a first photo or video with one or more persons. As noted above, “persons” may, depending upon the embodiment, include registered users of the content management system, or other parties as well. Upon receipt of the request, at 1420 the process may create a room and assign a room identifier.
  • It is noted at this juncture that room identifiers as well as content item identifiers may be local, i.e., only known and referenced on a user device, or may be global, and thus known and used on the content management system server as well as on the user device. The implications of which type of identifier is created thus depend upon the connectivity then prevailing between the user device and the server. In one embodiment, a local identifier is always first assigned by a client application running on the user device, and an essentially simultaneous request for a global identifier sent to the server. The local identifier is then replaced by the global identifier as soon as it is received. Under full connectivity, the local identifier thus has a very short lifespan, and essentially all interactivity on the user device references the global identifier for the room or any content item in the room.
  • Under more intermittent connectivity, numerous operations on the user device may occur (e.g., shares, likes, comments to, etc.) referencing the local identifier until the global identifier becomes known, and is then used to replace every instance of the local identifier in a process or queued instruction or task. For the purposes of FIG. 14 either type of identifier may be used, it being assumed that ultimately all local identifiers are short-lived and replaced by global identifiers.
  • Continuing with reference to FIG. 14, at 1430, the photo or video which was the subject of the share request at 1410 may be copied to the newly created room, by storing it in a rooms database, thus locking it from further modification by its sharer, and associating it in the rooms database with the room identifier. The rooms database may be thought of as a basic data structure which a rooms application draws from when displaying various rooms to each member. It may be logically conceived of as a database with a number of records, each record being a room. However, in reality, a content item would normally only be stored once in the rooms database, and if it was shared to many rooms, the record of each room would contain a reference to the single content item.
  • It is understood that a content item stored in a user's account on a content management system is readily modifiable, and even subject to deletion by that user. For that reason, in order to “freeze” or “lock” such a content item once added to a room, a second database, different than that which, for example, serves the standard user accounts on the content management system, the rooms database, may be used. Any content item, once added to the rooms database, is no longer under the control of the user that shared it, or added it to a room.
  • At 1440 the newly created room may be associated with each of the members, by associating it with the accounts of the creator and the original sharees. Once this is accomplished, the room and its then contents may be displayed on the home page (or root directory) of each member, in similar fashion to the rooms shown in FIGS. 3 and 6, for example. This may be implemented in various ways. For example, within the rooms database a data structure for each room may be created, with references to every content item—also stored in the rooms database—associated with that room. Additionally stored in the room data structure may be the identification numbers of each member, and the icon format to be displayed on each member's account, depicting the room, in the various possible formats as described above. At 1450, upon receipt of additional content added to a room, the content may be stored in the rooms database, and a notification sent to all members of the room, for example. As noted above, in certain embodiments notifications of room activity may be sent to other persons as well, including users of the content management system and even non-registered users, for various purposes.
  • Maintaining Full Functionality on User Device Regardless of Connectivity
  • As noted above, in various exemplary embodiments of the present invention, rooms may be ultimately managed from a server of a content management system. However, as further noted, in such exemplary embodiments a client application of the content management system runs on a user device, which is in communication with the server over a data communications network. While it is highly desirable for the user of the user device to be able to experience a seamless response of the system to (i) the creation of rooms, (ii) the addition of photos or messages to an existing room, (iii) the downloading of content from a room to a personal account within the content management system, and (iv) other responses to his or her interactions with the application, this is not always possible. This is due to the fact that while the connectivity on a user device between the user interface and the underlying client software is permanent, the connection between the underlying client software and the remote server may often be intermittent.
  • In some embodiments, a room may be managed with reference to a unique index number or identifier assigned or associated with the room. In standard content management systems each user may be assigned a unique identifier, and all content and interactions of that user utilize the unique identifier to allow the content management system to properly store content items in his or her account, as well as store and implement various supported interactions.
  • Whether a user creates a room by initiating a share, or adds content to a room, to the server the operations may appear equivalent, except that in the latter case a Room ID may already exist while in the former case there may be no Room ID when the share is made. When a user first creates a room, a request for a Room ID is sent from the underlying client software over the data network to the server of the content management system. If the client application has to wait until the Room ID is in turn received back from the server, it cannot create the room, and thus cannot show the content within the room, until the Room ID is received. This may likely cause wait states and latency if the connectivity between client application and server is intermittent. In order to create the experience on the user device of full local functionality, the fundamental problem that must be solved is how to prevent a weak or intermittent data connection from interfering with what the user is actually seeing. So once the user, via the user interface, injects requests, and queues tasks, within the underlying software, to preserve local functionality to the extent possible, these actions must be reflected back into the user interface even if the server has not acknowledged the actions or fulfilled or processed the requests.
  • For example, a user, while offline, may create a room. The user may take multiple photos, click share, add a person, which may send a message to the underlying software to create a room. At that point the client software may attempt tell the user interface that there is a new room created, and while it does that, it will also in parallel tell the server that a new room has been created. However, the server might not be accessible at the time. Nonetheless, if in such a scenario the user adds a comment to a room, it may be necessary to show the user the comment in that room even if the request has not yet been sent to, or has not yet been processed on, the server.
  • Thus, even if connectivity is still intermittent or weak, in exemplary embodiments of the present invention the user may nonetheless have a smooth and nearly seamless local experience. In such exemplary embodiments it can be guaranteed that creating a room will always succeed. In such embodiments, although at some point the client application is going to send the “create room and assign Room ID” message to the server, what it may do in the meantime is simulate the new post. For example, the client software creates a local ID and a new post table (a table that manages which posts are in a room, which rooms there are, etc.). The client software creates these results locally, as if the new room existed globally, and as if the content was really posted to a room. Once the server responds, in order to maintain seamless interaction on each user device, the actual (global) Room ID must be associated with the local room ID, and the local room ID replaced by the actual (global) room ID in such a way so as not to execute any local action twice, or not at all. Thus, if a local room ID is included in a queued instruction, the switch of IDs must occur either while the instruction is in a queue, but not yet executed, or after execution, but not during execution, which may create an ambiguity. For example, assume a user takes some photos with a smartphone on which she also has a rooms application running She uploads the photos to her content management account, and shares them with her sisters—but does not add them to the room that she and her sisters have. Assuming that in this embodiment multiple rooms are allowed between the same audience, this new share may create a new room. Assume further that, throughout this process, her smartphone is not connected to the content management system's server, due to network issues. Because the photos have not been uploaded to the server, but were added to her account locally, and then added to a room locally, these photos and the new room all have only local IDs. The tasks of requesting IDs for each of these items and the room, and the task of adding the items to the room are thus queued, and executed locally. If connectivity resumes to the server while some of these instructions are in the process of being implemented, it is necessary to manage the replacement of local IDs with the actual (global) IDs so that no task is dropped, and no task is performed twice, once referencing the local ID and a second time referencing the actual ID.
  • In this context, an interesting case arises where two offline users take related or connected actions. Since rooms are defined by the members in the room chosen by the “sharer,” it is possible that two users A and B are both on their respective smartphones, and that they both share photos with each other, while both are also offline. On each user's smartphone it will thus appears as if that user created the room “A and B,” and shared content with the other. Then, after connectivity returns, the messages are going to race each other to the server and there is no guarantee which will get there first. Thus, in such exemplary embodiments, a mechanism may be put in place to resolve the conflicting local actions when the global action is ultimately implemented at the server. For example, using timestamps in the event of a race condition, the first action to be taken by a user no matter when they may be received at the server may control, or the first action received at the server may control. As another example, more trivial resolutions based on details of the two users, such as age of registered account with the content management system, standard or premium membership, level of activity, zip code, alphabetic order of last names, etc. The problem may be further exacerbated with more than two users. For example, if there are four users, (e.g., A, B, C and D), and they each share photos with the other three, one room is created, but each believes he has created it. In embodiments where any member can change the name of a room, or where the initial creator names the room, the server will have a 4-way race condition.
  • In the event of such a race condition, upon ultimate resolution at the server, notifications may be automatically sent to each of the members in the room, via one or more of the communications channels described above, explaining the race condition and how it was resolved, and therefore why the remaining members, besides the one who won the race, see a different name and a different order of posts to the room than they had each originally seen on their user devices. Such notifications may contain a link to the room as ultimately implemented on the server so the users may see its final form and state.
  • FIG. 15 shows an exemplary system in accordance with various embodiments. In some embodiments, system 1500 of FIG. 15 may be substantially similar to system 100 of FIG. 1, with the exception that the former may present elements of system 100 at a more granular level (e.g., modules, applications, etc.).
  • In some embodiments, user devices 102 may be used to create, access, modify, and manage content items, such as content items 110 a and 110 b (collectively 110), stored locally within content item system 108 a and 108 b (collectively systems 108) on user device 102 and/or stored remotely on content management system 104 (e.g., within data store 118). For example, user device 102 a may access content items 110 b stored remotely with data store 118 of content management system 104 and may, or may not, store content item 110 b locally within content item system 108 a on user device 102 a. Continuing with the example, user device 102 a may temporarily store content item 110 b within a cache locally on user device 102 a, make revisions to content item 110 b, and the revisions to content item 110 b may be communicated and stored in data store 118 of content management system 104. Optionally, a local copy of content item 110 a may be stored on user device 102 a. In some embodiments, data store 118 may include one or more collections 132 of content items. For example, collections 132 may include one or more content items having similar properties (e.g., metadata) and/or including similar content.
  • In some embodiments, user devices 102 may include camera 138 (e.g., 138 a and 138 b) to capture and record digital images and/or videos. User devices 102 may capture, record, and/or store content items, such as images, using camera 138. For example, camera 138 may capture and record images and store metadata with the images. Metadata may include, but is not limited to, the following: creation time timestamp, geolocation, orientation, rotation, title, and/or any other attributes or data relevant to the captured image. Metadata values may be stored as attribute 112 name-value pairs, tag-value pairs, and/or any other method, or any combination thereof, to associate the metadata with the content item and easily identify the type of metadata. In some embodiments, attributes 112 may be tag-value pairs defined by a particular standard, including, but not limited to, Exchangeable Image File Format (“Exif”), JPEG File Interchange Format (Jfif), and/or any other standard.
  • In some embodiments, user devices 102 may include time normalization module 146, and content management system 104 may include time normalization module 148. Time normalization module 146 (e.g., 146 a and 146 b) may be used to normalize dates and times stored with a content item. Time normalization module 146, counterpart time normalization module 148, and/or any combination thereof, may be used to normalize dates and times stored for content items. The normalized times and dates may be used to sort, group, perform comparisons, perform basic math, and/or cluster content items.
  • In some embodiments, user devices 102 may include organization module 136, and content management system 104 may include organization module 140. Organization module 136 (e.g., 136 a and 136 b) may be used to organize content items into clusters or collections of content items, organize content items to provide samplings of content items for display within user interfaces, and/or retrieve organized content items for presentation. Organization module 136 may utilize any clustering algorithm. Organization module 136 may be used to identify similar content items for clusters in order to organize content items for presentation within user interfaces on user devices 102 and content management system 104. Similarity rules may be defined to create one or more numeric representations embodying information on similarities between each of the content items in accordance with various similarity rules. Organization module 136 may use numeric representations as a reference for similarity between content items in order to cluster the content items.
  • In some embodiments, content items may be organized into clusters to aid with retrieval of similar content items in response to search requests. For example, organization module 136 a may identify that two images are similar and may group the images together in a cluster. Organization module 136 a may process content items to determine clusters independently and/or in conjunction with counterpart organization module (e.g., 140 and/or 136 b). In other embodiments, organization module 136 a may only provide clusters identified with counterpart organization modules (e.g., 140 and/or 136 b) for presentation. Continuing with this example, processing of content items to determine clusters may be an iterative process that may be executed upon receipt of new content items and/or new similarity rules.
  • In some embodiments, user device 102 a may include classification module 150 a, while user device 102 b may include classification module 150 b (collectively 150), which may be used independently, in combination with classification module 152 include on content management system 104, and/or any combination thereof to classify content items, rectify content items, and/or classify images. For example, the classification modules 150 and/or 152 may be used to determine if an image includes a document, and if there so, determine a type of document stored therein. Content item rectification may be performed to correct, perform further transformations, and/or crop content items to improve the display of the content items (e.g., correct the display of a document within an image).
  • In some embodiments, user device 102 a may include search module 142 a, while user device 102 b may include search module 142 b, which collectively may be referred to as search modules 142. Content management system 104 may also be provided with counterpart search module 144. Each of search modules 142 and 144 may be capable of supporting searches for content items located on both user devices 102 and/or content management system 104. A search request may be received by search module 142 and/or 144 that requests one or more content items. In some embodiments, the search may be handled by searching metadata and/or attributes assigned to content items during the provision of management services. For example, cluster markers stored with content items may be used to find content items by date. In this particular scenario, cluster markers may indicate an approximate time, or average time, for the content items stored with the cluster marker, and the marker may be used to speed the search and/or return the search results with the contents of the cluster with particular cluster markers.
  • Content items 110 managed by content management system 104 may be stored locally within content item system 108 of respective user devices 102 and/or stored remotely within data store 118 of content management system 104 (e.g., content items 134 in data store 118). Content management system 104 may provide synchronization of content items managed thereon. Attributes 112 a and 112 b (collectively 112) or other metadata may also be stored with content items 110. For example, a particular attribute may be stored with a content item to track content items locally stored on user devices 102 that are managed and/or synchronized by content management system 104. In some embodiments, attributes 112 may be implemented using extended attributes, resource forks, or any other implementation that allows for storing metadata with a content item that is not interpreted by a content item system, such as content item system 108. In particular, attributes 112 a and 112 b may be content identifiers for content items. For example, the content identifier may be a unique or nearly unique identifier (e.g., number or string) that identifies the content item. By storing a content identifier with the content item, the content item may be tracked. For example, if a user moves the content item to another location within content item system 108 hierarchy and/or modifies the content item, then the content item may still be identified within content item system 108 of user device 102. Any changes or modifications to the content item identified with the content identifier may be uploaded or provided for synchronization and/or version control services provided by content management system 104.
  • A stand-alone content management application 114 a and 114 b (collectively 114), client application, and/or third-party application may be implemented on user devices 102 a and 102 b, respectively, to provide a user interface to a user for interacting with content management system 104. Content management application 114 may expose the functionality provided with content management interface module 154 and accessible modules for user device 102. Web browser 116 a and 116 b (collectively 116) may be used to display a web page front end for a client application that may provide content management 104 functionality exposed/provided with content management interface module 154.
  • Content management system 104 may allow a user with an authenticated account to store content, as well as perform management tasks, such as retrieve, modify, browse, synchronize, and/or share content with other accounts. Various embodiments of content management system 104 may have elements including, but not limited to, content management interface module 154, account management module 120, synchronization module 122, collections module 124, sharing module 126, file system abstraction 128, data store 118, and organization module 140. Content management interface module 154 may expose the server-side or back end functionality/capabilities of content management system 104. For example, a counter-part user interface (e.g., stand-alone application, client application, etc.) on user devices 102 may be implemented using content management interface module 154 to allow a user to perform functions offered by modules of content management system 104.
  • The user interface displayed on user device 102 may be used to create an account for a user and/or authenticate the user to use the account using account management module 120. Account management module 120 may provide the functionality for authenticating use of an account by a user and/or user device 102 with username/password, device identifiers, and/or any other authentication method. Account information 130 may be maintained in data store 118 for accounts. Account information may include, but is not limited to, personal information (e.g., an email address or username), account management information (e.g., account type, such as “free” or “paid”), usage information, (e.g., content item edit history), maximum storage space authorized, storage space used, content storage locations, security settings, personal configuration settings, content sharing data, etc. An amount of storage space on content management system 104 may be reserved, allotted, allocated, stored, and/or may be accessed with an authenticated account. The account may be used to access content items 134 and/or content items 110 within data store 118 for the account, and/or content items 134 and/or content items 110 made accessible to the account that are shared from another account. In some embodiments, account management module 120 may interact with any number of other modules of content management system 104.
  • An account on content management system 104 may, in some embodiments, be used to store content such as documents, text items, audio items, video items, etc., from one or more user devices 102 authorized by the account. The content may also include collections of various types of content with different behaviors, or other mechanisms of grouping content items together. For example, an account may include a public collection that may be accessible to any user. In some embodiments, the public collection may be assigned a web-accessible address. A link to the web-accessible address may be used to access the contents of the public folder. In another example, an account may include a photos collection that may store photos and/or videos, and may provide specific attributes and actions tailored for photos and/or videos. The account may also include an audio collection that provides the ability to play back audio items and perform other audio related actions. The account may still further include a special purpose collection. An account may also include shared collections or group collections that may be linked with and available to multiple user accounts. In some embodiments, access to a shared collection may differ for different users that may be capable of accessing the shared collection.
  • Content items 110 and/or content items 134 may be stored in data store 118. Data store 118 may, in some embodiments, be a storage device, multiple storage devices, or a server. Alternatively, data store 118 may be cloud storage provider or network storage accessible via one or more communications networks. Content management system 104 may hide the complexity and details from user devices 102 by using content item system abstraction 128 (e.g., a content item system database abstraction layer) so that user devices 102 do not need to know exactly where the content items are being stored by content management system 104. Embodiments may store the content items in the same collections hierarchy as they appear on user device 102. Alternatively, content management system 104 may store the content items in various orders, arrangements, and/or hierarchies. Content management system 140 may store the content items in a network accessible storage (SAN) device, in a redundant array of inexpensive disks (RAID), etc. Content management system 104 may store content items using one or more partition types, such as FAT, FAT32, NTFS, EXT2, EXT3, EXT4, ReiserFS, BTRFS, and so forth.
  • Data store 118 may also store metadata describing content items, content item types, and the relationship of content items to various accounts, folders, collections, or groups. The metadata for a content item may be stored as part of the content item and/or may be stored separately. Metadata may be store in an object-oriented database, a relational database, a content item system, or any other collection of data. In some embodiments, each content item stored in data store 118 may be assigned a system-wide unique identifier.
  • Data store 118 may, in some embodiments, decrease the amount of storage space required by identifying duplicate content items or duplicate chunks of content items. Instead of storing multiple copies, data store 118 may store a single copy of content item 134 and then use a pointer or other mechanism to link the duplicates to the single copy. Similarly, data store 118 may store content items 134 more efficiently, as well as provide the ability to undo operations, by using a content item version control that tracks changes to content items, different versions of content items (including diverging version trees), and a change history. The change history may include a set of changes that, when applied to the original content item version, produce the changed content item version.
  • Content management system 104 may be configured to support automatic synchronization of content from one or more user devices 102. The synchronization may be platform independent. That is, the content may be synchronized across multiple user devices 102 of varying type, capabilities, operating systems, etc. For example, user device 102 a may include client software, which synchronizes, via synchronization module 122 at content management system 104, content in content item system 108 of user devices 102 with the content in an associated user account. In some cases, the client software may synchronize any changes to content in a designated collection and its sub-collection, such as new, deleted, modified, copied, or moved content items or folders. In one example of client software that integrates with an existing content management application, a user may manipulate content directly in a local folder, while a background process monitors the local content item for changes and synchronizes those changes to content management system 104. In some embodiments, a background process may identify content that has been updated at content management system 104 and synchronize those changes to the local collection. The client software may provide notifications of synchronization operations, and may provide indications of content statuses directly within the content management application. In some embodiments, user device 102 may not have a network connection available. In this scenario, the client software may monitor the linked collection for content item changes and queue those changes for later synchronization to content management system 104 when a network connection is available. Similarly, a user may manually stop or pause synchronization with content management system 104.
  • A user may also view or manipulate content via a web interface generated and served by content management interface module 154. For example, the user may navigate in a web browser to a web address provided by content management system 104. Changes or updates to content in data store 118 made through the web interface, such as uploading a new version of a content item, may be propagated back to other user devices 102 associated with the user's account. For example, multiple user devices 102, each with their own client software, may be associated with a single account, and content items in the account may be synchronized between each of user devices 102.
  • Content management system 104 may include sharing module 126 for managing sharing content and/or collections of content publicly or privately. Sharing module 126 may manage sharing independently or in conjunction with counterpart sharing module 152 a, located on user device 102 a, and sharing module 152 b located on user device 102 b (collectively sharing modules 152). Sharing content publicly may include making the content item and/or the collection accessible from any device in network communication with content management system 104. Sharing content privately may include linking a content item and/or a collection in data store 118 with two or more user accounts so that each user account has access to the content item. The sharing may be performed in a platform independent manner. That is, the content may be shared across multiple user devices 102 of varying type, capabilities, operating systems, etc. For example, one or more share links may be provided to a user, or a contact of a user, to access a shared content item. The content may also be shared across varying types of user accounts. In particular, the sharing module 126 may be used with collections module 124 to allow sharing of a virtual collection with another user or user account. A virtual collection may be a collection of content identifiers that may be stored in various locations within content item systems 108 of user device 102 and/or stored remotely at content management system 104.
  • In some embodiments, the virtual collection for an account with a content management system may correspond to a collection of one or more identifiers for content items (e.g., identifying content items in storage). The virtual collection is created with collections module 124 by selecting from existing content items stored and/or managed by content management system and associating the existing content items within data storage (e.g., associating storage locations, content identifiers, or addresses of stored content items) with the virtual collection. By associating existing content items with the virtual collection, a content item may be designated as part of the virtual collection without having to store (e.g., copy and paste the content item to a directory) the content item in another location within data storage in order to place the content item in the collection.
  • In some embodiments, content management system 104 may be configured to maintain a content directory or a database table/entity for content items where each entry or row identifies the location of each content item in data store 118. In some embodiments, a unique or a nearly unique content identifier may be stored for each content item stored in data store 118.
  • In some embodiments, metadata may be stored for each content item. For example, metadata may include a content path that may be used to identify the content item. The content path may include the name of the content item and a content item hierarchy associated with the content item (e.g., the path for storage locally within a user device 102). Content management system 104 may use the content path to present the content items in the appropriate content item hierarchy in a user interface with a traditional hierarchy view. A content pointer that identifies the location of the content item in data store 118 may also be stored with the content identifier. For example, the content pointer may include the exact storage address of the content item in memory. In some embodiments, the content pointer may point to multiple locations, each of which contains a portion of the content item.
  • In addition to a content path and content pointer, a content item entry/database table row in a content item database entity may also include a user account identifier that identifies the user account that has access to the content item. In some embodiments, multiple user account identifiers may be associated with a single content entry indicating that the content item has shared access by the multiple user accounts.
  • To share a content item privately, sharing module 126 may be configured to add a user account identifier to the content entry or database table row associated with the content item, thus granting the added user account access to the content item. Sharing module 126 may also be configured to remove user account identifiers from a content entry or database table rows to restrict a user account's access to the content item. The sharing module 126 may also be used to add and remove user account identifiers to a database table for virtual collections.
  • To share content publicly, sharing module 126 may be configured to generate a custom network address, such as a uniform resource locator (“URL”), which allows any web browser to access the content in content management system 104 without any authentication. To accomplish this, sharing module 126 may be configured to include content identification data in the generated URL, which may later be used to properly identify and return the requested content item. For example, sharing module 126 may be configured to include the user account identifier and the content path in the generated URL. Upon selection of the URL, the content identification data included in the URL may be sent to content management system 104 which may use the received content identification data to identify the appropriate content entry and return the content item associated with the content entry.
  • To share a virtual collection publicly, sharing module 126 may be configured to generate a custom network address, such as a uniform resource locator (URL), which allows any web browser to access the content in content management system 100 without any authentication. To accomplish this, sharing module 126 may be configured to include collection identification data in the generated URL, which may later be used to properly identify and return the requested content item. For example, sharing module 126 may be configured to include the user account identifier and the collection identifier in the generated URL. Upon selection of the URL, the content identification data included in the URL may be sent to content management system 104 which may use the received content identification data to identify the appropriate content entry or database row and return the content item associated with the content entry or database TOW.
  • In addition to generating the URL, sharing module 126 may also be configured to record that a URL to the content item has been created. In some embodiments, the content entry associated with a content item may include a URL flag indicating whether a URL to the content item has been created. For example, the URL flag may be a Boolean value initially set to 0 or “false” to indicate that a URL to the content item has not been created. Sharing module 126 may be configured to change the value of the flag to 1 or “true” after generating a URL to the content item.
  • In some embodiments, sharing module 126 may also be configured to deactivate a generated URL. For example, each content entry may also include a URL active flag indicating whether the content should be returned in response to a request from the generated URL. For example, sharing module 126 may be configured to only return a content item requested by a generated link if the URL active flag is set to 1 or true. Changing the value of the URL active flag or Boolean value may easily restrict access to a content item or a collection for which a URL has been generated. This may allow a user to restrict access to the shared content item without having to move the content item or delete the generated URL. Likewise, sharing module 126 may reactivate the URL by again changing the value of the URL active flag to 1 or true. A user may thus easily restore access to the content item without the need to generate a new URL.
  • Exemplary Systems
  • In exemplary embodiments of the present invention, any suitable programming language may be used to implement the routines of particular embodiments including C, C++, Java, JavaScript, Python, Ruby, CoffeeScript, assembly language, etc. Different programming techniques may be employed such as procedural or object oriented. The routines may execute on a single processing device or multiple processors. Although the steps, operations, or computations may be presented in a specific order, this order may be changed in different particular embodiments. In some particular embodiments, multiple steps shown as sequential in this specification may be performed at the same time
  • Particular embodiments may be implemented in a computer-readable storage device or non-transitory computer readable medium for use by or in connection with the instruction execution system, apparatus, system, or device. Particular embodiments may be implemented in the form of control logic in software or hardware or a combination of both. The control logic, when executed by one or more processors, may be operable to perform that which is described in particular embodiments.
  • Particular embodiments may be implemented by using a programmed general purpose digital computer, by using application specific integrated circuits, programmable logic devices, field programmable gate arrays, optical, chemical, biological, quantum or nanoengineered systems, components and mechanisms may be used. In general, the functions of particular embodiments may be achieved by any means as is known in the art. Distributed, networked systems, components, and/or circuits may be used. Communication, or transfer, of data may be wired, wireless, or by any other means.
  • It will also be appreciated that one or more of the elements depicted in the drawings/figures may also be implemented in a more separated or integrated manner, or even removed or rendered as inoperable in certain cases, as is useful in accordance with a particular application. It is also within the spirit and scope to implement a program or code that may be stored in a machine-readable medium, such as a storage device, to permit a computer to perform any of the methods described above.
  • As used in the description herein and throughout the claims that follow, “a”, “an”, and “the” includes plural references unless the context clearly dictates otherwise. Also, as used in the description herein and throughout the claims that follow, the meaning of “in” includes “in” and “on” unless the context clearly dictates otherwise.
  • While there have been described methods for providing shared virtual spaces, it is to be understood that many changes may be made therein without departing from the spirit and scope of the invention. Insubstantial changes from the claimed subject matter as viewed by a person with ordinary skill in the art, no known or later devised, are expressly contemplated as being equivalently within the scope of the claims. Therefore, obvious substitutions now or later known to one with ordinary skill in the art are defined to be within the scope of the defined elements. The described embodiments of the invention are presented for the purpose of illustration and not of limitation.

Claims (20)

What is claimed:
1. A method comprising:
receiving a share request to share a content item from a sharer to at least one sharee;
creating a first virtual space on the sharer's user account and each of the at least one sharee's user accounts on the content management system;
assigning a first identifier to the content item, wherein the first identifier associates the sharer and each sharee as members of the first shared virtual space;
preserving the first shared virtual space in a second shared virtual space stored on the content management system.
2. The method of claim 1, further comprising:
copying, in response to the share request, the content item to a data store associated with shared virtual spaces;
3. The method of claim 1, further comprising:
assigning a first shared virtual space identifier to the first shared virtual space; and
assigning a second shared virtual space identifier to the second shared virtual space.
4. The method of claim 1, wherein the content item is stored within the second shared virtual space for a predefined period of time.
5. The method of claim 1, wherein the content item is uploaded to the sharer's user account prior to receipt of the share request.
6. The method of claim 1, wherein the content item is stored in the first shared virtual space for a defined period of time.
7. The method of claim 6, wherein the defined period of time is one or more of: set by the sharer, set by the content management system, or selected by the sharer and each share of the first virtual space.
8. The method of claim 6, wherein the content item is not able to be modified throughout the duration of the defined period of time.
9. The method of claim 6, wherein the content item is not capable of being modified except for being added to the second shared virtual space.
10. The method of claim 1, further comprising:
receiving at least one additional content item from one or more of the sharer or the at least one share; and
copying the at least one additional content item to the first and second virtual spaces.
11. The method of claim 1, further comprising:
merging the second shared virtual space with a third shared virtual space already in existence on the content management system; and
creating a fourth shared virtual space in response to merging, the fourth shared virtual space comprising each member of the second shared virtual space and the third shared virtual space.
12. The method of claim 1, further comprising:
performing a share between all members of the second shared virtual space, wherein the share does not add any content items to the second shared virtual space; and
creating a third shared virtual space corresponding to the performed share, wherein the third shared virtual space is stored on the sharer's and each of the sharee's user accounts on the content management system.
13. The method of claim 12, further comprising:
assigning a third shared virtual space identifier to the third shared virtual space.
14. The method of claim 1, wherein the first identifier comprises a unique string of characters corresponding to a time of the share request.
15. The method of claim 1, wherein:
a second identifier is created within the second shared virtual space for a copy of the content item; and
any user interactions with the copy of the content item on the second shared virtual space are synchronized with the first identifier in the first shared virtual space.
16. A non-transitory computer readable medium containing instructions that, when executed by at least one processor of a user device, cause the user device to:
receive, within a user interface displayed on the user device, a selection of at least one content item from a user,
create, on the user device, a shared virtual space to store the at least one content item;
send data to a content management system capable to add the at least one content item a global version of the shared virtual space that can be synchronized with the shared virtual space; and
present locally on the user device the at least one content item within the shared virtual space, wherein the user is operable to interact with the at least one content item within the shared virtual space regardless of whether the shared virtual space and the global version of the shared virtual space have been synchronized.
17. The non-transitory computer readable medium of claim 16, wherein the at least one content item is one or more of:
stored on the user device;
stored within a user account on the content management system corresponding to the user; or
stored within a social media network.
18. The non-transitory computer readable medium of claim 16, wherein after the at least one content item has been added to the shared virtual space, the at least one content item becomes locked.
19. The non-transitory computer readable medium of claim 16, wherein when the at least one content item is locked, it cannot be modified by the user.
20. The non-transitory computer readable medium of claim 16, when executed by the at least one processor of the user device, further causes the user device to:
download, automatically, any content items shared by members of the shared virtual space and the global version of the shared virtual space.
US14/247,494 2013-12-24 2014-04-08 Systems and methods for preserving shared virtual spaces on a content management system Abandoned US20150180980A1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US14/247,494 US20150180980A1 (en) 2013-12-24 2014-04-08 Systems and methods for preserving shared virtual spaces on a content management system

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201361920730P 2013-12-24 2013-12-24
US201461945814P 2014-02-27 2014-02-27
US14/247,494 US20150180980A1 (en) 2013-12-24 2014-04-08 Systems and methods for preserving shared virtual spaces on a content management system

Publications (1)

Publication Number Publication Date
US20150180980A1 true US20150180980A1 (en) 2015-06-25

Family

ID=53401413

Family Applications (3)

Application Number Title Priority Date Filing Date
US14/247,853 Active 2034-04-29 US9423922B2 (en) 2013-12-24 2014-04-08 Systems and methods for creating shared virtual spaces
US14/247,494 Abandoned US20150180980A1 (en) 2013-12-24 2014-04-08 Systems and methods for preserving shared virtual spaces on a content management system
US15/207,244 Active 2034-12-24 US10200421B2 (en) 2013-12-24 2016-07-11 Systems and methods for creating shared virtual spaces

Family Applications Before (1)

Application Number Title Priority Date Filing Date
US14/247,853 Active 2034-04-29 US9423922B2 (en) 2013-12-24 2014-04-08 Systems and methods for creating shared virtual spaces

Family Applications After (1)

Application Number Title Priority Date Filing Date
US15/207,244 Active 2034-12-24 US10200421B2 (en) 2013-12-24 2016-07-11 Systems and methods for creating shared virtual spaces

Country Status (5)

Country Link
US (3) US9423922B2 (en)
EP (1) EP3087485A1 (en)
JP (1) JP6311030B2 (en)
AU (1) AU2014370399B2 (en)
WO (1) WO2015099833A1 (en)

Cited By (42)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20170278267A1 (en) * 2015-08-20 2017-09-28 HuiZhou TLC Mobile Communication Co., Ltd. Picture information processing method and system based on mobile terminal
US20170302742A1 (en) * 2015-03-18 2017-10-19 Huawei Technologies Co., Ltd. Method and System for Creating Virtual Non-Volatile Storage Medium, and Management System
US20170318021A1 (en) * 2016-04-28 2017-11-02 Microsoft Technology Licensing, Llc Resource sharing and designation of permissions for other tenants and unregistered users of same tenant
US20180052587A1 (en) * 2016-08-19 2018-02-22 Dropbox, Inc. User interface for content sharing client in a desktop file system context
US10200421B2 (en) 2013-12-24 2019-02-05 Dropbox, Inc. Systems and methods for creating shared virtual spaces
US20190095054A1 (en) * 2017-09-27 2019-03-28 Salesforce.Com, Inc. Generating or updating cross-community streams
US10298547B2 (en) * 2014-11-14 2019-05-21 William J. Ziebell Systems, methods, and media for a cloud based social media network
US10333871B1 (en) * 2015-03-23 2019-06-25 Google Llc Logged-out conversation invitations
US10404639B2 (en) * 2016-02-19 2019-09-03 Samsung Electronics Co., Ltd. Method for sharing content group of electronic device and electronic device thereof
US20190339822A1 (en) * 2018-05-07 2019-11-07 Apple Inc. User interfaces for sharing contextually relevant media content
CN110456971A (en) * 2018-05-07 2019-11-15 苹果公司 For sharing the user interface of context-sensitive media content
US10732790B2 (en) 2010-01-06 2020-08-04 Apple Inc. Device, method, and graphical user interface for navigating and displaying content in context
US10802703B2 (en) 2015-03-08 2020-10-13 Apple Inc. Sharing user-configurable graphical constructs
US10873786B2 (en) 2016-06-12 2020-12-22 Apple Inc. Recording and broadcasting application visual output
US10877720B2 (en) 2015-06-07 2020-12-29 Apple Inc. Browser with docked tabs
US10891013B2 (en) 2016-06-12 2021-01-12 Apple Inc. User interfaces for retrieving contextually relevant media content
US10904426B2 (en) 2006-09-06 2021-01-26 Apple Inc. Portable electronic device for photo management
US10986169B2 (en) 2018-04-19 2021-04-20 Pinx, Inc. Systems, methods and media for a distributed social media network and system of record
US10984059B2 (en) * 2016-04-22 2021-04-20 Tencent Technology (Shenzhen) Company Limited Data retrieval method and system
US11019193B2 (en) 2015-02-02 2021-05-25 Apple Inc. Device, method, and graphical user interface for establishing a relationship and connection between two devices
US11042266B2 (en) 2019-05-06 2021-06-22 Apple Inc. Media browsing user interface with intelligently selected representative media items
US11048873B2 (en) 2015-09-15 2021-06-29 Apple Inc. Emoji and canned responses
CN113127909A (en) * 2021-04-30 2021-07-16 北京奇艺世纪科技有限公司 Feature data processing method and device, electronic equipment and storage medium
US11074223B2 (en) * 2018-03-26 2021-07-27 International Business Machines Corporation Orphaned content remediation
US11074408B2 (en) 2019-06-01 2021-07-27 Apple Inc. Mail application features
US11148007B2 (en) 2016-06-11 2021-10-19 Apple Inc. Activity and workout updates
US11194467B2 (en) 2019-06-01 2021-12-07 Apple Inc. Keyboard management user interfaces
US11310181B2 (en) * 2015-05-15 2022-04-19 Samsung Electronics Co., Ltd. User terminal apparatus, server, and control method thereof
US11334209B2 (en) 2016-06-12 2022-05-17 Apple Inc. User interfaces for retrieving contextually relevant media content
US11418929B2 (en) 2015-08-14 2022-08-16 Apple Inc. Easy location sharing
CN114915606A (en) * 2017-11-29 2022-08-16 斯纳普公司 Group stories in electronic messaging applications
US11430571B2 (en) 2014-05-30 2022-08-30 Apple Inc. Wellness aggregator
US11539831B2 (en) 2013-03-15 2022-12-27 Apple Inc. Providing remote interactions with host device using a wireless device
US20230216817A1 (en) * 2021-12-30 2023-07-06 Snap Inc. Providing permissions for accessing shared content collections
US20230214098A1 (en) * 2021-12-30 2023-07-06 Snap Inc. Providing shared content collections within a messaging system
US11711493B1 (en) 2021-03-04 2023-07-25 Meta Platforms, Inc. Systems and methods for ephemeral streaming spaces
US11838252B2 (en) 2017-08-08 2023-12-05 Snap Inc. Application-independent messaging system
US20230396569A1 (en) * 2022-06-02 2023-12-07 Snap Inc. External messaging function for an interaction system
US20240007594A1 (en) * 2020-11-26 2024-01-04 Anipen Inc. Method and system for supporting sharing of experiences between users, and non-transitory computer-readable recording medium
US11931625B2 (en) 2021-05-15 2024-03-19 Apple Inc. User interfaces for group workouts
US20240134501A1 (en) * 2021-12-30 2024-04-25 Beijing Zitiao Network Technology Co., Ltd. Prompt method and apparatus based on document sharing, device, and medium
WO2024113634A1 (en) * 2022-11-30 2024-06-06 腾讯科技(深圳)有限公司 Method and apparatus for recommending media sharing room, and electronic device, storage medium and program product

Families Citing this family (36)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11184448B2 (en) 2012-08-11 2021-11-23 Federico Fraccaroli Method, system and apparatus for interacting with a digital work
US10419556B2 (en) 2012-08-11 2019-09-17 Federico Fraccaroli Method, system and apparatus for interacting with a digital work that is performed in a predetermined location
US10126927B1 (en) 2013-03-15 2018-11-13 Study Social, Inc. Collaborative, social online education and whiteboard techniques
US10474407B2 (en) 2013-10-10 2019-11-12 Pushd, Inc. Digital picture frame with automated interactions with viewer and viewer devices
JP5783301B1 (en) * 2014-06-11 2015-09-24 富士ゼロックス株式会社 Communication terminal, communication system, and program
USD805102S1 (en) 2015-01-27 2017-12-12 Twitter, Inc. Media sharing device with graphical user interface
US20160321025A1 (en) * 2015-04-30 2016-11-03 Kabushiki Kaisha Toshiba Electronic apparatus and method
CN107710197B (en) * 2015-09-28 2021-08-17 谷歌有限责任公司 Sharing images and image albums over a communication network
US10319049B2 (en) * 2016-02-24 2019-06-11 Sony Interactive Entertainment LLC Re-sharing media content on a network
US20170329467A1 (en) * 2016-05-13 2017-11-16 Google Inc. Coalescing Notifications Associated with Interactive Digital Content
US10409463B2 (en) 2016-05-13 2019-09-10 Google Llc Forking digital content items between digital topical environments
US10516749B1 (en) 2016-10-07 2019-12-24 Snap Inc. Mobile device content navigation
US20180130159A1 (en) * 2016-11-10 2018-05-10 Wal-Mart Stores, Inc. Systems and methods for delivering products via autonomous ground vehicles to restricted areas designated by customers
US9961155B1 (en) 2016-12-01 2018-05-01 Dropbox, Inc. Sharing content via virtual spaces
US10705889B2 (en) 2016-12-27 2020-07-07 Dropbox, Inc. Kernel event triggers
JP6887816B2 (en) * 2017-01-31 2021-06-16 キヤノン株式会社 Image processing equipment, control methods, and programs
EP3568787B1 (en) 2017-05-17 2024-04-10 Google LLC Automatic image sharing with designated users over a communication network
US10740804B2 (en) 2017-07-28 2020-08-11 Magical Technologies, Llc Systems, methods and apparatuses of seamless integration of augmented, alternate, virtual, and/or mixed realities with physical realities for enhancement of web, mobile and/or other digital experiences
WO2019055703A2 (en) * 2017-09-13 2019-03-21 Magical Technologies, Llc Virtual billboarding, collaboration facilitation, and message objects to facilitate communications sessions in an augmented reality environment
US10331623B2 (en) 2017-10-16 2019-06-25 Dropbox, Inc. Workflow functions of content management system enforced by client device
US10140467B1 (en) 2017-10-16 2018-11-27 Dropbox, Inc. Workflow functions of content management system enforced by client device
WO2019079826A1 (en) 2017-10-22 2019-04-25 Magical Technologies, Llc Systems, methods and apparatuses of digital assistants in an augmented reality environment and local determination of virtual object placement and apparatuses of single or multi-directional lens as portals between a physical world and a digital world component of the augmented reality environment
CN108347628B (en) * 2018-01-10 2020-05-29 维沃移动通信有限公司 Method for prompting member activation, mobile terminal and server
US10904374B2 (en) 2018-01-24 2021-01-26 Magical Technologies, Llc Systems, methods and apparatuses to facilitate gradual or instantaneous adjustment in levels of perceptibility of virtual objects or reality object in a digital scene
US11398088B2 (en) 2018-01-30 2022-07-26 Magical Technologies, Llc Systems, methods and apparatuses to generate a fingerprint of a physical location for placement of virtual objects
JP6745301B2 (en) * 2018-07-25 2020-08-26 株式会社バーチャルキャスト Content distribution system, content distribution method, computer program
KR20200086856A (en) * 2019-01-10 2020-07-20 최재호 Apparatus and method of file sharing based on chat room
US11467656B2 (en) 2019-03-04 2022-10-11 Magical Technologies, Llc Virtual object control of a physical device and/or physical device control of a virtual object
US11461272B2 (en) * 2019-09-11 2022-10-04 Dropbox, Inc. Generating and modifying a collection content item for organizing and presenting content items
CN112862977A (en) * 2019-11-08 2021-05-28 华为技术有限公司 Management method, device and equipment of digital space
CN113114923B (en) * 2020-01-10 2022-11-25 三赢科技(深圳)有限公司 Panoramic camera
JP7102014B2 (en) * 2020-03-27 2022-07-19 株式会社コナミデジタルエンタテインメント Video distribution system, video distribution control method and computer program
US11822513B2 (en) 2020-09-18 2023-11-21 Dropbox, Inc. Work spaces including links to content items in their native storage location
KR102444942B1 (en) * 2020-11-09 2022-09-20 주식회사 카카오 Instant messaging server providing multiple types of chat rooms
CN113467674B (en) * 2021-05-31 2023-03-28 北京达佳互联信息技术有限公司 Virtual space operation method and device, electronic equipment and storage medium
CN118400742A (en) * 2021-09-15 2024-07-26 青岛海信移动通信技术有限公司 Data sharing method and terminal equipment

Citations (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020126159A1 (en) * 2001-03-07 2002-09-12 Maurizio Pilu Digital image viewing - I
US20060242238A1 (en) * 2005-04-26 2006-10-26 Issa Alfredo C Automatic creation of bidirectional online album links in a peer-to-peer photo sharing network
US8217952B2 (en) * 2008-11-26 2012-07-10 Novell, Inc. Techniques for caching images
US20120254116A1 (en) * 2011-03-31 2012-10-04 Microsoft Corporation Distributed File System
US20130091026A1 (en) * 2011-10-10 2013-04-11 Arcsoft, Inc. Photo Sharing with Digital Album
US20130332856A1 (en) * 2012-06-10 2013-12-12 Apple Inc. Digital media receiver for sharing image streams
US20130339358A1 (en) * 2012-06-13 2013-12-19 Bump Technologies, Inc. Sharing Information With Other Users
US20140068755A1 (en) * 2012-08-30 2014-03-06 Microsoft Corporation Mobile device child share
US20140098176A1 (en) * 2012-10-10 2014-04-10 Salesforce.Com, Inc. Systems and methods for implementing instant social image cobrowsing through the cloud
US8718715B2 (en) * 2009-06-30 2014-05-06 Core Wireless Licensing S.A.R.L Sharing functionality
US20140359481A1 (en) * 2013-05-31 2014-12-04 International Business Machines Corporation Work environment for information sharing and collaboration
US8943140B1 (en) * 2014-03-26 2015-01-27 Ankit Dilip Kothari Assign photographers on an event invite and automate requesting, uploading, and sharing of photos and videos for an event
US20170054858A1 (en) * 2012-09-12 2017-02-23 Fabricio COELHO System and method for sharing collaborative digital photo albums

Family Cites Families (64)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5581765A (en) * 1994-08-30 1996-12-03 International Business Machines Corporation System for combining a global object identifier with a local object address in a single object pointer
US6343313B1 (en) 1996-03-26 2002-01-29 Pixion, Inc. Computer conferencing system with real-time multipoint, multi-speed, multi-stream scalability
US5999208A (en) * 1998-07-15 1999-12-07 Lucent Technologies Inc. System for implementing multiple simultaneous meetings in a virtual reality mixed media meeting room
US6601087B1 (en) 1998-11-18 2003-07-29 Webex Communications, Inc. Instant document sharing
US7478129B1 (en) * 2000-04-18 2009-01-13 Helen Jeanne Chemtob Method and apparatus for providing group interaction via communications networks
US8255791B2 (en) 2000-11-29 2012-08-28 Dov Koren Collaborative, flexible, interactive real-time displays
US7043525B2 (en) 2000-12-18 2006-05-09 Bang Networks, Inc. Techniques for updating live objects at clients using a dynamic routing network
US7346616B2 (en) 2002-03-20 2008-03-18 Extended System, Inc. Synchronizing data shared between two devices independent of any other devices that may also share the data
EP1422901A1 (en) 2002-11-22 2004-05-26 Sun Microsystems, Inc. Client driven synchronization of file and folder content in web publishing
US7373590B2 (en) * 2003-05-19 2008-05-13 Microsoft Corporation Shared electronic ink annotation method and system
US7685134B2 (en) 2003-12-31 2010-03-23 Nokia Corporation Media file sharing, correlation of metadata related to shared media files and assembling shared media file collections
JP5162240B2 (en) 2004-08-17 2013-03-13 ショー パーシング リミティド ライアビリティ カンパニー A technique for distributing individual contents via a real-time distribution network
US7702730B2 (en) 2004-09-03 2010-04-20 Open Text Corporation Systems and methods for collaboration
US20100325153A1 (en) 2009-06-17 2010-12-23 Microsoft Corporation Synchronized distributed media assets
KR100714683B1 (en) 2004-12-24 2007-05-04 삼성전자주식회사 Method and system for sharing and transacting digital contents
US7774412B1 (en) 2005-05-06 2010-08-10 Adobe Systems Inc. Methods and apparatus facilitating distribution of content
JP4729987B2 (en) * 2005-06-02 2011-07-20 富士ゼロックス株式会社 Data management system and data server
US20070016632A1 (en) 2005-07-14 2007-01-18 Yahoo! Inc. System and method for synchronizing between a user device and a server in a communication network
US7933956B2 (en) * 2006-01-24 2011-04-26 Simulat, Inc. System and method to create a collaborative web-based multimedia layered platform
US8225310B1 (en) 2006-03-30 2012-07-17 Emc Corporation Automatic detection and redistribution of content management code
GB2450048B (en) 2006-04-03 2010-12-29 Beinsync Ltd Peer to peer syncronization system and method
US8370423B2 (en) 2006-06-16 2013-02-05 Microsoft Corporation Data synchronization and sharing relationships
US20090030952A1 (en) 2006-07-12 2009-01-29 Donahue Michael J Global asset management
US7698660B2 (en) 2006-11-13 2010-04-13 Microsoft Corporation Shared space for communicating information
US8108414B2 (en) * 2006-11-29 2012-01-31 David Stackpole Dynamic location-based social networking
WO2008112944A1 (en) * 2007-03-14 2008-09-18 Samuel Pierce Baron Interaction in a virtual social environment
CA2686243C (en) 2007-05-04 2016-07-19 Chalk Media Service Corp. Method and system for pushing content to mobile devices
US7778973B2 (en) * 2007-05-18 2010-08-17 Tat Kuen Choi System, method, and program for sharing photos via the internet
US8165604B2 (en) * 2007-10-04 2012-04-24 Zos Communications, Llc Methods for processing and distributing location-based data
US8965787B2 (en) * 2007-12-17 2015-02-24 Smooth Productions Inc. Communications system and method for serving electronic content
US8185601B2 (en) 2008-05-11 2012-05-22 Nokia Corporation Sharing information between devices
US9727628B2 (en) 2008-08-11 2017-08-08 Innography, Inc. System and method of applying globally unique identifiers to relate distributed data sources
US8688665B2 (en) * 2008-10-03 2014-04-01 Motorola Mobility Llc Collaborative transcoding
US20100162126A1 (en) 2008-12-23 2010-06-24 Palm, Inc. Predictive cache techniques
US8294557B1 (en) * 2009-06-09 2012-10-23 University Of Ottawa Synchronous interpersonal haptic communication system
EP2513782A1 (en) * 2009-12-14 2012-10-24 Ab Initio Technology LLC Specifying user interface elements
US20110153696A1 (en) 2009-12-18 2011-06-23 Anurekh Saxena Data Storage Aggregation on a Mobile Device
US8527549B2 (en) 2010-02-22 2013-09-03 Sookasa Inc. Cloud based operating and virtual file system
US20110219307A1 (en) * 2010-03-02 2011-09-08 Nokia Corporation Method and apparatus for providing media mixing based on user interactions
US8244848B1 (en) * 2010-04-19 2012-08-14 Facebook, Inc. Integrated social network environment
US9076349B2 (en) * 2010-04-26 2015-07-07 Raghav Gupta Geosocial network system and method for aggregating group members
US20120005307A1 (en) * 2010-06-30 2012-01-05 Abhik Das Storage virtualization
US9043706B2 (en) 2010-08-31 2015-05-26 Anders Nancke-Krogh System and method for using state replication between application instances to provide a collaborative desktop environment
US8818769B2 (en) 2010-10-28 2014-08-26 Parametric Technology Corporation Methods and systems for managing synchronization of a plurality of information items of a computer-aided design data model
US20120117271A1 (en) 2010-11-05 2012-05-10 Sony Corporation Synchronization of Data in a Distributed Computing Environment
GB201019588D0 (en) * 2010-11-19 2010-12-29 Marsden David V Social network device
KR101857563B1 (en) 2011-05-11 2018-05-15 삼성전자 주식회사 Method and apparatus for data sharing of between different network electronic devices
WO2012162158A1 (en) 2011-05-20 2012-11-29 Citrix Systems, Inc. Shell integration on a mobile device for an application executing remotely on a server
US9130763B2 (en) 2011-06-20 2015-09-08 Microsoft Technology Licensing, Llc Automatic sharing of event content by linking devices
US9652741B2 (en) 2011-07-08 2017-05-16 Box, Inc. Desktop application for access and interaction with workspaces in a cloud-based content management system and synchronization mechanisms thereof
KR101552194B1 (en) 2011-07-20 2015-09-11 네이버 주식회사 System and method for managing and sharing image with album unit
US8533231B2 (en) 2011-08-12 2013-09-10 Nexenta Systems, Inc. Cloud storage system with distributed metadata
US9606629B2 (en) 2011-09-09 2017-03-28 Cloudon Ltd. Systems and methods for gesture interaction with cloud-based applications
US8732255B2 (en) 2011-09-09 2014-05-20 Facebook, Inc. Dynamically created shared spaces
US10210586B2 (en) 2011-09-09 2019-02-19 Facebook, Inc. Composited posting interface for social networking system
US9098720B2 (en) * 2011-11-21 2015-08-04 Facebook, Inc. Location aware shared spaces
US9304857B2 (en) 2011-12-12 2016-04-05 Cleversafe, Inc. Retrieving data from a distributed storage network
US8854397B2 (en) 2011-12-13 2014-10-07 Facebook, Inc. Photo selection for mobile devices
US9477936B2 (en) 2012-02-09 2016-10-25 Rockwell Automation Technologies, Inc. Cloud-based operator interface for industrial automation
US8693648B1 (en) * 2012-04-16 2014-04-08 Google Inc. Providing backstage support for online video communication broadcasts
FR2998995A1 (en) * 2012-12-03 2014-06-06 France Telecom METHOD OF COMMUNICATION BETWEEN MULTIPLE USERS WITH COMMUNICATION TERMINALS THROUGH A VIRTUAL COMMUNICATION SPACE
US9658737B2 (en) * 2013-08-16 2017-05-23 Disney Enterprises, Inc. Cross platform sharing of user-generated content
US9423922B2 (en) 2013-12-24 2016-08-23 Dropbox, Inc. Systems and methods for creating shared virtual spaces
US9544373B2 (en) * 2013-12-24 2017-01-10 Dropbox, Inc. Systems and methods for maintaining local virtual states pending server-side storage across multiple devices and users and intermittent network connections

Patent Citations (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020126159A1 (en) * 2001-03-07 2002-09-12 Maurizio Pilu Digital image viewing - I
US20060242238A1 (en) * 2005-04-26 2006-10-26 Issa Alfredo C Automatic creation of bidirectional online album links in a peer-to-peer photo sharing network
US8217952B2 (en) * 2008-11-26 2012-07-10 Novell, Inc. Techniques for caching images
US8718715B2 (en) * 2009-06-30 2014-05-06 Core Wireless Licensing S.A.R.L Sharing functionality
US20120254116A1 (en) * 2011-03-31 2012-10-04 Microsoft Corporation Distributed File System
US20130091026A1 (en) * 2011-10-10 2013-04-11 Arcsoft, Inc. Photo Sharing with Digital Album
US20130332856A1 (en) * 2012-06-10 2013-12-12 Apple Inc. Digital media receiver for sharing image streams
US20130339358A1 (en) * 2012-06-13 2013-12-19 Bump Technologies, Inc. Sharing Information With Other Users
US20140068755A1 (en) * 2012-08-30 2014-03-06 Microsoft Corporation Mobile device child share
US20170054858A1 (en) * 2012-09-12 2017-02-23 Fabricio COELHO System and method for sharing collaborative digital photo albums
US20140098176A1 (en) * 2012-10-10 2014-04-10 Salesforce.Com, Inc. Systems and methods for implementing instant social image cobrowsing through the cloud
US20140359481A1 (en) * 2013-05-31 2014-12-04 International Business Machines Corporation Work environment for information sharing and collaboration
US8943140B1 (en) * 2014-03-26 2015-01-27 Ankit Dilip Kothari Assign photographers on an event invite and automate requesting, uploading, and sharing of photos and videos for an event

Cited By (78)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11601584B2 (en) 2006-09-06 2023-03-07 Apple Inc. Portable electronic device for photo management
US10904426B2 (en) 2006-09-06 2021-01-26 Apple Inc. Portable electronic device for photo management
US11592959B2 (en) 2010-01-06 2023-02-28 Apple Inc. Device, method, and graphical user interface for navigating and displaying content in context
US11099712B2 (en) 2010-01-06 2021-08-24 Apple Inc. Device, method, and graphical user interface for navigating and displaying content in context
US10732790B2 (en) 2010-01-06 2020-08-04 Apple Inc. Device, method, and graphical user interface for navigating and displaying content in context
US11539831B2 (en) 2013-03-15 2022-12-27 Apple Inc. Providing remote interactions with host device using a wireless device
US10200421B2 (en) 2013-12-24 2019-02-05 Dropbox, Inc. Systems and methods for creating shared virtual spaces
US11430571B2 (en) 2014-05-30 2022-08-30 Apple Inc. Wellness aggregator
US11405368B2 (en) * 2014-11-14 2022-08-02 William J. Ziebell Systems, methods, and media for a cloud based social media network
US20220329575A1 (en) * 2014-11-14 2022-10-13 William J Ziebell Systems, methods, and media for a cloud based social media network
US20240171552A1 (en) * 2014-11-14 2024-05-23 William J Ziebell Systems, methods, and media for a cloud based social media network
US10298547B2 (en) * 2014-11-14 2019-05-21 William J. Ziebell Systems, methods, and media for a cloud based social media network
US11863537B2 (en) * 2014-11-14 2024-01-02 William Ziebell Systems, methods, and media for a cloud based social media network
US11019193B2 (en) 2015-02-02 2021-05-25 Apple Inc. Device, method, and graphical user interface for establishing a relationship and connection between two devices
US11388280B2 (en) 2015-02-02 2022-07-12 Apple Inc. Device, method, and graphical user interface for battery management
US12019862B2 (en) 2015-03-08 2024-06-25 Apple Inc. Sharing user-configurable graphical constructs
US10802703B2 (en) 2015-03-08 2020-10-13 Apple Inc. Sharing user-configurable graphical constructs
US10812599B2 (en) * 2015-03-18 2020-10-20 Huawei Technologies Co., Ltd. Method and system for creating virtual non-volatile storage medium, and management system
US20170302742A1 (en) * 2015-03-18 2017-10-19 Huawei Technologies Co., Ltd. Method and System for Creating Virtual Non-Volatile Storage Medium, and Management System
US10333871B1 (en) * 2015-03-23 2019-06-25 Google Llc Logged-out conversation invitations
US11310181B2 (en) * 2015-05-15 2022-04-19 Samsung Electronics Co., Ltd. User terminal apparatus, server, and control method thereof
US11385860B2 (en) 2015-06-07 2022-07-12 Apple Inc. Browser with docked tabs
US10877720B2 (en) 2015-06-07 2020-12-29 Apple Inc. Browser with docked tabs
US12089121B2 (en) 2015-08-14 2024-09-10 Apple Inc. Easy location sharing
US11418929B2 (en) 2015-08-14 2022-08-16 Apple Inc. Easy location sharing
US20170278267A1 (en) * 2015-08-20 2017-09-28 HuiZhou TLC Mobile Communication Co., Ltd. Picture information processing method and system based on mobile terminal
US11048873B2 (en) 2015-09-15 2021-06-29 Apple Inc. Emoji and canned responses
US10404639B2 (en) * 2016-02-19 2019-09-03 Samsung Electronics Co., Ltd. Method for sharing content group of electronic device and electronic device thereof
US10984059B2 (en) * 2016-04-22 2021-04-20 Tencent Technology (Shenzhen) Company Limited Data retrieval method and system
US10187395B2 (en) * 2016-04-28 2019-01-22 Microsoft Technology Licensing, Llc Resource sharing and designation of permissions for other tenants and unregistered users of same tenant
US20170318021A1 (en) * 2016-04-28 2017-11-02 Microsoft Technology Licensing, Llc Resource sharing and designation of permissions for other tenants and unregistered users of same tenant
US11918857B2 (en) 2016-06-11 2024-03-05 Apple Inc. Activity and workout updates
US11660503B2 (en) 2016-06-11 2023-05-30 Apple Inc. Activity and workout updates
US11148007B2 (en) 2016-06-11 2021-10-19 Apple Inc. Activity and workout updates
US11161010B2 (en) 2016-06-11 2021-11-02 Apple Inc. Activity and workout updates
US11336961B2 (en) 2016-06-12 2022-05-17 Apple Inc. Recording and broadcasting application visual output
US10891013B2 (en) 2016-06-12 2021-01-12 Apple Inc. User interfaces for retrieving contextually relevant media content
US11334209B2 (en) 2016-06-12 2022-05-17 Apple Inc. User interfaces for retrieving contextually relevant media content
US11941223B2 (en) 2016-06-12 2024-03-26 Apple Inc. User interfaces for retrieving contextually relevant media content
US11681408B2 (en) 2016-06-12 2023-06-20 Apple Inc. User interfaces for retrieving contextually relevant media content
US10873786B2 (en) 2016-06-12 2020-12-22 Apple Inc. Recording and broadcasting application visual output
US11632591B2 (en) 2016-06-12 2023-04-18 Apple Inc. Recording and broadcasting application visual output
US11269490B2 (en) 2016-08-19 2022-03-08 Dropbox, Inc. User interface for content sharing client in a desktop file system context
US10540059B2 (en) * 2016-08-19 2020-01-21 Dropbox, Inc. User interface for content sharing client in a desktop file system context
US11789590B2 (en) 2016-08-19 2023-10-17 Dropbox, Inc. User interface for content sharing client in a desktop file system context
US20180052587A1 (en) * 2016-08-19 2018-02-22 Dropbox, Inc. User interface for content sharing client in a desktop file system context
US11838252B2 (en) 2017-08-08 2023-12-05 Snap Inc. Application-independent messaging system
US12069017B2 (en) 2017-08-08 2024-08-20 Snap Inc. Application-independent messaging system
US20190095054A1 (en) * 2017-09-27 2019-03-28 Salesforce.Com, Inc. Generating or updating cross-community streams
US20210342039A1 (en) * 2017-09-27 2021-11-04 Salesforce.Com, Inc. Generating or updating cross-community streams
US11036357B2 (en) * 2017-09-27 2021-06-15 Salesforce.Com, Inc. Generating or updating cross-community streams
CN114915606A (en) * 2017-11-29 2022-08-16 斯纳普公司 Group stories in electronic messaging applications
US11074223B2 (en) * 2018-03-26 2021-07-27 International Business Machines Corporation Orphaned content remediation
US10986169B2 (en) 2018-04-19 2021-04-20 Pinx, Inc. Systems, methods and media for a distributed social media network and system of record
US20190339822A1 (en) * 2018-05-07 2019-11-07 Apple Inc. User interfaces for sharing contextually relevant media content
US11782575B2 (en) * 2018-05-07 2023-10-10 Apple Inc. User interfaces for sharing contextually relevant media content
CN110456971A (en) * 2018-05-07 2019-11-15 苹果公司 For sharing the user interface of context-sensitive media content
US11625153B2 (en) 2019-05-06 2023-04-11 Apple Inc. Media browsing user interface with intelligently selected representative media items
US11947778B2 (en) 2019-05-06 2024-04-02 Apple Inc. Media browsing user interface with intelligently selected representative media items
US11042266B2 (en) 2019-05-06 2021-06-22 Apple Inc. Media browsing user interface with intelligently selected representative media items
US11307737B2 (en) 2019-05-06 2022-04-19 Apple Inc. Media browsing user interface with intelligently selected representative media items
US11074408B2 (en) 2019-06-01 2021-07-27 Apple Inc. Mail application features
US11347943B2 (en) 2019-06-01 2022-05-31 Apple Inc. Mail application features
US11620046B2 (en) 2019-06-01 2023-04-04 Apple Inc. Keyboard management user interfaces
US11842044B2 (en) 2019-06-01 2023-12-12 Apple Inc. Keyboard management user interfaces
US11194467B2 (en) 2019-06-01 2021-12-07 Apple Inc. Keyboard management user interfaces
US20240007594A1 (en) * 2020-11-26 2024-01-04 Anipen Inc. Method and system for supporting sharing of experiences between users, and non-transitory computer-readable recording medium
US11711493B1 (en) 2021-03-04 2023-07-25 Meta Platforms, Inc. Systems and methods for ephemeral streaming spaces
CN113127909A (en) * 2021-04-30 2021-07-16 北京奇艺世纪科技有限公司 Feature data processing method and device, electronic equipment and storage medium
US11931625B2 (en) 2021-05-15 2024-03-19 Apple Inc. User interfaces for group workouts
US11938376B2 (en) 2021-05-15 2024-03-26 Apple Inc. User interfaces for group workouts
US11992730B2 (en) 2021-05-15 2024-05-28 Apple Inc. User interfaces for group workouts
US20240134501A1 (en) * 2021-12-30 2024-04-25 Beijing Zitiao Network Technology Co., Ltd. Prompt method and apparatus based on document sharing, device, and medium
US20230214098A1 (en) * 2021-12-30 2023-07-06 Snap Inc. Providing shared content collections within a messaging system
US20230216817A1 (en) * 2021-12-30 2023-07-06 Snap Inc. Providing permissions for accessing shared content collections
US11973730B2 (en) * 2022-06-02 2024-04-30 Snap Inc. External messaging function for an interaction system
US20230396569A1 (en) * 2022-06-02 2023-12-07 Snap Inc. External messaging function for an interaction system
WO2024113634A1 (en) * 2022-11-30 2024-06-06 腾讯科技(深圳)有限公司 Method and apparatus for recommending media sharing room, and electronic device, storage medium and program product

Also Published As

Publication number Publication date
US9423922B2 (en) 2016-08-23
JP2017502436A (en) 2017-01-19
US10200421B2 (en) 2019-02-05
WO2015099833A9 (en) 2015-10-08
AU2014370399A1 (en) 2016-02-11
JP6311030B2 (en) 2018-04-11
WO2015099833A1 (en) 2015-07-02
EP3087485A1 (en) 2016-11-02
AU2014370399B2 (en) 2017-05-25
US20150180914A1 (en) 2015-06-25
US20160323332A1 (en) 2016-11-03

Similar Documents

Publication Publication Date Title
US10200421B2 (en) Systems and methods for creating shared virtual spaces
US9961149B2 (en) Systems and methods for maintaining local virtual states pending server-side storage across multiple devices and users and intermittent network connections
US9525789B2 (en) Shuffle algorithm and navigation
US11003327B2 (en) Systems and methods for displaying an image capturing mode and a content viewing mode
AU2014369911B2 (en) Providing access to a cloud based content management system on a mobile device
US10235444B2 (en) Systems and methods for providing a user with a set of interactivity features locally on a user device
US10409858B2 (en) Discovery and sharing of photos between devices
US20210117469A1 (en) Systems and methods for selecting content items to store and present locally on a user device
US20150177922A1 (en) Systems and methods for forming share bars including collections of content items
US20120117271A1 (en) Synchronization of Data in a Distributed Computing Environment

Legal Events

Date Code Title Description
AS Assignment

Owner name: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT, NE

Free format text: SECURITY INTEREST;ASSIGNOR:DROPBOX, INC.;REEL/FRAME:042254/0001

Effective date: 20170403

Owner name: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT, NEW YORK

Free format text: SECURITY INTEREST;ASSIGNOR:DROPBOX, INC.;REEL/FRAME:042254/0001

Effective date: 20170403

STCB Information on status: application discontinuation

Free format text: ABANDONED -- FAILURE TO RESPOND TO AN OFFICE ACTION

AS Assignment

Owner name: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT, NEW YORK

Free format text: PATENT SECURITY AGREEMENT;ASSIGNOR:DROPBOX, INC.;REEL/FRAME:055670/0219

Effective date: 20210305