Managing document feedback on a sharing service using a messaging client

Functionality is disclosed herein for managing document feedback on a sharing service using a messaging client. Utilizing the technologies described herein, a file is associated with a message from an interface configured to compose the message. In addition, the interface is configured to receive a selection of one or more categories of feedback data. A category of feedback data is inserted into the message based on the selection. For example, comments associated with a section of the file may be displayed in the message. The feedback data, such as the comments, are retrieved from a locally stored file, a remotely stored file, a database and/or any other computing device storing the feedback data. Once the message is delivered to a recipient, a user interface may be configured to receive feedback data and communicate the received data to a remote data store.

BACKGROUND

Many users depend on electronic mail (“email”) to send messages and share files. In some scenarios, users may add attachments to emails to share files with other users. Given the size of most attachments in addition to the fact that some users exchange a large number of emails per day, it can be appreciated that existing practices utilizing email attachments may demand a significant level of communication and storage resources. In addition, the use of email attachments creates complex scenarios for users when it comes to version control of shared files. For instance, it may be difficult for some users to identify the most recent version of a document particularly when multiple users are communicating individual versions of the document on different email threads. To address some of the drawbacks created by the use of email attachments, some users share data by storing files on a central server and sending associated links in emails.

Although some systems provide different mechanisms for sharing files with messages, existing systems are limited in how data associated with the files are shared. For instance, some files, such as a word processing document or an image, allow users to embed data, such as comments or feedback, within the file. When such files are communicated in existing systems, users are usually required to take a number of actions to download, open and navigate through the files to access or modify the embedded data. Given the number of steps that may be needed to access or modify the embedded data, existing systems may provide less than an optimal user experience.

DETAILED DESCRIPTION

The following detailed description is directed to concepts and technologies for managing document feedback on a sharing service using a messaging client. Utilizing the technologies described herein, a file is associated with a message from an interface configured to compose the message. In addition, the interface is configured to receive a selection of feedback options for managing the display and communication of feedback data associated with the file. In some configurations, the feedback options may include the selection of one or more categories of feedback data. Selecting a category of feedback data may cause the display of the selected category of feedback data in the interface displaying the message. For example, selecting comments associated with the file may cause the comments stored in the file to be displayed in the interface displaying the message.

In some configurations, the feedback options may also include the selection of one or more communication options for the feedback data. In such configurations, based on the selection of one or more communication options, the interface may include a data entry field for receiving and communicating feedback data. Once the message is delivered to a recipient, an interface presented to the recipient may display the message, the selected category of feedback data, and/or the data entry field for receiving feedback data. Feedback data received by the data entry field may be communicated to a remote computing device for integration into the file and/or one or more data stores. Using an implementation of the technologies disclosed herein, users may share files and manage the display and communication of associated feedback data from a message interface without the need to interact with different controls or interfaces of multiple services.

In some configurations, individual categories of feedback data may include comments associated with a file, data identifying users who provided comments, data indicating one or more deadlines or expiration dates. Other categories of feedback data, for example, may include numbers, tables and/or charts showing frequency data, trends or other data describing activity related to the feedback data. The categories of the feedback data may be arranged in the message according to the specified feedback options, which may be received by an author of the message.

In some configurations, when a category of feedback data is selected, the feedback data may be retrieved from a locally stored file, a remotely stored file, a record of a database and/or any other computing device storing the feedback data. For example, upon the selection of a category of feedback data, such as a category including comments, the feedback data may be retrieved from a locally stored file. In some configurations, the feedback data may be retrieved from a remotely stored file, such as a file stored in a data store of a sharing service. The received feedback data may be inserted into the message being composed by the author.

In some configurations, the feedback data may be delivered as an attachment with the message. For example, if a selected feedback option indicates that a category of feedback data is to be inserted into the message, the feedback data may be delivered with the message, e.g., as an attachment, to one or more designated recipients. The recipients of the message may view the feedback data by accessing the feedback data that is attached to the message.

In some configurations, hyperlinks (“links”) for accessing the feedback data may be used to communicate the feedback data with the message. For example, if a selected feedback option indicates that feedback data is to be inserted into the message, one or more links providing access to the feedback data may be inserted into the message. The recipients of the message may access the feedback data by selecting the links inserted in the message. By the use of the links, the feedback data may be retrieved by the recipients from one or more remote resources storing the feedback data, such as a sharing service.

In some configurations, a framework includes a messaging service and a sharing service. A messaging client may operate in conjunction with the messaging service to cause the display of a user interface (“UI”) that may be utilized by a user composing a message. The UI may also include controls configured to select a file to be associated with the message. The file may be stored by the sharing service and/or by a local computing device. When the user selects the stored files to be shared (e.g., with the recipient of the message or some other users), the messaging client communicates the selected files to the sharing service for storage. The sharing service may then generate one or more links operative to provide access to the selected files stored at the sharing service. In other configurations, the selected file may attached to the message.

The UI may also include controls configured to receive a selection of feedback options for managing the display and communication of feedback data associated with the file. The feedback options may include the selection of one or more categories of feedback data to be inserted into the message. As discussed briefly above, one category of feedback data may include comments associated with text of the file. If the one category is selected, the comments associated with text of the file may be inserted or integrated in the message. Once the message is delivered to a recipient, a user interface may display the message and at least a portion of the feedback data based on the selected feedback options. In addition, based on the selection of one or more communication options, the UI displayed to the recipient may be configured to receive feedback data in a data entry field, such as an editable text field. Any input received by the data entry field may be communicated to a remote computing device, such as a sharing service, for integration of the input into the file and/or one or more data stores. Such features may allow a recipient of the message to view and input feedback data that is stored in one or more files associated with the message. Additional details regarding the various components and processes described above for providing enhanced file sharing controls in a messaging client will be presented below with regard toFIGS. 1-10.

In the following detailed description, references are made to the accompanying drawings that form a part hereof, and that show, by way of illustration, specific configurations or examples. The drawings herein are not drawn to scale. Like numerals represent like elements throughout the several figures (which may be referred to herein as a “FIG.” or “FIGS.”).

