Interview mit Sven Efftinge zu Theia

„Theia ist für mich eine klassische IDE, die auf moderner Technologie beruht“

Dominik Mohilo

Sven Efftinge

Vor Kurzem haben wir Theia vorgestellt. Die Entwicklungsumgebung soll durch ihre vielseitige Verwendbarkeit, ihre Erweiterbarkeit und den Einsatz moderner Web-Technologien besonders zukunftssicher sein. Die Frage nach Desktop- oder Cloud-IDE stellt sich dabei nicht mehr, Theia ist beides. Im Interview sprechen wir mit Sven Efftinge, CEO bei TypeFox, über die Unterschiede Theias zu anderen Entwicklungsumgebungen, die besten Einsatzgebiete und wie die Idee für Theia eigentlich aufkam.

JAXenter: Hallo Sven und danke, dass du dir die Zeit für das Interview genommen hast. Vor Kurzem hast du Theia vorgestellt, eine IDE für den Desktop und die Cloud. Kannst du uns vielleicht die Aspekte erläutern, die Theia zugrunde liegen?

Sven Efftinge: Ja, natürlich! Theia spricht, wie du ja schon erwähnt hast, sowohl Desktop- als auch Browser-basierte IDEs an. Dadurch ist es eine passende Plattform für die Erstellung traditioneller Desktop-IDEs wie Eclipse oder IntelliJ IDEA, aber auch für Browser-basierte Entwicklungstools wie die Entwicklungsumgebung von Eclipse Che, Eclipse Orion oder Cloud9.

Container-basierte Softwareentwicklung ist für viele Programmierer mittlerweile zur Realität geworden und wird in Zukunft noch wichtiger. Sie hat viele Vorteile gegenüber dem traditionellen Ansatz, bei dem jeder Entwickler den eigenen Rechner in eine Entwicklungs- und Runtime-Plattform für sämtliche Projekte, an denen er arbeitet, umwandelt. Im Gegensatz dazu erlaubt die Container-basierte Softwareentwicklung reproduzierbare und recyclebare Setups.

shutterstock_418113229Lesen Sie auch: Theia: Eine einzige IDE auf dem Desktop und in der Cloud

Man muss allerdings sagen, dass Browser-basierte Anwendungen in den Augen professioneller Entwickler oftmals in Sachen Usability zu wünschen übrig lassen, da ihnen ein natives Feeling und die entsprechende Integration fehlt. Theias Architektur wurde darauf ausgelegt, genau diese Probleme zu adressieren: Sie ist ein lokales Tool, das als native Desktopanwendung (oder in einem modernen Browser) ausgeführt wird und gleichzeitig mit einem Backend verbunden ist, das entweder auch lokal oder eben dezentral (remotely) läuft, zum Beispiel in Containern.

Theia vs. Eclipse, IntelliJ, VSC, Che, Orion & Atom

JAXenter: Was sind die Unterschiede zwischen Theia und einer klassischen IDE wie IntelliJ IDEA oder der Eclipse IDE und welche Gemeinsamkeiten haben sie?

Sven Efftinge: Ein wichtiger Unterschied ist, dass Theia eine moderne UI-Technologie besitzt. Sowohl Eclipse als auch IntelliJ IDEA basieren auf alten Java-UI-Technologien (Swing bzw. SWT), die bereits nicht mehr aktiv in Stand gehalten werden. In der Eclipse Community gab es zwar immer wieder verschiedene Ansätze, um das Problem zu lösen, durchsetzen konnte sich allerdings keiner so richtig.

Theia basiert auf Technologien, die dem derzeitigen State of the Art entsprechen.

Theia basiert also de facto auf Technologien, die dem derzeitigen State of the Art entsprechen. Abgesehen davon versuchen wir, einem weiteren Trend zu folgen und nicht jedes einzelne Feature direkt in Theia zu implementieren. Stattdessen versuchen wir, bereits existierende Tools wie Linter, Debugger, Transpiler und so weiter vorteilhaft einzusetzen. Es kommt natürlich immer auf die Zielgruppe an, aber meiner Erfahrung nach wollen Coder sich möglichst nicht mit aufgeblähten UI-Dialogen auseinandersetzen, um ihre Tools zu konfigurieren. Sie möchten das ganze lieber textuell umsetzen, solange es dafür intelligenten Support gibt.

JAXenter: Visual Studio Code, Eclipse Che, Eclipse Orion, Atom – welche Gemeinsamkeiten haben sie mit Theia und worin unterscheiden sie sich?

Sven Efftinge: Vor Beginn unserer Arbeit an Theia haben wir mit den Entwicklern aller dieser Tools gesprochen. Ziel war es, ein existierendes und gut gewartetes Open-Source-Projekt zu finden, das wir durch intensive Mitarbeit unseren Bedürfnissen anpassen können. Um den Unterschied zu den einzelnen Tools aufzuzeigen, muss ich auf jedes einzelne eingehen.

