COLLABORATIVE EDITING OF SOURCE CODE WITH INTELLIGENT OPERATIONS

A collaboration session is provided in which an owner computer system and a participant computer system are both members. While working within this session, the participant computer system is provided access to a multi-file workspace that is stored locally on the owner computer system. The owner computer system receives a request that is directed to the multi-file workspace. Here, the request originates from the participant computer system. In response to the request, the owner computer system handles the request and then returns a response to the participant computer system.

Skip to: Description  ·  Claims  · Patent History  ·  Patent History
Description
CROSS-REFERENCE TO RELATED APPLICATIONS

This application claims priority to U.S. Provisional Application Ser. No. 62/585,988, filed on Nov. 14, 2017 and entitled “MULTI-FILE REAL-TIME COLLABORATION ENVIRONMENT,” the entirety of which is incorporated herein by reference.

BACKGROUND

Computers and computing systems have impacted nearly every aspect of modern-day living. For instance, computers are generally involved in work, recreation, healthcare, transportation, and so forth.

A computer operates by executing a set of executable instructions (i.e. code). These instructions were created in a development environment by a developer in order to create an application. In many instances, the developer will generate many different versions of the code in an effort to improve the computer's operations and to remove any bugs that are present in the code. Once the instructions are compiled, interpreted, and/or built, an underlying computer system executes the instructions to provide the application's functionalities.

Different tools have been created to assist a developer in writing, editing, testing, and debugging an application's executable instructions. Some of these tools include program code text editors, source code editors, debuggers, and integrated development environments (IDEs), just to name a few. The process of generating and debugging code can be improved through the participation of additional developers.

For example, by working together in a team, team members are able to jointly collaborate to review and improve a project.

The subject matter claimed herein is not limited to embodiments that solve any disadvantages or that operate only in environments such as those described above. Rather, this background is provided to illustrate only one example technology area where some embodiments described herein may be practiced.

BRIEF SUMMARY

At least some of the embodiments described herein relate to establishing a collaboration session so that multiple collaborators are able to jointly edit source code. For example, a collaboration session in which an owner computer system and a participant computer system are both members is established. Within this collaboration session, the participant computer system is provided access to a multi-file workspace that is stored on the owner computer system. Further, the owner computer system is able to receive a request from the participant computer system. Here, this request is directed to the multi-file workspace. In response, the owner computer system handles the request and then returns a response to the participant computer system.

In this manner, the owner computer system and the participant computer system are able to jointly operate on a multi-file workspace. As will be discussed in more detail later, the disclosed embodiments provide many benefits. By way of a brief introduction, however, the disclosed embodiments significantly improve a computer system's overall efficiency because less data is required to be stored on it. Further, the disclosed embodiments also enable multiple operations to be synchronized with each other. Accordingly, collaborative edits made against a workspace will be significantly improved through the practice of the disclosed embodiments.

This Summary is not intended to identify key or essential features of the claimed subject matter nor is it intended to be used as an aid in determining the scope of the claimed subject matter. Instead, this Summary is provided to introduce a selection of concepts in a simplified form. These concepts are more fully described below in the Detailed Description.

BRIEF DESCRIPTION OF THE DRAWINGS

In order to describe the manner in which the above-recited and other advantages and features can be obtained, a more particular description of various embodiments will be rendered by reference to the appended drawings. Understanding that these drawings depict only sample embodiments and are not therefore to be considered limiting, the embodiments will be described and explained with additional specificity and detail through the use of the accompanying drawings in which:

FIG. 1 illustrates an overall view of a computer system.

FIG. 2 provides an example depiction of how a collaboration session may be initiated.

FIG. 3 illustrates the various forms and characteristics that a collaborator may have.

FIG. 4 illustrates an example architecture that may be used to facilitate a collaboration session.

FIG. 5 shows how an integration component is able to configure a client application's user interface so that it includes collaboration options.

FIG. 6A illustrates how a client application is able to access the local files on a participant computer system.

FIG. 6B illustrates how a client application's communications can be intercepted and re-routed.

FIG. 7 demonstrates how an owner computer system is able to process requests submitted by a participant computer system.

FIG. 8 demonstrates how a multi-file workspace can become accessible to a participant computer system.

FIG. 9 demonstrates how the tools of an owner computer system can become accessible to a participant computer system.

FIG. 10 illustrates an example scenario in which multiple collaborators are editing a body of source code.

FIG. 11 illustrates another example scenario in which multiple collaborators are editing a body of source code.

FIG. 12 illustrates a scenario in which collaborators are able to independently operate on different files of a multi-file workspace.

FIG. 13 illustrates an example method for enabling multiple collaborators to independently edit a body of source code.

FIG. 14 illustrates another example method for enabling collaborators to independently edit a body of source code.

DETAILED DESCRIPTION

At least some of the embodiments described herein relate to establishing a collaboration session so that multiple collaborators are able to jointly edit source code. For example, a collaboration session in which an owner computer system and a participant computer system are both members is established. Within this collaboration session, the participant computer system is provided access to a multi-file workspace that is stored on the owner computer system. Further, the owner computer system is able to receive a request from the participant computer system. Here, this request is directed to the multi-file workspace. In response, the owner computer system handles the request and then returns a response to the participant computer system. In this manner, the owner computer system and the participant computer system are able to jointly operate on a multi-file workspace.

An advantage of the disclosed embodiments is that they allow an “owner collaborator” (or simply “owner”) to remain in control of his her multi-file workspace even when outside collaborators (also called hereinafter “participant collaborators” or simply “participant(s)”) are joined with the owner in a “collaborative session.” Here, the term “owner” can refer to either a “human owner” or an “owner computer system.” Similarly, the term “participant” can refer to either a “human participant” or a “participant computer system.” In contrast, an “owner computer system” and a “participant computer system” refer only to a computer system and do not include a human operator. Additionally, “collaborator” refers to any entity (e.g., an owner or a participant) that has joined a collaboration session while “collaborators” refers to some or all of the entities in the collaboration session (e.g., the owner and all of the participants).

z

As also used herein, a “multi-file workspace” is an assembly of multiple files that operate collectively by interacting with each other. As an example, a code development project may include multiple files of source code that, when executed, operate together to perform complex functions. Thus, a code development project may be considered a multi-file workspace. Other examples of a multi-file workspace include, but are not limited to, text files and/or word processing files (e.g., where the files are linked via a table of contents or some other linking unit), or any other content in which multiple sources of data are joined together. Yet another non-limiting example of a multi-file workspace is a wiki-based workspace that is configured to receive edits and/or markdowns from multiple entities. Accordingly, from this disclosure, it will be appreciated that the embodiments are able to operate with regard to any kind of multi-file workspace. For the sake of brevity, and by way of example only, the remaining portion of this disclosure will focus on a multi-file workspace that includes multiple files of source code.

Here, it is also worthwhile to note that a “collaboration session,” as used herein, is an occurrence in which an owner computer system is joined with one or more participant computer systems in order to jointly collaborate on a multi-file workspace. During this collaboration session, the participant computer systems are provided access to a multi-file workspace that is stored locally on the owner computer system. In this manner, the participants need not download the multi-file workspace.

Instead, the participant computer systems act as headless units because editing and other operations may be performed on the owner computer system as opposed to occurring on each of the participant computer systems.

