DESOSA 2021

Theia: Product Vision

Launched in March 2017 and named as an Eclipse foundation project in May 2018, Eclipse Theia is an extendable framework for developing multi-language Cloud & Desktop Integrated Development Environment (IDE)-like products with state-of-the-art web technologies1. Its main aim is to support building browser-based and desktop IDEs. Instead of directly providing an IDE product, Theia delivers a framework to build personalized IDEs. It provides a highly flexible architecture for adopters, supports VS Code extension protocol2, and is developed under vendor-neutral open-source governance1. Therefore, various companies and individuals can use Theia to build their own IDEs without depending on specific companies'(e.g., Microsoft) support.

Because of the great flexibility and vendor neutrality, Theia has become one of the most active and diverse projects on Github. To understand the vision underlying Theia, we take a look at Theia’s domain concepts, system capabilities, context, stakeholders, as well as quality attributes. We conclude with a product roadmap and a discussion of ethical considerations in Theia.

Domain concepts

With the rapid development of the software market, there are growing needs for creating customized IDE. Some people want a desktop application-like IDE, while some want a cloud IDE. Some people like an IDE with only basic functions, while some people like a complex IDE with unique plugins and specific user interface(UI) styles. In Theia’s case, the users can be categorized into two levels: direct users (IDE developers) and final users. The direct users' need is to access a flexible IDE framework to build their customized IDE on, while the final users' need is to use an IDE supporting functions such as editing code, compiling code, debugging, running code, doing git management, and using other extensions.

For Theia, the domain entities include IDE developer, final user, editor, compiler, debugger, git management tool, and other extensions. As an IDE framework, the key component for Theia is the editor. The code in the editor can be edited by the final user, compiled by the compiler, debugged by the debugger, run by the language server, and possibly check grammar by some extensions. Code version control can be done by using the git management tool. Other extensions such as data visualization and internationalize language support can be developed by the IDE developer and added by the final user. The IDE developer and final user can also customize the IDEs layout, preferences, commands, and key bindings. If we zoom deeper, the language server of Theia supports different kinds of language for the code, such as Java, Python, and JavaScript, and the debugger supports functions such as using breakpoints. Besides, IDE developers can deploy the customized IDE as a cloud application or desktop application.

Quality Attributes

The attributes that have attracted developers to Theia and encourage adoption are flexibility, extendability, vendor neutrality, and cloud support, as well will discuss here.

Architectural Flexibility

Theia’s architecture allows developers to customise all aspects of Theia without patching or forking. This structure means that users are able to fully tailor IDEs to suit their company needs or even external re-released products.

Built from the ground up to support web browsing, Theia, moreover, lets users develop one IDE and run it in browsers or native desktop application from a single source. To allow for this Theia supports three architecture configurations illustrated in the following diagram.

Figure: Supported Architecture

Extendability

Using Gitpod3, Theia provides developers with an in-browser ready-to-code development environment, allowing them to extend Theia functionality with minimal friction and minimal environment configuration and installation. Theia is also highly modular in its architecture which further enables extension development.

Vendor Neutrality

Hosted on the open source Eclipse Foundation, Theia has no obligations to, or dependencies on, external companies that have contributed to the code base4. Thus, users are free to use it without the need to build any new environments or risk assumption on the future support of given technologies.

Further, Theia provides another great feature to its users as a side effect of its goal to become a truly open source replacement for VS Code; extension reuse5. While VS code is more popular it is also more difficult to extend and lacks vendor neutrality. Theia instead allows developers to both reuse VS Code extensions and introduce new modules easily.

System Capabilities

As discussed earlier, the main goal of this project, at least for this release, is to allow developers to create specialized IDEs from a production-ready platform. In future releases, the project may also be available as a downloadable development tool6.

Early adopters of Theia have included TypeFox, Ericsson, RedHat and Arduino, enabling us to see the capabilities and attributes of the platform as detailed in earlier sections in action in realistically complex settings.

Arduino have already adopted Theia into their custom development environment, Pro IDE7, an upgrade to their classic Arduino IDE. Theia’s cloud support has allowed them to create a web editor which allows Arduino users to start working with libraries without installing them. They have also been able to offer features like debugging, git integration, and third party plugins based on this platform.

Figure: Arduino Pro IDE

As for RedHat, they have recently introduced Che-Theia8, a combination of Theia and Eclipse Che (a Kubernetes native IDE), where the use of Theia has enabled them to provide a better IDE experience. They describe their own capabilities as VS Code extension compatibility, a VS Code-like IDE experience, and easier to interact with containers9.

Figure: Che-Theia

Stakeholders

