theia
Eclipse Theia is a cloud & desktop IDE framework implemented in TypeScript.
Top Related Projects
Visual Studio Code
VS Code in the browser
Run upstream VS Code on a remote machine with access through a modern web browser from any device, anywhere.
:atom: The hackable text editor
IntelliJ IDEA Community Edition & IntelliJ Platform
Web Based, Cloud IDE
Quick Overview
Eclipse Theia is an extensible platform for developing multi-language Cloud & Desktop IDEs with state-of-the-art web technologies. It provides a flexible architecture that allows developers to create custom IDEs or extend existing ones, supporting both browser-based and desktop applications.
Pros
- Highly extensible and customizable, allowing developers to create tailored IDE experiences
- Supports both web-based and desktop applications using a single codebase
- Built on modern web technologies, making it easy to develop and maintain
- Strong integration with VS Code extensions, providing access to a large ecosystem of tools
Cons
- Steeper learning curve compared to some other IDE frameworks
- Documentation can be sparse or outdated in some areas
- Performance may not be as optimized as native IDEs for large projects
- Some features and extensions may not work consistently across web and desktop versions
Getting Started
To get started with Eclipse Theia, follow these steps:
- Ensure you have Node.js (v14+) and yarn installed
- Clone the Theia repository:
git clone https://github.com/eclipse-theia/theia.git cd theia
- Install dependencies:
yarn
- Build Theia:
yarn build
- Start the example application:
cd examples/browser yarn start
This will start a browser-based Theia application. For more detailed instructions and customization options, refer to the official documentation.
Competitor Comparisons
Visual Studio Code
Pros of VS Code
- Larger ecosystem with more extensions and themes
- More mature and stable platform with frequent updates
- Better performance for large projects and files
Cons of VS Code
- Less customizable and extensible at the core level
- Tied more closely to Microsoft's ecosystem and services
- Heavier resource usage, especially for multiple windows
Code Comparison
VS Code (JavaScript):
vscode.window.showInformationMessage('Hello World!');
Theia (TypeScript):
messageService.info('Hello World!');
Both VS Code and Theia are open-source code editors built with web technologies. VS Code is more established and feature-rich, while Theia offers greater flexibility for creating custom IDE-like products. VS Code has a larger user base and extension marketplace, but Theia provides more control over the core architecture. VS Code is optimized for desktop use, whereas Theia is designed to be more adaptable for various environments, including cloud and desktop. The code examples show that while both platforms offer similar functionality, their APIs and implementation details differ slightly.
VS Code in the browser
Pros of code-server
- Closer to the original VS Code experience, providing a more familiar environment for developers
- Easier setup and deployment, especially for individual users or small teams
- Better performance for remote development scenarios, particularly with low-bandwidth connections
Cons of code-server
- Less flexible architecture compared to Theia's modular approach
- Limited customization options for creating specialized IDEs or tools
- Potential licensing concerns for commercial use due to its relationship with VS Code
Code Comparison
code-server (server.ts):
import { Server } from './node/server'
const server = new Server({
host: args['host'],
port: args['port'],
socket: args['socket'],
})
server.listen()
Theia (application.ts):
import { FrontendApplication } from '@theia/core/lib/browser';
import { ContainerModule } from '@theia/core/shared/inversify';
export default new ContainerModule(bind => {
bind(FrontendApplication).toSelf().inSingletonScope();
});
The code snippets show different approaches: code-server focuses on setting up a server, while Theia uses a more modular, dependency injection-based architecture.
Run upstream VS Code on a remote machine with access through a modern web browser from any device, anywhere.
Pros of openvscode-server
- More closely aligned with VS Code, providing a familiar experience for users
- Potentially better compatibility with VS Code extensions
- Faster startup time and lower resource usage in some scenarios
Cons of openvscode-server
- Less flexible architecture compared to Theia's modular design
- More limited customization options for developers building on top of the platform
- Smaller community and ecosystem compared to Theia's broader adoption
Code Comparison
Theia:
import { injectable } from 'inversify';
import { MenuModelRegistry } from '@theia/core';
@injectable()
export class MyMenuContribution implements MenuContribution {
registerMenus(menus: MenuModelRegistry): void {
// Menu registration logic
}
}
openvscode-server:
const vscode = require('vscode');
function activate(context) {
let disposable = vscode.commands.registerCommand('extension.helloWorld', () => {
vscode.window.showInformationMessage('Hello World!');
});
context.subscriptions.push(disposable);
}
The code examples highlight the different approaches to extending functionality. Theia uses a dependency injection system and interfaces for contributions, while openvscode-server follows VS Code's extension API pattern.
:atom: The hackable text editor
Pros of Atom
- Mature and stable project with a large user base and extensive plugin ecosystem
- Native desktop application with better performance for local development
- Simpler architecture, making it easier for beginners to contribute
Cons of Atom
- Limited web-based capabilities and remote development features
- Discontinued by GitHub, with no further official development or support
- Less flexible for creating custom IDEs or specialized development environments
Code Comparison
Atom (CoffeeScript):
class AtomEnvironment
constructor: (params={}) ->
{@clipboard, @menu, @keymaps, @tooltips, @config, @styleManager} = params
@emitter = new Emitter
@disposables = new CompositeDisposable
Theia (TypeScript):
@injectable()
export class TheiaApplication {
@inject(FrontendApplicationConfigProvider)
protected readonly configuration: FrontendApplicationConfig;
@inject(ApplicationShell)
protected readonly shell: ApplicationShell;
Theia's code demonstrates its use of dependency injection and TypeScript, while Atom's code showcases its CoffeeScript roots and simpler class structure. Theia's architecture is more modular and extensible, reflecting its focus on creating customizable IDE-like experiences. Atom's code is more straightforward, aligning with its goal of being an approachable text editor for developers.
IntelliJ IDEA Community Edition & IntelliJ Platform
Pros of IntelliJ IDEA Community Edition
- More mature and feature-rich IDE with a longer development history
- Extensive plugin ecosystem and strong community support
- Advanced code analysis and refactoring tools
Cons of IntelliJ IDEA Community Edition
- Heavier resource consumption, potentially slower on less powerful machines
- Steeper learning curve for new users due to its complexity
- Less flexibility in terms of customization compared to Theia's modular architecture
Code Comparison
IntelliJ IDEA Community Edition (Java):
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello, World!");
}
}
Theia (TypeScript):
import { injectable } from "inversify";
@injectable()
export class HelloWorldService {
sayHello(): string {
return "Hello, World!";
}
}
The code examples showcase the different languages and paradigms used in each project. IntelliJ IDEA primarily uses Java, while Theia is built with TypeScript and leverages dependency injection.
Both projects aim to provide powerful development environments, but IntelliJ IDEA offers a more traditional, full-featured IDE experience, while Theia focuses on flexibility and extensibility in a web-based platform.
Web Based, Cloud IDE
Pros of Codiad
- Lightweight and simple to set up
- Web-based IDE with a clean, minimalist interface
- Suitable for small to medium-sized projects
Cons of Codiad
- Less actively maintained compared to Theia
- Limited extensibility and plugin ecosystem
- Fewer advanced features for large-scale development
Code Comparison
Codiad (PHP-based file management):
public function create_file($path, $data) {
$path = $this->cleanPath($path);
return file_put_contents($path, $data);
}
Theia (TypeScript-based file system API):
export interface FileSystemProvider {
readFile(uri: URI): Promise<Uint8Array>;
writeFile(uri: URI, content: Uint8Array, options: { create: boolean, overwrite: boolean }): Promise<void>;
}
Theia offers a more modern, TypeScript-based approach with a robust API for file system operations, while Codiad uses a simpler PHP implementation. Theia's architecture allows for better extensibility and integration with various language servers and tools, making it more suitable for complex development environments. Codiad, on the other hand, provides a more straightforward solution for basic web-based coding needs but lacks the advanced features and ecosystem support that Theia offers.
Convert designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual CopilotREADME
Cloud & Desktop IDE Framework
Eclipse Theia is an extensible framework to develop full-fledged multi-language Cloud & Desktop IDEs and tools with state-of-the-art web technologies.
- Website
- Repositories
- Releases
- Scope
- Roadmap
- Getting Started
- Contributing
- Feedback
- Documentation
- License
- Trademark
Website
Visit the Eclipse Theia website for more information and the Theia documentation.
Repositories
This is the main repository for the Eclipse Theia project, containing the sources of the Theia Platform. Please open generic discussions, bug reports and feature requests about Theia on this repository. The Theia project also includes additional repositories, e.g. for the artifacts building the Theia IDE and the Theia website. Please also see the overview of all Theia project repositories.
Releases
- All available releases are available on GitHub including changelogs.
- Detailed release announcements are linked on the Theia website.
- Community Releases are listed on the Theia website.
- Visit the release website for more information.
Scope
- Support building browser-based and desktop IDEs and tools
- Provide a highly flexible architecture for adopters
- Support VS Code Extension protocol
- Develop under vendor-neutral open-source governance
More details on the project goals are available on the Theia website.
Roadmap
See our roadmap for an overview about the current project goals and the upcoming releases.
Getting Started
Here you can find guides and examples for common scenarios to adopt Theia:
- Get an overview of how to get started on the Theia website
- Develop a Theia application - your own IDE/Tool
- Learn about Theia's extension mechanisms
- Develop a VS Code like extension
- Develop a Theia extension
- Test a VS Code extension in Theia
- Package a desktop Theia application with Electron
Contributing
Read below to learn how to take part in improving Theia:
- Fork the repository and run the examples from source
- Get familiar with the development workflow, Coding Guidelines, Code of Conduct and sign the Eclipse contributor agreement
- Find an issue to work on and submit a pull request
- First time contributing to open source? Pick a good first issue to get you familiar with GitHub contributing process.
- First time contributing to Theia? Pick a beginner friendly issue to get you familiar with codebase and our contributing process.
- Want to become a Committer? Solve an issue showing that you understand Theia objectives and architecture. Here is a good list to start. Further, have a look at our roadmap to align your contributions with the current project goals.
- Could not find an issue? Look for bugs, typos, and missing features.
Feedback
Read below how to engage with Theia community:
- Join the discussion on GitHub.
- Ask a question, request a new feature and file a bug with GitHub issues.
- Vote on existing GitHub issues by reacting with a ð. We regularly check issues with votes!
- Star the repository to show your support.
- Follow Theia on Twitter.
- Join the weekly developer call
Documentation
License
- Eclipse Public License 2.0
- ä¸ (Secondary) GNU General Public License, version 2 with the GNU Classpath Exception
Trademark
"Theia" is a trademark of the Eclipse Foundation. Learn More
Top Related Projects
Visual Studio Code
VS Code in the browser
Run upstream VS Code on a remote machine with access through a modern web browser from any device, anywhere.
:atom: The hackable text editor
IntelliJ IDEA Community Edition & IntelliJ Platform
Web Based, Cloud IDE
Convert designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual Copilot