Of note, collaboration sessions may be initiated for a broad variety of reasons. For example, in some instances, a collaboration session may be established so that the participants can assist the owner in performing a certain function. For instance, if the collaboration involves debugging, the owner might be the primary person tasked with generating the code, whereas the participants may be other developers who are helping the owner debug that code. In a learning environment, the owner may be a student, and the participant may be a teacher. In an alternative learning environment, a professor may be the owner and his/her students may be the participants. In such a scenario, the professor is able to guide his/her students in demonstrating how the workspace operates. In this context, the owner is able to retain administrative control over his/her multi-file workspace.

Yet another example scenario includes a coding interview process in which the interviewer sets up a workspace environment (e.g., a coding environment). Here, the interviewer is the owner and the interviewee is the participant. In another example scenario, an owner need not be a human on one end of the system. Instead, an owner computer system may be a build server that has no human owner. In this scenario, as will be discussed in more detail later, a human participant, who is using a participant computer system, is able to join a remote codebase (i.e. an “owner” build instance) for the purpose of collaborating in a debugging scenario. Of note, in situations where the owner is a build instance, the disclosed embodiments enable one (or perhaps more) of the participants to assume control of the multi-file workspace. Relatedly, a participant is also able to assume ownership for specific changes to the multi-file workspace.

Having just described some of the situations in which the embodiments may be practiced, the disclosure will now introduce some of the technical benefits that are provided herein. For example, the disclosed embodiments may be implemented to overcome many of the technical difficulties and computational expenses associated with jointly controlling and collaborating on a multi-file workspace. To illustrate, conventional methods for debugging an application often involve each collaborator installing a workspace's global environment/context and then applying the same data (or steps) in order to reproduce the exact issues that led to finding a bug. Such a process consumes a significant amount of time, computing resources, and manpower. As used herein, the term “context” refers to the state of a workspace.

In contrast, the disclosed embodiments provide significant advantages because they enable multiple computers to connect to a single computer, which is running a workspace's environmental logic (e.g., services) and which is maintaining a global context of the workspace, to thereby allow the collaborators to jointly collaborate on the multi-file workspace (as opposed to having multiple different workspaces operating on multiple different computers). These operations result in a significant increase in the overall efficiency of the collaborating computer systems.

Another advantage of the disclosed embodiments is that because only a single workspace is being operated on, the collaborators' operations are synchronized with each other. For example, when multiple collaborators (e.g., code developers) are joined together in a collaborative session, each collaborator is made aware (in real-time) of at least some, and potentially all, of the actions of all of the other collaborators because each collaborator is working on the same workspace. In other words, each collaborator's individual action is “synced” with the actions of the other collaborators.

Having just described various advantages and high-level attributes of some of the disclosed embodiments, the disclosure will now focus on FIG. 1 which presents an introductory discussion of an example computer system. Following that discussion, the disclosure will focus on FIGS. 2 through 9. In particular, these Figures illustrate various architectures and supporting illustrations for providing a collaboration session according to the disclosed principles. Finally, the disclosure will focus on FIGS. 10 through 14 which illustrate various principles, user interfaces, and methods for using intelligent operations to edit source code in a collaboration session.

Example Computer System

As illustrated in FIG. 1, in its most basic configuration, a computer system 100 includes various different components. For example, FIG. 1 shows that computer system 100 includes at least one hardware processing unit 105 (aka “processor”), storage 110, input/output (I/O) interfaces 115, graphics rendering engines 120, and various communication channels 125.

The storage 110 may be physical system memory, which may be volatile, non-volatile, or some combination of the two. Accordingly, the storage 115 may be referred to as a “hardware storage device” on which computer-executable instructions are stored. The term “memory” may also be used herein to refer to non-volatile mass storage such as physical storage media. If the computer system 100 is distributed, the processing, memory, and/or storage capability may be distributed as well. As used herein, the term “executable module,” “executable component,” or even “component” can refer to software objects, routines, or methods that may be executed on the computer system 100. The different components, modules, engines, and services described herein may be implemented as objects or processors that execute on the computer system 100 (e.g., as separate threads).

The disclosed embodiments may comprise or utilize a special-purpose or general-purpose computer including computer hardware, such as, for example, one or more processors (such as hardware processing unit 105) and system memory (such as storage 110), as discussed in greater detail below. Embodiments also include physical and other computer-readable media for carrying or storing computer-executable instructions and/or data structures. Such computer-readable media can be any available media that can be accessed by a general-purpose or special-purpose computer system. Computer-readable media that store computer-executable instructions in the form of data are physical computer storage media. Computer-readable media that carry computer-executable instructions are transmission media. Thus, by way of example and not limitation, the current embodiments can comprise at least two distinctly different kinds of computer-readable media: computer storage media and transmission media.

Computer storage media are hardware/physical storage devices, such as RAM, ROM, EEPROM, CD-ROM, solid state drives (SSDs) that are based on RAM, Flash memory, phase-change memory (PCM), or other types of memory, or other optical disk storage, magnetic disk storage or other magnetic storage devices, or any other medium that can be used to store desired program code means in the form of computer-executable instructions, data, or data structures and that can be accessed by a general-purpose or special-purpose computer.

The computer system 100 may also be connected (via a wired or wireless connection) to external sensors (e.g., data acquisition devices). Further, the computer system 100 may also be connected through one or more wired or wireless network(s) 130 to remote systems(s) that are configured to perform any of the processing described with regard to computer system 100.

The graphics rendering engine 120 is configured, with the processor(s) 105, to render one or more objects on a display of the computer system 100. As a result, a user is able to view the results of the various functionalities of the computer system 100.

A “network,” like the network(s) 130 shown in FIG. 1, is defined as one or more data links and/or data switches that enable the transport of electronic data between computer systems, modules, and/or other electronic devices. When information is transferred, or provided, over a network (either hardwired, wireless, or a combination of hardwired and wireless) to a computer, the computer properly views the connection as a transmission medium. As illustrated the computer system 100 includes one or more communication channels 125 that are used to communicate with the network(s) 130. Transmissions media include a network that can be used to carry data or desired program code means in the form of computer-executable instructions or in the form of data structures. Further, these computer-executable instructions can be accessed by a general-purpose or special-purpose computer. Combinations of the above should also be included within the scope of computer-readable media.

Upon reaching various computer system components, program code means in the form of computer-executable instructions or data structures can be transferred automatically from transmission media to computer storage media (or vice versa). For example, computer-executable instructions or data structures received over a network or data link can be buffered in RAM within a network interface module (e.g., a network interface card or “NIC”) and then eventually transferred to computer system RAM and/or to less volatile computer storage media at a computer system. Thus, it should be understood that computer storage media can be included in computer system components that also (or even primarily) utilize transmission media.

Computer-executable (or computer-interpretable) instructions comprise, for example, instructions that cause a general-purpose computer, special-purpose computer, or special-purpose processing device to perform a certain function or group of functions. The computer-executable instructions may be, for example, binaries, intermediate format instructions such as assembly language, or even source code. Although the subject matter has been described in language specific to structural features and/or methodological acts, it is to be understood that the subject matter defined in the appended claims is not necessarily limited to the described features or acts described above. Rather, the described features and acts are disclosed as example forms of implementing the claims.