A stakeholder in the architecture of a system is an individual, team, organization, or classes thereof, having an interest in the realization of the system10. After analyzing the Theia website11 and Github1, we have identified Theia’s stakeholders and provided an overview below.

Eclipse

Theia is a subproject of Eclipse Cloud Development, which Eclipse Foundation manages. The Eclipse Foundation is a European-based international not-for-profit association supported by over 300 members, including industry leaders who have embraced open-source as a critical enabler for business strategy12. Eclipse Foundation aims at providing its global community of individuals and organizations with a mature, scalable, and business-friendly environment for open source software collaboration and innovation 13 and Theia is a part of this environment. Specifically, the prominent supporting organizations of Theia are TypeFox, Ericsson, and Red Hat, which are all members of the Eclipse Foundation.

Gunnar Wagenknecht is the mentor of Theia and responsible for monitoring and advising the project during the Incubation Phase1314. He is also a member of the Eclipse Architecture Council, a council of experienced Eclipse committers15. Sven Efftinge and Marc Dumais are the project leads and responsible for ensuring that their Project’s Committers are following the Eclipse Development Process, and that the project is engaging in the right sorts of activities to develop vibrant communities of users, adopters, and contributors16.

Developers

Everyone can contribute to Theia’s development through Theia’s community17, GitHub1, and Twitter18 as a developer, tester, or communicator. TypeFox developed the initial contribution of Theia in collaboration with Ericsson since they are the prominent supporting organizations of Theia. The top contributors shown on GitHub are from TypeFox and Ericsson. These main contributors are also maintainers and integrators, responsible for periodically reviewing and merging pull requests and answering questions in the Theia community. Other than the main contributors working for the companies that support Theia, a great many developers contribute to Theia because they are interested in this project or hope to improve personal ability through contribution.

Direct & Final Users

As discussed in the Domain Concepts section, the users of Theia are software developers, especially those that want to implement IDEs with specific functions. Some corporations can also use Theia to implement and provide on-demand IDEs for developer teams. Sometimes users can also be considered as Theia’s developers. They can discover, report and resolve issues while using it, and contribute to Theia since they hope the quality of Theia could improve.

Competitors

The market competitor of Theia includes companies providing similar browser-based IDEs. For instance, Amazon Cloud9,VS Code, and CodeSandbox. They care about Theia because the development of Theia may seize their market and affect their business interests.

Context

The context view usually represents the system itself as a “black box” and focuses its relationships, interactions, dependencies with the outside world. An overview of Theia’s context is as the diagram bellow.

Figure: External Dependency Diagram

Eclipse Theia provides an extensible platform for developers to develop browser and desktop IDEs for multiple programming languages, e.g., JavaScript, Java, and Python. Eclipse Theia is an open-source project managed by Eclipse Foundation and licensed under the Eclipse Public License 2.019.

Eclipse Theia has frontend and backend running, which communicate through JSON RPC over WebSockets. Eclipse Theia renders a VS Code-like user interface on the web browser or the local desktop application for users for the front end. The backend runs on a host or locally within the desktop application. Many extensions contribute to the frontend and backend.

Theia is implemented in TypeScript, CSS, and HTML and reuses a series of existing frameworks and technologies. It supports multiple languages through Language Server Protocol and Debug Adapter Protocols and supports many VS Code expansion, Git, terminal. Eclipse Theia’s hardware relies on cloud infrastructure providers, like Microsoft Azure, Alibaba Cloud, AWS. Installation and deployment of Eclipse Theia depends on existing frameworks, like Docker and Electron.

Besides, Developers, users, and competitors are also an essential component of Theia’s context because they are closely related to Theia, discussed in the section of Stakeholders.

Roadmap

Since their first release, Theia has not explicitly documented their future plans and directions in the same manner they used to do in earlier iterations, in their README20 file. However, loosely defined future plans are found on their website, the Theia community, GitHub issues, and other related posts. It is important to note that they are open to the input of contributors, and that the future direction is influenced by contributors as well.

Their first release was targeted at developers to build their own IDE with Theia. In a future release, they want to have a version for end-users that is easy to download as a developer and run as a desktop tool21. Furthermore, they are still working on improving the VS Code API Compatibility. This is everything that has to do with aligning their extension API with VS Code including any missing API in order to improve compatibility and consume additional extensions successfully22. Other features that they mentioned working on are improving the support for graphical editors with the Eclipse Graphical Language Server Platform23 and enhancing support for modeling24. For the long term, they generally mention to be focusing on improving the platform robustness, speed, reliable performance, and APIs25. In their initial proposal, they also described features that they will be working on in the future, such as enhancing the git integration and adding editor navigation history service26. However, it is unclear whether these features are still part of their roadmap.

Ethical considerations

