Monday, October 30, 2023 - 07:00

When building a custom tool, you’ll often find significant advantages using an existing development platform, such as Eclipse Theia or Code OSS — the open source project behind VS Code. Using an existing platform enables you to reuse all the generic standard features of an IDE, letting you focus on developing the custom features of your product and significantly reducing the effort involved.

Deciding which IDE platform to use is important. Code OSS and Eclipse Theia are two of the most popular options. However, it’s important to note some key differences between the two in determining which is the right choice for your project.

Broadly, the differences come down to three major attributes: 

  • Adaptability and flexibility
  • Available features
  • Governance and ecosystem

In this article, we’ll compare Eclipse Theia and Code OSS based on these attributes. For an expanded look at this topic, check out the full article we published on the EclipseSource website.

Code OSS Is Powerful, But Limited

To understand the advantage Theia has in flexibility, it’s important to understand that the two platforms are fundamentally different. 

Code OSS is the underlying open source code of VS Code, an extensible code editor under Microsoft’s proprietary license. Using it, you can create a custom tool distribution that is very similar to VS Code. Custom features can be added via VS Code extensions that have access to a well-defined but limited API. When building custom tools, adding custom features is indeed a large part of the overall work. This is very well-supported via VS Code extensions.

However, Code OSS has significant limitations:

  • Its default workbench largely cannot be adapted
  • Default elements cannot be removed
  • Advanced features that require changing the architecture, the build, or the deployment strategy range from being difficult to impossible to implement

Eclipse Theia Is Inherently Flexible

Eclipse Theia on the other hand is an open source platform specifically designed for building custom tools and IDEs.

Theia simplifies development with two extension mechanisms. First, you can use VS Code extensions, meaning you can get all the benefits from the VS Code extension model, such as runtime extensibility. Most importantly, you also gain access to the huge ecosystem of existing VS Code extensions.

However, Theia also supports a second extension mechanism called Theia extensions. In fact, the Theia core platform itself is built as Theia extensions. This gives you — as an adopter of Theia — the same power as Theia’s platform developers have and, thus, much more flexibility with what you can do, such as adding custom UI elements like a toolbar to the workbench or enabling detachable views. You can even remove features from the default workbench and override default services to adapt them to your specific needs.



Figure 1: Dynamic Toolbar in Eclipse Theia

Open Source Supports More Feature Development for Theia

Another advantage of using an existing platform as a basis for a custom project is that you can reuse many of the platform’s built-in features. This can be generic IDE capabilities, such as a file explorer, a code editor, or a terminal, or more specific features, such as a memory inspector or live sharing capabilities.

Platform Features Are Similar, But Theia Leading the Way in New Advancements

It is no secret that the feature set of Theia has always been heavily influenced by VS Code, especially in the initial days. As a result, the core features of Code OSS and Theia are very similar. 

However, in recent years, Theia has started to provide features not available in Code OSS, including the flexible toolbar, detachable views (secondary windows), enhanced tab visualization, and the ability to connect to more than one extension registry.

VS Code is developing new features in a closed source environment inaccessible to Code OSS users, so they are not available in Code OSS. However, the open source Theia community is very active in contributing features. As a result, Theia provides features that are not in Code OSS. 

Almost All VS Code Extensions Are Usable in Theia

Both Theia and Code OSS support VS Code extensions. Both platforms provide the same API for hosting VS Code extensions. Theia can only provide a new API after VS Code has released it, though Theia is usually compatible with a VS Code release within one month. This enables almost all VS Code Extensions to be used in Theia.

The number of available extensions is also important. Theia and Code OSS can access the exact same pool of VS Code extensions, and the most popular extensions are usually already available in both registries. But because Theia is API-agnostic in terms of the use extension registry, integrating any other registry, even custom ones, is relatively straightforward.

Eclipse Foundation Provides Open, Vendor Neutral Framework

When building on a technology, adopters should align their development strategy with the governance rules and the surrounding ecosystem of the underlying open source projects. Code OSS and Eclipse Theia are both fully open source and free to use. Moreover, you can build commercial and closed source tools on top of them and sell them.

But Code OSS is governed by Microsoft as a single point of control, so whether contributions are accepted fully depends on one vendor. As a consequence of this governance, Code OSS is mainly driven by Microsoft plus a group of occasional contributors. This is because the project’s goal is to cover the requirements of VS Code — a closed source code editor — as best as possible, rather than the requirements of stakeholders who want to build custom tools based on Code OSS.

Eclipse Theia is governed by the Eclipse Foundation in a vendor neutral way within a defined and well-proven process. In a nutshell, if you are willing to contribute, you will also have a certain amount of influence on the project.

Theia’s open governance enables the collaboration of multiple stakeholders with custom requirements. As a result, Eclipse Theia is driven by a diverse set of long-term stakeholders, which includes Ericsson, STMicroelectronics, Arm, EclipseSource, TypeFox, and Red Hat.

Project Architecture Reflects Governance

This difference in approach is also evident in how the architectures of both platforms evolve.

Let’s look at an example feature: the toolbar. This feature has been requested a lot in VS Code, but the project maintainers decided against it. 

In Eclipse Theia, however, if adopters want to support a toolbar, they can contribute one — as Ericsson did, for example. The Theia ecosystem does not need to decide for one specific tool, but whether the feature generally makes sense in the platform or not. The modular architecture of Theia allows adopters freedom of choice for their own custom tools: they can decide to include the toolbar or not.

Eclipse Theia Better Supports Complete Tools

Don’t get us wrong: We love VS Code as a generic and extensible code editor.

But Eclipse Theia clearly outperforms Code OSS in terms of extensibility, adaptability, and open, vendor neutral governance. So, if you want to develop a complete tool, you’re usually better off choosing a platform that is designed specifically to support custom tool development, such as Eclipse Theia.

If, however, you do not want to provide a complete tool but rather a feature that users can install into their existing code editor, the choice is much simpler: you probably want to provide a VS Code extension. The extensions can be installed in both Code OSS and Eclipse Theia, so you will target the maximum audience with your offering.

About the Author

Jonas Helming

Jonas Helming

Jonas Helming is a co-leader of EclipseSource. He works as a consultant and software engineer for building web-based and desktop-based tools.

 Maximilian Koegel

Maximilian Koegel

Maximilian Koegel is a co-leader of EclipseSource. He works as a consultant and software engineer for building web-based and desktop-based tools.

 Philip Langer

Philip Langer

Philip Langer is a co-leader of EclipseSource. He works as a consultant and software engineer for building web-based and desktop-based tools.