FIG. 1is a block diagram depicting an illustrative framework100in which display and communication options for document feedback may be specified using a messaging client. In some configurations, the framework100includes a messaging service110and a separate sharing service115. In other configurations, a single service or more than two services might be utilized to provide the functionality described herein as being provided by the messaging service110and/or the sharing service115. The messaging service110and the sharing service115may respectively manage the communication, sharing, and storage of messages and files between computing devices, such as a first computing device101A and a second computing device101B (also referred to herein generically and collectively as “computing devices101”).

For illustrative purposes, two computing devices101are shown inFIG. 1. Fewer or more computing devices101might be used in other implementations of the described techniques. According to some configurations, the messaging service110, the sharing service115and the computing devices101are interconnected through one or more local and/or wide area networks (not shown). The functionality described herein may be provided by a service provider operated network-based distributed computing environment (which may be referred to herein as a “service provider network”120). In some configurations, the messaging service110and/or the sharing service115may be implemented within the service provider network120. The sharing service can also be referred to as a “collaboration service,” since at least some embodiments of the sharing service can allow users to work together on a document. For example, users can exchange different versions of a document, while providing comments on the document.

As described in more detail below, the service provider network120may include a collection of rapidly provisioned and, potentially, released computing resources. The computing resources may include a number of computing, networking and storage devices in communication with one another. In some configurations, the computing resources may correspond to physical computing devices. In other configurations, the computing resources may correspond to virtual machine instances implemented by one or more physical computing devices. In still other configurations, computing resources may correspond to both virtual machine instances and physical computing devices. The operator of the service provider network120may charge for the use of computing resources.

In some configurations, the messaging service110may be provided by one or more computing devices, such as server computing devices, or some other computing device or devices configured to perform the techniques described herein. For illustrative purposes, configurations of the messaging service110may include a server181A storing a messaging manager105A, a message database106and a directory108A. The messaging manager105A may access permission data stored in the directory108A for controlling user access to messages and other data stored in the message database106. The messaging manager105A may be configured to manage the communication of messages109between one or more computing devices101.

The sharing service115may be provided by one or more computing devices, such as server computing devices, or some other computing device or devices configured to perform the techniques described herein. For illustrative purposes, configurations of the sharing service115may include a server181B storing a sharing manager105B, a file data store107and a directory108B. The sharing manager105B may access permission data stored in the directory108B for controlling user access to files and other data stored in the file data store107. For illustrative purposes, the directory108A of the messaging service110and the directory108B of the sharing service115may be referred to herein collectively and generically as a “directory108” or “directories108.” The sharing manager105B may be configured to manage the communication of data associated with the files113between one or more computing devices101and/or services, such as the messaging service110.

In some configurations, the data associated with the files113may include feedback data123. There may be a number of categories of feedback data123, which may include comments, data identifying users who provided comments, data indicating one or more deadlines or expiration dates. Other categories of feedback data, for example, may include numbers, tables and/or charts showing frequency, trends or other data describing activity related to the feedback data. As will be described in more detail below, selected categories of the feedback data123may be arranged in the message109according to specified feedback options114received by a user, such as an author of the message109.

In addition, as described in more detail below, the messaging service110and the sharing service115may coordinate through one or more communication interfaces to manage the communication of messages109and files113via a message client interface.

The computing devices101may each include memory180storing a file113and a messaging client111. The computing devices101may also include a display interface118and an input device119. The messaging client111may be configured to communicate with the messaging service110to receive, compose and send messages109. In some examples, the messaging client111of each computing device101may be configured to instruct the sharing service115to store of one or more files, such as the file113. The messaging client111may be in the form of a stand-alone application or any other application or software module having features that interact with a user of the messaging service110and the sharing service115via one or more devices, such as the input device119and the display interface118. The input device119may be any device, such as a keyboard, and/or the display interface118, which may include a touch-enabled screen configured to receive gestures from one or more users.

In some examples, the messaging service110and/or the messaging client111may cause the display of a message interface on the first computing device101A. The message interface may include an editable text field for receiving text for a message109. In addition, the message interface may include controls for associating a file (e.g. file113and/or a file stored by the sharing service115) with the message109. In particular, a user may select one or more files and associate the selected files with the message109. Upon receiving the selection of the one or more files113, the first computing device101A may communicate one or more selected files to the sharing service115. The sharing service115may then generate one or more links that can be utilized to access the selected files stored by the sharing service115. The sharing service115may communicate the one or more links to the messaging service110and/or the messaging client111where the one or more links are inserted or integrated into the message109.

In some scenarios, the one or more selected files113may not be stored by the sharing service115, or the files113stored on the sharing service115may not include current versions of the one or more selected files113. In such scenarios, one or more modules, such as the sharing manager105B, may determine if the sharing service115is storing a current version of the one or more selected files. If it is determined that the one or more selected files are not stored at the sharing service115or if the sharing service115is not storing a current version of the one or more selected files113, the first computing device101A may communicate one or more selected files to the sharing service115. The first computing device101A may cause any computing device storing the one or more selected files113to communicate the one or more selected files113to the sharing service115. In some cases, the sharing service115might access a local storage of the first computing device101A to retrieve the one or more selected files113. Although this illustrative example utilizes the sharing manager105B, any other module or combination of modules may be used. For instance, network application programming interfaces (“APIs”) of the sharing service115may be accessed by any module, such as the messaging client111, to implement the techniques disclosed herein.

If it is determined that the sharing service115is storing a current version of the selected files113, the first computing device101A may communicate data identifying the selected files to the sharing service115. For instance, the first computing device101A might transmit data that identifies the selected files. In configurations where the sharing service115generates the links for the selected files113, the sharing service115may utilize the received file identifier to generate the links operative to provide access to the selected files113. The sharing service115may communicate the links to the messaging service110and/or the messaging client111where the links are inserted or integrated into the message109.

