Convert Figma logo to code with AI

opensumi logocore

A framework helps you quickly build AI Native IDE products. MCP Client, supports Model Context Protocol (MCP) tools via MCP server.

3,482
430
3,482
242

Top Related Projects

20,922

Eclipse Theia is a cloud & desktop IDE framework implemented in TypeScript.

173,953

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

60,525

: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

  1. 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!');
      },
    });
  }
}
  1. 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',
    });
  }
}
  1. 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:

  1. Install the necessary dependencies:
npm install @opensumi/ide-core-browser @opensumi/ide-core-common
  1. 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');
});
  1. Run your application and start developing extensions and customizations using the OpenSumi Core APIs.

Competitor Comparisons

20,922

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.

173,953

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.

60,525

: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 Figma logo designs to code with AI

Visual Copilot

Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.

Try Visual Copilot

README

OpenSumi

A framework helps you quickly build AI Native IDE products.

MCP MCP Feature

CI E2E Test Coverage PRs Welcome Issues need help

Discussions CLA assistant License

NPM Version NPM downloads

Open in CodeBlitz

Changelog · Report Bug · Request Feature · English · 中文

perview

🌟 Getting Started

Here you can find some of our example projects and templates:

⚡️ 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.

Top Contributors of ant-design/ant-design - Last 28 days Performance Stats of ant-design/ant-design - Last 28 days
Active participants of opensumi - past 28 days

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.