Patent Description:
Conventionally, when users provide comments in a document that is being collaboratively worked on, the users provide the comments in one or more comment bubbles to a side margin of the document. The comment bubbles are separate from content in the document and is typically linked to a portion of the content by a reference line. In cases where many comment bubbles are used, the number of reference lines can be confusing and hard to discern. Alternatively, a user can perform their own formatting to distinguish document content from comments (e.g., use highlighting, using different font type or color, provide within brackets), which can be time consuming, cumbersome, and tedious. <CIT> discloses the application of comments to a variety of application functionality content. Comments may be entered and displayed in a comments user interface component directly in line in the text or other objects of a document or other content item. Anonymous: "How to drag and drop notes from Google Keep into Google Docs - TechRepublic" (XP055681420) discloses how to incorporate notes from Google Keep into Google Docs. <CIT> discloses combining a first annotation and a second annotation in an electronic document. The first annotation is received and corresponds to a first portion of the electronic document. The second annotation is received and corresponds to a second portion of the electronic document. A first position of a layout rendering of the first annotation is determined, and a second position of a layout rendering of the second annotation is determined. The first position of the layout rendering of the first annotation is compared to the second position of the layout rendering of the second annotation. When the first position conflicts with the second position, the first annotation and the second annotation are combined to form a stacked annotation.

The description that follows describes systems, methods, techniques, instruction sequences, and computing machine program products that illustrate example embodiments of the present subject matter. In the following description, for purposes of explanation, numerous specific details are set forth in order to provide an understanding of various embodiments of the present subject matter. It will be evident, however, to those skilled in the art, that embodiments of the present subject matter may be practiced without some or other of these specific details. Examples merely typify possible variations. Unless explicitly stated otherwise, structures (e.g., structural components, such as modules) are optional and may be combined or subdivided, and operations (e.g., in a procedure, algorithm, or other function) may vary in sequence or be combined or subdivided.

The present disclosure provides technical solutions for optimizing a collaborative process by providing an inline document conversation area (also referred to herein as "inline conversation area") within the content (and context) of the document. In example embodiments, a collaboration system presents a user interface displaying a document that is
being collaboratively edited by a plurality of users. The collaboration system receives an indication to present an inline conversation area within the document (at or near a location where the inline conversation area is to be added). In response, the inline conversation area is displayed within the document on the user interface (at the location within the document on), whereby the inline conversation area is visually distinguished from content of the document (also referred to herein as "document content"). The inline conversation area comprises a comments section and a separate draft content section. The separate draft content section is separated from the comment section. The collaboration system receives, via the inline conversation area, input from the plurality of users. The input comprises comments being exchanged between the plurality of users and draft content. The draft content is proposed to be added to the content of the document. The draft content is provided and edited in the inline conversation area within the separate draft content section. The inputs are displayed in the inline conversation area within the document on the user interface. In some embodiments, the draft content can be incorporated into the content of the document in response to an insert command received from one of the plurality of users. The inline conversation area is scrollable to scroll the comments while keeping the draft content visible.

Further still, the collaboration system collapses the inline conversation area (or portions of the inline conversation area) under certain conditions. For example, a user may make a selection that triggers hiding of some or all of the inline content in the inline conversation area. Additionally, the collaboration system can display or visually distinguishes only comments determined, based on machine learning, to be relevant to the user.

Accordingly, the collaboration system provides inline document conversation functionality that includes displaying an inline conversation area within the content of a document (as opposed to a comment bubble at a side margin of the document). The inline conversation area allows a plurality of users to collaborate on the document by exchanging comments in the inline conversation area relative to the content that the comments are directed. Further still, draft content presented and edited within the inline conversation area can be easily incorporated into the content of the document. Thus, example methods (e.g., algorithms) and example systems (e.g., special-purpose machines) are configured to improve a document collaboration process and system by providing an inline conversation area with draft content transformation capabilities. Therefore, one or more of the methodologies described herein facilitate solving technical problems associated with efficiently exchanging comments and content between users collaborating on a document.

<FIG> is a diagram illustrating a network environment <NUM> suitable for providing and managing an inline conversation area in a document with draft content transformation capabilities, according to example embodiments. The network environment <NUM> includes a collaborative system <NUM> communicatively coupled via a network <NUM> to a plurality of client devices <NUM>. In example embodiments, the collaborative system <NUM> comprises components that provide a user interface that includes an inline conversation area, displays comments, allows editing of draft content in the inline conversation area, manages the incorporation of the draft content into the content of the document, and determines whether to collapse comments and the comments to be collapsed. The components of the collaboration system <NUM> are described in more detail in connection with <FIG> and may be implemented in a computer system, as described below with respect to <FIG>.

The components of <FIG> are communicatively coupled via the network <NUM>. One or more portions of the network <NUM> may be an ad hoc network, an intranet, an extranet, a virtual private network (VPN), a local area network (LAN), a wireless LAN (WLAN), a wide area network (WAN), a wireless WAN (WWAN), a metropolitan area network (MAN), a portion of the Internet, a portion of the Public Switched Telephone Network (PSTN), a cellular telephone network, a wireless network, a Wi-Fi network, a WiMax network, a satellite network, a cable network, a broadcast network, another type of network, or a combination of two or more such networks. Any one or more portions of the network <NUM> may communicate information via a transmission or signal medium. As used herein, "transmission medium" refers to any intangible (e.g., transitory) medium that is capable of communicating (e.g., transmitting) instructions for execution by a machine (e.g., by one or more processors of such a machine), and includes digital or analog communication signals or other intangible media to facilitate communication of such software.

