Eclipse Theia and VS Code Differences Explained
- There are countless tools and IDEs to support developers in their daily work - technologies such the Language Server Protocol, Eclipse EGit, Eclipse Xtext, Gradle, Docker, the various IDEs supported by Eclipse projects, Eclipse Papyrus, your latest VS Code plugin, and more. Tell us about the best tools and frameworks, how you have built them, what technologies they adopt, and lessons learned.
- Eclipse Theia is a framework for building cloud and desktop integrated development environments (IDEs). The platform enables developers to build a desktop application and transition it to run in the cloud without a rewrite.
- We are excited to announce Version 1.0 of Eclipse Theia, the vendor-neutral open-source IDE platform that runs in browsers and on desktops. Single Source for Browser and Desktop Theia is a unique IDE platform that supports building desktop and web-based IDEs from the same codebase. Therefore, as an adopter, you don't need to make an upfront.
Eclipse Theia is an extensible platform to develop full-fledged, multi-language, cloud & desktop IDE-like products with state-of-the-art web technologies. It is implemented in TypeScript, CSS and HTML. Eclipse Theia is a free and open-source integrated development environment (IDE) framework for desktop and web applications. It is implemented in TypeScript, is based on Visual Studio Code, and emphasizes extensibility.
After we announced the release of Eclipse Theia 1.0 and published a blog about it, we received a number of questions about the differences between Theia and Visual Studio (VS) Code and why we’re calling Theia “a true open source alternative” to VS Code. Here are some clarifications I hope will help people understand the differences between the two and the value of Theia.
In the Words of Microsoft
I want to emphasize that VS Code is a great product that is loved by many developers. This is the primary reason Theia adopted many of the VS Code user experience features.
But, VS Code is not truly open source. Microsoft explains it well in their VS Code FAQ: “…it is more accurate to say that Visual Studio Code is “built” on open source, rather than “is” open source…”
The first thing to understand is that, at least for this release, Theia is not intended to be a tool that developers download and use directly. There isn’t even a developer tool download available from the Theia project.
Theia 1.0 is intended as a production-ready platform that any company (e.g. ARM, D-Wave, Gitpod, Google, Red Hat) or community (e.g. Arduino) who wants to provide their adopters with a modern developer experience can build from. The easiest way to see Theia in action is to try products such gitpod.io, or Red Hat Code Ready Workspaces, or ARM’s mbed Studio.
Licensing and Data Collection
Eclipse Theia is built, distributed, and used under the Eclipse Public License, a commercial-friendly open source license approved by the Open Source Initiative.
The VS Code repository on GitHub includes code that is licensed by MIT, but the VS Code distribution is released under a proprietary Microsoft product license. For most developers this is not an issue, as the tool is free, as in free beer. However, this approach means that it is difficult for companies and communities other than Microsoft to use VS Code in their own products. They require an open source platform which is free, as in freedom.
The Microsoft VS Code license also indicates the software may collect information about how the software is used and who is using it, and then send that data to Microsoft. The license makes it clear you can opt out of many telemetry data collection scenarios, but not all.
Eclipse Theia is freely available to everyone who wants to use it. There are no obligations to, or dependencies on, any company that has contributed to the code base or that uses it.
VS Code is a Microsoft product that is largely developed as open source, but is controlled by Microsoft. Anyone who relies on VS Code is then dependent on the future investment of Microsoft to continue supporting on-going development of the product. Theia is one of the most active and diverse projects at the Eclipse Foundation with steady contributions from ARM, Ericsson, Red Hat, SAP, TypeFox, and others.
Theia builds on top of many of the core open source pieces of VS Code such as the Monaco editor, the extension model, Language Server Protocol and the Debug Adapter Protocol. But Theia and VS Code are architecturally different in two main ways:
- Eclipse Theia allows developers to create desktop and cloud IDEs using a single, open source technology stack. Microsoft now offers VS Online for cloud development environments, but like VS Code, it cannot be used in open source initiatives such as Gitpod.
- Eclipse Theia allows developers to customize every aspect of the IDE without forking or patching the code. This means they can easily use Theia as a base to develop desktop and cloud IDEs that are fully tailored for the needs of internal company projects or for commercial resale as a branded product. VS Code is a developer IDE only. It was never intended to be used as the base for other IDEs, extended, or further distributed.
Get More Information
For more insight into the differences between Eclipse Theia and VS Code, read the Jaxenter interview with Theia project co-lead, Sven Efftinge.
To learn more about Theia and start using it, visit the website.
As more businesses are moving to the cloud with cloud-native solutions, having a cloud IDE (Integrated Development Environment) can help you deliver code faster and more reliably. Cloud IDEs often provide features like cross-platform support and instant creation. A Cloud IDE offers a centralized creation and testing environment for you and your team, while minimizing platform incompatibility. In other words, you can have a pre-configured development environment in the cloud that is independent of your own computer's operating system and limitations.
Eclipse Theia is an 'extensible platform to develop multi-language cloud & desktop IDEs with state-of-the-art web technologies'. Visually, it is designed to look and function in the same way as the Microsoft Visual Studio Code, which means that it supports multiple programming languages, has a versatile interface and an integrated terminal. What distinguishes Eclipse Theia from other cloud IDE applications is its extensibility and vendor neutrality. It can be changed using custom extensions that allow you to build a cloud IDE tailored to your needs.
In this guide, we will learn how to set up the default version of Eclipse Theia IDE platform on a Civo managed K3s cluster.
- You need to have a running Civo Kubernetes cluster to complete this tutorial. If you do not yet have an account, you can sign up here. Once you have a cluster running, make sure you have the KUBECONFIG set and pointing to this cluster. For more detail, refer to 'your cluster kubeconfig here'.
- Have the Nginx ingress controller set up on the cluster. This means that you need to start a cluster without the default Traefik ingress controller, and choose Nginx as the ingress controller from the applications menu.
- Have Cert-Manager installed on the cluster. This can also be installed through the Kubernetes application marketplace.
- A fully qualified domain name to host Eclipse Theia.
- apache2-utils installed as we will be using
htpasswdto enable authentication.
Let's get started
Make sure you have a cluster running with Nginx ingress controller and Cert-manager set up. This is easily done with the Civo Kubernetes marketplace when creating your cluster:
To install and expose Theia to our domain, we need to apply
yaml files. We have divided the installation process into three parts.
Install and Expose Eclipse Theia to domain
In this part we will deploy all resources to our cluster. I have prepared a repository on GitHub with all the required yaml configuration files. We will be pulling from this repository's files so if you want to have a look at what's in them or modify them to your use case, you can find the repository here.
For this part we will use
wget to save
eclipse-theia.yaml locally, in our current directory. In your terminal, run:
Now we use our favourite editor to edit the downloaded
eclipse-theia.yaml and change
theia.example.com to the domain linked with your cluster IP address. For this guide we will be using
theia.tros.tech, and you will need to change it to a domain you control that you have configured in your Civo account's DNS configuration. For more information on configuring DNS records on Civo, see this guide.
We need to edit the example.com domain
Edited domain to your own details
Now we will use
kubectl to create our Deployment, Services, and Ingress to the cluster with a single yaml file.
Eclipse Theia Windows
kubectl apply -f eclipse-theia.yaml
To verify resources have been deployed, you can use the command
kubectl get all -n theia.
Now let’s install the HTTPS certificate
For this we need to have a certificate issuer in the namespace
theia. Get the yaml file for certificate with the following command:
Now open the downloaded
production-issuer.yaml in an editor, and edit the email field to your address.
After this use
kubectl apply -f production-issuer.yaml to apply the certificate issuer to your cluster. This will be picked up by Cert-manager, and allow you to have a certificate issued for HTTPS.
To verify if certificate is issued, you can run
kubectl get certificate theia-prod -n theia - it should give you a message like the following:
Eclipse Theia Desktop Download
Now let us secure our IDE
For controlled authentication of our IDE, we will be using simple
htpasswd to set up password control. First, create an empty file called
auth. This file needs to be named auth, because the Nginx Ingress Controller expects the secret to contain a key called
data.auth. If it is missing, the controller will return HTTP 503 Service Unavailable status. Now we will use
htpasswd to generate authentication credentials. This is why you needed to make sure you had the Apache utils installed, as
htpasswd is part of that. When you run the following command, it will ask you for a password for the username you have specified, like in the image below.
Now we need to generate a secret in our Civo cluster to store the password:
To verify the secret, use:
kubectl get secret theia-basic-auth -o yaml -n theia
When you will visit your domain, you will be asked for a username and password.
And then you can see your IDE, all ready for your code!
If you wanted to, you could extend this setup process to spin up a development environment on demand using an infrastructure-as-code tool such as Terraform, allowing you to run your IDE for only as long as you needed it to make changes to code, push to your code repository and then delete the cluster to save on costs.
If you have any issues following this guide, ask away in the Civo community Slack or on Twitter. You can find me at DoNnMyTh, and Civo at @civocloud.