core
A framework helps you quickly build AI Native IDE products. MCP Client, supports Model Context Protocol (MCP) tools via MCP server.
Top Related Projects
Eclipse Theia is a cloud & desktop IDE framework implemented in TypeScript.
Visual Studio Code
Run upstream VS Code on a remote machine with access through a modern web browser from any device, anywhere.
VS Code in the browser
:atom: The hackable text editor
JupyterLab computational environment.
Quick Overview
OpenSumi Core is an open-source, extensible IDE framework designed for building web-based integrated development environments. It provides a modular architecture that allows developers to create customized IDE-like applications with features similar to popular IDEs such as Visual Studio Code.
Pros
- Highly extensible and customizable architecture
- Built on modern web technologies, enabling cross-platform compatibility
- Rich set of pre-built components and APIs for rapid development
- Active community and regular updates
Cons
- Steeper learning curve compared to simpler web-based editors
- Documentation may be limited or outdated in some areas
- Potential performance issues with large projects or complex extensions
- Smaller ecosystem compared to more established IDE frameworks
Code Examples
- Creating a simple OpenSumi extension:
import { Injectable } from '@opensumi/di';
import { ICommandService, CommandRegistry } from '@opensumi/ide-core-browser';
@Injectable()
export class MyExtension {
constructor(
@ICommandService private readonly commandService: ICommandService
) {}
activate(registry: CommandRegistry) {
registry.registerCommand({
id: 'myextension.helloworld',
execute: () => {
console.log('Hello, OpenSumi!');
},
});
}
}
- Registering a custom view:
import { ViewContainerContribution, IViewContainerRegistry } from '@opensumi/ide-core-browser';
@Injectable()
export class MyViewContribution implements ViewContainerContribution {
registerViewContainers(registry: IViewContainerRegistry) {
registry.registerViewContainer({
id: 'my-custom-view',
title: 'My Custom View',
icon: 'custom-icon',
});
}
}
- Adding a custom menu item:
import { MenuContribution, IMenuRegistry } from '@opensumi/ide-core-browser';
@Injectable()
export class MyMenuContribution implements MenuContribution {
registerMenus(registry: IMenuRegistry) {
registry.registerMenuItem('menu-bar', {
command: 'myextension.helloworld',
group: 'navigation',
order: 1,
});
}
}
Getting Started
To start using OpenSumi Core in your project:
- Install the necessary dependencies:
npm install @opensumi/ide-core-browser @opensumi/ide-core-common
- Create a new OpenSumi application:
import { ClientApp } from '@opensumi/ide-core-browser';
const app = new ClientApp({
workspaceDir: '/path/to/workspace',
extensionDir: '/path/to/extensions',
});
app.start().then(() => {
console.log('OpenSumi application started successfully');
});
- Run your application and start developing extensions and customizations using the OpenSumi Core APIs.
Competitor Comparisons
Eclipse Theia is a cloud & desktop IDE framework implemented in TypeScript.
Pros of Theia
- More mature and widely adopted project with a larger community
- Extensive documentation and better resources for developers
- Broader ecosystem with more extensions and plugins available
Cons of Theia
- Heavier and potentially slower performance compared to Core
- More complex architecture, which may lead to a steeper learning curve
- Less flexibility in customization due to its more opinionated structure
Code Comparison
Theia (TypeScript):
@injectable()
export class MyService {
@inject(ILogger) protected readonly logger: ILogger;
doSomething(): void {
this.logger.info('Doing something in Theia');
}
}
Core (TypeScript):
import { Injectable, Autowired } from '@opensumi/di';
import { ILogger } from '@opensumi/ide-core-common';
@Injectable()
export class MyService {
@Autowired(ILogger)
private readonly logger: ILogger;
doSomething(): void {
this.logger.info('Doing something in Core');
}
}
Both projects use TypeScript and dependency injection, but Core uses a custom DI framework while Theia relies on InversifyJS. Core's approach may offer more flexibility in certain scenarios, while Theia's approach is more standardized across the Eclipse ecosystem.
Visual Studio Code
Pros of VS Code
- Larger community and ecosystem with extensive marketplace of extensions
- More mature and feature-rich, with regular updates and improvements
- Better documentation and learning resources for users and developers
Cons of VS Code
- Heavier resource usage, potentially slower on less powerful machines
- Less customizable core architecture compared to OpenSumi
- Steeper learning curve for contributing to the codebase
Code Comparison
VS Code (TypeScript):
export class EditorContribution implements IEditorContribution {
public static readonly ID = 'editor.contrib.folding';
constructor(editor: ICodeEditor) {
// Implementation
}
}
OpenSumi Core (TypeScript):
@Injectable()
export class EditorContribution extends Disposable {
@Autowired(IEditorDocumentModelService)
private readonly documentModelService: IEditorDocumentModelService;
// Implementation
}
The code snippets show differences in dependency injection and class structure between the two projects. VS Code uses a more traditional class-based approach, while OpenSumi Core leverages decorators and dependency injection for a more modular 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
- Larger community and ecosystem, with extensive plugin support
- Better documentation and easier setup process
Cons of openvscode-server
- Heavier resource usage, potentially slower performance on low-end devices
- Less customizable at the core level compared to opensumi/core
- Stronger dependency on Microsoft's ecosystem and decisions
Code Comparison
opensumi/core:
import { Injectable, Autowired } from '@opensumi/di';
import { IWorkspaceService } from '../common';
@Injectable()
export class WorkspaceService implements IWorkspaceService {
@Autowired(IWorkspaceService)
private workspaceService: IWorkspaceService;
}
openvscode-server:
import { IWorkspaceContextService } from 'vs/platform/workspace/common/workspace';
import { registerSingleton } from 'vs/platform/instantiation/common/extensions';
class WorkspaceService implements IWorkspaceContextService {
// Implementation details
}
registerSingleton(IWorkspaceContextService, WorkspaceService);
Both projects aim to provide extensible IDE-like experiences in the browser, but they differ in their approach and target audience. opensumi/core offers more flexibility for customization and potentially lighter resource usage, while openvscode-server provides a more familiar VS Code-like experience with broader plugin support.
VS Code in the browser
Pros of code-server
- More mature project with a larger community and wider adoption
- Provides a full VS Code experience in the browser, including extensions
- Offers both self-hosted and cloud-hosted options for flexibility
Cons of code-server
- Heavier resource usage due to running a full VS Code instance
- May have slower performance in low-bandwidth environments
- Limited customization options compared to core
Code Comparison
core:
import { IExtensionService } from '@opensumi/ide-extension';
import { Injectable, Autowired } from '@opensumi/di';
@Injectable()
export class MyService {
@Autowired(IExtensionService)
private extensionService: IExtensionService;
}
code-server:
const express = require('express');
const expressWs = require('express-ws');
const app = express();
expressWs(app);
app.ws('/api/terminal', (ws, req) => {
// Terminal WebSocket handling
});
The code snippets showcase different aspects of each project. core demonstrates its dependency injection system and extension service integration, while code-server illustrates its use of Express.js for handling WebSocket connections in the browser-based terminal.
:atom: The hackable text editor
Pros of Atom
- Mature and well-established project with a large community and extensive ecosystem of packages
- Built on Electron, providing cross-platform compatibility and native desktop integration
- Highly customizable and hackable, allowing users to modify and extend functionality
Cons of Atom
- Development officially discontinued by GitHub, limiting future updates and support
- Can be resource-intensive, especially for larger projects or when multiple packages are installed
- Slower startup time compared to more lightweight editors
Code Comparison
Atom (CoffeeScript):
class AtomEnvironment
constructor: (params={}) ->
{@clipboard, @updateProcessEnv} = params
@emitter = new Emitter
@disposables = new CompositeDisposable
@views = new ViewRegistry
OpenSumi Core (TypeScript):
export class IdeClient {
constructor(
@Autowired(IClientAppContribution) private contributions: IClientAppContribution[],
@Autowired(ClientAppStateService) private stateService: ClientAppStateService,
) {}
async start(options: IStartOptions = {}) {
// Implementation details
}
}
The code snippets showcase different programming languages and architectural approaches between the two projects. Atom uses CoffeeScript and follows a more traditional object-oriented structure, while OpenSumi Core utilizes TypeScript with dependency injection and a more modular design.
JupyterLab computational environment.
Pros of JupyterLab
- More established project with a larger community and ecosystem
- Extensive documentation and tutorials available
- Seamless integration with Jupyter Notebooks and scientific computing libraries
Cons of JupyterLab
- Heavier resource usage, especially for large notebooks or datasets
- Less flexible for customization outside of scientific computing use cases
- Steeper learning curve for non-data scientists or researchers
Code Comparison
JupyterLab (Python):
from notebook.notebookapp import NotebookApp
if __name__ == '__main__':
NotebookApp.launch_instance()
OpenSumi Core (TypeScript):
import { Injector } from '@opensumi/di';
import { ClientApp } from '@opensumi/ide-core-browser';
const injector = new Injector();
const app = injector.get(ClientApp);
app.start();
While JupyterLab focuses on notebook-based interactions, OpenSumi Core provides a more general-purpose IDE framework. JupyterLab's code emphasizes launching a notebook application, whereas OpenSumi Core's code demonstrates setting up a client-side application with dependency injection.
Both projects aim to provide extensible development environments, but they cater to different primary use cases and developer audiences.
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
OpenSumi
A framework helps you quickly build AI Native IDE products.
ð Getting Started
Here you can find some of our example projects and templates:
- Cloud IDE
- Desktop IDE - based on the Electron
- CodeFuse IDE - AI IDE based on OpenSumi
- CodeBlitz - A pure web IDE Framework
- Lite Web IDE - A pure web IDE on the Browser
- The Mini-App liked IDE
â¡ï¸ Development
$ yarn install
$ yarn run init
$ yarn run download-extension # Optional
$ yarn run start
By default, the tools/workspace
folder in the project would be opened, or you can run the project by specifying the directory in the following way:
$ MY_WORKSPACE={local_path} yarn run start
Usually, you may still encounter some system-level environment dependencies. You can visit Development Environment Preparation to see how to install the corresponding environment dependencies.
ð Documentation
For complete documentation: opensumi.com
ð ReleaseNotes & BreakingChanges
You can see all the releasenotes and breaking changes here: CHANGELOG.md.
ð¥ Contributing
Read through our Contributing Guide to learn about our submission process, coding rules and more.
ðââï¸ Want to Help?
Want to report a bug, contribute some code, or improve documentation? Excellent! Read up on our Contributing Guidelines for contributing and then check out one of our issues labeled as help wanted or good first issue.
ð§âð» Needs some help?
Go to our issues or discussions to create a topic, it will be resolved as soon as we can.
⨠Contributors
Let's build a better OpenSumi together.
![]() |
![]() |
![]() |
We warmly invite contributions from everyone. Before you get started, please take a moment to review our Contributing Guide. Feel free to share your ideas through Pull Requests or GitHub Issues.
ð License
Copyright (c) 2019-present Alibaba Group Holding Limited, Ant Group Co. Ltd.
Licensed under the MIT license.
This project contains various third-party code under other open source licenses.
See the NOTICE.md file for more information.
Top Related Projects
Eclipse Theia is a cloud & desktop IDE framework implemented in TypeScript.
Visual Studio Code
Run upstream VS Code on a remote machine with access through a modern web browser from any device, anywhere.
VS Code in the browser
:atom: The hackable text editor
JupyterLab computational environment.
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