Reviews run for a minimum of one week. The outcome of the review is decided on this date. This is the last day to make comments or ask questions about this review.
Eclipse Open Collaboration Tools
In 2023, TypeFox started the development of a live collaboration feature in Eclipse Theia and presented it at TheiaCon. The goal is to provide an open source framework enabling the integration of collaborative editing both with multiple editing paradigms (textual, graphical, etc.) and in multiple IDEs or other applications. The results were published as a new open source project named Open Collaboration Tools in July 2024. For more details, please read the announcement.
Eclipse Open Collaboration Tools (OCT) consists of the Open Collaboration Protocol and the Open Collaboration Server application. The same protocol and server are used for all client integrations. In addition, the project provides a set of libraries for integrating collaborative editing with multiple editing paradigms and in multiple IDEs or other applications.
Integrations with specific text editors or other kinds of editors may be part of this project, unless they are already provided by the respective application. For example, a VS Code extension is offered by OCT, while a Theia extension is offered by the Eclipse Theia project.
The OCT project does not cover editor or IDE implementations, but rather focuses on integrating with existing applications. It also excludes means for direct communication such as audio or video streaming. Users are encouraged to connect via other meeting apps during their collaboration session. However, basic chat functionality may be added if the OCT project team finds this useful.
There is a public instance of the Open Collaboration Server at open-collab.tools, which is currently operated by TypeFox. The OCT project maintains the website and documentation available at that domain as well as the source code of the server application. However, the operation of the actual server instance is not part of this project.
Eclipse Open Collaboration Tools is a set of libraries, extensions and tools for integrating collaborative editing with multiple editing paradigms (textual, graphical, etc.) and in multiple IDEs or other applications.
The basic idea is simple: 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 what changes they propose in real-time. This way of remote collaboration reduces confusion and maximizes productivity.
The project includes the following components:
- A protocol definition based on JSON messages, with a reference implementation in TypeScript
- A Node.js based server for handling authentication and forwarding messages between participants of a collaboration session
- A VS Code extension for collaborative text editing
- Additional integrations: Eclipse IDE, Monaco Editor, and more to come
An integration with Eclipse Theia is already included in the Theia project.
The public server instance at open-collab.tools is currently operated by TypeFox. While this is a similar situation to the transfer of the Open VSX project and public service about four years ago, there are also fundamental differences:
- The operating costs are orders of magnitude lower because there is no need to store and transfer huge amounts of data. The current monthly cloud costs are about 50 EUR.
- While the public instance at open-vsx.org is a central hub accessed both by extension publishers and consumers, there is no need for such a centralized solution in the OCT project. Adopters are rather encouraged to deploy their own server instance.
- Our current Terms of Use suggest that the public instance is mainly for demonstration and evaluation purposes. There are no plans to make this a globally used service with SLA.
In principle, TypeFox is open to transferring the public OCT server instance to the Eclipse Foundation. However, there is no hurry to do so.
Independently of who is responsible for the operation of the public instance, the legal aspects of that instance need to be negotiated between TypeFox and the Eclipse Foundation. In particular, we seek to collaborate on writing a new version of the Terms of Use that satisfy the interests of both the Foundation and the OCT project team.
TypeFox seeks to transfer Open Collaboration Tools (OCT) to the Eclipse Foundation as we did with many other open source projects before. This is the best possible way for such an open source project to flourish and be adopted by other companies.
Due to the nature of the offered functionality, security is an important topic for which the OCT project team seeks support by the Eclipse Foundation. This is evident when you consider a common usage scenario:
- A host user opens an IDE and invites others to join a collaboration session using the respective IDE plug-in or extension.
- When guest users join the session, they can see the host's workspace including all contents of the respective file system folders.
- Guest users may be able to modify contents of shared documents such as text files.
- Messages between session participants are encrypted.
The potential attack surface of such a collaboration feature is relatively large. Ensuring a high cybersecurity standard is crucial for the success of the OCT project. In particular, the project team aims to guarantee basic properties of the functionality such as the following:
- Only invited users can see a collaboration session and access its contents.
- Shared documents are never corrupted, meaning that only modifications intended by the invited users are applied.
- Private keys and other secrets cannot be accessed by others.
- The collaboration protocol ensures that the applied encryption is effective, so only the intended recipients of a message are able to decipher it.
An integration with the Monaco Editor is currently work in progress. This TypeScript library will make it easy to participate in collaboration sessions using a text editor embedded in a website. The ability to collaborate between an IDE and a custom web application is a unique feature with very interesting aspects.
It is also planned to provide an integration with the Eclipse IDE as a plug-in available on the Eclipse Marketplace.
The initial contribution will consist of two GitHub repositories that should be moved to a new organization managed by Eclipse. This transfer can be done as soon as the basics of the new project have been settled.
New releases of the project are published continuously to the npm Registry, the VS Code Marketplace and Open VSX. There is no specific schedule for upcoming releases – the timing follows the progress made by the project team.
- Ericsson
- STMicroelectronics
- EclipseSource
https://github.com/TypeFox/open-collaboration-tools: Implementation of the protocol, server, VS Code extension and other integrations with some utility libraries
https://github.com/TypeFox/oct-website: Website contents excluding the public server instance
The ownership of the code repositories above is at TypeFox. There has been one contribution by an external person so far.
The project has dependencies to the following third-party libraries:
- async-mutex, MIT
- base64-js, MIT
- express, MIT
- fflate, MIT
- inversify, MIT
- jose, MIT
- lib0, MIT
- lodash, MIT
- msgpackr, MIT
- nanoid, MIT
- node-fetch, MIT
- passport, MIT
- semver, ISC
- socket.io, MIT
- ws, MIT
- yargs, MIT
- y-protocols, MIT
- Log in to post comments
Eclipse Open Collaboration Tools is a set of libraries, extensions and tools for integrating collaborative editing with multiple editing paradigms (textual, graphical, etc.) and in multiple IDEs or other applications.
The basic idea is simple: 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 what changes they propose in real-time. This way of remote collaboration reduces confusion and maximizes productivity.
The project includes the following components:
- A protocol definition based on JSON messages, with a reference implementation in TypeScript
- A Node.js based server for handling authentication and forwarding messages between participants of a collaboration session
- A VS Code extension for collaborative text editing
- Additional integrations: Eclipse IDE, Monaco Editor, and more to come
An integration with Eclipse Theia is already included in the Theia project.
- Log in to post comments