In some configurations, the messaging service110and/or the messaging client111may obtain the links that can be utilized to access the selected files113stored by the sharing service115. The messaging service110and/or the messaging client111may integrate the generated links into the message109without user interaction. As shown inFIG. 1, if the links are generated at the sharing service115, the links may be communicated from the sharing service115to the messaging service110, allowing the messaging service110to integrate the link into the message109. In addition, or alternatively, the one or more links122may be communicated from the sharing service115to the messaging client111of a computing device101, allowing the messaging client111to integrate the links into the message109.

Although these examples involve the use of one or more links, it can be appreciated that other data for identifying, locating and/or providing access to stored files may be utilized by the techniques described herein. For instance, an identifier associated with a stored file113, or any other access data suitable for providing access to the stored files, may be communicated from the sharing service115to the messaging service110and/or the messaging client111. Once the identifier associated with a stored file113is communicated, the messaging service110and/or the messaging client111insert or integrate the identifier into a message109. Any known technology for inserting or integrating an identifier that it configured to provide access to the one or more selected files113may be used with techniques disclosed herein. In addition, in some configurations, the messaging service110and/or the messaging client111may receive and utilize the identifier or other data from the sharing service115to generate the one or more links at the client computing device101and/or at the server181A of the messaging service110.

The messaging client111may be configured to display an interface, such as a user interface (“UI”) that may be utilized by the user composing the message109to set feedback options114, also referred to herein as “specified options.” The feedback options114may indicate a selection of one or more categories of feedback data123(referred to herein as “selected feedback data”) to be inserted into the message109. In addition, as will be described in more detail below, the feedback options114may indicate how feedback data123may be communicated between one or more computing devices.

In some configurations, the messaging client111might receive the feedback options114using some other mechanism. For example, the messaging client111might be configured to receive voice data that specifies the feedback options114. According to some configurations, the UI is configured to receive a selection of feedback options for managing the display and communication of feedback data.

Based on the selection of one or more categories of feedback data123, at least a portion of the feedback data123are retrieved from one or more computing devices, such as the sharing service115. The retrieved feedback data123is then inserted into the message109based on the selected categories of feedback data123. For example, if one category of feedback data, such as comments associated with text of the selected file113, is selected, at least a portion of the comments may be inserted in the message109. As will be described in more detail below, the categories of feedback data123that may be selected and inserted into the message109may include comments associated with a file113, data identifying users who provided comments, data indicating one or more deadlines or expiration dates. Other categories of feedback data, for example, may include numbers, tables and/or charts showing frequency data, trends or other data describing activity related to the feedback data123. The categories of the feedback data123may be arranged in the message according to the specified feedback options received by a user, such as an author of the message109.

When a user selects a control to send the message109, the message109including the link to the file might be communicated from the first computing device101A to the second computing device101B. The selected feedback data123or links allowing access to the selected feedback data123may be delivered with the message109. The communication of the message109may be processed by the messaging service110or any other service that is configured to communicate messages.

Once delivered, the message109, the link to the file113, the feedback data123and/or links to the feedback data123may be displayed on the interface118of the second computing device101B. The messaging client111of the second computing device101B may generate a UI that may display the message109and at least a portion of the feedback data based on the specified feedback options. If links to the feedback data123are inserted into the message109, a user of the second computing device101B may select the link included in the message109to initiate the communication of the feedback data123from the sharing service115to the second computing device101B.

In addition, based on the specified feedback options, the UI displayed on the interface118of the second computing device101B may be configured to receive feedback data123, which may involve the use of a data entry field. The feedback data123received by the data entry field may be communicated to a remote computing device, such as a sharing service115, for integration of the received feedback data123into the file113stored in a file data store107, a directory108B and/or one or more data stores.

According to some configurations, the sharing service115exposes one or more APIs, such as the API112. The API112can be accessed by various devices in communication with the sharing service115to access the functionality for setting options and configurations for the messaging client111. The API112may be configured to support various protocols for various devices. In addition, the API112may be used to communicate data, such as the file113feedback options114and/or feedback data123, between the sharing service115and other computing devices, such as the messaging service110, the first computing device101A or the second computing device101B.

The techniques described herein enable users to associate one or more selected files113with a message109that are to be shared with one or more other users from a single message client interface. In addition, as will be described in more detail below, techniques described herein enable users to set display and communication options for feedback data123associated with selected files113. Using an implementation of the technologies disclosed herein, users may share files and manage the communication of associated feedback data123from a message interface without the need to interact with different controls or interfaces of multiple services.

FIG. 2Ais a block diagram depicting a directory108andFIG. 2Bis a block diagram depicting the file data store107that might be utilized by the messaging service110and/or the sharing service115. In some configurations, the directory108illustrated inFIG. 2Amay include a number of records for defining access rights and permissions for users and/or identities accessing data stored by the sharing service115and possibly by the messaging service110. As illustrated inFIG. 2A, an individual user record201may include the storage and/or association with different types of data, including, but not limited to user information202, user permissions203, user contacts204, and feedback data123. In some configurations, the user information202may store general identification information such as a user's name, email address, phone number and other contact information.

Although this example shows feedback data123being stored in a user records201, the feedback data123may be stored in other locations, such as the directories108of the messaging service110and/or the sharing service115. In addition, the feedback data123may be embedded in a file113stored by any computing device. The feedback data123may also be stored by a database or in the memory of any computing device.

The user permissions203may contain one or more data structures for defining access rights to individual records, emails or files or other data. According to some examples, data defining access rights may be based on a per user and per record basis. Thus, access to individual files, directories, emails, feedback data entries or other data may be independently controlled by the user permissions203. For illustrative purposes, individual feedback data entries refer to individual comments or individual values, such as a number indicating the number of comments that are included in a file113. The user contacts204may include a list of email addresses, phone numbers and identification information for other users. In some configurations, the user record201may include user feedback205, which may include comments, notes and other data associated with files113stored in the file data store107.

In some configurations, the directory108may include more or fewer types of data. In addition, for the sharing service115, the directory108may contain a subset of the data types shown in the example ofFIG. 2A. For instance, the directory108B of the sharing service115may only include and/or utilize the user information202and user permissions203.