Theia is made available under the terms of the Eclipse Public License v. 2.0 and or GNU General Public License, version 227. In these licences, ethical concerns are not explicitly covered. The product itself does not raise alarming ethical issues, as the usage of the product does not lead to direct physical or mental harm. However, as mentioned before, Theia has many similarities with VS Code. Theia admits this and tries to focus on the differences; however, some people are displeased with this similarity.

As mentioned before, Theia emphasizes that the project has always been vendor-neutral, which means that not one single vendor can control the definition, revision, or distribution of a specification. Their vendor-neutral nature encourages interchangeability and compatibility and helps to reduce bias in the construction of the product. Their code is open and transparent, accessible for any new contributors, if they follow the contribution guidelines. This includes a code of conduct28, where they explicitly cover that their contributors should pledge to maintain a ‘harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, sex characteristics, gender identity and expression, level of experience, education, socioeconomic status, nationality, personal appearance, race, religion, or sexual identity and orientation’.

Moreover, to be able to contribute, individuals need to sign the Developer Certificate of Origin29 with their real name, so anonymity is not an option. Furthermore, the certificate reminds the contributor of the open-source license.


  1. https://github.com/eclipse-theia/theia “Theia on Git” ↩︎

  2. https://code.visualstudio.com/blogs/2016/06/27/common-language-protocol ↩︎

  3. https://www.gitpod.io/ ↩︎

  4. https://dev.to/svenefftinge/theia-1-0-finally-a-good-browser-ide-3ok0 “1.0 Announcement” ↩︎

  5. https://www.eclipse.org/org/press-release/20200331-theia.php “Theia Press Release” ↩︎

  6. https://eclipse-foundation.blog/2020/05/05/eclipse-theia-and-vs-code-differences-explained “Explise Foundation Blog VS Code” ↩︎

  7. https://www.arduino.cc/pro/arduino-pro-ide “Arduino Pro” ↩︎

  8. https://github.com/eclipse/che-theia “Che-Theia” ↩︎

  9. https://access.redhat.com/documentation/en-us/red_hat_codeready_workspaces/2.0/html/end-user_guide/che-theia-ide-basics “Red Hat Che-Theia Docs” ↩︎

  10. https://books.google.nl/books/about/Software_Systems_Architecture.html?id=ka4QO9kXQFUC&redir_esc=y “Nick Rozanski and Eoin Woods Software systems architecture: working with stakeholders using viewpoints and perspectives. Addison-Wesley, 2011” ↩︎

  11. https://theia-ide.org/ “Theia website” ↩︎

  12. https://www.eclipse.org/org/ “Eclipse Org” ↩︎

  13. https://www.eclipse.org/projects/dev_process/#6_1_Mentors “Eclipse Development Mentors” ↩︎

  14. https://www.eclipse.org/projects/dev_process/#6_2_3_Incubation “Incubation Phase” ↩︎

  15. https://www.eclipse.org/projects/dev_process/#edp-terms “Eclipse EDP Terms” ↩︎

  16. https://www.eclipse.org/projects/dev_process/#4_6_2_PL “Eclipse Development PL” ↩︎

  17. https://community.theia-ide.org/ “Theia community” ↩︎

  18. https://twitter.com/theia_ide “Theia Twitter” ↩︎

  19. https://www.eclipse.org/legal/epl-2.0/ “Eclipse Public License” ↩︎

  20. https://github.com/eclipse-theia/theia/blob/master/README.md “Theia README file” ↩︎

  21. https://thenewstack.io/eclipse-theia-offers-a-true-open-source-alternative-to-visual-studio-code/ “Newsstack VS Code Alternative” ↩︎

  22. https://community.theia-ide.org/t/theia-roadmap/1527 “Theia Roadmap” ↩︎

  23. https://www.eclipse.org/glsp/ “Eclipse Org” ↩︎

  24. https://eclipsesource.com/blogs/2018/06/20/welcome-at-eclipse-theia/ “Eclipse Blog: Welcome to Theia” ↩︎

  25. https://www.eclipse.org/community/eclipse_newsletter/2020/january/3.php “Eclipse Community Newsletter” ↩︎

  26. https://projects.eclipse.org/proposals/eclipse-theia “Theia Proposal” ↩︎

  27. https://github.com/eclipse-theia/theia/blob/master/LICENSE “Theia License” ↩︎

  28. https://github.com/eclipse-theia/theia/blob/master/CODE_OF_CONDUCT.md “Theia Code of Conduct” ↩︎

  29. https://github.com/eclipse-theia/theia/blob/master/CONTRIBUTING.md#sign-your-work “Theia Contribution Guide” ↩︎

Theia
Authors
Chadha Degachi
Haiyin Zhang
Beyza Hizli
Danyao Wang