Dec 6th 2017

Theia – VS Code in the cloud

Sven EfftingeSven Efftinge

… that supports native desktop apps through Electron, too.

VS Code is an awesome development tool. It comes with the right balance of simplicity and feature depth. The quality is really high and it performs very well in all situations. Even die-hard Emacs fans are convinced. As VS Code is mostly implemented in TypeScript you would assume that you can run it in browsers connecting to remote workspaces running in containers. Unfortunately, it wasn’t designed for that. The underlying architecture is really not made for a remote connection between the backend node processes and the frontend (renderer process), as the communication is very chatty and fine-grained. Providing an awesome IDE for workspaces running in containers is, however, something we needed. And because the available cloud IDEs were disappointing we started Theia.

Theia Screenshot

Besides the support for a browser IDE, we also wanted to allow extension developers to build feature-rich extensions. So unlike VS Code, where only a limited set of functionality is exposed to extension developers, Theia itself is a collection of extensions. In other words, extensions are first-class citizens and they have access to everything the core packages have (as they are extensions, too). Besides those two design goals, Theia is in many ways similar to VS Code and it is reusing many parts, like the Monaco editor, the language server protocol or the quick open widget (command palette, etc.).

Theia BETA is out

Today we have reached an important milestone and published a new version (v0.3.0) to npmjs.com. Theia offers the following features already:

  • Extension System
  • Navigator
  • Editor (monaco)
  • Terminal (xterm.js)
  • Flexible Layout (through phosphor.js)
  • Full! Language Server Protocol Support (diagnostics, completion, etc. for 50+ languages)
  • Language Extensions for TypeScript, JavaScript, Java, Python, YANG, DSLs etc.
  • Outline View
  • Problem Marker View
  • Git Staging View
  • Command Palette
  • Command and Keybinding Registries
  • Theming
  • Layout Restoration
  • Find File
  • Find Global Symbol
  • many more

It is best to try out yourself, which you can easily do if you have Docker on your machine: docker run -it -p 3000:3000 -v "$(pwd):/home/project:cached" theiaide/theia The Docker Hub organization currently hosts two images, but more configurations will be added over time. And you are invited to contribute your own, just as IBM did last week with the Java image.

Next steps

We are in the process of finalizing our plans for the next months. While Theia is in a good shape to start diving into it, there are some features missing. We will come up with a more concrete plan in the coming days/weeks, but it will include support for debugging, launching tasks and better support for Git among others. The activity on Theia is very promising, as you can see on Github.

Github Activity

Besides Ericsson and TypeFox, who are both more committed than ever, we are having conversations with three other larger corporations who use Theia for building products and who are willing to join and contribute back. In addition, people show up every other day trying Theia or expressing their excitement:

Feedback

And we are excited, too! :) During the next months we will focus on adding missing features, fix bugs, sorting out rough edges and taking care of performance improvements. But we will also be very happy to help you picking up and getting into Theia. It’s ready for that! Get in touch on Github or Gitter (or simply leave a comment below).

About the Author

Sven Efftinge

Sven Efftinge

Sven loves finding sweet spots in product development. Always keeping an eye on pragmatism and the real benefit for the end user, he has proven to be a creative source for many sucessful technologies. He is a co-founder of TypeFox, co-lead of Eclipse Theia and product manager of Gitpod.

Read more about this topic

read the article

Jan 3rd 2024

Article

Markus Rudolph

Add views to a Langium-powered VS Code extension

Markus gives a simple introduction about webviews in VS Code and how to interact with Langium.

read the article
read the article

Dec 13th 2023

Article

Dennis Hübner

Enhancing communication between extensions and webviews using VS Code Messenger

Dennis introduces the VS Code Messenger library and explains how to use it for a better intercommunication between VS Code extension and its webviews.

read the article
watch the videoOpen Video

Nov 16th 2023

Video

Mark Sujew

Embracing remote systems in local IDEs

Mark discusses remote development and collaborative editing. He introduces a new collaboration protocol to enable compatibility between IDEs.

watch the video
LOAD MORE