The sharing of files and folders has always been a difficult task. In known systems, users are often limited to just sharing out entire folders. Users typically do not have the ability to share out individual files. In order to share files, a user has typically had to create a folder, organize the desired files in the folder, and then share the folder.
The sharing of files has further been complicated by the fact that users also have to deal with files being in different locations, such as on different devices, on other PCs, or online. Files coming from different locations are often organized differently, and not kept in the same fashion or place. As another example, files stored on a corporate network may inherently be separated from files a user has on a current machine. Users also have to keep track not only of what file data is stored, but where it is stored. For example, for music files, users are forced to keep copies on various systems and to try to track which music files are located where. This can make files difficult to locate, even when they are locally stored.
The sharing of files is also complicated by the fact that it is also sometimes difficult to find and return to files that a user has. A user may find it difficult to recall where and how they stored certain files. Given a set of folders and even a group of similar files, users often find it difficult to quickly find the one that they are looking for. For files stored in a difficult place to find, it is that much more complex to locate. It is also sometimes difficult for users to find or return to files on a network. Users typically have to memorize or map the various sites and names that they need for finding and sharing files on a network.
Organizing and sharing files is also complicated by the fact that name spaces may vary, which can cause confusion to the user as to what is “correct.” This is particularly true on a network where there are different naming conventions, limitations, and so on. For example, certain operating systems may require short names with no spaces in order for them to be visible. Programs also often save files to their own directory or other name spaces, which can make it difficult for users to find their way back to the files. Programs often have default directories and places they save documents. A user often has to search through their hard disk and make guesses about where a file is stored. Related items are also often stored in separate places. Related files that a user has may be stored on different parts of the hard disk, etc. This problem becomes more common with the developments of digital media services that have multiple content types (e.g., pictures, music, video).
Furthermore the user interfaces traditionally provided for sharing of files has been complicated and cumbersome. Sharing a file has usually involved copying the file to an e-mail message and forwarding the e-mail message to the person with whom the file is being shared, or minimally providing the person with a location for the file.
A system and method is provided for a user interface that allows for contact-centric sharing of resources. With the present invention sharing files and other resources is implemented as a contact-based process, where the resources are identified as being shared with, or shared by a particular contact. According to the user interface provided, the focus for resource sharing changes from the resource and its location to the contact with whom the resource is being shared. In accordance with one aspect of the invention, the sharing process begins with a user (a.k.a. the sharer) selecting the contact (a.k.a. the sharee) that the resource is to be shared with, and the permissions that are to be assigned to the contact. An example of one type of permission would be to provide read access only for an item. The resource may then be shared with the contact according to the permissions assigned. The contact record associated with the contact therefore has a section that lists the resources shared with the contact, as well as a section including the resources shared by the contact.
In accordance with one aspect of the invention, a method is provided for dragging and dropping a resource onto the contact record of the particular contact. The contact record itself can therefore operate as a virtual repository for resources shared with the contact. Once the resource is dragged into the contact record, a process is initiated that results in the resource being shared with the contact associated with the contact record.
In accordance with another aspect of the invention, when a resource is dragged and dropped into the contact record, the system verifies that the access control lists (ACLs) and any other permissions are set. Based on the permissions that the user requests for the sharees, the security ACLs on the items are set accordingly, and the permissions requested by the user are granted.
In accordance with another aspect of the invention, the resources that are shared between a contact and user are left in place on the sharer's computing device without the location of the resources being reflected in the user interface for the contact record. In other words, the resources that are to be shared are not moved, and the sharees are instead provided access to the resources on the sharer's computing device. As part of the process, the system verifies that the sharees are able to access the resources that are to be shared and the system allows the resources that are being shared to be accessible remotely by the sharee.
In accordance with another aspect of the invention, the details of the sharing transactions are recorded. In other words, once the sharing operation is complete, the system records information about the transaction. The information that is tracked may include things like: what was shared; who it was shared with; and when it was shared. By tracking and recording this information, a sharer is able to later determine: what are all the items that have been shared from their machine; who have they shared these items with; and what access did these sharees have.
It will be appreciated that the embodiments of the present invention as described above allow a user to share out individual items like documents, contacts, and e-mails with a contact by launching the contact's record. This is in contrast to known systems which only allow a user to share out a folder, and which have no notion of individual file, resource, or list sharing using a contact-centric UI. By utilizing the present invention, a user no longer needs to organize their data into folders in order to share it. They can simply select a contact and decide to share resources with them. The sharer may share out 10 items from 10 different locations on their machine, but the sharee is abstracted from this. Also, the sharee can launch the contact record corresponding to the sharer, and view a list of all of the resources that sharer has shared with them. The user interface provided is therefore contact-centric, where the focus is all the resources shared with a contact, rather than resource-centric and attempting to determine with whom a particular resource has been shared.
The present invention now will be described more fully hereinafter with reference to the accompanying drawings, which form a part hereof, and which show, by way of illustration, specific exemplary embodiments for practicing the invention. This invention may, however, be embodied in many different forms and should not be construed as limited to the embodiments set forth herein; rather, these embodiments are provided so that this disclosure will be thorough and complete, and will fully convey the scope of the invention to those skilled in the art. Among other things, the present invention may be embodied as methods or devices. Accordingly, the present invention may take the form of an entirely hardware embodiment, an entirely software embodiment or an embodiment combining software and hardware aspects. The following detailed description is, therefore, not to be taken in a limiting sense.
Illustrative Operating Environment
With reference to
Computing device 100 may have additional features or functionality. For example, computing device 100 may also include additional data storage devices (removable and/or non-removable) such as, for example, magnetic disks, optical disks, or tape. Such additional storage is illustrated in
Computing device 100 also contains communication connections 116 that allow the device to communicate with other computing devices 118, such as over a network. Communication connection 116 is one example of communication media. Communication media may typically be embodied by computer readable instructions, data structures, program modules, or other data in a modulated data signal, such as a carrier wave or other transport mechanism, and includes any information delivery media. The term “modulated data signal” means a signal that has one or more of its characteristics set or changed in such a manner as to encode information in the signal. By way of example, and not limitation, communication media includes wired media such as a wired network or direct-wired connection, and wireless media such as acoustic, RF, infrared and other wireless media. The term computer readable media as used herein includes both storage media and communication media.
Illustrative Content—Centric Resource Sharing UI
The sharing of resources by utilizing a contact-centric user interface is provided that corresponds to a contact management system. A contact management system is generally referred to as a system, directory or database that contains contact information about people, groups, organizations, businesses, households, or any other identifiable entity, each of which is referred to herein as a contact.
Contact information is generally referred to herein as information that can be considered relevant for contacting, accessing, corresponding with or otherwise communicating with a contact. Contact information may include, for example, the names, aliases, telephone numbers, e-mail addresses, IM addresses, home addresses, and web addresses of a contact. Contact information can also refer to other types of information such as a real time status, location, and shared resources associated with a contact.
According to one aspect of the invention, a single concept of a contact is created for use by various applications. Corresponding contact objects and controls can be embedded in any application to represent the corresponding contacts much in the same way files can be referenced and represented. The contacts are also created and stored with corresponding contact information in such a way that they can be accessed and utilized by applications from a single contact store. In one embodiment, the applications can be heterogeneous applications that utilize different portions of the contact information or utilize the same contact information in a different ways. In other embodiments, however, the applications can utilize the same contact information in the same way.
Centralizing the storage of the contact information also allows the contact store to incorporate and propagate the changes that are made by the applications to other contact information directories. Accordingly, synchronizing the directories of the various applications can be performed efficiently from the centralized contact store, even though the contact information being synchronized may vary in format and content between the disparate application directories. As a result, shared resources listed according to the centralized contact information is also made available to the disparate applications accessing centralized store of contacts.
In the example used, contact identity 210 for contact record 200 is “Jane Doe”. According to storage path 220, contact record 200 is stored in the contacts library of “John Doe's” computer. It is therefore most likely that it is John Doe that is viewing contact record 200.
Contact toolbar 230 provides further information regarding the contact and options for actions that the user (i.e., John Doe) may take with relation to the contact. For example, contact toolbar 230 may include a picture of the contact, whether the contact is online, and an option for sending an e-mail to the contact.
Contact information 240 includes the typical information that is associated with a contact record. For example, contact record 240 may include phone numbers, e-mail addresses, IM (instant messaging) aliases, resident addresses, and other information related to the contact.
Shared by section 250 includes references to resources that are shared by the contact with the user. In this example, Jane has shared a company report and picture with John. Depending on the permissions set by Jane on these resources, John may be able to read or even edit these resources shared by Jane. The icon representations for the resources within shared by section 250 correspond to pointers to the resources that are stored elsewhere. In one embodiment, the resources are stored on Jane's computer and are accessible by John. The relationship between the representation of resources in shared by section 250 and the resources themselves is described in greater detail below with respect to
Shared with section 260 includes references to resources that are shared by the user with the contact. Again, the icon representations for the resources within shared with section 260 correspond to pointer to the resources that stored at a location other than the location of the contact record 200. In one embodiment, the resources are stored on John's computer, and John has provided access to his computer to Jane for the limited purpose of accessing these resources. The relationship between the representation of resources in shared with section 260 and the resources themselves is described in greater detail below with respect to
Additional section 270 is provided to include other aspects related to contact record 200, such as recent messages between the user and the contact and other information that may be presented to the user according to the contact-centric user interface.
A representation of each resource is instantiated in contact record 310 corresponding to each address in shared resources 320. As Jane is capable of inviting John to share multiple resources on her computer, multiple addresses corresponding to those resources may be stored in shared services 320. Each address stored in shared services 320 has a corresponding representation instantiated in contact record 310 and points to the resource location among the contact's shared resources 330. Accordingly, the actual resource may be resolved to using the address stored in shared services 320 when the representation of the resource is selected by the user (i.e., John) within contact record 310. In one embodiment, the locations of the resources are resolved across a network connecting the local use's computer and the contact's computer according to PNRP (Peer Name Resolution Protocol). PNRP allows not only the resource to be identified uniquely on the network, but also allows contacts to be identified uniquely on the network. Accordingly, a PNRP identifier for a contact resolves to the address for the computing device associated with the contact. Having resolved addresses for the contact's computing device and the resource, allows the user's computing device to locate the contact's computing device and locate the resource on the contact's computing device.
In another embodiment, a copy or “ghost” of the resources that are represented by addresses in shared services 320 are copied to the local user's machine (e.g., John's computer). The copy 340 of the contact's shared resources is stored locally but maintains a synchronized relationship with the contact's shared resources 330. Accordingly, the local user (e.g., John) is able to access the resources quickly, as they are now locally stored, while maintaining accuracy of the resources through the synchronization. In one instance, the creation of a synchronized copy is selected as the default course of action each time a resource is shared.
In another embodiment, the details of the sharing transactions are recorded. In other words, once the sharing operation is complete, the system records information about the transaction. The information that is tracked may include things like: what was shared; who it was shared with; and when it was shared. By tracking and recording this information, a sharer is able to later determine: what are all the items that have been shared from their machine; who have they shared these items with; and what access did these sharees have.
At block 504, since the user has selected to grant permission for access to the resource by virtue of the drag and drop action, an access control entity (ACE) is generated to correspond to the resource being dragged and dropped. An ACE is a member of an access control list (ACL). Each ACE includes a SID (security identifier), a level of permission (e.g., read only), and a grant or deny property. The properties of the ACE determine whether the drag and drop action is allowed to proceed. As the generation of the ACE is initiated, processing continues to block 506.
At block 506, the SID corresponding to the contact is discovered. For example, a certificate or authentication key may be provided along with the identity of the contact on the network. By retrieving the certificate corresponding to the contact, the identity of the contact is confirmed. Once the SID is discovered, processing continues at block 508.
At block 508, a permission level is set for the contact's access to the resource. For example, a default permission level may be used that provides the contact with read only access to the resource. Other permission levels may also be used, or the permission level may be changed as desired by the user. Once the permission level is set, processing moves to decision block 510.
At decision block 510, a determination is made whether to grant or deny the drag and drop action. It may be that there is a security problem with the SID corresponding to the user, or that another issues exists with sharing the particular resource. If the determination is that the drag and drop action should be denied, processing moves to block 512.
At block 512, a notice is provided to the user that the drag and drop action has failed. In one embodiment, the reason for the failure is relayed to the user, along with options for troubleshooting the failure. Once the failure notice is provided, processing advances to block 516, where process 500 ends.
Alternatively, if the determination is made that the drag and drop action should be granted, then processing moves to block 514. At block 514, a representation of the resource is instantiated in the “shared with” section of the contact record. The representation of the resource corresponds to a pointer to the resource on the user's computing device. In one embodiment, an invitation for accessing the resource is also sent to contact corresponding to the contact record in which the resource was dragged and dropped. If the invitation is accepted, another representation of the resource is supplied in the contact record for the user that is stored on the contact's computer. Processing then continues to block 516, where process 500 ends.
The above specification, examples and data provide a complete description of the manufacture and use of the composition of the invention. Since many embodiments of the invention can be made without departing from the spirit and scope of the invention, the invention resides in the claims hereinafter appended.
The present invention is related to U.S. patent application Ser. No. 10/729,841, filed on Dec. 5, 2003, entitled “System and Method for Sharing Items in a Computer”; U.S. patent application Ser. No. 10/691,841, entitled “System and Method for Virtual Folder Sharing Including Utilization of Static and Dynamic Lists”; and U.S. patent application Ser. No. 10/692,256, filed Oct. 23, 2003, entitled “Contact Management”. The related applications are assigned to the assignee of the present patent application and are hereby incorporated by reference.