Eclipse Orion startete vor einigen Jahren und zielt auf die Entwicklung von Web-Anwendungen im Browser ab. Das System zur Erweiterung wurde mit dem Fokus entwickelt, besonders sicher zu sein, was auf Kosten der Flexibilität geht. Eclipse Orion hat ein exzellentes Code Editor Widget, das wir wiederverwenden hätten können. Microsoft Monaco ist an der Stelle für uns allerdings die erste Wahl, da dieser Editor eine bessere native Unterstützung für das Language Server Protocol (LSP) bietet. Außerdem ist er wie Theia in TypeScript geschrieben, was es erleichtert, den Code zu lesen und zu verwenden.

Eclipse Che besteht aus zwei Teilen: Einem Workspace Management Server und einer IDE, die im Browser läuft. Die Eclipse Che IDE hat ein paar nette Features und einige der getroffenen architektonischen Entscheidungen sind ebenfalls sehr gut. Leider ist sie in Java geschrieben und nutzt GWT, was eine hohe Komplexität und lange Turnarounds bedeutet. Sie ist zudem an den Workspace Server gekoppelt, der es unmöglich machen würde, sie in einer anderen Umgebung, geschweige denn lokal auf dem Desktop, zu verwenden. Theia kann als Ausgleich für den IDE-Teil von Eclipse Che gesehen werden und arbeitet dabei reibungslos mit dem Che Workspace Server zusammen.

Wir haben uns für Monaco und das LSP entschieden, weil wir nichts unnötig neu erfinden wollten.

VS Code und Atom sind beide sehr populäre Editoren. Doch obgleich sie mit Web-Technologien umgesetzt wurden (JavaScript, HTML, CSS), laufen sie nur als Desktop-Anwendungen. Vor der Arbeit an Theia haben wir auch diese beiden genau analysiert und geprüft, ob sie sich dazu eignen würden, in Browsern mit Verbindung zu einem Remote Workspace zu laufen. Leider wäre das sehr kompliziert gewesen, da sie als reine Desktop-Anwendungen konzipiert sind, wie auch die jeweiligen Entwickler der IDEs uns im Gespräch bestätigten. Die Wiederverwendung und Umwandlung von VS Code in eine erweiterbare Browser IDE wäre übrigens mein persönlicher Favorit gewesen, da ich sehr gerne mit der Entwicklungsumgebung arbeite. Daher bin ich froh, dass wir uns bei Theia für Monaco, das Editor-Widget von VS Code, und das Language Server Protocol entschieden haben – immerhin wollen wir nichts unnötigt neu erfinden.

Theia Language Server Protocol & TypeScript

JAXenter: Welche Rolle spielt das Language Server Protocol in Theia?

Sven Efftinge: Das LSP ist einer der zentralen Aspekte von Theia und zeigt sehr schön, wie IDEs und Compiler heutzutage aufgebaut sind. Früher hätte man bei einer Entwicklungsumgebung wie Eclipse die gesamte Sprachunterstützung spezifisch für das Tooling implementiert. Das hätte nicht nur einen großen Programmieraufwand, sondern sogar Duplikationen bedeutet. Viele der Semantiken, die eine gute Sprachunterstützung ausmacht, ist bereits im Compiler der Sprache implementiert. Das Language Server Protocol erlaubt es, diese Logiken wiederzuverwenden, indem man eine direkte Verbindung zum Compiler herstellt. Natürlich muss so ein Compiler mit zusätzlichen Anforderungen wie inkrementellen und oftmals fehlerhaften Änderungen umgehen können. Aber moderne Compiler wie der von TypeScript oder jeder Xtext-basierte können das auf sehr elegante Weise.

JAXenter: Für Theia stützt ihr euch hauptsächlich auf TypeScript. Warum?

Sven Efftinge: Wir nutzen den Web Technology Stack, weil wir glauben, dass er die zukunftssicherste UI-Technologie enthält. Es gibt natürlich auch andere sehr interessante Entwicklungen in der JavaScript-Welt, aber der Version von JavaScript, die auf allen von uns gewünschten Plattformen läuft, fehlen wichtige Features. Außerdem ist sie generell keine Sprache, mit der man gerne arbeiten will.

Durch die Verwendung von TypeScript können wir bereits heute die JavaScript-Version von morgen nutzen, die von einem praktischen Typensystem und sehr guten Tools getragen wird. Ich nutze TypeScript seit über einem Jahr und genieße die Arbeit mehr und mehr. Betrachtet man sich den großen Popularitätszuwachs, sieht man, dass wir nicht die einzigen sind, die TypeScript lieben. Ich möchte allerdings noch anmerken, dass Erweiterungen auch in JavaScript oder jeden anderen Sprache, die sich zu JavaScript transpilieren lässt, erstellt werden können.

JAXenter: Lass uns über Use Cases sprechen. Für welche Art von Anwendungen eignet sich Theia besonders, für welche eher nicht?