Those skilled in the art will appreciate that the embodiments may be practiced in network computing environments with many types of computer system configurations, including personal computers, desktop computers, laptop computers, message processors, hand-held devices, multi-processor systems, microprocessor-based or programmable consumer electronics, network PCs, minicomputers, mainframe computers, mobile telephones, PDAs, tablets, pagers, routers, switches, cloud-based machines and infrastructures, and the like. The embodiments may also be practiced in distributed system environments where local and remote computer systems that are linked (either by hardwired data links, wireless data links, or by a combination of hardwired and wireless data links) through a network each perform tasks (e.g. cloud computing, cloud services and the like). In a distributed system environment, program modules may be located in both local and remote memory storage devices.

Additionally or alternatively, the functionality described herein can be performed, at least in part, by one or more hardware logic components. For example, and without limitation, illustrative types of hardware logic components that can be used include Field-Programmable Gate Arrays (FPGAs), Program-Specific or Application-Specific Integrated Circuits (ASICs), Program-Specific Standard Products (ASSPs), System-On-A-Chip Systems (SOCs), Complex Programmable Logic Devices (CPLDs), Central Processing Units (CPUs), and other types of programmable hardware.

As discussed above, computer systems are able to provide a broad variety of different functions. According to the principles disclosed herein, the embodiments are able to provide a multi-file real-time collaboration environment. Accordingly, attention will now be directed to FIGS. 2 through 9, which figures present various architectures and supporting illustrations for establishing a collaboration session.

Collaboration Session

FIG. 2 illustrates a collaboration session 200 in which an owner computer system 205 and a participant computer system 210 are both members. Notably, both the owner computer system 205 and the participant computer system 210 may include all of the features and functionalities that were discussed in relation to the computer system 100 of FIG. 1. Accordingly, when reference is made to a “computer system,” it will be appreciated that such a system may include the features of computer system 100.

Here, it will be appreciated that there may be any number of participant computer systems in the collaboration session 200. For instance, FIG. 2 shows that Participant “A,” Participant “B,” and/or Participant “C” may be included in the collaboration session 200. As a result, the owner computer system 205 may be a first member in the collaboration session 200, Participant “A” may be a second member in the collaboration session 200, Participant “B” may be a third member in the collaboration session (e.g., three or more members), and so on with potentially no limit. Accordingly, FIG. 2 is for example purposes only and should not be considered limiting. Furthermore, the remaining portion of this disclosure focuses on collaboration sessions that depict only a single participant; however, it should be understood that the principles may be practiced with any number of participants.

Returning to FIG. 2, the disclosed embodiments establish the collaboration session 200 so that the participant computer system 210 is able to gain access to a multi-file workspace stored on the owner computer system 205. In this manner, the participant computer system 210 can operate on the remote workspace as if the remote workspace were local. For instance, a human participant can independently view, edit, and otherwise operate on the remote workspace. By creating this type of collaboration session, all of the collaborators (e.g., the owner and participant(s)) are all able to collaborate on a single multi-file workspace. Accordingly, the disclosed embodiments provide many efficiencies over traditional collaboration processes.

Here, the collaboration session 200 may be initiated in a variety of ways. In some embodiments, the collaborators (e.g., the owner computer system 205 and the participant computer system 210) are able to communicate with each other over a local area network (LAN) connection 215. When this type of connection is available, then the collaboration session 200 may be initiated/established by sending a request 220 over the LAN connection 215. In this manner, the collaborators are able to communicate directly in a peer-to-peer manner. Accordingly, initiating the collaboration session 200 may be performed by establishing a peer-to-peer connection between the collaborator computer systems, where the peer-to-peer connection is established via the local area network connection.

Of note, in some instances, the owner computer system 205 may desire that the participant computer system 210 be authenticated prior to entering the collaboration session 200. As such, the embodiments are able to use the cloud 225 to provide authentication services. For example, some embodiments provide an authentication service 230 in the cloud 225. The participant computer system 210 can use this authentication service 230 to authenticate itself to the owner computer system 205. After the authentication is complete, then the collaboration session 200 can be initiated and the owner computer system 205 and the authenticated participant computer system 210 can jointly work on a multi-file workspace.

In other embodiments, the collaboration session 200 is initiated by sending the request 220 through a relay service 235 operating in the cloud 225 (i.e. a cloud-based relay service). Here, this relay service 235 is able to connect computers that are on different native networks (i.e. a communication link is initiated/established between the collaborator computer systems). Accordingly, the embodiments are able to use various services residing in the cloud 225 in order to initiate the collaboration session 200.

Other embodiments use a hybrid approach to initiating the collaboration session 200. For instance, if some participant computer systems are located on the same LAN as the owner computer system 205, then the request 220 can be sent to those participant computer systems using the LAN. Additionally, if some participant computer systems are not using the same LAN as the owner computer system 205, then the request 220 can be transmitted using the relay service 235 in the cloud 225.

Accordingly, the disclosed embodiments are able to use a variety of methods for initiating the collaboration session 200. Here, it is worthwhile to note that the disclosed embodiments are able to intelligently select whichever process is most efficient to initiate the collaboration session 200. On a related note, the collaboration session 200 is able to continue to use the respective network connections to maintain the communications between the collaborators.

Ending the collaboration session 200 may be performed in a variety of ways. In some embodiments, the collaboration session 200 ends through an action of one of the collaborators. For example, one of the collaborators may select an “End Collaboration” option.

In another embodiment, the collaboration session may end upon expiration of a time-out period. For example, the owner may have configured a policy controlling how long the collaboration session will remain active. Upon expiration of that period, the participants' connection to the collaboration session will be terminated. Additionally, the owner may set a policy indicating a time-out period associated with the shutting down of a client (e.g., an IDE). For example, the owner may set a time-out period to cause the collaboration session to terminate after a predetermined period of time has elapsed after the client was shut down. Such a feature is beneficial because it provides the collaborators adequate time to save any changes or to provide documentation within the code.

Alternatively, other embodiments are configured to end the collaboration session when the owner computer system shuts down and/or the owner logs off of the owner computer system. In yet another alternative embodiment, the collaboration session may continue to run even after the owner computer system has shut down, gone to sleep, or been logged off. As an example, suppose the human owner decided to perform a quick reboot or had to quickly attend a meeting. Here, because the collaboration session is still active (even though the owner computer system may not be active), the human owner will be able to quickly resume her work when she returns from her activities. An advantage realized by this embodiment is that if any configuration options are adjusted, then those adjustments can be persisted and will be in place for the remaining duration of the collaboration session. In this manner, the collaborators will be able to quickly resume working at the locations where they left off, and they can continue to operate using the same configuration options.

Other embodiments include audit tracking features that record each collaborators' actions (e.g., their edits). In this manner, these embodiments provide an audit trail that can be reviewed and analyzed at a later time, if the need or desire arises. Once the collaboration session ends based on the principles discussed above, then the audit tracking may also end.

Similar to FIG. 2, FIG. 3 illustrates another collaboration session 300. Here, it will be appreciated that collaboration session 300 is analogous to the collaboration session 200 of FIG. 3. In the scenario presented in FIG. 3, the collaboration session 300 includes an owner 305 and a participant computer system 310.

In particular, FIG. 3 shows some of the various characteristics that the owner 305 and the participant computer system 310 may have. As an example, the owner 305 may not be a computer system with a human operator. Instead, it may be a build instance of an application, as shown in FIG. 3. On a related note, the owner 305 may be a headless build instance that is residing in the cloud. In such a scenario, then the various participants are able to operate on the codebase on which the build instance is based. In this manner, the owner 305 may be executing a build instance of a computer program.