The file data store107illustrated inFIG. 2Bmay include the storage of files113A-113N, which are also referred to herein individually and generically as a “file113” or “files113.” In some configurations, the file data store107may store different versions for each file113A-113N, allowing users to select, edit, communicate and/or process newer or older versions of each file113. In some configurations, among many other features, the file data store107may also store other types of data, such as the user feedback205. In such configurations, the user feedback205may be stored in the files, or in other data fields.

In some configurations, the files113, which may be in the form of a document generated by a word processing application, have one or more structures that allow users to add one or more categories of feedback data123. In some configurations, the individual entries of feedback data123are associated with specific sections of the file or text included in the file113. There may be a number of different categories of feedback data123. For example, the categories of feedback data123may include comments associated with the file113, data identifying users who provided comments, data indicating one or more deadlines or expiration dates. Other categories of feedback data123, for example, may include numbers, tables and/or charts showing frequency data, trends or other data describing activity related to the feedback data123. For example, the feedback data123may also include time stamps for individual comments or other entries.

Turning now toFIGS. 3A-6, different examples of graphical user interfaces are illustrated as screen diagrams that display information relating to techniques for managing feedback data123on a sharing service115using an interface of the messaging client111. In addition, the examples disclosed herein provide techniques for setting display and communication options for feedback data123associated with files associated with a message109. The screen diagrams presented are for illustrative purposes only, and are not intended to be limiting. For example, other visual interface as well as non-visual interfaces (e.g., voice, touch) might be utilized to perform the functionality described herein.

FIG. 3Ais a screen diagram showing an illustrative graphical UI300that displays data relating to techniques for controlling the communication and storage of files113to a sharing service115while composing a message109. The UI300may be generated by the messaging client111, shown inFIG. 1, and presented on a computing device, such as the computing device101A or101B by an application, such as a web browser application.

As illustrated inFIG. 3A, the UI300includes a display of the message109being composed. In the current example, the UI300includes a “from” UI element305A showing the sender of the message109, a “recipient” UI element305B for specifying the recipients of the message109, a “subject” UI element305C for specifying the subject of the message109, message area UI element305D for entering text of the message109, and a “share” UI element310E for specifying one or more files113to share. In addition, the UI300includes a “feedback options” UI element310J for specifying the display and communication options for feedback data associated with the one or more files113.

A user may select the “attach/share” UI element310E to share one or more files113. In response to receiving a user the selection of the “attach/share” UI element310E, the messaging client111may generate one or more UI elements to display stored files113to the user and provide controls for the user to select one or more files113from the displayed list of files113.

FIG. 3Bis a screen diagram showing an illustrative graphical UI300for displaying a list of stored files310A-310D and providing controls for allowing a user to select individual files from the displayed list of files310A-310D. In this example, a file selection UI element315is displayed in response to the user selecting the share UI element310E. As illustrated, the file selection UI element315displays a list of stored files310A-310D. For illustrative purposes, two of the files are highlighted to represent a user selection of two files113for sharing. The first selected file113is the “profile.doc” file represented by file UI element310C. The second selected file113is the “finance.xls” file represented by file UI element310D. As can be appreciated, different UI elements, controls or mechanisms may be used to display and select the files to be shared. For example, the graphical UI300illustrated inFIG. 3Amay be configured to allow a user to drag and drop a selected file to a location within the message109. Once the user is done selecting the desired files, the selected filed113may be associated with the message109. In addition, the selected files113may be attached to the message109or uploaded to a service, such as the sharing service115, for storage.

The “feedback options” UI element310J provides controls for selecting and/or specifying one or more feedback options114. In this illustrative example, when the user selects the “feedback options” UI element310J, the messaging client111may generate one or more UI elements or a separate UI displaying controls for allowing the selection of one or more feedback options114.FIG. 4illustrates one non-limiting example of UI for displaying feedback options114and receiving the selection of one or more feedback options114.

FIG. 4is a screen diagram showing an illustrative graphical UI400that displays data relating to selecting feedback options114for the message109. The UI400may be generated by the messaging client111, shown inFIG. 1, and presented on a computing device, such as the first computing device101A or the second computing device101B by an application, such as a web browser application or the messaging client111.

In the current example, the UI400is an example of a feedback options interface that includes a feedback display settings UI element401A and a feedback communications settings UI element401B. The feedback options interface illustrated in the UI400are intended for illustration purposes, and are not intended to be limiting. The UI400used to specify the feedback options may include more or fewer UI elements.

The feedback display settings UI element401A includes options to select the categories of feedback data123to be included in the message109. As illustrated, the feedback display settings UI element401A includes a “display feedback preview” option to include a display of preview of feedback data123in the message109. For example, if the display feedback preview option is selected, one or more categories of feedback data123, such as comments associated with the selected file113, may be included in the message109.

The feedback display settings UI element401A also lists other categories of feedback data123that may be selected by the user. For example, as illustrated inFIG. 4, the feedback display settings UI element401A includes a “display feedback expiration information” option allowing the selection of feedback expiration information. If the display feedback expiration information option is selected, data indicating an expiration date associated with the feedback data123may be included in the message109.

As also shown inFIG. 4, other feedback options may allow the selection of data describing activity associated with the feedback data123. For instance, in this example, the feedback display settings UI element401A includes a “display amount of feedback given to date” option allowing the selection of data indicating the amount of feedback given to date. This category of feedback data123may include a number of total comments, a number of comments associated with a particular user, or any other data describing activity associated (also referred to herein as “activity data”) with feedback data123. If the display amount of feedback given to date option is selected, activity data associated with the feedback data123may be included in the message109. As also shown inFIG. 4, other selectable feedback options may allow for the display and communication of other categories of feedback data123, such as information identifying users associated with the feedback data123. As will be described below, and shown inFIG. 5andFIG. 6, any number of categories of feedback data123may be selected, retrieved and inserted into the message109.