Sven Efftinge: Theia kann als Basis für jedwedes Entwicklungstool genutzt werden. In seinem Kern ist es nichts anderes als ein RCP-Framework, das Desktop- und Browser-Anwendungen unterstützt. Es folgt dem Single-Page App-Design und hat Rich Layouting, ein System für Erweiterungen und andere Standardfeatures wie eine Command Registry mit dem korrespondierenden Menü und Keybinding-Services an Bord.

Durch die Verwendung von TypeScript können wir bereits heute die JavaScript-Version von morgen nutzen.

Während Theia einerseits die Basis von Entwicklungstools sein wird, ähnlich wie IntelliJ IDEA und Eclipse heute, unterstützt es auch weniger Code-zentrierte Softwaretools für Entwickler. Das Eclipse RCP-Framework wurde für viele solcher Anwendungen genutzt, Theia möchte eine zukunftssichere Basis für solche Produkte zur Verfügung stellen.

Es ist heutzutage sehr sinnvoll, solche Tools als native Desktop und als Browser-Anwendungen zu bieten, die mit Cloud-Services arbeiten. Viele Setups zur Entwicklung sind sehr komplex und der Container-Ansatz erleichtert das Aufsetzen und Wiederverwenden solcher Umgebungen, wähernd eine Browser-IDE es Nutzern erlaubt, auf diese Container zuzugreifen. Eclipse Che hat dabei den Nagel so ziemlich auf den Kopf getroffen, mit Theia wollen wir diesen Ansatz mit einer modernen IDE weiterführen.

IDE-Zukunftsmusik

JAXenter: Was sind eure Pläne für das Theia-Projekt

Sven Efftinge: Zunächst ist wichtig zu erwähnen, dass Theia kein reines TypeFox-Projekt ist. Wir haben lediglich den ersten Entwurf von etwas vorgestellt, das wir als kollaborative und offene Gemeinschaftsarbeit verschiedener Teilnehmer weiterführen möchten. Das Ganze startete mit einigen Diskussionen und E-Mail-Konversationen. Bei einem Meeting, das wir von TypeFox mit Vertretern von Ericsson, Codenvy, Intel, Obeo und Red Hat im März hatten, fiel sozusagen der Startschuss. Wir sprachen in San Jose damals über die Anforderungen und den Umfang eines solchen Projektes. Als ich aus den Vereinigten Staaten zurückkam, starteten wir mit der Arbeit am Kern-Framework. Wir wollten einfach etwas Konkretes haben, mit dem wir arbeiten konnten, denn es ist sehr schwierig, ein kohärentes Framework zu designen, wenn zu viele Leute daran beteiligt sind.

Für mich ist Theia eine klassische IDE, die auf moderner Technologie beruht.

Nun, da der erste Entwurf ausgearbeitet ist und vorliegt, haben wir das Ganze öffentlich gemacht, um weitere Mitarbeiter für das Projekt zu begeistern. Entwickler von Ericsson arbeiten schon jetzt am System für die Einstellungen und werden auch eine Debugging-Integration in Angriff nehmen. Das macht vor allem deswegen Sinn, weil sie auch am Debugging Interface der CDT und GDB gearbeitet haben.

TypeFox wird an vielen verschiedenen Stellen mitarbeiten, zum Beispiel an der Git-Integration und der Extension Registry. Die Möglichkeit Erweiterungen zu erstellen, veröffentlichen und nutzen, ist der Schlüssel für das Wachstum eines Ökosystems und erlaubt es mehr Leuten, daran teilzuhaben und interessante Dinge mit Theia zu basteln. Wir wollen das so einfach wie möglich gestalten.

JAXenter: Glaubst du, dass die klassische IDE am Aussterben ist?

Sven Efftinge: Für mich ist Theia eine klassische IDE, die auf moderner Technologie beruht. Der Technologie-Stack ist in der Tat ein großes Problem für große Entwicklungsumgebungen wie Eclipse, IntelliJ und Netbeans. Das gilt aber auch für das klassische Visual Studio, denn in Zukunft werden mehr und mehr Organisationen ihre Entwicklungsumgebungen auch in der Cloud zur Verfügung stellen müssen.

Abgesehen davon denke ich, dass IDEs sehr schnell sein müssen und Entwicklern soweit aus dem Weg gehen müssen, dass diese sich auf die Arbeit selbst konzentrieren können. Manche Entwicklungsumgebungen sind über die Jahre vielleicht ein wenig zu dick und aufgebläht geworden, sodass die Nutzer ab und zu darunter zu leiden haben. Das sollte natürlich tunlichst vermieden werden, aber ich denke nicht, dass diese Erkenntnis neu ist.

Sven Efftinge ist Projektleiter von Eclipse Xtext und Xtend. Er ist CEO und Language Architect bei TypeFox. In seiner Freizeit verbringt er gerne viel Zeit mit seinen Kindern oder mit einem Kite auf der Ostsee.
 
Geschrieben von
Dominik Mohilo
Dominik Mohilo
Dominik Mohilo studierte Germanistik und Soziologie an der Goethe-Universität in Frankfurt. Seit 2015 ist er Redakteur bei S&S-Media.
Kommentare

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.