Alternatively, the owner 305 may be a computer system (as shown in FIG. 3) that is executing/using a first type of operating system (e.g., Operating

System “A”). In some situations, a human owner will operate the owner 305. Furthermore, the human owner is able to perform work on the multi-file workspace through the use of a client application that is instantiated/residing on the owner 305.

As used herein, a “client application” may be any type of application that enables the owner 305 to operate on the multi-file workspace. In situations where the multi-file workspace is a collection of text files, a client application may be a text editor, a word processing program, or any other program suitable to operate on the text files. In situations where the multi-file workspace is a collection of source code files, a client application may be a source code editor, an integrated development environment (IDE), or any other program suitable to operate on source code. Here, it will be appreciated that these client applications are provided access permissions to access the multi-file workspace residing on the owner 305. Although FIG. 3 shows that the owner 305 is able to operate a client application that is in the form of an IDE (e.g., IDE “A”), it will be appreciated that any type of client application may be used, not just an IDE.

Turning now to the participant computer system 310, the participant computer system 310 may also be a computer system that is executing/using an operating system (e.g., Operating System “B”). Here it is worthwhile to note that Operating System “B” may be different than Operating System “A.” As a result, the owner 305 and the participant computer system 310 need not use the same type of operating system in order to be joined together in the collaboration session 300 to work on the multi-file workspace. Relatedly, the participant computer system 310 need not use the same type of client application (e.g., IDE “B”) as the owner 305. Therefore, according to the principles disclosed herein, a participant is able to use his/her preferred operating system and client application regardless of the type of operating system and/or client application that the owner (e.g., owner 305) is using. Accordingly, the embodiments are operating system agnostic and client application agnostic.

Up to this point, the disclosure has presented some of the ways in which a collaboration session may be initiated and some of the characteristics of the collaborators. In light of that background, attention will now be directed to FIG. 4, which presents some architectural components that may be used to realize the benefits of the disclosed principles.

FIG. 4 illustrates a collaboration session 400 in which an owner computer system 405 and a participant computer system 410 are members. Here, the owner computer system 405 is a computer system that includes a collaboration agent 415. As illustrated, this collaboration agent 415 includes and manages a set of base tools 420 (e.g., Tool A, Tool B, and Tool C) (aka base services). Although FIG. 4 shows the collaboration agent 415 as including only three base tools, it will be appreciated that the collaboration agent 415 may include any number of base tools. Additional details on the base tools 420 will be presented momentarily.

The owner computer system 405 also includes a client application 425. As discussed earlier, a client application (e.g., client application 425) may be a text editor, word processing editor, source code editor, IDE, or any other type of application that enables a user to operate on a multi-file workspace. In light of that understanding, client application 425 may include a client tool 430 (aka client service). Similar to the above disclosure, although the client application 425 is shown as including only a single tool, it will be appreciated that the client application 425 may have any number of tools. Relatedly, the owner computer system 405 may have any number of client applications installed thereon. As an example, the client application 425 may be an integrated development environment (IDE) that has permissions to access the multi-file workspace. Further, this IDE may manage/host a set of client development tools. In this manner, the IDE can be used to work on the multi-file workspace.

Here, it will be appreciated that a base service/tool (e.g., Tool A, Tool B, or Tool C) may be a service or other type of function/tool that is generally common across many or all of the different types of client applications. For example, in the context of code editing, the base tools 420 may include a code completion service, a code debugging service (e.g., a source code error checking tool), a code highlighting service, a code navigation service, a code colorization service (e.g., syntax highlighting in which different colors are applied to the syntax depending on what category a syntax term belongs to), a code refactoring service (e.g., restructuring code without altering its behavior), a code hinting service (e.g., code completion), a source code search tool, a source code control tool, and/or a lightbulb service (e.g., an icon service that provides an expanded display of options).

Additional services and tools include, but are not limited to, providing member lists, parameter information, symbol services, source code transpilation (e.g., changing the source code so it reads in a different coding language), hover features, smart typing abilities, and quick code information. Relatedly, the client tool 430 may be a tool that is specific to a particular client application and that is not generally common among different client applications. As an example, the client tool 420 may be a tool or service specific to a particular type of IDE.

According to the principles disclosed herein, the owner computer system 405 is able to make these set of development tools (i.e. both the set of base tools 420 and the client tool 430) accessible to the participant computer system 410. Because these tools reside on the owner computer system 405, the tools have access to the entire context of the multi-file workspace. In this manner, the process of making the workspace accessible also includes the process of making the workspace's context accessible to other computer systems. By making the tools accessible to the participant computer system 410, a human participant is able to use the tools in light of the entire context of the multi-file workspace. In this manner, the collaborators are able to operate on the multi-file workspace using a set of tools that understand the workspace's entire context. Accordingly, the services/tools running on the owner computer system 405 are available for use by the participant computer system 410.

Returning to FIG. 4, the owner computer system 405 also includes an integration component 435 and a set of local files 440. In some embodiments, the multi-file workspace is included within the set of local files 440 on the owner computer system 405. In this manner, the integration component 435 is instantiated/residing on the owner computer system 405.

As discussed earlier, it is often desirable to enable a team of developers to jointly work on a project. According to the principles discussed here, the collaboration session 400 may be initiated so as to enable one or more participants (e.g., participant computer system 410) to join the owner computer system 405 in collaborating on a multi-file workspace that is stored locally on the owner computer system 405 (e.g., perhaps in the local files 440).

To achieve these benefits, the disclosed embodiments cause the integration component 435 to attach, or rather “hook,” to the client application 425 in a lightweight manner. For example, the integration component 435 may be a plugin or other type of client extension that hooks into the client application 425 to perform “redirection,” “rerouting,” and customization operations. For example, the integration component 435 (which is on the owner computer system 405) is configured to add additional functionalities to the client application 425. Of note, these additional functionalities are at least directed to establishing and maintaining the collaboration session 400.

To illustrate, FIG. 5 shows an owner computer system 500, which is analogous to the owner computer system 405 of FIG. 4. In FIG. 5, the owner computer system 500 includes a client application 505 and an integration component 510. The client application 505 is also shown as including a user interface 515. After the integration component 510 hooks itself onto the client application 505, then the integration component 510 is able to expand upon the abilities of the client application 505.