As also shown inFIG. 4, the feedback communications settings UI element401B may include one or more options that enable a user to specify preferences on how the feedback data123may be communicated. For instance, as shown inFIG. 4, the user may select the “attach feedback data” option. When the attach feedback data option is selected, the selected categories of feedback data123may be retrieved from one or more resources, such as the sharing service115, and the selected feedback data123may be attached to the message109. If the attach feedback data option is not selected, for example, links configured to provide access to the selected feedback data123may be inserted into the message109. In such an embodiment, a recipient of the message109may utilize the links to retrieve the selected feedback data123from one or more sources, such as the sharing service115. These examples of various communication options are provided for illustrative purposes and are not to be construed as limiting.

The feedback communications settings UI element401B may also include one or more feedback options that allows feedback data123to be received by a UI configured to display a message109. For illustrative purposes, the UI configured to display a message109is also referred to herein as a “message UI.” Generally described, the feedback communications settings UI element401B provides controls that cause the messaging client111to generate one or more message UIs configured with a data entry field configured to receive feedback data123from a user, such as the recipient of the message109. The feedback data123received by the message UI may be communicated from the messaging client111to the sharing service115for storage of the feedback data123. The received feedback data123may be associated with, or stored within, one or more files, such as the selected file113associated with the message109. By the use of techniques disclosed herein, feedback data123associated with a file113may be received at a messaging client111interface without requiring users to access multiple applications or multiple interfaces to review and communicate the feedback data123.

In the illustrative example ofFIG. 4, within the feedback communications settings UI element401B, the selection of a “do not allow feedback from email interface” option causes the generation a message UI that is not configured with a data entry field to receive feedback data123. The selection of an “allow feedback: no expiration” option causes the generation of a message UI that is configured with a data entry field to receive feedback data123for an unlimited period of time. Also, in this example, the selection of an “allow feedback: expires on” option causes generation of a message UI that is configured with a data entry field to receive feedback data123for a limited time period. The time period may be defined by one or more parameters, such as an expiration date and expiration time received at the UI400. In the current example, the user has specified that the message UI may only receive feedback data123until the expiration date of Jun. 6, 2014, which is five days from the date the message is being composed.

The selected feedback options114may be applied to groups of files113, individual files113, portions of the feedback data123or any combination thereof. To select different feedback options114for different types of data, the UI400may be displayed multiple times to allow the selection of feedback options114for each type of data. For instance, the UI400may be displayed for each of the selected files113. When the desired feedback options114have been specified, the user may select the “OK” button, which may cause the generation and display of UI500illustrated inFIG. 5.

FIG. 5is a screen diagram showing an illustrative graphical UI500that displays data relating to the message109and other graphical elements displaying a sample of selected feedback options114. The UI500may be generated by the messaging client111, shown inFIG. 1, and presented on a computing device, such as the computing device101A or computing device101B by an application, such as a web browser application. As shown, the UI500illustrated inFIG. 5is similar to the UI300illustrated inFIG. 3in that the UI500contains the “from” UI element305A for identifying the sender of the message109, the “recipient” UI element305B for identifying the recipients of the message109, the “subject” UI element305C for specifying the subject of the message109, message area UI element305D for entering text of the message109. The UI500also contains links for the associated files. In this example, a first link504A is configured to access the file “profile.doc” and a second link504B is configured to access the file “finance.xls.”

As also shown inFIG. 5, the UI500includes a first feedback display element501A, a second feedback display element501B and a third feedback display element501C for displaying the selected categories of feedback data123. For illustrative purposes, the feedback display elements501A-501C are also referred to herein generically as “feedback display elements501” or a “feedback display element501.” In some configurations, the feedback display elements501include the display of text, images, charts or other types of data. In addition, the feedback display elements501may be arranged in one or more positions or layouts to indicate an association with a selected filed.

To illustrate aspects of the feedback display elements501, it is given that the author of the message109selected several categories of feedback data123to be included in the message109. In this example, by the use of an interface, such as UI400, the selected categories of feedback data123for the file “profile.doc” includes activity data, user identification information and data indicating deadlines and expiration dates. In addition, in this example, it is given that the selected categories of feedback data123for the file “finance.xls” include comments, user identification information and data indicating expiration dates.

As shown, the position of the first feedback display element501A shows an association with the file, “profile.doc.” In addition, given the selected categories, the first feedback display element501A displays the text “Link Expires in 3 days” and “Feedback Due in 24 hours.” Further, since the author selected a category of feedback data123related to user activity, the first feedback display element501A displays data describing the number comments associated with the file, “profile.doc.” In this example, the first feedback display element501A also displays the text “120 comments received” and “Steve, Paul and Mike posted,” which are respectively communicating the user activity and user information.

Also shown inFIG. 5, for illustrative purposes, the position of the second feedback display element501B shows an association with the file, “finance.xls.” As shown, given the selected categories, the second feedback display element501B displays at least a portion of the feedback data123, such as a portion of a comment “column 2 needs edits . . . ” and “Please edit cell C4 to . . . ” In this example, the comments are also displayed with data identifying users that are associated with the comments and data identifying an expiration date. These examples are provided for illustrative purposes and are not to be construed as limiting as any category of feedback data123or other related information may be selected, retrieved and displayed in a UI containing a message109.

The position of the third feedback display element501C shows an association with the file, “finance.xls.” Given the selected categories, the third feedback display element501C illustrates a graphical chart that may be generated from the activity data. The graphical chart may be generated in response to the selection of one or more categories of feedback data123, such as the activity data related to the selected file113. Any category of feedback data123may be arranged in a graphical chart or any other arrangement for conveying trends, raw data, projections or any other processed data.

In addition to the display of the feedback display elements501, the UI500may also include elements for receiving feedback data123. The generation of the elements for receiving feedback data123are based on the feedback options114received by the user. For illustrative purposes, if the user selected the feedback option114labeled as “Allow Feedback: No Expiration” by the use of UI400, the UI500may be configured with elements for receiving feedback data123.FIG. 5shows an example of two elements for receiving feedback data123. Specifically, the UI500includes a first data entry element503A and a second data entry element503B (also referred to herein generically as “data entry elements503” or a “data entry element503”). The data entry elements503may include editable text fields configured to receive data from a user and communicate the received data to one or more remote computers. In addition, the data entry elements503may include UI elements that allow images, video or other forms of data to be received by the UI500.

