19 October 2025

Ich denke, dass man jetzt aufhören sollte mit dem Projekt «neuer UML/INTERLIS Editor». Warum noch viel Geld und Stunden verlochen, wenn es - tadaaa - meine INTERLIS IDE gibt.

Ich habe bereits für jEdit ein INTERLIS-Plugin geschrieben und dann feststellen müssen, dass (a) die Akzeptanz eher ein Kampf wäre und (b) Visual Studio Code schon auch Vorteile hat. Es gibt jedoch ein sehr grosses Aber! Die ganze Entwicklung von Visual Studio Code ist stark von Microsoft abhängig. Auch wenn das die meisten Digitalisierungs-«Profis» etc., die in die kantonale Verwaltungen strömen, nicht stört, mich tut es! Und darum war ich positiv überrascht, dass es mit Eclipse Theia einen kompatiblen Editor gibt. Er verwendet im Frontend sogar den gleichen Kern wie Visual Studio Code aber Theia selber ist mehr Framework als fertiges Produkt. Die Theia IDE ist also ein Produkt, das auf dem Theia Framework aufsetzt. Die Extensions von Visual Studio Code sind kompatibel. Nichts sprach also gegen die Portierung des jEdit-Plugins in eine VSCode-Extension.

Um das als VSCode-Extension anständig zu machen, muss man einen Language Server implementieren und drumherum eine kleine VSCode-Extension bauen. Den Language Server kann man eigentlich in irgendeiner Sprache programmieren. Er muss am Ende des Tages einfach auf der Zielplattform, wo auch VSCode läuft, ausführbar sein. Weil ich unbedingt wollte, dass sich die INTERLIS-Datenmodelle mit dem offiziellen INTERLIS-Compiler ili2c prüfen lassen können, musste es Java sein (umgesetzt mit lsp4j). Damit der Anwender sich nicht um eine Java Runtime auf seinem PC kümmern muss, liefere ich neben dem Language Server auch gleich eine möglichst kleine JRE mit. Und zwar für hoffentlich alle gängigen Betriebssysteme. Die Extension kümmert sich um das Starten und Beenden des Language Servers. Davon merkt der Anwender nichts. Die Kommunikation zwischen Editor und Language Server läuft via STDIO und JSON. Theoretisch funktioniert der Language Server auch mit anderen Editoren / IDE wie z.B. Eclipse IDE und Netbeans. Es gibt gewisse Standardfunktionen, die funktionieren werden. Implementiert der Language Server zusätzliche Befehle, müsste ein Client diese auch implementieren, sonst bringen sie nichts. Soweit die Theorie.

Was kann mein Language Server in Kombination mit der VSCode-Extension?

Datenmodell kompilieren:

lsp-compile

Werden Fehler gefunden, sind diese strukturiert und können mittels Klick angesprungen werden:

lsp-error

Modell und Objekt Suggestions:

lsp-suggest

Pretty Print:

lsp-format

Rename-Funktion:

lsp-rename

(Könnte noch bisschen wackeling sein…​)

UML-Klassendiagramm:

lsp-mermaid

Es kann auch ein PlantUML-Klassendiagramm erstellt werden. Zudem ist der jeweilige Code kopierbar, um das Diagramm nach eigenen Wünschen anzupassen.

Objektkatalog (HTML und .docx):

lsp-html

Verlinkte Modelle:

lsp-link

Importierte Modelle und deren Objekte können geöffnet und angesprungen werden.

Hierarchie-Baum:

lsp-tree

Und ja, das ist jetzt alles noch nicht battle proven. Aber ein guter Start. Und wie man richtig erkennen kann, sind alle Screenshots mit VSCode gemacht. Was ist nun mit Eclipse Theia IDE? Funktioniert genau gleich. Man lädt die Software herunter und installiert die Extension:

theia-ide

Und was ist die «INTERLIS IDE»? Momentan noch nichts anderes als eine geforkte und leicht angepasste Theia-IDE und eingebauter VSCode-Extension:

interlis-ide

Ob das langfristig wirklich notwendig ist, weiss ich noch nicht. Immerhin könnte so eine getailorete Variante den Einstieg vereinfachen? Nur sollten die bereitgestellten Installationspakete aber auch problemlos funktionieren…​ Unter macOS laufe ich natürlich prompt in ein Problem und man muss den Klassiker machen:

xattr -dr com.apple.quarantine InterlisIDE.app

Sonst kommt die Fehlermeldung, dass die Anwendung kaputt ist. Endziel hier wären natürlich signierte Pakete oder aber mindestens eine bessere Fehlermeldung.

Ein zweiter Grund für den speziellen Theia-Build wäre, falls eine VSCode-Extension nicht mehr reicht, um alle Anforderungen zu erfüllen. Und Anforderungen führt mich gleich noch zum Thema, dass sowohl UML-Diagramm wie auch Objektkatalog read-only sind. Auch wenn ich es technisch interessant finde, wenn man in jeder der drei Ansichten editieren könnte, so frage ich mich doch wie wichtig das wirklich ist (UML möchte ich mir zwar noch anschauen, aber eher aus Neugier und eventuell der Möglichkeit, dass man notfalls bezüglich Platzierung selber eingreifen kann). In einem Workshop habe ich das Argument gehört, dass ein Jurist seinen Input in der Objektkatalog-Ansicht machen kann. Da frage ich mich dann schon (noch sehr neutral), in welchem Universum wir leben. Definitiv nicht im gleichen und nicht weil wir schlechte Juristinnen und Juristen haben, sondern «Hallo Usecase?!?».

Neben den mächtigeren Erweiterungsmöglichkeiten (als Visual Studio Code) bietet das Theia-Framework auch noch Microsoft-freie Kollaboration. Man kann den Server - falls man möchte - sogar selber hosten. Und man kann die IDE auch als Browser-Anwendung laufen lassen, entweder lokal und in Kubernetes.

Die Pakete konnte ich unter den verschiedenen Betriebssystemen nicht ausprobieren. Mir steht nur macOS zur Verfügung. Die VSCode-Extension wurde unter Windows ausprobiert und sollte funktionieren.

Also, machen wir doch weniger Papiere und Workshops und arbeiten an etwas Konkretem.

Links:

Posted by Stefan Ziegler. | INTERLIS , Java , ili2c , LSP , Theia , IDE