This proposal has been approved and the Eclipse Open Collaboration Tools project has been created.
Visit the project page for the latest information and development.

Eclipse Open Collaboration Tools

Wednesday, September 4, 2024 - 04:43 by Miro Spönemann
This proposal is in the Project Proposal Phase (as defined in the Eclipse Development Process) and is written to declare its intent and scope. We solicit additional participation and input from the community. Please login and add your feedback in the comments section.
Parent Project
Proposal State
Created
Background

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.

Scope

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.

Description

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.

Why Here?

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.
Future Work

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.

Project Scheduling

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.

Project Leads
Interested Parties
  • Ericsson
  • STMicroelectronics
  • EclipseSource
Initial Contribution

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
Source Repository Type