Although the example ofFIG. 5involves the use of the data entry elements503, the generation of a message UI, e.g., UI500, may involve the use of graphical representations or placeholders. In some configurations, in the generation of UI500, graphical representations or placeholders may be generated to show the author the general size, shape and/or position of the data entry elements503that will be displayed to the recipient(s) after the message109is delivered. Thus, prior to the delivery of the message109, the UI500may include placeholders, and after the delivery of the message, a UI displayed to a recipient of the message109may include data entry elements503. Aspects of the data entry elements503configured for receiving feedback data123are described in more detail below and also shown inFIG. 6.

Once the author is done composing the message109and has selected one or more files113and the feedback options114, the user may send the message109to the recipient. As described above, the message109may be delivered to a user of another computing device. The message109may be delivered using any known techniques for sending a message, which may include the use of a service, such as the messaging service110.

FIG. 6is a screen diagram showing an illustrative graphical UI600that displays data relating to the message109after the message109has been delivered to a recipient. As shown, the graphical UI600that displays the message109and other graphical elements displaying the selected feedback options114. Specifically, the UI600includes the feedback display elements501for displaying the selected categories of feedback data123. In addition, the UI600displays the data entry elements503. The feedback data123displayed to the recipient by the UI600may be accessed by the use of links to the feedback data123, or the feedback data123may be delivered with the message109as described above. The links to the feedback data123may be represented by the use of any UI element, such as elements501A-501C. In some configurations, the elements501A-501C may display a portion of the selected feedback data123, and a selection of the elements501A-501C may cause the messaging client111to retrieve the selected feedback data123or additional feedback data123. As shown, the UI600may also include file links504to the selected files113. The file links504may be configured to allow the recipient of the message109to access the selected files.

The data entry elements503of the UI600are configured to receive data, such as text, and communicate the received data to one or more remote computers. In some configurations, the received data may be stored as feedback data123, which may be stored in a file113associated with the data entry elements503. As described above, the received data may also be stored as feedback data123in one or more databases such as the directory108B of the sharing service115or the directory108A of messaging service110.

FIG. 7is a flow diagram showing routines that illustrate aspects of techniques for managing document feedback on a sharing service using a messaging client, according to examples disclosed herein. It should be appreciated that the logical operations described herein with respect toFIG. 7, and the other FIGS., may be implemented (1) as a sequence of computer implemented acts or program modules running on a computing system and/or (2) as interconnected machine logic circuits or circuit modules within the computing system.

The implementation of the various components described herein is a matter of choice dependent on the performance and other requirements of the computing system. Accordingly, the logical operations described herein are referred to variously as operations, structural devices, acts, or modules. These operations, structural devices, acts, and modules may be implemented in software, in firmware, in special purpose digital logic and any combination thereof. It should also be appreciated that more or fewer operations may be performed than shown in the FIGS. and described herein. These operations may also be performed in parallel, or in a different order than those described herein.

FIG. 7is a flow diagram showing a routine700illustrating aspects of a mechanism disclosed herein for managing document feedback on a sharing service using a messaging client. The routine700may begin at operation701, where the messaging client111and/or the messaging service110may display a message interface on a computing device101. As described above, the message interface may include UI elements for composing and communicating data, such as a message109. In addition, as will be described herein in more detail below, the message interface may include one or more controls for selecting files to be associated with the message109.

Next, at operation703, the messaging client111may display a list of stored files. As described above, the list of stored files may include locally stored files113or remotely stored files113. In some configurations, operation703may involve a query to obtain a list of file names from a local memory, such as a hard drive of the client computer101. In addition, operation703may involve a query to obtain a list of file names from a service, such as the sharing service115. The file names may be displayed on a UI, as described above and shown inFIG. 3A. Although a UI having file names and graphical representations of the files113are shown herein, it can be appreciated that these examples are provided or illustrative purposes and are not to be construed as limiting to a particular type of interface. For example, the API112described inFIG. 1, or some other interface (e.g., speech) may be utilized.

Next, at operation705, the messaging client111may receive a selection of one or more files to be associated with the message109and shared with one or more recipients of the message109. As described above, in some configurations, one or more UIs may be configured to receive a user selection of one or more files113from the list of files. Graphical representations may be used to highlight selected files and one or more controls may be used to confirm the selection of the one or more files113. In addition, drag and drop UI features and other selection features may enable aspects of operation705.

Next, at operation707, the messaging client111may display a list of feedback options114. As described above, one or more feedback options114may be displayed on a UI, such as UI400. The display of feedback options114may include a number of categories of feedback data123. For example, as shown inFIG. 4, the categories of feedback data123may include comments associated with a file113, data identifying users who provided comments, data indicating one or more deadlines or expiration dates. Other categories of feedback data123, for example, may include numbers, tables and/or charts showing frequency data, trends or other data describing activity related to the feedback data123.

In addition, the display of feedback options114may include communication options for the feedback data123. As described above, and shown inFIG. 4, options displayed on UI400present different mechanisms for communicating feedback data123with a message109, and mechanisms for allowing a message UI, such as UI600, to receive feedback data123.

Next, at operation709, the messaging client111may receive a selection of one or more feedback options114. As described above and shown inFIG. 4, the selection of one or more feedback options may include the selection of one or more categories of feedback data123to be displayed in a message109. As noted in the examples described above, the selection of one or more categories may include comments, activity data, user information or any other portion of the feedback data123. In addition, the selection of one or more feedback options may include the selection of one or more mechanisms for communicating the feedback data123. As noted in the examples described above, the selection of one or more mechanisms for communicating the feedback data123may include options for generating a message UI configured to receive feedback data123. These examples of selected feedback options114are provide for illustrative purposes and are not to be construed as limiting.

