For a full overview of all CI workflows across the organization, see Workflow Status.
The Graphical Language Server Platform provides extensible components for the development of diagram editors including edit functionality in (distributed) web-applications via a client-server protocol.
It follows the architectural pattern of the Language Server Protocol, but applies it to graphical modeling and diagram editors for browser/cloud-based deployments. Parts of the protocol and the web-based client implementation is based on Sprotty but extends it with editing functionality and GLSP-specific communication with the server.
For more information, please have a look at the GLSP documentation, visit the GLSP website and the protocol spec. If you have questions, please raise them in the discussions and have a look at our communication and support options.
diagramanimated.mp4
The best way to getting started is to read the overview in the documentation and follow the getting started guide.
Below is a list of features that are supported by the different base technologies that can be used with GLSP.
Expand feature list
| Feature | Standalone | Theia Integration | Eclipse Integration | VS Code Integration |
|---|---|---|---|---|
| Model Saving | ✓ | ✓ | ✓ | ✓ |
| Model Dirty State | ✓ | ✓ | ✓ | |
| Model SVG Export | ✓ | ✓ | ✓ | ✓ |
| Model Layout | ✓ | ✓ | ✓ | ✓ |
| Restoring viewport on re-open | ✓ | |||
| Model Edit Modes - Edit - Read-only |
✓ ✓ |
✓ ✓ |
✓ |
✓ ✓ |
| Client View Port - Center - Fit to Screen |
✓ ✓ |
✓ ✓ |
✓ ✓ |
✓ ✓ |
| Client Status Notification | ✓ | ✓ | ✓ | ✓ |
| Client Message Notification | ✓ | ✓ | ✓ | |
| Client Progress Reporting | ✓ | ✓ | ||
| Element Selection | ✓ | ✓ | ✓ | ✓ |
| Element Hover | ✓ | ✓ | ✓ | ✓ |
| Element Validation | ✓ | ✓ | ✓ | ✓ |
| Element Navigation | ✓ | ✓ | ✓ | |
| Element Type Hints | ✓ | ✓ | ✓ | ✓ |
| Element Creation and Deletion | ✓ | ✓ | ✓ | ✓ |
| Node Change Bounds - Move - Resize |
✓ ✓ |
✓ ✓ |
✓ ✓ |
✓ ✓ |
| Node Change Container | ✓ | ✓ | ✓ | ✓ |
| Edge Reconnect | ✓ | ✓ | ✓ | ✓ |
| Edge Routing Points | ✓ | ✓ | ✓ | ✓ |
| Ghost Elements | ✓ | ✓ | ✓ | ✓ |
| Element Text Editing | ✓ | ✓ | ✓ | ✓ |
| Clipboard (Cut, Copy, Paste) | ✓ | ✓ | ✓ | ✓ |
| Undo / Redo | ✓ | ✓ | ✓ | ✓ |
| Contexts - Context Menu - Command Palette - Tool Palette |
✓ ✓ |
✓ ✓ ✓ |
✓ ✓ |
✓ ✓ ✓ |
| Accessibility Features (experimental) - Search - Move - Zoom - Resize |
✓ ✓ ✓ ✓ |
|||
| Helper Lines (experimental) | ✓ | ✓ | ✓ | ✓ |
The GLSP source code consists of the following repositories:
glsp-core: The consolidated monorepo containing the (Sprotty-based) client, the typescript-based (node/browser) server framework, the Playwright-based testing framework and the shared dev tooling (dev-packages).glsp-server: Contains the code for a Java-based framework to create GLSP server components.glsp-theia-integration: Provides the glue code to integrate GLSP diagrams editors into Theia.glsp-eclipse-integration: Provides the integration of GLSP diagram editors with the Eclipse IDE.glsp-vscode-integration: Provides the integration of GLSP diagrams editors into VS Code.glsp-examples: Contains various examples and project templates to demonstrate GLSP in action.glsp-website-source: Contains the sources of the GLSP website and documentation.
The following repositories are deprecated; their sources have been consolidated into glsp-core and they are kept read-only for reference:
glsp-client(deprecated): nowglsp-core/packages/client.glsp-server-node(deprecated): nowglsp-core/packages/server.glsp-playwright(deprecated): nowglsp-core/e2e/playwright.
We release a minor version of Eclipse GLSP every three months, aligned with the Eclipse Theia Community Releases, focusing on bug fixes and adding functionality while ensuring backward compatibility.
Currently, there are no major releases with API breaks planned.
Releases are published from the individual component repositories; the client, node server and shared dev tooling are released from glsp-core.
The releases page of this repository only holds the historic releases of the dev packages (up to v2.8.0).
Artifacts that are shared across all GLSP repositories and/or projects:
- The Eclipse GLSP dev packages (ESLint/Prettier/TypeScript configs, the GLSP CLI) live in glsp-core/dev-packages.
Packages are available via npmjs, such as the glsp-client and the theia integration. The examples are available on npmjs too.
The Java server packages are available as maven as well as p2 dependency from the following maven repository or p2 update site.
- Releases/Release Candidates: https://central.sonatype.com/search?q=org.eclipse.glsp&namespace=org.eclipse.glsp
- Server Snapshots: https://download.eclipse.org/glsp/server/p2/nightly/
- Server Release Candidates: https://download.eclipse.org/glsp/server/p2/staging/
- Server Releases: https://download.eclipse.org/glsp/server/p2/releases/
- Eclipse Integration Snapshots: https://download.eclipse.org/glsp/ide/p2/nightly/
- Eclipse Integration Release Candidates: https://download.eclipse.org/glsp/ide/p2/staging/
- Eclipse Integration Releases: https://download.eclipse.org/glsp/ide/p2/releases/
All changes on the master branch are deployed automatically to the corresponding nightly p2 update sites.
The Workflow Diagram is a consistent example provided by all GLSP components. The example implements a simple flow chart diagram editor with different types of nodes and edges (see screenshot below). The example can be used to try out different GLSP features, as well as several available integrations with IDE platforms (Theia, VS Code, Eclipse, Standalone). As the example is fully open source, you can also use it as a blueprint for a custom implementation of a GLSP diagram editor. The workflow example consists of the following components: the Workflow Diagram Server, the client, and optionally an IDE integration of the Workflow Diagram Editor.
For detailed instructions on how to build and run the Workflow Diagram example, please refer to the corresponding section in the glsp-core README.