{"id":13902717,"url":"https://github.com/eclipse-glsp/glsp","last_synced_at":"2025-04-14T23:32:37.243Z","repository":{"id":38628286,"uuid":"218795163","full_name":"eclipse-glsp/glsp","owner":"eclipse-glsp","description":"Graphical language server platform for building web-based diagram editors","archived":false,"fork":false,"pushed_at":"2025-04-04T08:54:57.000Z","size":870,"stargazers_count":210,"open_issues_count":109,"forks_count":32,"subscribers_count":13,"default_branch":"master","last_synced_at":"2025-04-14T04:39:55.062Z","etag":null,"topics":["diagram","diagram-editors","eclipse","glsp","graphical-models","lsp","lsp-server","protocol","sprotty","theia","theia-extension","vscode"],"latest_commit_sha":null,"homepage":"https://www.eclipse.dev/glsp","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/eclipse-glsp.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-10-31T15:14:15.000Z","updated_at":"2025-04-11T00:25:38.000Z","dependencies_parsed_at":"2023-10-16T10:31:11.950Z","dependency_job_id":"46dc7ce5-aade-42a5-b042-dc88ce961350","html_url":"https://github.com/eclipse-glsp/glsp","commit_stats":{"total_commits":162,"total_committers":10,"mean_commits":16.2,"dds":"0.37037037037037035","last_synced_commit":"0a81df661480722d663d02240eb6e24f6c48915d"},"previous_names":[],"tags_count":6,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eclipse-glsp%2Fglsp","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eclipse-glsp%2Fglsp/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eclipse-glsp%2Fglsp/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eclipse-glsp%2Fglsp/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/eclipse-glsp","download_url":"https://codeload.github.com/eclipse-glsp/glsp/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248979245,"owners_count":21192927,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["diagram","diagram-editors","eclipse","glsp","graphical-models","lsp","lsp-server","protocol","sprotty","theia","theia-extension","vscode"],"created_at":"2024-08-06T22:01:20.455Z","updated_at":"2025-04-14T23:32:37.221Z","avatar_url":"https://github.com/eclipse-glsp.png","language":"TypeScript","readme":"# Eclipse GLSP\n\n[![Client Status](https://ci.eclipse.org/glsp/job/eclipse-glsp/job/glsp-client/job/master/badge/icon?subject=client)](https://ci.eclipse.org/glsp/job/eclipse-glsp/job/glsp-client/job/master/)\n[![ServerJava Status](https://ci.eclipse.org/glsp/job/eclipse-glsp/job/glsp-server/job/master/badge/icon?subject=server-java)](https://ci.eclipse.org/glsp/job/eclipse-glsp/job/glsp-server/job/master/)\n[![ServerNode Status](https://ci.eclipse.org/glsp/job/eclipse-glsp/job/glsp-server-node/job/main/badge/icon?subject=server-node)](https://ci.eclipse.org/glsp/job/eclipse-glsp/job/glsp-server-node/job/main/)\n[![Dev Status](https://ci.eclipse.org/glsp/job/eclipse-glsp/job/glsp/job/master/badge/icon?subject=dev-packages)](https://ci.eclipse.org/glsp/job/eclipse-glsp/job/glsp/job/master/)\n\n[![Theia Status](https://ci.eclipse.org/glsp/job/eclipse-glsp/job/glsp-theia-integration/job/master/badge/icon?subject=theia-integration)](https://ci.eclipse.org/glsp/job/eclipse-glsp/job/glsp-theia-integration/job/master/)\n[![Vscode Status](https://ci.eclipse.org/glsp/job/eclipse-glsp/job/glsp-vscode-integration/job/master/badge/icon?subject=vscode-integration)](https://ci.eclipse.org/glsp/job/eclipse-glsp/job/glsp-vscode-integration/job/master/)\n[![Eclipse Status](https://ci.eclipse.org/glsp/job/eclipse-glsp/job/glsp-eclipse-integration/job/master/badge/icon?subject=eclipse-integration)](https://ci.eclipse.org/glsp/job/eclipse-glsp/job/glsp-eclipse-integration/job/master/)\n[![Examples Status](https://ci.eclipse.org/glsp/job/eclipse-glsp/job/glsp-examples/job/master/badge/icon?subject=examples)](https://ci.eclipse.org/glsp/job/eclipse-glsp/job/glsp-examples/job/master/)\n\nThe **G**raphical **L**anguage **S**erver **P**latform provides extensible components for the development of _diagram editors including edit functionality_ in (distributed) web-applications via a client-server protocol.\n\nIt follows the architectural pattern of the [Language Server Protocol](https://github.com/Microsoft/language-server-protocol), but applies it to graphical modeling and diagram editors for browser/cloud-based deployments.\nParts of the protocol and the web-based client implementation is based on [Sprotty](https://github.com/eclipse/sprotty) but extends it with editing functionality and GLSP-specific communication with the server.\n\nFor more information, please have a look at the [GLSP documentation](https://www.eclipse.org/glsp/documentation/), visit the [GLSP website](https://www.eclipse.org/glsp/) and the [protocol spec](https://www.eclipse.org/glsp/documentation/protocol).\nIf you have questions, please raise them in the [discussions](https://github.com/eclipse-glsp/glsp/discussions) and have a look at our [communication and support options](https://www.eclipse.org/glsp/contact/).\n\nhttps://user-images.githubusercontent.com/588090/154459938-849ca684-11b3-472c-8a59-98ea6cb0b4c1.mp4\n\n## Getting started\n\nThe best way to getting started is to read the [overview in the documentation](https://www.eclipse.org/glsp/documentation/overview) and follow the [getting started guide](https://www.eclipse.org/glsp/documentation/gettingstarted).\n\n## Features\n\nBelow is a list of features that are supported by the different base technologies that can be used with GLSP.\n\n\u003cdetails\u003e\n  \u003csummary\u003eExpand feature list\u003c/summary\u003e\n  \n| Feature                                                                              |      Standalone      | Theia Integration | Eclipse Integration | VS Code Integration |\n| ------------------------------------------------------------------------------------ | :------------------: | :---------------: | :-----------------: | :-----------------: |\n| Model Saving                                                                         |          ✓           |         ✓         |          ✓          |          ✓          |\n| Model Dirty State                                                                    |                      |         ✓         |          ✓          |          ✓          |\n| Model SVG Export                                                                     |          ✓           |         ✓         |          ✓          |          ✓          |\n| Model Layout                                                                         |          ✓           |         ✓         |          ✓          |          ✓          |\n| Restoring viewport on re-open                                                        |                      |         ✓         |                     |                     |\n| Model Edit Modes\u003cbr\u003e- Edit\u003cbr\u003e- Read-only                                            |   \u003cbr\u003e✓\u003cbr\u003e✓\u0026nbsp;   |    \u003cbr\u003e✓\u003cbr\u003e✓     |   \u003cbr\u003e✓\u003cbr\u003e\u0026nbsp;   |  \u003cbr\u003e✓\u003cbr\u003e✓\u0026nbsp;   |\n| Client View Port\u003cbr\u003e- Center\u003cbr\u003e- Fit to Screen                                      |      \u003cbr\u003e✓\u003cbr\u003e✓      |    \u003cbr\u003e✓\u003cbr\u003e✓     |     \u003cbr\u003e✓\u003cbr\u003e✓      |     \u003cbr\u003e✓\u003cbr\u003e✓      |\n| Client Status Notification                                                           |          ✓           |         ✓         |          ✓          |          ✓          |\n| Client Message Notification                                                          |          ✓           |         ✓         |                     |          ✓          |\n| Client Progress Reporting                                                            |                      |         ✓         |                     |          ✓          |\n| Element Selection                                                                    |          ✓           |         ✓         |          ✓          |          ✓          |\n| Element Hover                                                                        |          ✓           |         ✓         |          ✓          |          ✓          |\n| Element Validation                                                                   |          ✓           |         ✓         |          ✓          |          ✓          |\n| Element Navigation                                                                   |                      |         ✓         |          ✓          |          ✓          |\n| Element Type Hints                                                                   |          ✓           |         ✓         |          ✓          |          ✓          |\n| Element Creation and Deletion                                                        |          ✓           |         ✓         |          ✓          |          ✓          |\n| Node Change Bounds\u003cbr\u003e- Move\u003cbr\u003e- Resize                                             |      \u003cbr\u003e✓\u003cbr\u003e✓      |    \u003cbr\u003e✓\u003cbr\u003e✓     |     \u003cbr\u003e✓\u003cbr\u003e✓      |     \u003cbr\u003e✓\u003cbr\u003e✓      |\n| Node Change Container                                                                |          ✓           |         ✓         |          ✓          |          ✓          |\n| Edge Reconnect                                                                       |          ✓           |         ✓         |          ✓          |          ✓          |\n| Edge Routing Points                                                                  |          ✓           |         ✓         |          ✓          |          ✓          |\n| Ghost Elements                                                                       |          ✓           |         ✓         |          ✓          |          ✓          |\n| Element Text Editing                                                                 |          ✓           |         ✓         |          ✓          |          ✓          |\n| Clipboard (Cut, Copy, Paste)                                                         |          ✓           |         ✓         |          ✓          |          ✓          |\n| Undo / Redo                                                                          |          ✓           |         ✓         |          ✓          |          ✓          |\n| Contexts\u003cbr\u003e- Context Menu\u003cbr\u003e- Command Palette\u003cbr\u003e- Tool Palette                    |    \u003cbr\u003e\u003cbr\u003e✓\u003cbr\u003e✓    |  \u003cbr\u003e✓\u003cbr\u003e✓\u003cbr\u003e✓  |   \u003cbr\u003e\u003cbr\u003e✓\u003cbr\u003e✓    |   \u003cbr\u003e✓\u003cbr\u003e✓\u003cbr\u003e✓   |\n| Accessibility Features (experimental) \u003cbr\u003e- Search\u003cbr\u003e- Move \u003cbr\u003e- Zoom \u003cbr\u003e- Resize | \u003cbr\u003e✓\u003cbr\u003e✓\u003cbr\u003e✓\u003cbr\u003e✓ |                   |                     |                     |\n| Helper Lines (experimental)                                                          |          ✓           |         ✓         |          ✓          |          ✓          |\n\u003c/details\u003e\n\n## Repositories\n\nThe GLSP source code consists of the following repositories:\n\n-   [`glsp-client`](https://github.com/eclipse-glsp/glsp-client): Contains the code for the ([Sprotty](https://github.com/eclipse/sprotty)-based) client.\n-   [`glsp-server`](https://github.com/eclipse-glsp/glsp-server): Contains the code for a Java-based framework to create GLSP server components.\n-   [`glsp-server-node`](https://github.com/eclipse-glsp/glsp-server-node): Contains the code for a typescript-based framework to create GLSP server components running in node or pure browser applications.\n-   [`glsp-theia-integration`](https://github.com/eclipse-glsp/glsp-theia-integration): Provides the glue code to integrate GLSP diagrams editors into [Theia](https://github.com/theia-ide/theia).\n-   [`glsp-eclipse-integration`](https://github.com/eclipse-glsp/glsp-eclipse-integration): Provides the integration of GLSP diagram editors with the Eclipse IDE.\n-   [`glsp-vscode-integration`](https://github.com/eclipse-glsp/glsp-vscode-integration): Provides the integration of GLSP diagrams editors into [VS Code](https://github.com/microsoft/vscode).\n-   [`glsp-examples`](https://github.com/eclipse-glsp/glsp-examples): Contains various examples and project templates to demonstrate GLSP in action.\n-   [`glsp-playwright`](https://github.com/eclipse-glsp/glsp-playwright): Playwright-based framework for testing GLSP diagram editors.\n\n## Release plan\n\nWe release a minor version of Eclipse GLSP every three months, aligned with the [Eclipse Theia Community Releases](https://theia-ide.org/releases/), focusing on bug fixes and adding functionality while ensuring backward compatibility.\nCurrently, there are no major releases with API breaks planned.\nFor a detailed history of past releases, visit our [releases page on GitHub](https://github.com/eclipse-glsp/glsp/releases).\n\n## Shared artifacts\n\nThis repository provides the following packages and artifacts that are shared across all GLSP repositories and/or projects:\n\n-   [Eclipse GLSP docker images](docker/ci/README.md)\n-   [Eclipse GLSP Dev Packages](dev-packages/README.md)\n\n## Build artifacts\n\nPackages are available via [npmjs](https://www.npmjs.com/search?q=%40eclipse-glsp), such as the [glsp-client](https://www.npmjs.com/package/@eclipse-glsp/client) and the [theia integration](https://www.npmjs.com/package/@eclipse-glsp/theia-integration).\nThe [examples](https://www.npmjs.com/search?q=%40eclipse-glsp-examples) are available on npmjs too.\n\nThe Java server packages are available as maven as well as p2 dependency from the following maven repository or p2 update site.\n\n### Maven Repositories\n\n-   _Snapshots_: \u003chttps://oss.sonatype.org/content/repositories/snapshots/org/eclipse/glsp/\u003e\n-   _Releases/Release Candidates_: \u003chttps://central.sonatype.com/search?q=org.eclipse.glsp\u0026namespace=org.eclipse.glsp\u003e\n\n### P2 Update Sites\n\n-   _Server Snapshots_: \u003chttps://download.eclipse.org/glsp/server/p2/nightly/\u003e\n-   _Server Release Candidates_: \u003chttps://download.eclipse.org/glsp/server/p2/staging/\u003e\n-   _Server Releases_: \u003chttps://download.eclipse.org/glsp/server/p2/releases/\u003e\n    \u003cbr\u003e\u003cbr\u003e\n-   _Eclipse Integration Snapshots_: \u003c/i\u003e \u003chttps://download.eclipse.org/glsp/ide/p2/nightly/\u003e\n-   _Eclipse Integration Release Candidates_: \u003c/i\u003e \u003chttps://download.eclipse.org/glsp/ide/p2/staging/\u003e\n-   _Eclipse Integration Releases_: \u003c/i\u003e \u003chttps://download.eclipse.org/glsp/ide/p2/releases/\u003e\n\nAll changes on the master branch are deployed automatically to the corresponding snapshot repositories.\n\n## Prerequisites for building\n\n### Client packages\n\nWe recommend node in version 18 or higher:\n\n```bash\ncurl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.3/install.sh | bash\nnvm install 18\n```\n\nand Yarn\n\n```bash\nnpm install -g yarn\n```\n\nand Lerna\n\n```bash\nnpm install -g lerna\n```\n\n### Server/Ide packages\n\nYou'll need Java 17 and maven.\n\n## Building\n\n\u003e **_NOTE:_** This section describes how to build the core components of glsp.\n\u003e To build an optional integration component like the integration for VS Code or\n\u003e Eclipse IDE please follow the build instructions in the corresponding repository.\n\nTo build the client packages, just invoke\n\n```bash\nyarn install\n```\n\nin `glsp-client` and `glsp-theia-integration`.  \nTo start an example server, you can either\n\n-   run\n    ```bash\n    yarn start:exampleServer\n    ```\n    in `glsp-client` and open the `glsp-client/examples/workflow-standalone/app/diagram.html` file in your browser of choice\n-   run\n    ```bash\n    yarn start\n    ```\n    in `glsp-theia-integration` and head your favorite browser to http://localhost:3000.\n\nThe server components are built with\n\n```bash\nmvn clean verify\n```\n\nin `glsp-server`, and\n\n```bash\nyarn\n```\n\nin `glsp-server-node`.\n\n## Building and starting the Workflow Diagram example\n\nThe Workflow Diagram is a consistent example provided by all GLSP components.\nThe example implements a simple flow chart diagram editor with different types of nodes and edges (see screenshot below).\nThe example can be used to try out different GLSP features, as well as several available integrations with IDE platforms (Theia, VS Code, Eclipse, Standalone).\nAs the example is fully open source, you can also use it as a blueprint for a custom implementation of a GLSP diagram editor.\nThe workflow example consists of the following components: the Workflow Diagram Server, the client, and optionally an IDE integration of the Workflow Diagram Editor.\nPlease follow the steps below to build and run each of those components.\n\n### Building and running the Workflow Diagram Server\n\n```bash\ncd glsp-server\nmvn clean verify -Pfatjar\n```\n\nIn the folder `glsp-server/examples/org.eclipse.glsp.example.workflow/target`, you should have a jar file `org.eclipse.glsp.example.workflow-X.X.X-SNAPSHOT-glsp.jar` whereas `X.X.X` is the current version.\nYou can now start the server by executing the following commands:\n\n```bash\ncd examples/org.eclipse.glsp.example.workflow/target\njava -jar org.eclipse.glsp.example.workflow-X.X.X-SNAPSHOT-glsp.jar org.eclipse.glsp.example.workflow.launch.ExampleServerLauncher\n```\n\nTo start the example server from within your IDE, run the main method of the class [ExampleServerLauncher.java](https://github.com/eclipse-glsp/glsp-server/blob/master/examples/org.eclipse.glsp.example.workflow/src/org/eclipse/glsp/example/workflow/launch/WorkflowServerLauncher.java) in the module `glsp-server/examples/org.eclipse.glsp.example.workflow`.\n\n### Building and running the Workflow Diagram Editor in a Theia application\n\nNote that it is not necessary to build the other components of GLSP just for running the workflow example, as the workflow example build will pull all dependencies (including those from GLSP) from npmjs and sonar.\n\nSwitch to the folder `glsp-theia-integration` in your clone of the [`glsp-theia-integration`](https://github.com/eclipse-glsp/glsp-theia-integration) repository and build.\n\n```bash\ncd glsp-theia-integration\nyarn\n```\n\nThis will not only build the GLSP Theia integration modules, but also the workflow diagram editor example.\nOnce the build is finished, you can start the Theia application:\n\n```bash\ncd glsp-theia-integration/examples/browser-app\nyarn start\n```\n\nNow open a browser and point it to \u003chttp://localhost:3000\u003e.\nIf you open this the first time and you don't have selected a workspace yet, point it to [`glsp-theia-integration/examples/workspace`](https://github.com/eclipse-glsp/glsp-theia-integration/tree/master/examples/workspace) of your repository clone.\nThis will already include an up to date workflow file `example1.wf` that you can open by double-clicking it in the navigator.\n\nIn order to start the workflow diagram editor example with VS Code, Eclipse, or standalone, please see the documentation of the respective integration modules:\n\n-   [VS Code Integration](https://github.com/eclipsesource/glsp-vscode-integration#workflow-diagram-example)\n-   [Eclipse Integration](https://github.com/eclipse-glsp/glsp-eclipse-integration#workflow-diagram-example)\n-   [Standalone](https://github.com/eclipse-glsp/glsp-client#workflow-diagram-example)\n-   [Theia Integration](https://github.com/eclipse-glsp/glsp-theia-integration#workflow-diagram-example)\n\n## Setting up your development environment\n\nIf you want to explore or extend the GLSP source code in any of the available components, we recommend cloning the repositories alongside this repository, so that you have the following folder layout:\n\n-   `eclipse-glsp` (or any name for your parent folder)\n-   [`glsp`](https://github.com/eclipse-glsp/glsp)\n-   [`glsp-client`](https://github.com/eclipse-glsp/glsp-client)\n-   [`glsp-theia-integration`](https://github.com/eclipse-glsp/glsp-theia-integration)\n-   [`glsp-server`](https://github.com/eclipse-glsp/glsp-server)\n-   [`glsp-examples`](https://github.com/eclipse-glsp/glsp-examples)\n\nFor the client-side code (Typescript), we recommend using VS Code.\nTherefore, this repository provides a VS Code [workspace file](glsp.code-workspace), which you can open in VS Code and it will import all client-side folders for you -- given that you kept the repository structure specified above.\n\nThe [GLSP workspace file](glsp.theia.code-workspace) provides build \u0026 watch tasks, so that you can build all packages with the task `Build all` or start watching all client packages with `Watch all`.\n\nFor the [server components](https://github.com/eclipse-glsp/glsp-server), you can use any IDE you like.\nWe recommend an IDE that supports maven, though, to import the maven modules from the [glsp-server](https://github.com/eclipse-glsp/glsp-server) and optionally also those from the [glsp-examples](https://github.com/eclipse-glsp/glsp-examples/tree/master/server/).\n\n### Linking and watching\n\nWhen you are planning to change more than one client package at a time, or if you want to test your changes with the workflow example, we recommend to `yarn link` your local sources.\nTherefore, we provide the [yarn-link script](https://github.com/eclipse-glsp/glsp-theia-integration/blob/master/configs/local-linking.sh) that automatically links all the relevant packages.\nCurrently, this script is only available for Linux and Mac (shell script).\nThe [GLSP VS Code workspace](glsp.theia.code-workspace) also includes a dedicated VS Code task called `Yarn link all packages` and `Yarn unlink all packages`.\n","funding_links":[],"categories":["TypeScript"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Feclipse-glsp%2Fglsp","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Feclipse-glsp%2Fglsp","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Feclipse-glsp%2Fglsp/lists"}