[go: up one dir, main page]

Jul 10th 2024

Announcing the Open Collaboration Tools

Dr. Miro SpönemannDr. Miro Spönemann
Mark SujewMark Sujew

We are thrilled to unveil our latest open source project: Open Collaboration Tools.

Itʼs a collection of libraries and tools for live-sharing of IDE contents, designed to boost remote teamwork with open technologies.

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 and what changes they propose in real-time. This way of remote collaboration reduces confusion and maximizes productivity.

In its first public release, Open Collaboration Tools is available with the following components:

  • A VS Code Extension available on Open VSX and the VS Code Marketplace
  • An extension for Eclipse Theia
  • A server application for handling authentication and collaboration sessions, with a public instance available at api.open-collab.tools
  • An open and extensible protocol with TypeScript libraries facilitating its integration in different environments
  • End-to-end encryption and extensible user authentication built-in right from the start

In addition, an integration with Monaco Editor will be available soon. This unprecedented feature is particularly exciting because it enables fully customizable live collaboration between users of a web application or even between a website and a local IDE. Finally youʼll be able to join a live-sharing session started from a full-fledged development environment, simply by opening a website link!

The initial version of Open Collaboration Tools focuses on plain text documents: source code of any programming language, Markdown documents, scripting languages, domain-specific languages, configuration formats, HTML and other markup languages, etc. But the story doesnʼt end here – we are going to add support for other kinds of content creation such as Jupyter Notebooks, diagram editors, and more. The underlying protocol and infrastructure is adaptible to numerous scenarios where real-time collaborative viewing and editing can be helpful.

Motivation for new collaboration tools

In our daily work with customers, we have seen the need for collaborative editing inside of IDEs over and over again. While there are a few products out there aiming to provide collaborative editing experiences for their users, none of them were quite right for our customers.

Let’s take a look at an exemplary use case: You are an engineer at a microchip design company. You’re using a textual programming language to design chips. To improve productivity, you also have the option to use a graphical editor in your IDE to modify chip design files. Given that these designs are highly sensitive, your company doesn’t want any information about them leaving the company network. Now, you want to do some pair-programming with a coworker. What kind of tool can you choose to facilitate that?

To our dismay, nothing available fits that bill. What we need is a solution that:

  1. Can be plugged into any popular IDE, ideally even support cross-IDE use cases.
  2. Is designed to be extensible. Adding custom editors beyond just text can be done with reasonable effort.
  3. Runs on premise to ensure absolute data security.
  4. Does not bind you to a single vendor. A permissive license would be best to keep control of your tools.

Looking at the 3 most popular collaborative editing tools, we will find that at least one of those requirements isn’t supported:

Product IDEs Extensibility On Premise Licensing
VS Live Share Visual Studio Products Via VS Code Extension Mechanism Proprietary Microsoft License1
CodeTogether VS Code, Theia, JetBrains, Eclipse IDE ✔️ Commercial License
Duckly VS Code, Theia, JetBrains Commercial License

1 The Microsoft proprietary license allows usage free of charge, but restricts the extension to run only in officially distributed Microsoft products (i.e. no VSCodium, Coder, Gitpod or Theia).

Faced with this issue, we are now taking matters into our own hands. This is why the Open Collaboration Tools project is designed with a few core principles in mind:

  1. No vendor lock-in: Allow to potentially support any IDE and even your own web application.
  2. Absolute extensibility: The underlying protocol can be extended to enable collaboration for any kind of editor.
  3. Run wherever you like: Run the server infrastructure on any system, be it locally, on premise or in the cloud.
  4. Open Source Licensing: The whole project is licensed under the MIT License and can be used by anyone, in any way they like.

The Open Collaboration Protocol

The technology to facilitate all of the above is the Open Collaboration Protocol. This protocol specifies how the IDE is supposed to authenticate with a collaboration server, how to create or join a session, and what kind of data is exchanged between users within each session.

On a technical level, this is done via a centralized peer-to-peer mechanism. Any user within a session can send an arbitrary notification or request to any other user. Additionally, a broadcasting mechanism allows to send a message to all other users. From a network perspective, each user only communicates to a central server. It is used as a message broker that sends the messages to their respective targets. As a consequence, the server is completely oblivious about the actual content of a message – and we can use that to our advantage.

This kind of brokering mechanism enables limitless extensibility of the protocol. As long as the two communicating clients understand each other’s messages, they can work together. For example, if I build an IDE with a built-in graphical editor, I just need to additionally send messages to synchronize edits across multiple users and handle any incoming synchronization messages. The protocol already contains built-in support for basic text editors, with more to come soon!

The big picture

The new Open Collaboration Tools project fits perfectly into our overall strategy: to provide highly customizable tools and frameworks under permissive open source licenses. TypeFox supports businesses to adapt the open source software to their needs and make the best possible use of it to maximize their productivity.

In the beginning, we mentioned that a public instance of Open Collaboration Tools is now available at api.open-collab.tools. TypeFox offers this service with the intent to demonstrate the capabilities of our new project and to support open source communities with it. However, we recommend all companies who wish to adopt this new technology to deploy their own instance of it, secured with their existing access restrictions. Get in touch with us if you’re interested about support for the customization, deployment and usage of collaboration servers.

We are committed to invest further into the Open Collaboration Tools and grow the number and depth of its integrations over time. In the meantime, please check out the new website at www.open-collab.tools and help us spread the word!

About the Authors

Dr. Miro Spönemann

Dr. Miro Spönemann

Miro joined TypeFox as a software engineer right after the company was established. Five years later he stepped up as a co-leader and is now eager to shape the future direction and strategy. Miro earned a PhD (Dr.-Ing.) at the University of Kiel and is constantly pursuing innovation about engineering tools.

Mark Sujew

Mark Sujew

Mark is the driving force behind a lot of TypeFox’s open-source engagement. He leads the development of the Eclipse Langium and Theia IDE projects. Away from his day job, he enjoys bartending and music, is an avid Dungeons & Dragons player, and works as a computer science lecturer at a Hamburg University.