Open Collaboration Tools is a collection of open source tools, libraries and extensions for live-sharing of IDE contents, designed to boost remote teamwork with open technologies.
This is how it works: one person starts a collaboration session as host and invites others to join. The IDE extension distributes the contents of the hostʼs workspace and highlights text selections and cursor positions of other participants. In parallel, they get together in their favorite meeting or chat app for immediate discussion. All participants see what the others are looking at and and what changes they propose in real-time. This way of remote collaboration reduces confusion and maximizes productivity.
What's special about Open Collaboration Tools is that it's fully open source under the MIT license, and that it offers libraries to extend the approach on multiple levels: custom editors, custom IDE integrations, or even web applications.
For more information about this project, please read the announcement.
Server Configuration
This extension needs a server instance to which all participants of a collaboration session connect. The server URL is configured with the setting oct.serverUrl. Its default is set to https://api.open-collab.tools/, which is a public instance operated by TypeFox. TypeFox offers this service with the intent to demonstrate the capabilities of the project and to support open source communities with it. However, we recommend all companies who wish to adopt this technology to deploy their own instance of it, secured with their existing access restrictions.
Usage of the public instance is bound to its Terms of Use. Please read them carefully and use our Discussions for any questions.
Using the Extension
This extension contributes support for the Open Collaboration Protocol.
Quickstart
The extension adds a new "Share" item to the Status bar at the bottom of vscode, which allows managing your current sessions.
Hosting a session
- Click on the share item in the status bar
- A quickpick will open at the top where you will select "Create New Collaboration Session"
- If you are not already authenticated with the configured server, VS Code will try to open the authentication page in your browser. Follow the steps to authenticate yourself.
- When the authentication was successful, a message will appear in the bottom right with an invite code. Share that with whoever you wish to join your session.
- Should you need to copy the token again, click the "Sharing" item in the bottom toolbar again. A quickpick will open allowing you to copy the token or close the current session.
- When a user requests to join, a message will appear at the bottom prompting you to allow or decline the join request.
Joining
- After you aquired an invite code, click on the share item in the status bar and select
- A quickpick will open prompting you to input the invite code you acquired previously.
- If you are not already authenticated with the configured server, VS Code will try to open the authentication page in your browser. Follow the steps to authenticate yourself.
- That's it! After that VSCode will connect to the hosts session
- If you want to leave the session, click the "Connected" item in the status bar and select "Close Current Session" to leave the session.
Programmatic session entry points
Other VS Code extensions can create or join sessions through the contributed commands:
await vscode.commands.executeCommand('oct.joinRoom', invitationCode);
const roomId = await vscode.commands.executeCommand<string | undefined>('oct.createRoom');
oct.joinRoom accepts either a room ID or a full server invitation URL. Calling it without an argument keeps the existing input prompt. oct.createRoom resolves to the created room ID, or undefined when no room was created.
External launchers can join a session through the extension URI handler:
vscode://typefox.open-collaboration-tools/join?room=<URL-encoded invitation code>
Session UI
After joining or hosting a session, you will find a new "Current Collaboration Session" widget in the explorer tab.
This widget lists all joined users and their respecive cursor colors.
Through the follow icon, you can jump to another user and automatically follow them when they change their active file.