Upon the completion of operation709, the routine700proceeds to operation711where the messaging service110and/or the messaging client111inserts feedback data123into the message interface or a message109based on the selected feedback options114. As described above and shown inFIG. 5, operation709may involve the insertion of selected categories of feedback data123into the message109. Operation709may also involve the generation of one or more UI elements for receiving feedback data123within the message109. The feedback data123and the elements for receiving feedback data123may be integrated into any portion of the message interface, including a body of a message109that is being composed by the user. As summarized above, the feedback data123may be communicated with the message109as an attachment. In some configurations, operation709may involve the generation of links that are operable for retrieving the selected categories of the feedback data123. In operation709, the links may be inserted in the message109, a message UI or other interface presented to a user.

From operation711, the routine700may proceed to operation713, where the message109is communicated to one or more recipients. In operation713, the message109may be sent by the messaging service110to the recipients of the message109. As described above, the message109may include portions of the feedback data123or links to the feedback data123. In addition, the message109may include links122and/or other identifiers that provide access to the selected files113.

Next, at operation715, messaging client111may communicate feedback data123with one or more resources. As described above, a message UI may be configured to receive feedback data123from a user. For instance, the UI600ofFIG. 6includes a message109and data entry elements503for receiving feedback data123. When data is received from a user at the data entry element503, the received data may be communicated from a computer, such as the client computer101, to one or more computers, such as the sharing service115. As also described above, the data received by the data entry element503may be stored within a file113as feedback data123. In addition, the received data may be stored in a database or data store such as the directory108A of the messaging service110or the directory108B of the sharing service115.

In addition, operation715may involve the communication of feedback data123from a remote computing device, such as the sharing service115, to the client computer101. This may occur if the message109is configured with links for accessing the feedback data123. As described above, in some configurations, the feedback data123may be communicated with message109as an attachment or the feedback data123maybe communicated by the use of one or more links embedded in the message109. In configurations where links to the feedback data123are embedded in the message109, operation715may involve the communication of feedback data123from the sharing service115to a client computer101. For instance, the third feedback display element501C, which is a chart of feedback data123, may be downloaded by the client computing device when the message109is viewed or when the data is requested by the messaging client111. These examples are provided for illustrative purposes and not to be construed as limiting. Upon the completion of operation715, the routine700terminates.

FIG. 8and the following description are intended to provide a brief, general description of a suitable computing environment in which the technologies described herein may be implemented. In particular,FIG. 8is a system and network diagram that shows an illustrative operating environment that includes a service provider network120. As discussed above, the service provider network120can provide virtual machine instances and computing resources on a permanent or an as-needed basis.

The computing resources provided by the service provider network120may include various types of resources, such as data processing resources, data storage resources, networking resources, data communication resources and the like. Each type of computing resource may be general-purpose or may be available in a number of specific configurations. For example, and as will be described in greater detail below, data processing resources may be available as virtual machine instances in a number of different configurations. The virtual machine instances may be configured to execute applications, including Web servers, application servers, media servers, database servers and other types of applications. Data storage resources may include file storage devices, block storage devices and the like. Each type or configuration of a virtual machine instance of a computing resource may be available in different sizes, such as large resources, consisting of many processors, large amounts of memory, and/or large storage capacity, and small resources consisting of fewer processors, smaller amounts of memory and/or smaller storage capacity.

The computing resources provided by the service provider network120are enabled in one implementation by one or more data centers804A-804N (which may be referred to herein singularly as “a data center804” or collectively as “the data centers804”). The data centers804are facilities utilized to house and operate computer systems and associated components. The data centers804typically include redundant and backup power, communications, cooling and security systems. The data centers804might also be located in geographically disparate locations. One illustrative configuration for a data center804that implements some or all of the concepts and technologies disclosed herein for annotating resources in the service provider network120will be described below with regard toFIG. 9.

The users and customers of the service provider network120may access the computing resources provided by the data centers804over a suitable data communications network, such as a Wide Area Network (“WAN”), as illustrated by the network830. Although a WAN might be used, it should be appreciated that a local-area network (“LAN”), the Internet, or any other networking topology known in the art that connects the data centers804to the computing device101A, and the computing device101B may be utilized. It should also be appreciated that combinations of such networks might also be utilized.

FIG. 9is a computing system diagram that illustrates one configuration for a data center804that implements aspects of a service provider network120, including some or all of the concepts and technologies disclosed herein for managing document feedback on a sharing service using a messaging client111. The example data center804shown inFIG. 9includes several server computers902A-902F (which may be referred to herein singularly as “a server computer902” or in the plural as “the server computers902”) for providing computing resources. The server computers902may be standard tower or rack-mount server computers configured appropriately for providing the computing resources described herein. According to one configuration, the server computers902are configured to execute the software products as described above.

In one example, some of the computing resources904are virtual machine instances. As known in the art, a virtual machine instance is an instance of a software implementation of a machine (i.e. a computer) that executes programs like a physical machine. Each of the server computers902may be configured to execute an instance manager (not shown) capable of instantiating and managing computing resources and instances of computing resources. In the case of virtual machine instances, for example, the instance manager might be a hypervisor or another type of program configured to enable the execution of multiple virtual machine instances on a single server computer902, for example.

It should be appreciated that although the technologies disclosed herein are described primarily in the context of virtual machine instances, other types computing resources can be utilized with the concepts and technologies disclosed herein. For instance, the technologies disclosed herein might be utilized with hardware resources, data storage resources, data communications resources, networking resources, database resources and with other types of computing resources.

The data center804shown inFIG. 9also includes a server computer902F reserved for executing software components for managing the operation of the data center804, server computers902, virtual machine instances, and other resources within the service provider network120. The server computer902F might also execute the messaging manager105A and/or the sharing manager105B. Details regarding the operation of each of these components has been provided above. In this regard, it should be appreciated that while these components are illustrated as executing within the service provider network120, computing systems that are external to the service provider network120might also be utilized to execute some or all of these components. Other configurations might also be utilized.