In example embodiments, the client devices <NUM> are portable electronic devices such as smartphones, tablet devices, laptops, desktop computers, or similar devices that allow users to create, review, and edit documents. The client devices <NUM> each comprises one or more processors, memory, displays, wireless or wired networking systems, and input devices. In some embodiments, the client devices <NUM> interacts with the collaborative system <NUM> through a client application (not shown) stored thereon. The client application of the client devices <NUM> allows for exchange of information with the collaborative system <NUM> via user interfaces. The client application <NUM> also receives information from the networked system <NUM> and presents the information on the user interfaces.

In example embodiments, a first user operates the client device 106a that communicates with the networked system <NUM> to collaborate on a document. Similarly, a second user operates the client device 106b to communicate with the collaborative system <NUM> to collaborate on the document with the first user (and any number of other users authorized to collaborate on the document). The collaborative system <NUM>, upon request, creates an inline conversation area within the content of the document where the first user and the second user can exchange comments. Additionally, the first user or second user can present draft content which can be reviewed and edited by other users authorized to collaborate on the document. In some example, the draft content is incorporated into the content of the document in response to an insert command or operation. Other operations available through the inline conversation area will be discussed in detail below.

In example embodiments, any of the systems, machines, databases, or devices (collectively referred to as "components") shown in, or associated with, <FIG> may be, include, or otherwise be implemented in a special-purpose (e.g., specialized or otherwise non-generic) computer that has been modified (e.g., configured or programmed by software, such as one or more software modules of an application, operating system, firmware, middleware, or other program) to perform one or more of the functions described herein for that system or machine. For example, a special-purpose computer system able to implement any one or more of the methodologies described herein is discussed below with respect to <FIG>, and such a special-purpose computer may be a means for performing any one or more of the methodologies discussed herein. Within the technical field of such special-purpose computers, a special-purpose computer that has been modified by the structures discussed herein to perform the functions discussed herein is technically improved compared to other special-purpose computers that lack the structures discussed herein or are otherwise unable to perform the functions discussed herein. Accordingly, a special-purpose machine configured according to the systems and methods discussed herein provides an improvement to the technology of similar special-purpose machines.

Moreover, any functions described herein for any system or device illustrated in <FIG> may be subdivided among multiple systems or devices. Additionally, any number of client devices <NUM> may be embodied within the network environment <NUM>. Furthermore, some components or functions of the network environment <NUM> may be combined or located elsewhere in the network environment <NUM>. For example, some of the functions of the collaborative system <NUM> may be embodied within other systems or devices of the network environment <NUM> (e.g., in the client device <NUM>). Additionally, some of the functions of the client device <NUM> may be embodied within the collaborative system <NUM>. While only a single collaborative system <NUM> is shown, alternative embodiments may contemplate having more than one collaborative system <NUM> to perform server operations discussed herein for the collaborative system <NUM>.

<FIG> is a block diagram illustrating components of the collaborative system <NUM> for providing and managing an inline conversation area within a document, according to some example embodiments. In various embodiments, the collaborative system <NUM> allows user to exchange comments and edits to draft content in the inline conversation area. The collaborative system <NUM> also determines relevance of comments to the draft content and to each user that is collaborating on the document. Further still, the collaborative system <NUM> determines when to collapse (e.g., hide) comments (e.g., based on relevance or number of comments exceeding a threshold) and which comments to collapse. To enable these operations, the collaborative system <NUM> comprises a communication module <NUM> and a presentation engine <NUM> that manages presentation of documents being collaborated on as well functionalities associated with the inline conversation area. The presentation engine <NUM> includes a user interface (UI) module <NUM>, a conversation module <NUM>, a draft module <NUM>, a relevance module <NUM>, and a threshold module <NUM> all configured to communicate with each other (e.g., via a bus, shared memory, or a switch). The collaborative system <NUM> may also comprise other components (not shown) that are not pertinent to example embodiments. Furthermore, any one or more of the components (e.g., engines, modules) described herein may be implemented using hardware (e.g., a processor of a machine) or a combination of hardware and software. Moreover, any two or more of these components may be combined into a single component, and the functions described herein for a single component may be subdivided among multiple components.

The communications module <NUM> is configured to exchange data with the client devices <NUM> and cause presentation of one or more user interfaces generated by the presentation engine <NUM> on a display device (e.g., display screen) of the client devices <NUM> including user interfaces that display a document being collaborated on by a plurality of users and display an inline conversation area. In some embodiments, the communication module <NUM> generates and transmits instructions (or the user interfaces themselves) to the client devices <NUM> to cause the user interfaces to be displayed on the client devices <NUM>. The communications module <NUM> also receives, via the user interfaces, comments, draft content, and edits to the draft content in the inline conversation area as well commands/instructions to hide comments, hide draft content, and insert draft content into the content of the document.