For example, in some embodiments, the integration component 510 will alter the user interface 515 so that it includes additional features related to a collaboration session. To illustrate, a set of new selectable collaboration options 525 have been added to the user interface 515 as a result of the integration component 510 attaching itself to the client application 505. The set of new collaboration options 525 include Option 1, Option 2, and Option 3. The ellipses 520 demonstrates that any number of options may be added to the user interface 515. Some of the set of collaboration options 525 may include, but are not limited to, (1) an option to initiate a collaboration session, (2) an option to terminate a collaboration session, and/or (3) an option to acquire information about a particular participant (e.g., the participant's avatar may be displayed and, when the avatar is selected, identifying information about the participant may be displayed).

Another option is a “pin” to participant's position option. As discussed, the embodiments enable a participant to work on a multi-file workspace that is stored locally on an owner computer system. Included with this functionality is the ability of the participant to independently navigate to areas within the multi-file workspace where the owner computer system is not currently operating (or even in locations where the owner computer system is operating). Furthermore, the embodiments also enable the participant to independently edit files. In light of these abilities, an owner may desire to learn where a participant is currently navigating/operating within his/her multi-file workspace.

By selecting the pin to participant's position option (e.g., the options can be selectable buttons), the embodiments automatically navigate the owner to the same location as a participant within the workspace. If there are multiple participants, then the owner may initially be prompted to select a particular participant. As an example, suppose an owner is editing File 1 shown in the user interface 515 in FIG. 5. At the same time, a participant may be independently editing File 2. By clicking the pin to participant's position option, the owner can be automatically navigated to File 2, and in particular to the exact location where the participant is editing File 2. Therefore, although the embodiments enable participants to independently navigate and edit the files within the workspace, the embodiments also enable the owner to be automatically directed to the locations within the workspace where the participants are working. In some embodiments, this feature is also provided to each of the participants. Therefore, in these embodiments, each collaborator is able to follow the actions of the other collaborators.

Another option that may be provided among the set of new collaboration options 525 is the option to adjust the access controls of the participants. For example, the owner may be provided with an option to adjust a policy so that participants are allowed to navigate to or edit only certain files. Yet another option is related to an audit feature in which the actions of the participants are recorded and are made available for viewing by the owner. Accordingly, the integration component 510 is able to interact with the client application 505 to enhance the owner's control over the participants in a collaboration session.

Returning to FIG. 4, attention will now be directed to the participant computer system 410. Here, the participant computer system 410 is shown as including a collaboration agent 445, a client application 450, an integration component 455, and local files 460. Here, the collaboration agent 445 communicates with the collaboration agent 415 to provide the participant computer system 410 access to the multi-file workspace residing on the owner computer system 405. Additional details on this interaction will be presented later. At this point, it is worthwhile to note that the client application 450 also provides a user interface to the participant so that the participant is able to view (and therefore work on) the multi-file workspace.

Similar to the integration component 435, the integration component 455 also attaches itself to the client application 455. The functionalities of this integration component 455 will now be discussed in relation to FIGS. 6A and 6B.

FIG. 6A shows a participant computer system 600A that includes a set of local files 605A, which are analogous to the local files 460, and a client application 610A. In this scenario, the participant computer system 600A does not have an integration component. Accordingly, when the participant computer system 600A is thusly configured, the client application 610A is able to submit requests 615A to the set of local files 605A. In this manner, the client application 610A operates on files that are stored locally on the participant computer system 600A.

To enable a participant computer system to operate on a remote multi-file workspace in an operating system agnostic and client application agnostic manner, the participant computer system uses a collaboration agent and an integration component. These features are shown in FIG. 6B. For example, the participant computer system 600B of FIG. 6B includes a collaboration agent 605, a set of local files 610B, a client application 615B, and an integration component 620. After attaching itself to the client application 615B, the integration component 620 is able to intercept requests 625B that are issued by the client application 615B. Normally, these requests 625B would be fulfilled using the set of local files 610B. Now, instead of the requests 625B being fulfilled using the information from the set of local files 610B, the integration component 620 intercepts those requests 625B and routes the intercepted requests 625B to the collaboration agent 605. Once the requests 625B are received, the collaboration agent 605 then routes the intercepted requests 625B to a collaboration agent residing on the owner computer system (e.g., collaboration agent 415 in FIG. 4).

Turning briefly to FIG. 7, FIG. 7 shows how an owner-side collaboration agent handles requests that are received from a participant-side collaboration agent. Here, the collaboration session 700 includes an owner computer system 705 and a participant computer system 710. The owner computer system 705 includes a collaboration agent 720, a set of base tools 725, a set of client tools 730, and a set of local files 735. The ellipses 740 demonstrates that the owner computer system 705 may have additional features.

In this scenario, a participant-side collaboration agent is able to receive an intercepted request as described in connection with FIG. 6B. This request is shown as request 715 in FIG. 7. Here, the participant-side collaboration agent transmits the request 715 to the collaboration agent 720. After receiving the request 715, the collaboration agent 720 then processes the request 715. In some instances, processing the request 715 includes making the set of base tools 725 accessible to the participant computer system 710. Relatedly, processing the request 715 may include making the set of client tools 730 accessible to the participant computer system 710. In other instances, processing the request 715 may include making the set of local files 735 accessible to the participant computer system 710. In this manner, a multi-file workspace residing on the owner computer system 705 may be made accessible to the participant computer system 710. In some instances, processing the request 715 includes making edits to the files in the multi-file workspace. Edits include, but are not limited to, changing text within the file, adding a new file, deleting an existing file, or any other file editing operations.

Here, it is worthwhile to note that the participant computer system 710 is not downloading the multi-file workspace. Instead, it is being given access to the workspace through the use of its collaboration agent, its integration component, and the owner-side collaboration agent. In this manner, the participant computer system 710 is able to reach across and perform work on the owner computer system 705's multi-file workspace. After the request 715 is processed by the owner computer system 705, the collaboration agent 720 then transmits a response back to the participant computer system 710. In particular, the collaboration agent 720 transmits the response back to the participant-side collaboration agent.

Returning to FIG. 6B, the collaboration agent 605 will then receive any responses generated by an owner computer system. Once a response is received, then some embodiments will cause the response to be transmitted back to the client application 615B via the integration component 620. In other embodiments, however, the collaboration agent 605 is able to directly transmit the response (e.g., response 630) to the client application 615B. In this manner, the participant is able to see the results of his/her processed requests.

Here, an example will be helpful. Suppose an owner establishes a collaboration session in which a participant is a member. The owner has asked the participant to assist him/her in debugging source code. The owner begins by debugging a first file while the participant begins by debugging a second file. Of note, both of these files are included in the multi-file workspace and both are stored on the owner's computer system. In this example, the second file is displayed on the participant's computer system even though the file's contents are actually stored only on the owner's computer system.

Additionally, the participant is able to independently view and edit the contents of the second file even though the owner is currently working on the first file. In this manner, multiple collaborators are able to jointly work on a single multi-file workspace. In some instances, the owner and the participant will be working on the same file. When such a scenario is present, then the owner will be able to see (in real-time) the changes made by the participant, and the participant will be able to see (in-real time) the changes made by the owner. Accordingly, the changes made by the collaborators are made in real-time and are synchronized with each other. In light of this discussion, it will be appreciated that the participant is given the illusion that he/she is working on a local workspace whereas, in actuality, the workspace is not local.

By following these principles, the disclosed embodiments are able to provide a participant computer system access to a multi-file workspace that is stored on the owner computer system. Furthermore, a human participant is able to view that workspace and to edit that workspace. This viewing and editing can be performed independently of any viewing and editing that an owner may be performing on the multi-file workspace. In this manner, a participant no longer needs to replicate a workspace's context in order to work on that workspace. Additionally, the participant is able to use his/her preferred client application, even if that client application is different from the owner's client application. Even further, the participant is able to use the owner's set of tools, which tools understand the entire context of the multi-file workspace.

Attention will now be directed to FIG. 8, which provides additional details for enabling a participant to collaborate on a multi-file workspace. Here, the collaboration session 800 includes an owner computer system 805 and a participant computer system 810. The owner computer system 805 includes a collaboration agent 815, a client application 820, an integration component 825, and a set of local files 830. The set of local files 830 includes a multi-file workspace 835. Here, this multi-file workspace 835 includes a set of files 840, a context 845 of the multi-file workspace 835, and a file directory 850.

When the collaboration agent 815 receives a request from the participant computer system 810 according to the manner just described, the collaboration agent 815 is able to process the request and return a response 855 to the participant computer system 810. As shown, this response 855 may include file data 860 (i.e. data concerning the set of files 840), context data 865 (i.e. data concerning the context 845), or directory data 870 (i.e. data concerning the file directory 850). In some instances, this data is metadata while in other instances this data enables the participant computer system 810 to display the multi-file workspace and receive edit directed to the multi-file workspace. In this manner, providing the participant computer system 810 access to the multi-file workspace includes providing access to the workspace's file directory, context, and files. From this information, the multi-file workspace 835 can be displayed on the participant computer system 810, and the participant will be able to operate on that multi-file workspace.

From the above disclosure, it will be appreciated that the owner computer system 805 is transmitting sufficient information (e.g., metadata and other information) so that the participant computer system 810 is able to understand what is included within the multi-file workspace 835. Furthermore, the participant computer system 810 is able to receive enough information so that a visualization of the multi-file workspace 835 may be rendered on a user interface of the participant computer system 810. In this manner, the participant computer system 810 is acting as a headless entity because a majority of the operations are actually being performed on the owner computer system 805.

For example, the participant computer system 810 submits viewing and editing requests to the owner computer system 805. The owner computer system 805 then processes those requests and returns results back to the participant computer system 810. As such, the participant computer system 810 is provided the illusion that it is working on a local workspace, but in actuality the workspace is not local and the operations on the workspace are being performed by the owner computer system 805.

FIG. 9 shows some additional operations that may be performed. Here, the collaboration session 900 includes an owner computer system 905 and a participant computer system 910. The owner computer system 905 includes a collaboration agent 915. As discussed, this collaboration agent 915 is able to maintain a set of base tools 920. The owner computer system 905 also includes a client application 925, which client application 925 is able to maintain a set of client tools 930.

According to the principles discussed herein, the embodiments are also able to make the set of base tools 920 and the set of client tools 930 accessible to the participant computer system 910. For example, the participant computer system 910 is able to use the tools that are residing on the owner computer system 905 in order to perform operations on the owner computer system 905's multi-file workspace. Therefore, not only is the participant computer system 910 able to view and edit the multi-file workspace on the owner computer system 905, but it is also able to make use of the tools that are on the owner computer system 905. The participant computer system 910 is able to receive information 935 that includes base tool data 940 and/or client tool data 945. In this manner, the participant computer system 910 is able make use of the owner computer system 905's development tools.

Joint Editing of Source Code Using Intelligent Operations

According to the principles taught herein, the embodiments enable each collaborator to independently operate on a multi-file workspace. In some instances, this is achieved by enabling the collaborators to view the locations of the other collaborators within a multi-file workspace. As an example, each collaborator is able to view the other collaborator's cursor locations. Further, the embodiments enable each collaborator to view the edits made by the other collaborators as those edits are being made (i.e. in real time). Such benefits are accomplished because the collaborators can all be joined together in a collaboration session. Once joined, then they can all work on the same multi-file workspace, which is made available to the o collaborators via the collaboration session.

At this point, an example will be helpful. Accordingly, attention will now be directed to FIG. 10. Here, this figure shows a collaboration session 1000 in which an owner computer system (not shown) and a participant computer system (not shown) are both members. Specifically, FIG. 10 shows that the owner computer system is displaying an owner user interface (UI) 1005 and that the participant computer system is displaying a participant UI 1010.

The owner UI 1005 is displaying a portion of source code 1015A from a first file included within the multi-file workspace (e.g., the first file may be File 1 shown in the File Directory portion of FIG. 5). As discussed earlier, the multi-file workspace may include multiple files (which in the case of FIG. 10 are source code).

As a result of the collaboration session 1000, a participant is able to independently view and edit the files in the workspace. In other words, the participant is not tied to the location and/or editing operations of the owner. In this manner, the participant is able to perform work on any of the files in the workspace. In some instances, however, the participant will be operating on the same file as the owner. Accordingly, FIG. 10 illustrates such a scenario by showing that the participant UI 1010 is displaying the same portion of source code as the owner UI 1005 (here it is labeled as source code 1015B).

To enable each collaborator (e.g., the owner and the participant) to view the locations of the other collaborators, some embodiments show each collaborator's cursor on their respective UIs. For example, the owner's cursor is shown as cursor 1020A on the owner UI 1005. Similarly, the participant is able to see the owner's cursor 1020B on the participant UI 1010. Furthermore, the participant's cursor is shown as cursor 1025A on the participant UI 1010, and it is also shown as cursor 1025B on the owner UI 1005. In some embodiments, collaborators’ names will also appear near their corresponding cursors on each of the UIs. For example, “Owner” is displayed near cursor 1020B on the participant UI 1010, and “Participant” is displayed near cursor 1025B on the owner UI 1005. In this manner, each collaborator is able to view the cursor locations and the names of the other collaborators.

Here, it is worthwhile to note that the embodiments not only enable collaborators to see the cursor locations of the other collaborators, but they also enable the collaborators to see the edits and operations that the other collaborators are performing. For example, FIG. 11 depicts another collaboration session 1100 that includes an owner and a participant. Because many of the features of FIG. 11 are the same as FIG. 10, some of the labeling will not be repeated.

Here, the owner has highlighted 1105A a portion of the source code. This highlighting operation is also shown on the participant UI as highlight 1105B. Similarly, the participant has highlighted 1110A a portion of the source code. Here, this highlighting operation is shown on the owner UI as highlight 1110B. In some embodiments, the collaborator's name will appear next to the highlighted segment of code, as is currently shown in FIG. 11. In this manner, the collaborators are each able to view the operations (e.g., highlighting operations, editing operations, or any other type of operation) of the other collaborators when they are operating on the same file.

Additionally, some embodiments are able to further distinguish the operations of the various collaborators by causing those operations to be displayed in different formats. For example, when a collaborator performs a highlighting operation on his/her own computer, the highlight may appear in one format (e.g., the black format shown by highlight 1110A). Relatedly, the operations of the other collaborators may appear in different formats (e.g., the gray format shown by highlight 1110B).

Although FIG. 11 shows a highlighting operation, it will be appreciated that other operations (e.g., editing operations) are also viewable to each of the collaborators. As an example, consider a scenario in which the owner and participant are viewing the same file. If the owner were to begin typing or otherwise editing (e.g., deleting text), then those edits will appear on the owner UI. Similarly, those edits will also appear on the participant UI. In this manner, the participant is able to view the edits made by the owner, and the owner is able to view the edits made by the participant.

In the example where the collaborators are editing the same file, some embodiments will format the edits differently so that the collaborators are able to discern which collaborator made the edit. As an example, consider a scenario where an owner and participant are editing the same source code file. As the owner edits the file, the owner's edits may be displayed on the participant's UI as having a particular format for a determined length of time.

To illustrate, the owner's edits may initially appear in a blue color (any color can be used) on both the owner UI and the participant UI. Further, those edits may be displayed in that color for 1 second, 2 seconds, 3, seconds, 4 seconds, 5 seconds, or any number of seconds after the edits were made. For example, suppose the owner typed the word “source,” and further suppose the embodiments are configured to retain a blue formatting for the owner's edits for 5 seconds. According to these embodiments, each letter in that word will be displayed in blue for 5 seconds. Once the time period elapses, then the color of the edits will revert back to a default color (e.g., black). In an alternative embodiment, the coloring may initially start as one color (e.g., blue) and then progressively transition to the default color (e.g., black) until the time period ends. In this manner, the other collaborators will be able to immediately discern that the owner, whose edits are in blue, is currently editing the source code file. Accordingly, these embodiments enable the collaborators to view edits made by other collaborators. It will be appreciated that similar temporary formatting features are available to the participants' edits.

In some instances, a participant may be working on a different file than the owner. For example, FIG. 12 shows a collaboration session 1200 in which an owner is working on File 1 while a participant is working on File 2. As shown in FIG. 12, the contents of File 1 are displayed on the owner UI while the contents of File 2 are displayed on the participant UI.

Because the collaborators are working on different files, they will not be able to see each other's cursor locations. However, in some instances, it may be beneficial to provide an indication of where each collaborator is currently working. Therefore, some embodiments generate an indication regarding which file each collaborator is currently working on. Such an indication is shown in FIG. 12. To illustrate, on the owner UI, the participant's name is shown near File 2 because the participant is currently working on File 2. Relatedly, on the participant UI, the owner's name is shown near File 1 because the owner is currently working on File 1. In some instances, an arrow (or some other linking indication) may be displayed to show the link between the collaborator's name and the corresponding file. In this manner, the collaborators are made aware of the general locations of the other collaborators. Additionally or alternatively, a collaborator's name may appear in other locations to indicate who is working where in the workspace. As an example, the owner UI and/or the participant UI may be configured to include an editor tab to show who is currently joined in the collaboration session. This editor tab may provide the names and/or locations of the collaborators. As an example only, the editor tab may include a first participant's name (and/or avatar) as well as a brief description of where that participant is currently working. To illustrate, the brief description may read “File 1” to show that the participant is working in File 1. In this manner, the editor tab may include any number of collaborator names and/or descriptions.

Additional detail will now be presented on the “pin to position” option. In situations where there are multiple collaborators, the collaborator that selected the option (i.e. a “selecting collaborator”) will be presented with a prompt to select one or more of the other collaborators. Once a collaborator is selected, then the selecting collaborator can be automatically directed to a location in the multi-file workspace corresponding to the selected collaborator.

In situations where multiple collaborators are selected, some embodiments employ a split screen option in which the selecting collaborator's UI is split into multiple portions, one portion for each selected collaborator. As a result, the selecting collaborator is able to view the operations of multiple other collaborators at the same time. In this manner, the “pin to position” option acts more as a “navigate to position” option in which one collaborator is automatically directed to the location of one or more other collaborators.

Other embodiments, however, provide a collaborator with an option to continuously track the position of the other collaborators. In this manner, the selecting collaborator's cursor is “pinned” to the cursor location of whichever collaborator he/she selected. For example, if the selected collaborator scrolls down a file or navigates to a new file, the selecting collaborator's UI will continuously update to show the location of the selected collaborator's cursor (e.g., by following the scrolling action or by navigating to the new file). In this manner, the “pin to position” option acts as a “continuous tracking” option.

Example Methods

The following discussion now refers to a number of methods and method acts that may be performed. Although the method acts may be discussed in a certain order or illustrated in a flow chart as occurring in a particular order, no particular ordering is required unless specifically stated, or required because an act is dependent on another act being completed prior to the act being performed. These methods may be implemented by one or more processors of a computer system (e.g., the computer system 100 of FIG. 1). By way of example, a computer system includes one or more computer-readable hardware storage media that store computer-executable code. This computer-executable code is executable by the one or more processors to cause the computer system to perform these methods.

FIG. 13 shows an example method 1300 for establishing a collaboration session to enable multiple collaborators to jointly collaborate on a multi-file workspace. Initially, method 1300 includes an act of initiating a collaboration session in which an owner computer system and a participant computer system are both members (act 1305). This act may be performed by the collaboration agent 415 shown in FIG. 4.

Next, method 1300 includes an act of making a multi-file workspace accessible to the participant computer system (act 1310). Notably, the multi-file workspace is stored locally on the owner computer system. In this way, the participant computer system is acting in a headless manner because the workspace and the operations conducted on the workspace are performed by the owner computer system and are simply being requested by the participant computer system. This act may also be performed by the collaboration agent 415.

Method 1300 also includes an act of receiving a request that is directed to the multi-file workspace (act 1315). Here, this request originates from the participant computer system. As an example, the multi-file workspace can be displayed on the participant computer system through the use of the participant-side collaboration agent, the client application, and/or the integration component. In this manner, the participant computer system is provided a visualization (aka a publication) of a workspace that is not stored locally on the participant computer system. Accordingly, making the multi-file workspace accessible includes the process of making a publication of the multi-file workspace available to the participant computer systems. This publication enables the multi-file workspace to be viewable on the participant computer systems' user interfaces.

As a result of the publication, the multi-file workspace is viewable on the participant computer system's user interface. In order to edit the files in the workspace, the integration component intercepts edit requests and routes those requests to the collaboration agent. Then, the collaboration agent transmits that intercepted request to the owner-side collaboration agent. In this manner, the owner computer system receives a request directed to the multi-file workspace. As indicated above, this act may be performed by the collaboration agent 415. As a result, communications between the owner computer system and the participant computer system may be facilitated through the use of collaboration agents.

In some instances, the request is a file call in which the contents of one (or more) of the files in the workspace are being requested. In another instance, the request is an edit request in which edits are being submitted to be performed on a file. In yet another instance, the request is a service call in which the functions of a service running on the owner computer system are being requested. Accordingly, from this disclosure, it will be appreciated that the participant computer system is able to submit any type of request to the owner computer system in order to work on a multi-file workspace.

Next, method 1300 includes an act of handling the request and returning a response to the participant computer system (act 1320). This act may also be performed by the collaboration agent 415. Using the example from above, the owner-side collaboration agent receives the intercepted request and then processes the request. In some instances, processing the request includes editing the file in accordance with the request. Once the file is edited, then the owner-side collaboration agent transmits a response back to the participant-side collaboration agent. This response notifies the participant-side collaboration agent that the request was handled (e.g., a file was edited in accordance with the edit request). Additionally, the participant-side user interface is updated to reflect the new state of the file in the multi-file workspace.

Method 1300 was from the point of view of an owner computer system. In contrast, FIG. 14 shows another example method 1400 related to enabling collaborators to jointly edit a multi-file workspace, but this method is from a participant computer system's point of view.

Initially, method 1400 includes an act of the participant computer system joining a collaboration session in which the participant computer system and an owner computer system are both members (act 1405). Here, this act may be performed by the collaboration agent 445 on the participant computer system 410 shown in FIG. 4. As a result of joining this collaboration session, a multi-file workspace that is stored on the owner computer system becomes accessible to the participant computer system (act 1410).

Next, method 1400 includes an act of the participant computer system executing a client application that includes a user interface (act 1415). As an example, the client application 450 is able to provide the user interface. Of note, this client application may be configured to make requests to workspaces that are stored locally on the participant computer system. For example, this configuration is shown in FIG. 6A.

Next, there is an act of intercepting a request that is made by the client application (act 1420). This act may be performed by the integration component 455. Using FIG. 6B as an example, the integration component 620, which is analogous to the integration component 455, is able to intercept the requests made by a client application 615B. Normally, those requests would be directed to the local files 610B. Now, however, those requests are intercepted by the integration component 620 and routed to the participant-side collaboration agent (e.g., collaboration agent 605). In this manner, the client application, as a result of its requests being intercepted, is able to submit requests to work on a remote multi-file workspace as if the workspace was stored locally on the participant computer system. Stated differently, the client application is able to submit requests to work on the multi-file workspace as if the workspace was local to the participant computer system. This functionality is available as a result of the client application's requests being intercepted.

Method 1400 also includes an act of passing the intercepted request to the owner computer system (act 1425). As discussed above, the participant-side collaboration agent (e.g., collaboration agent 445 or 605) may perform this act.

Then, method 1400 includes an act of receiving a response from the owner computer system (act 1430). This act may be performed by the collaboration agent 445. Of note, this response indicates that the intercepted request was processed by the owner computer system. For instance, if the initial request was a request to edit a particular file on the owner computer system, then the response can indicate that the file was edited in accordance with that request.

Finally, the method 1400 includes an act of passing the response to the client application (act 1435). This act may also be performed by the collaboration agent 445. For example, once the collaboration agent 445 receives the response from the owner computer system (in particular from the collaboration agent 415), the collaboration agent 445 will then cause the response to be transmitted to the client application 450. As shown in FIG. 6B, the collaboration agent can pass it directly to the client application, or it can pass the response through an integration component so as to reach the client application. In this manner, the participant computer system is able to edit a workspace that is stored remotely.

Accordingly, the disclosed embodiments enable collaborators in a collaboration session to gain access to a multi-file workspace that is stored on an owner computer system. By following the principles disclosed herein, the collaborators are able to independently navigate and edit the files in that workspace. As a result, significant advantages are realized because all edits and optimizations may be performed on a single workspace.

The present invention may be embodied in other specific forms without departing from its spirit or essential characteristics. The described embodiments are to be considered in all respects only as illustrative and not restrictive. The scope of the invention is, therefore, indicated by the appended claims rather than by the foregoing description. All changes which come within the meaning and range of equivalency of the claims are to be embraced within their scope.

Claims

1. An owner computer system comprising:

one or more processors; and
one or more computer-readable hardware storage devices having stored thereon computer-executable instructions that are structured to be executable by the one or more processors to thereby cause the owner computer system to: maintain a multi-file workspace, the a multi-file workspace including a plurality of files stored locally on the owner computer system; maintain a plurality of tools on the owner computer system, the plurality of tools providing functionality for operating on one or more of the plurality of files; establish a collaboration session in which the owner computer system and a participant computer system are both members, the collaboration session allowing access to the multi-file workspace and the plurality of tools to the participant computer system; receive a request from the participant computer system, the request including a request for at least one function of at least one of the plurality of tools to be performed on at least one of the files in the multi-file workspace; perform the request on the owner computer system; and return a response to the participant computer system, the response based at least in part on a result of performing the request.

2. The owner computer system of claim 1, wherein initiating the collaboration session includes using a cloud-based relay service to initiate a communication link between the owner computer system and the participant computer system.

3. The owner computer system of claim 1, wherein a collaboration agent residing on the owner computer system manages a set of base services and makes each service in the set available for use by both the owner computer system and the participant computer system, whereby services running on the owner computer system are available for use by the participant computer system.

4. The owner computer system of claim 1, wherein execution of the computer-executable instructions further causes the owner computer system to:

instantiate a client application on the owner computer system, wherein the client application includes a user interface; and
instantiate an integration component on the owner computer system, wherein the integration component is configured to add one or more selectable collaboration options to the client application's user interface.

5. The owner computer system of claim 1, wherein initiating the collaboration session includes establishing a peer-to-peer connection between the owner computer system and the participant computer system, the peer-to-peer connection being established via a local area network connection.

6. The owner computer system of claim 1, wherein the multi-file workspace includes a file directory, and wherein making the multi-file workspace accessible to the participant computer system includes making the file directory accessible to the participant computer system.

7. The owner computer system of claim 1, wherein the request is received from a collaboration agent operating on the participant computer system, whereby communications between the owner computer system and the participant computer system are facilitated by a collaboration agent residing on the owner computer system and the participant computer system's collaboration agent.

8. The owner computer system of claim 1, wherein the owner computer system is executing a build instance of a computer program, the build instance being a first member in the collaboration session and the participant computer system being a second member in the collaboration session.

9. The owner computer system of claim 1, wherein the owner computer system is executing a first type of operating system while the participant computer system is executing a second type of operating system, the second type of operating system being different than the first type of operating system.

10. The owner computer system of claim 1, wherein making the multi-file workspace accessible includes making a context of the multi-file workspace accessible to the participant computer system.

11. The owner computer system of claim 1, wherein the request is an edit request directed to a first file in the multi-file workspace, and wherein the response indicates that the first file was edited in accordance with the edit request.

12. The owner computer system of claim 1, wherein making the multi-file workspace accessible includes making a publication of the multi-file workspace available to the participant computer system, the publication enabling the multi-file workspace to be viewable on a user interface of the participant computer system.

13. The owner computer system of claim 1, wherein the request is a call directed to the multi-file workspace, the call being one or more of (1) a file call in which contents of a file that is included within the multi-file workspace are being requested, (2) an edit request in which edits that are directed to the file are being submitted, or (3) a service call in which functions of a service that is running on the owner computer system are being requested.

14. A method for establishing a collaboration session to enable multiple collaborators to jointly collaborate on a multi-file workspace, the method being implemented by one or more processors of an owner computer system, the method comprising:

maintaining a multi-file workspace, the a multi-file workspace including a plurality of files stored locally on the owner computer system;
maintaining a plurality of tools on the owner computer system, the plurality of tools providing functionality for operating on one or more of the plurality of files;
establishing a collaboration session in which the owner computer system and a participant computer system are both members, the collaboration session allowing access to the multi-file workspace and the plurality of tools to the participant computer system;
receiving a request from the participant computer system, the request including a request for at least one function of at least one of the plurality of tools to be performed on at least one of the files in the multi-file workspace;
performing the request on the owner computer system; and
returning a response to the participant computer system, the response based at least in part on a result of performing the request.

15. The method of claim 14, wherein a client application is executing on the owner computer system, the client application including (1) access permissions to access the multi-file workspace and (2) one or more client services, and wherein a collaboration agent residing on the owner computer system causes the one or more client services to be accessible by the participant computer system.

16. The method of claim 15, wherein the collaboration agent manages one or more base services, and wherein the collaboration agent also makes the one or more base services accessible to the participant computer system.

17. The method of claim 14, wherein initiating the collaboration session includes authenticating the participant computer system.

18. The method of claim 14, wherein the collaboration session includes three or more members, the owner computer system being a first member, the participant computer system being a second member, and a second participant computer system being a third member.

19-20. (canceled)

Patent History
Publication number: 20190146758
Type: Application
Filed: Jan 24, 2018
Publication Date: May 16, 2019
Inventors: Charles Eric LANTZ (Burnsville, MN), Jonathan Preston CARTER (Seattle, WA), Simon CALVERT (Sammamish, WA), David Ellis Pugh (Bellevue, WA), Guillaume JENKINS (Redmond, WA), Daniel LEBU (Redmond, WA), Kesavan SHANMUGAM (Redmond, WA)
Application Number: 15/879,261
Classifications
International Classification: G06F 8/33 (20180101); G06F 21/62 (20130101); G06F 8/41 (20180101); G06F 3/0484 (20130101); G06F 3/0482 (20130101);