In the example data center804shown inFIG. 9, an appropriate local area network (“LAN”)905is utilized to interconnect the server computers902A-902E and the server computer902F. The LAN905is also connected to the network830illustrated inFIG. 8. It should be appreciated that the configuration and network topology illustrated inFIGS. 8 and 9has been greatly simplified and that many more computing systems, networks and networking devices may be utilized to interconnect the various computing systems disclosed herein. Appropriate load balancing devices or software modules might also be utilized for balancing a load between each of the data centers804A-804N, between each of the server computers902A-902F in each data center804and between virtual machine instances and other types of computing resources provided by the service provider network120.

It should be appreciated that the data center804described inFIG. 9is merely illustrative and that other implementations might also be utilized. Additionally, it should be appreciated that the functionality provided by these components might be implemented in software, hardware, or a combination of software and hardware. Other implementations should be apparent to those skilled in the art.

FIG. 10shows an example computer architecture for a computer1000capable of executing program components for managing document feedback on a sharing service using a messaging client in the manner described above. The computer architecture shown inFIG. 10illustrates a conventional server computer, workstation, desktop computer, laptop, tablet, network appliance, personal digital assistant (“PDA”), e-reader, digital cellular phone, or other computing device, and may be utilized to execute any of the software components presented herein. For example, the computer architecture shown inFIG. 10may be utilized to execute software components for performing operations as described above. The computer architecture shown inFIG. 10might also be utilized to implement a computing device101A or101B or any other of the computing systems described herein.

The computer1000includes a baseboard1002, or “motherboard,” which is a printed circuit board to which a multitude of components or devices may be connected by way of a system bus or other electrical communication paths. In one illustrative configuration, one or more central processing units (“CPUs”)1004operate in conjunction with a chipset1006. The CPUs1004may be standard programmable processors that perform arithmetic and logical operations necessary for the operation of the computer1000.

The chipset1006provides an interface between the CPUs1004and the remainder of the components and devices on the baseboard1002. The chipset1006may provide an interface to a RAM1008, used as the main memory in the computer1000. The chipset1006may further provide an interface to a computer-readable storage medium such as a read-only memory (“ROM”)1010or non-volatile RAM (“NVRAM”) for storing basic routines that help to startup the computer1000and to transfer information between the various components and devices. The ROM1010or NVRAM may also store other software components necessary for the operation of the computer1000in accordance with the various configurations described herein.

The computer1000may operate in a networked environment using logical connections to remote computing devices and computer systems through a network, such as the local area network1020. The chipset1006may include functionality for providing network connectivity through a network interface controller (NIC)1012, such as a gigabit Ethernet adapter. The NIC1012is capable of connecting the computer1000to other computing devices over the local area network1020. It should be appreciated that multiple NICs1012may be present in the computer1000, connecting the computer to other types of networks and remote computer systems.

The computer1000may be connected to a mass storage device1018that provides non-volatile storage for the computer. The mass storage device1018may store system programs, application programs, other program modules and data, which have been described in greater detail herein. The mass storage device1018may be connected to the computer1000through a storage controller1014connected to the chipset1006. The mass storage device1018may consist of one or more physical storage units. The storage controller1014may interface with the physical storage units through a serial attached SCSI (“SAS”) interface, a serial advanced technology attachment (“SATA”) interface, a fiber channel (“FC”) interface, or other type of interface for physically connecting and transferring data between computers and physical storage units.

In addition to the mass storage device1018described above, the computer1000may have access to other computer-readable storage media to store and retrieve information, such as program modules, data structures, or other data. It should be appreciated by those skilled in the art that computer-readable storage media is any available media that provides for the non-transitory storage of data and that may be accessed by the computer1000.

The mass storage device1018may store an operating system1030utilized to control the operation of the computer1000. According to one example, the operating system comprises the LINUX operating system. According to another example, the operating system comprises the WINDOWS® SERVER operating system from MICROSOFT Corporation. According to further examples, the operating system may comprise the UNIX operating system. It should be appreciated that other operating systems may also be utilized. The mass storage device1018may store other system or application programs and data utilized by the computer1000, such as components that include the managers105A-105B, the files113, and/or any of the other software components and data described above. The mass storage device1018might also store other programs and data not specifically identified herein.

In one example, the mass storage device1018or other computer-readable storage media is encoded with computer-executable instructions which, when loaded into the computer1000, transform the computer from a general-purpose computing system into a special-purpose computer capable of implementing the examples described herein. These computer-executable instructions transform the computer1000by specifying how the CPUs1004transition between states, as described above. According to one configuration, the computer1000has access to computer-readable storage media storing computer-executable instructions which, when executed by the computer1000, perform the various routines described above with regard toFIG. 7. The computer1000might also include computer-readable storage media for performing any of the other computer-implemented operations described herein.

The computer1000may also include one or more input/output controllers1016for receiving and processing input from a number of input devices, such as a keyboard, a mouse, a touchpad, a touch screen, an electronic stylus, or other type of input device. Similarly, the input/output controller1016may provide output to a display, such as a computer monitor, a flat-panel display, a digital projector, a printer, a plotter, or other type of output device. It will be appreciated that the computer1000may not include all of the components shown inFIG. 10, may include other components that are not explicitly shown inFIG. 10, or may utilize an architecture completely different than that shown inFIG. 10.

Based on the foregoing, it should be appreciated that technologies for managing document feedback on a sharing service using a messaging client have been presented herein. Moreover, although the subject matter presented herein has been described in language specific to computer structural features, methodological acts and computer readable media, it is to be understood that the invention defined in the appended claims is not necessarily limited to the specific features, acts, or media described herein. Rather, the specific features, acts and media are disclosed as example forms of implementing the claims.

The subject matter described above is provided by way of illustration only and should not be construed as limiting. Furthermore, the claimed subject matter is not limited to implementations that solve any or all disadvantages noted in any part of this disclosure. Various modifications and changes may be made to the subject matter described herein without following the example configurations and applications illustrated and described, and without departing from the true spirit and scope of the present invention, which is set forth in the following claims.