The UI module <NUM> manages generation of user interfaces that are presented at the client devices <NUM>. In example embodiments, the UI module <NUM> generates and causes presentation of user interfaces (e.g., sends the UI or instructions to generate the user interface via the communications module <NUM>) on the client devices <NUM>. In example embodiments, the UI module <NUM> presents a document that is being collaborated on between a plurality of users. The UI module <NUM> further presents, within the content of the document (e.g., between lines of text that comprise the content of the document), an inline conversation area. The inline conversation area is visually distinguished from the content of the document. For example, the inline conversation area can be offset (e.g., indented) from the content, be in a different font or font style, be shown as a box within the content, or in any other manner that causes the appearance of the inline conversation area to be different than the content of the document.

The conversation module <NUM> manages comments within the inline conversation area. In example embodiments, the conversation module <NUM> receives, via the communications module <NUM>, an indication to present the inline conversation area within the document. The indication is triggered near a location in the document where the inline conversation area it to be presented. In response to receiving the indication, the conversation module <NUM> triggers the UI module <NUM> to present the inline conversation area. For example, the first user at client device 106a can indicate to present an inline conversation area between a second and a third paragraph of the document. This location may be selected by the first user because, for example, the first user wants to make a comment regarding the second or third paragraph or wants to discuss adding new content between the second and third paragraphs.

Once the inline conversation area is presented, any user authorized to work on the document can provide comments in the inline conversation area. Each comment from a different user is associated with an identifier of the user. For example, an image of the user is presented next to their comment. In another example, a name or initials of the user is presented next to their comment.

In example embodiments, a user can choose to collapse comments from one or more other users. For example, the user may be conversing with two other users and only wants to see the comments from a first user. In this case, the user can collapse the comments from the second user. The user collapses by triggering a collapse command associated with the second user (e.g., selecting a collapse icon displayed on the user interface that is associated with the second user), which causes the conversation module <NUM> to collapse the comments from the second user. Further still, the user can collapse comments from more than one user or for all users, collapse a draft content portion (described further below) of the inline conversation area, or collapse the entire inline conversation area by selecting a corresponding collapse icon. Conversely, the user can choose to display portions of the collapsed comments or the collapsed draft content portion by selecting a corresponding expand icon. In some cases, the expand icon and the collapse icon may be the same icon.

The draft module <NUM> manages draft content that is input in the inline conversation area. The draft content is content that is proposed to be added to the content of the document. In example embodiments, the draft content is visually distinguished from the comments in the inline conversation area. For example, the draft content can be offset from the comments; be shown in a different font type, style, or color; or be displayed in a shaded portion of the inline conversation area.

By having the draft content inputted and edited in the inline conversation area, the users can easily exchange ideas regarding the draft content without actually editing or affecting the content of the document. In example embodiments, a first user initially provides the draft content. Subsequently, a second user provides an edit to the draft content. The draft module <NUM> visually distinguishes the edit from the original draft content. For example, deletions are shown as strikethroughs (sometimes with highlighting) and additions are underlined or highlighted. The draft module <NUM> also can track which user made each edit and provide a visual cue of the editing user associated with an edit when instructed.

The users can also decide whether to incorporate the draft data into the document. In one embodiments, the incorporation is triggered by a drag and drop operation. In this embodiment, the draft module <NUM> receives a selection of at least a portion of the draft content, an indication to drag the selected draft content to a location in the document, and an indication to drop the selected draft content into the location in the document. In response to receiving, the draft module <NUM> converts the selected draft content into new document content and inserts the new document content into the location indicated by the drop selection. As a result, the UI module <NUM> displays an updated document showing the new document content at the location in the document.

In an alternative embodiment, the draft module <NUM> receives an insert selection associated with the draft content. For example, an insert icon is presented relative to the draft content in the inline conversation area which can be selected by the user. In response to receiving the insert selection, the draft module <NUM> converts the draft content into new document content and inserts the new document content into the document below the inline conversation area.

Once the draft content is incorporated into the document, the inline conversation (e.g., comments) remains visible in accordance with one embodiments. This allows the users to facilitate additional conversation. In an alternative embodiment, once the draft content is incorporated into the document, the inline conversation (e.g., comments) are hidden. Thus, this embodiment facilitates the reading of the document. In some embodiments, the user(s) can set their preference as to whether the comments are visible after incorporation of the draft content.

The relevance module <NUM> manages display of relevant comments to a user. In example embodiments, the relevance module <NUM> detects comments in the inline conversation area that are relevant to the user and automatically collapses comments in the inline conversation area that are not relevant. In a further embodiment, the relevance module <NUM> detects comments in the inline conversation area relevant to the user and visually distinguishes the relevant comments.

In order to provide these functionalities, the relevance module <NUM> machine learns what is relevant to a user. For example, the relevance module <NUM> analyses the conversation (e.g., comments) in the inline conversation area and identifies key aspects such as due date and @mentions (e.g., where the user is mentioned by name). Additionally, the relevance module <NUM> detects time spent commenting on content of the document (or draft content), time spent editing draft content, or time spent reading comments or draft content in order to determine relevance. The more time a user spends, the more likely the comments are relevant. Additionally, over time, the relevance module <NUM> detects actions and keywords that the user uses in the inline conversation area to determine what is relevant to the user.

