Visual Studio Code, Teil 2: Den Code-Editor durch Erweiterungen ausbauen

Seite 2: "Open Source", Lizenzen und Telemetrie-Daten

Inhaltsverzeichnis

VS Code wird oft als quelloffener Code-Editor bezeichnet. Das ist korrekt – allerdings mit Einschränkungen. An dieser Stelle gilt es zwischen VS Code an sich und dem Projekt "Code OSS" zu unterscheiden. VS Code baut mehr auf Open-Source-Software (OSS) auf, als selbst eine zu sein.

"Code – OSS" ist der offizielle Name des Projekts im GitHub-Repository. Es nutzt die MIT-Lizenz, sodass es kompatibel mit der Open Source Initiative ist. Zudem ist die Software dadurch frei und kompatibel zum GNU-GPL-Projekt. Wenn VS Code aber aus diesen Quellen gebaut wird, fügt Microsoft ein paar weitere Funktionen hinzu und veröffentlicht die Dateien unter den proprietären Bedingungen der Lizenz von Microsoft (Microsoft Software License Terms). So kann Microsoft das "Code – OSS"-Projekt nutzen, um daraus einen eigenen Build zu erzeugen – mit proprietärem Logo, proprietären Namen und APIs, der Telemetriedaten sammeln kann. Gerade der letzte Punkt erzeugt immer wieder Reibungen. Deutliche Erwähnung finden sie in den Microsoft Software License Terms.

Dass es mit dem Erheben von Telemetriedaten Probleme gibt, ist nicht verwunderlich: Viele Organisationen, Institutionen oder Personen haben berechtigte Bedenken gegenüber der Übermittlung ihrer Daten an Microsoft. Aus eigener Erfahrung mit einem Start-up im Bildungsbereich lässt sich sagen, dass es dort immer wieder Diskussionen gibt, wenn VS Code zum Einsatz kommen soll.

Der Sachverhalt mit den Telemetriedaten lässt sich auf zwei verschiedene Arten angehen. Da es sich um eine globale Option handelt, kann man telemetry.enableTelemetry in den Benutzerdaten von true auf false setzen. Das unterbindet im Wesentlichen das Sammeln und Übertragen der Daten. Beim sogenannten Crash Reporting sammelt VS Code Daten über den aufgetreten Fehler und schickt sie an Microsoft, damit der Fehler analysiert wird. Dieses Verhalten lässt sich mit der Einstellung enable-crash-reporter deaktivieren, wenn man die Option auf false ändert. In beiden Fällen ist ein Neustart des Programms sinnvoll.

Was beim Deaktivieren der Telemetriedaten nicht zwangsläufig aufhört, ist das mögliche Datensammeln durch die Erweiterungen. Diese halten sich nicht immer an die globale Benutzeroption und können unter Umständen fleißig weiter sammeln. Da hilft es nur, jede einzelne Erweiterung zu prüfen. Ein Blick in das Telemetry-Log offenbart, welche Programme weiterhin Daten erfassen und verschicken. Dazu ist das Log-Level von VS Code über die Einstellungen auf Trace zu setzen, im Output-Fenster erscheint anschließend der Eintrag Log (Telemetry). Abbildung 4 zeigt, wie das Ergebnis aussehen kann, wenn das Fenster geöffnet ist. Zusätzlich landen die Telemetrie-Events in der lokalen Datei telemetry.log.

Beispielhaft erfasste Telemetriedaten einer VS-Code-Instanz (Abb. 4)

Es darf nicht unerwähnt bleiben, dass VS Code Online-Dienste nutzt und die Übertragung von Daten davon ebenfalls betroffen ist. In den Einstellungen findet sich die Option @tag:usesOnlineServices: Sie zeigt sämtliche Einstellungen, die das Datensammeln und die Nutzung einzelner Online-Dienste steuern. Für jeden dieser Dienste lässt sich individuell entscheiden, ob die Nutzung in Ordnung geht oder nicht.

Wie oben erwähnt, gibt es noch einen zweiten Weg, mit den Telemetriedaten umzugehen: Sie heißt VSCodium und ist eine Sammlung von Skripten, um aus den Quelltexten von Code OSS ein Binary mit einer von der Community definierten Standardkonfiguration zu erstellen. Das Projekt samt seinen Binaries steht unter der MIT-Lizenz und ist auf GitHub zu finden, VSCodium erhebt keine Telemetriedaten. Die Herausgeber betonen, dass es sich bei VSCodium nicht um einen Fork von VS Code handelt. Dateien damit zu erzeugen, gilt in der Community als gängiger Weg, um das Erfassen von Telemetriedaten zu umgehen.

Ein paar Worte zum Umgang mit Contributions: Neue Issues zum Projekt werden durch einen "issue-tagger"-Bot oder durch ein Team-Mitglied bearbeitet. Pro Woche ist jeweils eine andere Person im Team für die öffentliche Issue-Inbox zuständig. Architekturänderungen diskutiert die Community umfassend. Grundsätzlich ist aber jeder dazu eingeladen, gemeldete Fehler und Verbesserungen zu bearbeiten. Entwickler müssen ein Contributor License Agreement (CLA) unterzeichnen, bevor Änderungen in VS Code übernommen werden können. Dieser Prozess ist automatisiert und stellt für Microsoft sicher, dass der Community-Code von denen, die unterzeichnet haben, genutzt werden darf.

VS Code muss den Vergleich mit anderen etablierten Entwicklungsumgebungen und Code-Editoren nicht mehr scheuen. Je nach Technologie und Zielgruppe gibt es zwar größere Unterschiede, aber die Lücken werden kleiner, da die Palette an Features in VS Code beständig wächst und die Funktionalitäten der Erweiterungen ebenfalls umfassender werden.

Mittlerweile dient VS Code auch als Blaupause für andere Entwicklungsumgebungen, beispielsweise bei der Konzeption von Eclipse Theia – ein Vergleich der beiden zeigt das recht deutlich, insbesondere beim Usability-Konzept. Vergleiche zum "großen Bruder", der kompletten Entwicklungsumgebung Visual Studio, sind ebenfalls oft anzutreffen, da beide von Microsoft stammen. Der Abstand schwindet aber zusehends, da die Erweiterungen in VS Code immer mehr Aufgaben einer klassischen Entwicklungsumgebung übernehmen. Zudem hat VS Code mittlerweile einen erheblichen Vorsprung in Sachen Performance.