In some embodiments, the relevance module <NUM> can navigate the user to relevant portions of the inline conversation area. For example, when the user opens the application to access the document, the relevance module <NUM> instructs the UI module <NUM> to display the relevant portions of the inline conversation area to the user. Alternatively, the relevance module <NUM> instructs the UI module <NUM> to provide a feed of comments and draft content that is relevant to the user.

The threshold module <NUM> manages consolidation of the inline conversation area based on a predetermined threshold. When collaborating on a document, the comments and draft content exchanged in the inline conversation area can get exceedingly long making it difficult to view content of the inline conversation area in context within the document. The threshold module <NUM> detects whether content in the inline conversation area (e.g., the comments and/or the draft content) exceeds a predetermined threshold (e.g., in number of lines, number of characters or words). If the content in the inline conversation area exceeds the predetermined threshold, the threshold module <NUM> automatically collapses a portion of the inline conversation area (e.g., instructs the UI module <NUM> to present the inline conversation area with the portion collapsed). In some embodiments, the threshold module <NUM>, in conjunction with the relevance module <NUM>, automatically collapses comments that are not directly related to draft content in the inline conversation area.

The user can, at any time, expand the inline conversation area to view the portions collapsed by the relevance module <NUM>, the threshold module <NUM>, or previously collapsed by the user.

<FIG> is a flowchart illustrating operations of a method <NUM> for managing an inline conversation area, according to some example embodiments. Operations in the method <NUM> are performed by the collaboration system <NUM>, using components described above with respect to <FIG>. Accordingly, the method <NUM> is described by way of example with reference to the collaboration system <NUM>. However, it shall be appreciated that at least some of the operations of the method <NUM> may be deployed on various other hardware configurations or be performed by similar components residing elsewhere in the network environment <NUM>. Therefore, the method <NUM> is not intended to be limited to the collaboration system <NUM>.

In operation <NUM>, the document is presented, by the UI module <NUM> in a user interface to at least one user in a collaborative working environment. Accordingly, the UI module <NUM> generates the user interface and sends the user interface or instructions to generate the user interface via the communications module <NUM>.

In operation <NUM>, the collaboration system <NUM> receives an indication to present an inline conversation area in the document. In example embodiments, the conversation module <NUM> receives, via the communications module <NUM>, an indication to present the inline conversation area within the document. In some cases, the indication is triggered near a location in the document where the inline conversation area is to be presented.

In operation <NUM>, the inline conversation area is presented within the document (e.g., between content of the document). In example embodiments, the conversation module <NUM> triggers the UI module <NUM> to present the inline conversation area. The inline conversation area is visually distinguished from the content of the document. For example, the inline conversation area can be offset (e.g., indented) from the content, be in a different font color or font style, be shown as a box within the content, or in any other manner that causes the appearance of the inline conversation area to be different than the content of the document.

In operation <NUM>, the collaboration system <NUM> (e.g., the conversation module <NUM> via the communications module <NUM>) receive inputs from users. The inputs comprise comments from the users, draft content, and/or edits to the draft content. In operation <NUM>, the UI module <NUM> (e.g., when instructed by the conversation module <NUM>) presents the inputs in the inline conversation area. In example embodiments, the collaboration system <NUM> can detect and distinguish between conversations (e.g., comments) and draft content. As such, the collaboration system <NUM> can create a comment section as well as a separate draft content section within the inline conversation area either in response to user manual instructions or automatically in response to detecting keywords in the comments (e.g., "in the section below").

Further still, the collaboration system <NUM> tracks which inputs are from which users. Thus, in operation <NUM>, the UI module <NUM> can visually attribute inputs to their corresponding user. For example, an edit made by a second user can be shown with an indication of an identifier (e.g., initials, name) of the second user. In another example, an identifier of the user providing the input can be displayed when a cursor hovers (or based on a right click operation) over the input.

In operation <NUM>, a determination is made whether to hide inline content (e.g., comments or draft content) in the inline conversation area (also referred to as "inline content"). The inline content is hidden by collapsing a portion of the inline conversation area. Operation <NUM> will be discussed in more detail in connection with <FIG> below.

In operation <NUM>, the inline content is collapsed in response to a determination, in operation <NUM>, to hide the content. In some embodiments, the comments for one or more users are hidden based on operation <NUM>. In some embodiments, draft content can be hidden based on operation <NUM>. A user can, at any time, unhide or expand the hidden inline content, for example, by selecting an appropriate icon.

In operation <NUM>, a determination is made whether to insert draft content into the document. In one embodiments, the insertion is triggered by a drag and drop operation whereby at least a portion of the draft content is selected, a drag indication received, and a drop indication at a location in the document is received. In an alternative embodiment, the draft module <NUM> receives an insert selection associated with the draft content. For example, an insert icon relative to the draft content in the inline conversation area can be selected.

In operation <NUM>, the draft content is converted and inserted into the document in response to a determination to insert the draft content. In various embodiments, the draft content may have been edited by one or more users. In example embodiments, the draft module <NUM> accepts the edits and converts the draft content into new document content. The new document content is then inserted into the location indicated by the drop selection or inserted into the document below the inline conversation area.

<FIG> is a flowchart illustrating operations of a method <NUM> for determining whether to collapse inline content in the inline conversation area, according to some example embodiments. Operations in the method <NUM> (e.g., operation <NUM>) are performed by the collaboration system <NUM>, using components described above with respect to <FIG>. Accordingly, the method <NUM> is described by way of example with reference to the collaboration system <NUM>. However, it shall be appreciated that at least some of the operations of the method <NUM> may be deployed on various other hardware configurations or be performed by similar components residing elsewhere in the network environment <NUM>. Therefore, the method <NUM> is not intended to be limited to the collaboration system <NUM>.

In operation <NUM>, a determination is made whether a collapse indication or command is received from the user. In example embodiments, a user can choose to collapse comments from one or more other users. For example, the user triggers a collapse command associated with a particular user (e.g., selecting a collapse icon displayed on the user interface that is associated with the particular user). This causes the conversation module <NUM> to collapse the comments for the particular user in operation <NUM>. Further still, the user can collapse comments from more than one user or all users, collapse a draft content portion of the inline conversation area, or collapse the entire inline conversation area by selecting a corresponding collapse icon.

If no indication is received in operation <NUM>, then the method <NUM> proceeds to operation <NUM> where a determination is made whether a predetermined threshold amount of inline content is presented in the inline conversation area. The threshold module <NUM> manages consolidation of the inline conversation area based on the predetermined threshold. In some embodiments, the threshold module <NUM> detects whether content in the inline conversation area (e.g., the comments and/or the draft content) exceeds a predetermined threshold (e.g., number of lines, number of characters or words). If the content in the inline conversation area exceeds the predetermined threshold, the threshold module <NUM> automatically collapses a portion of the inline conversation area (e.g., sends instructions the UI module <NUM> to present the inline conversation area with the portion collapsed) in operation <NUM>. In some embodiments, the threshold module <NUM> automatically collapses comments that are not directly related to draft content in the inline conversation area. If no predetermined threshold is exceeded, then the method <NUM> returns to operation <NUM>.

In operation <NUM>, relevance of content to a user is determined. In example embodiments, the relevance module <NUM> detects comments in the inline conversation area that are relevant to the user. Accordingly, the relevance module <NUM> machine learns what is relevant to a user. For example, the relevance module <NUM> analyses the conversation (e.g., comments) in the inline conversation area and identifies key aspects such as due date and @ mentions. Additionally, the relevance module <NUM> detects time spent commenting on content (or draft content), time spent editing draft content, or time spent reading comments or draft content in order to determine relevance. Over time, the relevance module <NUM> detects actions and keywords that the user uses in the inline conversation area to determine what is relevant to the user. In some cases, a user can set preferences for when the relevance module <NUM> should collapse inline content based on relevance. In some embodiments, the relevance may be used to determine what to collapse based on the determination that a predetermined threshold has been met or exceeded (e.g., in operation <NUM>).

<FIG> are example screen shots of a user interface <NUM> illustrating usage of the inline conversation area in accordance with one embodiment. <FIG> shows the example user interface <NUM> displaying a document (e.g., water quality report) that is being collaborated on by multiple users. One of the users (e.g., named Kat) wants to start a conversation with her peers within the context of the document. Kat navigates to a location in the document where the conversation is likely relevant in context with content in the document. Kat then provides an indication to present an inline conversation area at the location. For example, Kat can select an inline conversation icon <NUM> at the location or right click to bring up a menu that presents a selectable inline conversation option.

Selection of the inline conversation icon or option causes the inline conversation area <NUM> to be added within the document as shown in <FIG>. An identifier <NUM> associated with Kat is presented in the inline conversation area <NUM>. In the present example, the identifier <NUM> is an image of Kat. However, alternative embodiments may use a name or initials of the user to identify the user making the comment.

Referring now to <FIG>, Kat has entered her comments in the inline conversation area <NUM>. Kat addresses the comment to one of her colleagues, Preeta Naidu by providing an @mention (e.g., @Preeta Naidu) in the comment. In the example, Kat is asking for more details to be added to the document. In example embodiments, the inline conversation area <NUM> also provides an indication of when comments were inputted (e.g., a few hours ago).

In <FIG>, Preeta responds to Kat in the inline conversation area <NUM>. Preeta's response is indicated by an identifier <NUM> associated with Preeta. Further still, Preeta's comment is directed to Kat based on the @mention (e.g., @Kat). In some embodiments, the conversation module <NUM> intelligently recognizes the words "section below" in Preeta's comment and adds a draft space <NUM> for Preeta to enter draft content <NUM>. In an alternative embodiment, the user may manual trigger the addition of the draft space <NUM>. Accordingly, the collaboration system <NUM> can distinguish between conversation (e.g., comments) and draft content.

Referring now to <FIG>, Preeta provides the draft content <NUM> in the inline conversation area <NUM> (e.g., within the draft space <NUM>). In example embodiments, the draft content <NUM> is visually distinguished from the comments being exchanged by the users. In the example of <FIG>, the draft space <NUM> is shown separated from the comments as a shaded portion of the inline conversation area <NUM>.

For comparison, Preeta can hide the conversation (e.g., collapse the inline conversation area <NUM>) so that she can evaluate the document without comments or draft content. As shown in <FIG>, Preeta has hidden the inline conversation area <NUM> and only the content of the document is shown. In one embodiment, the inline conversation area <NUM> is collapsed in response to a user indication to hide the inline content (e.g., the comments and draft content <NUM>). In the example of <FIG>, Preeta has selected an icon <NUM> that causes the inline conversation area <NUM> to be hidden. When Preeta is ready to expand or open back the inline conversation area <NUM>, Preeta can select another icon (e.g., the inline conversation icon <NUM>) to expand the collapsed inline conversation area <NUM>. In another example, Preeta can select the icon <NUM> to expand the collapsed inline conversation area <NUM>.

As the conversation continues in the inline conversation area <NUM>, the inline conversation area <NUM> because scrollable (e.g., indicated by the scroll bar <NUM>) so as to keep the draft content <NUM> visible, as shown in <FIG>, but hide some of the comments. That is, the comments may scroll while the draft content <NUM> stays visible at all times (unless collapsed by a user).

Also shown in <FIG> are edits to the draft content. For example, Kat has deleted some text (e.g., "and Southridge"), whereby the deletion is shown as a strikethrough. Alternative examples may use other visual cues to distinguish the deleted text. Kat has also added to the draft content (e.g., "This ensures that water will be available to the region for the future and in case of emergency. The additional draft content is visually distinguished by highlighting. In an alternative embodiment, the additional draft content may be visually distinguished in a different manner such as with underlining.

If the users (here Kat and Preeta) agree that the draft content looks good and should be included in the content of the document, then one of the users selects an insert icon or option <NUM>. In the example of <FIG>, the insert icon <NUM> is a check mark. However, alternative example can use other forms of icons.

In response to the selection of the insert icon <NUM>, the draft module <NUM> converts the draft content <NUM> into new document content <NUM> and inserts the new document content <NUM> below the inline conversation area <NUM> as shown in <FIG>. While the draft content has now been incorporated into the document, the conversation between Kat and Preeta can continue exchanging comments in the inline conversation area <NUM>.

<FIG> are example screen shots of a user interface <NUM> illustrating usage of the inline conversation area in accordance with an alternative embodiment. In <FIG>, an inline conversation area <NUM> contains comments from Kat and Preeta along with draft content <NUM>. As with the previous example, Kat has provided edits to the draft content that is shown visually distinguished from the initial draft content. In some embodiments, the edits can be removed from the draft content <NUM> in order to see a "clean version" of the draft content. For example, Preeta can select an icon to hide the edits. In the present example, the draft content <NUM> is shown in a draft space that is distinguished from the comments by a lack of an @mention. Further still, the draft content <NUM> is shown between comments involving Kat and Preeta.

Referring now to <FIG>, when the conversation becomes too rich (e.g., a threshold amount of comments is being exchanged), the collaboration system <NUM> can show only relevant content that is curated for each user. As such, the threshold module <NUM> detects that the predetermined threshold is exceed and based on relevance determined by the relevance module <NUM>, comments that are determined (based on machine learning) to be relevant to each user or to the draft content <NUM> is shown. The remainder of the comments are hidden or collapsed from view as shown in <FIG>. A user can select to view the collapsed comments by selecting a corresponding icon or selection (e.g., "see more" icon <NUM>).

When the users decide to incorporate the draft content <NUM>, the users can select, drag, and drop the draft content <NUM> (or a portion of the draft content <NUM>). Referring now to <FIG>, one of the collaborators has selected the entire draft content <NUM> and is dragging the selected draft content <NUM> to a location where the draft content should be incorporated into the document. <FIG> shows the draft content <NUM> converted to new document content and inserted into the location in the document (e.g., below the inline conversation area <NUM>).

In some embodiments, a user can hover over (with a cursor) the new document content to see its relationship to the conversation in the inline conversation area <NUM> as shown in <FIG>. In particular, hovering over the new document content causes the draft content <NUM> to be highlighted in the inline conversation area <NUM>. In some cases, relevant comments may also be highlighted or visually distinguished.

<FIG> illustrates components of a machine <NUM>, according to some example embodiments, that is able to read instructions from a machine-readable medium (e.g., a machine-readable storage device, a non-transitory machine-readable storage medium, a computer-readable storage medium, or any suitable combination thereof) and perform any one or more of the methodologies discussed herein. Specifically, <FIG> shows a diagrammatic representation of the machine <NUM> in the example form of a computer device (e.g., a computer) and within which instructions <NUM> (e.g., software, a program, an application, an applet, an app, or other executable code) for causing the machine <NUM> to perform any one or more of the methodologies discussed herein may be executed, in whole or in part.

For example, the instructions <NUM> may cause the machine <NUM> to execute the flow diagrams of <FIG> and <FIG>. In one embodiment, the instructions <NUM> can transform the general, non-programmed machine <NUM> into a particular machine (e.g., specially configured machine) programmed to carry out the described and illustrated functions in the manner described.

In alternative embodiments, the machine <NUM> operates as a standalone device or may be connected (e.g., networked) to other machines. In a networked deployment, the machine <NUM> may operate in the capacity of a server machine or a client machine in a server-client network environment, or as a peer machine in a peer-to-peer (or distributed) network environment. The machine <NUM> may be a server computer, a client computer, a personal computer (PC), a tablet computer, a laptop computer, a netbook, a set-top box (STB), a personal digital assistant (PDA), a cellular telephone, a smartphone, a web appliance, a network router, a network switch, a network bridge, or any machine capable of executing the instructions <NUM> (sequentially or otherwise) that specify actions to be taken by that machine. Further, while only a single machine is illustrated, the term "machine" shall also be taken to include a collection of machines that individually or jointly execute the instructions <NUM> to perform any one or more of the methodologies discussed herein.

The machine <NUM> includes a processor <NUM> (e.g., a central processing unit (CPU), a graphics processing unit (GPU), a digital signal processor (DSP), an application specific integrated circuit (ASIC), a radio-frequency integrated circuit (RFIC), or any suitable combination thereof), a main memory <NUM>, and a static memory <NUM>, which are configured to communicate with each other via a bus <NUM>. The processor <NUM> may contain microcircuits that are configurable, temporarily or permanently, by some or all of the instructions <NUM> such that the processor <NUM> is configurable to perform any one or more of the methodologies described herein, in whole or in part. For example, a set of one or more microcircuits of the processor <NUM> may be configurable to execute one or more modules (e.g., software modules) described herein.

The machine <NUM> may further include a graphics display <NUM> (e.g., a plasma display panel (PDP), a light emitting diode (LED) display, a liquid crystal display (LCD), a projector, or a cathode ray tube (CRT), or any other display capable of displaying graphics or video). The machine <NUM> may also include an alphanumeric input device <NUM> (e.g., a keyboard), a cursor control device <NUM> (e.g., a mouse, a touchpad, a trackball, a joystick, a motion sensor, or other pointing instrument), a storage unit <NUM>, a signal generation device <NUM> (e.g., a sound card, an amplifier, a speaker, a headphone jack, or any suitable combination thereof), and a network interface device <NUM>.

The storage unit <NUM> includes a machine-readable medium <NUM> (e.g., a tangible machine-readable storage medium) on which is stored the instructions <NUM> (e.g., software) embodying any one or more of the methodologies or functions described herein. The instructions <NUM> may also reside, completely or at least partially, within the main memory <NUM>, within the processor <NUM> (e.g., within the processor's cache memory), or both, before or during execution thereof by the machine <NUM>. Accordingly, the main memory <NUM> and the processor <NUM> may be considered as machine-readable media (e.g., tangible and non-transitory machine-readable media). The instructions <NUM> may be transmitted or received over a network <NUM> via the network interface device <NUM>.

In some example embodiments, the machine <NUM> may be a portable computing device and have one or more additional input components (e.g., sensors or gauges). Examples of such input components include an image input component (e.g., one or more cameras), an audio input component (e.g., a microphone), a direction input component (e.g., a compass), a location input component (e.g., a global positioning system (GPS) receiver), an orientation component (e.g., a gyroscope), a motion detection component (e.g., one or more accelerometers), an altitude detection component (e.g., an altimeter), and a gas detection component (e.g., a gas sensor). Inputs harvested by any one or more of these input components may be accessible and available for use by any of the modules described herein.

The various memories (i.e., <NUM>, <NUM>, and/or memory of the processor(s) <NUM>) and/or storage unit <NUM> may store one or more sets of instructions and data structures (e.g., software) <NUM> embodying or utilized by any one or more of the methodologies or functions described herein. These instructions, when executed by processor(s) <NUM> cause various operations to implement the disclosed embodiments.

As used herein, the terms "machine-storage medium," "device-storage medium," "computer-storage medium" (referred to collectively as "machine-storage medium <NUM>") mean the same thing and may be used interchangeably in this disclosure. The terms refer to a single or multiple storage devices and/or media (e.g., a centralized or distributed database, and/or associated caches and servers) that store executable instructions and/or data, as well as cloud-based storage systems or storage networks that include multiple storage apparatus or devices. The terms shall accordingly be taken to include, but not be limited to, solid-state memories, and optical and magnetic media, including memory internal or external to processors. Specific examples of machine-storage media, computer-storage media, and/or device-storage media <NUM> include non-volatile memory, including by way of example semiconductor memory devices, e.g., erasable programmable read-only memory (EPROM), electrically erasable programmable read-only memory (EEPROM), FPGA, and flash memory devices; magnetic disks such as internal hard disks and removable disks; magneto-optical disks; and CD-ROM and DVD-ROM disks. The terms machine-storage media, computer-storage media, and device-storage media <NUM> specifically exclude carrier waves, modulated data signals, and other such media, to the extent such media are deemed too transitory. Other such media are also covered under the term "signal medium" discussed below. In this context, the machine-storage medium is non-transitory.

The term "signal medium" or "transmission medium" shall be taken to include any form of modulated data signal, carrier wave, and so forth. The term "modulated data signal" means a signal that has one or more of its characteristics set or changed in such a matter as to encode information in the signal.

The instructions <NUM> may further be transmitted or received over a communications network <NUM> using a transmission medium via the network interface device <NUM> and utilizing any one of a number of well-known transfer protocols (e.g., HTTP). Examples of communication networks <NUM> include a local area network (LAN), a wide area network (WAN), the Internet, mobile telephone networks, plain old telephone service (POTS) networks, and wireless data networks (e.g., WiFi, LTE, and WiMAX networks). The term "transmission medium" shall be taken to include any intangible medium that is capable of storing, encoding, or carrying instructions <NUM> for execution by the machine <NUM>, and includes digital or analog communications signals or other intangible medium to facilitate communication of such software.

Structures and functionality presented as separate components in example configurations may be implemented as a combined structure or component, without departing the scope of the appended claims. Similarly, structures and functionality presented as a single component may be implemented as separate components, without departing the scope of the appended claims. These and other variations, modifications, additions, and improvements fall within the scope of the subject matter defined in the appended claims.

Certain embodiments are described herein as including logic or a number of components, modules, or mechanisms. Modules may constitute either software modules (e.g., code embodied on a machine-readable medium or in a transmission signal) or hardware modules. A "hardware module" is a tangible unit capable of performing certain operations and may be configured or arranged in a certain physical manner. In various example embodiments, one or more computer systems (e.g., a standalone computer system, a client computer system, or a server computer system) or one or more hardware modules of a computer system (e.g., a processor or a group of processors) may be configured by software (e.g., an application or application portion) as a hardware module that operates to perform certain operations as described herein.

In some embodiments, a hardware module may be implemented mechanically, electronically, or any suitable combination thereof. For example, a hardware module may include dedicated circuitry or logic that is permanently configured to perform certain operations. For example, a hardware module may be a special-purpose processor, such as a field programmable gate array (FPGA) or an ASIC. A hardware module may also include programmable logic or circuitry that is temporarily configured by software to perform certain operations. For example, a hardware module may include software encompassed within a general-purpose processor or other programmable processor.

Accordingly, the term "hardware module" should be understood to encompass a tangible entity, be that an entity that is physically constructed, permanently configured (e.g., hardwired), or temporarily configured (e.g., programmed) to operate in a certain manner or to perform certain operations described herein. As used herein, "hardware-implemented module" refers to a hardware module. Considering embodiments in which hardware modules are temporarily configured (e.g., programmed), each of the hardware modules need not be configured or instantiated at any one instance in time. For example, where the hardware modules comprise a general-purpose processor configured by software to become a special-purpose processor, the general-purpose processor may be configured as respectively different hardware modules at different times. Software may accordingly configure a processor, for example, to constitute a particular hardware module at one instance of time and to constitute a different hardware module at a different instance of time.

Some portions of this specification may be presented in terms of algorithms or symbolic representations of operations on data stored as bits or binary digital signals within a machine memory (e.g., a computer memory).

Unless specifically stated otherwise, discussions herein using words such as "processing," "computing," "calculating," "determining," "presenting," "displaying," or the like may refer to actions or processes of a machine (e.g., a computer) that manipulates or transforms data represented as physical (e.g., electronic, magnetic, or optical) quantities within one or more memories (e.g., volatile memory, non-volatile memory, or any suitable combination thereof), registers, or other machine components that receive, store, transmit, or display information. Furthermore, unless specifically stated otherwise, the terms "a" or "an" are herein used, as is common in patent documents, to include one or more than one instance. Finally, as used herein, the conjunction "or" refers to a non-exclusive "or," unless specifically stated otherwise.

Although an overview of the present subject matter has been described with reference to specific example embodiments, various modifications and changes may be made to these embodiments without departing from the scope of the appended claims.

The embodiments illustrated herein are believed to be described in sufficient detail to enable those skilled in the art to practice the teachings disclosed. Other embodiments may be used and derived therefrom, such that structural and logical substitutions and changes may be made without departing from the scope of the appended claims.

Claim 1:
A method comprising:
causing presentation of a user interface (<NUM>) on a display device (<NUM>), the user interface displaying a document that is being collaboratively edited by a plurality of users;
receiving an indication (<NUM>) at or near a location in the document where an inline conversation area (<NUM>) is to be presented within the document;
in response to receiving the indication, causing presentation, by a hardware processor, of the inline conversation area at the location within the document on the user interface, the inline conversation area being visually distinguished from document content of the document, the inline conversation area comprising a comments section and a separate draft content section (<NUM>), the separate draft content section being separated from the comments section;
receiving, via the inline conversation area, input from the plurality of users, the input comprising a plurality of comments being exchanged between the plurality of users and draft content, the draft content being proposed to be added to the content of the document, the draft content being provided and edited in the inline conversation area within the separate draft content section; and
causing presentation of the plurality of comments in the comments section and the draft content in the draft content section (<NUM>) of the inline conversation area (<NUM>) at the location within the document on the user interface, wherein the inline conversation area is scrollable to scroll the comments while keeping the draft content (<NUM>) visible.