Implementierung des Saros-Plugins für Visual Studio Code
bearbeitet von: Michael Schäfer
Motivation
Saros ist ein Plugin zur Unterstützung von Entwicklern bei der Paarprogrammierung. Ursprünglich für
Eclipse entwickelt, seit Mai 2019 auch in einer Alpha Version für
IntelliJ verfügbar, soll es nun auch
nach Visual Studio Code portiert werden. Der volle Funktionsumfang ist derzeit nur in Eclipse
gegeben. Visual Studio Code, nachfolgend nur noch VS Code, ist im Bereich der Java IDE’s laut einer
Umfrage von 2019 [1] bereits auf Platz 4 vorgestoßen und nach einer Google Trends Analyse [2]
allgemein auf Platz 6. Auch wenn beide Ergebnisse schwer zu vergleichen sind, so lässt sich doch eine
Relevanz bezüglich der IDE und dessen Potential erkennen. Seit diesem Jahr gehört auch die
Paarprogrammierungslösung von Microsoft offiziell zu Visual Studio, mit einer Implementierung von
Saros für VS Code würde Saros seinen Nutzerkreis erweitern und seine IDE Unabhängigkeit weiter
unterstreichen können. Auch wenn Eclipse, wie VS Code, nicht nur Java unterstützt, so sollte eine
Portierung nach VS Code auch die Unabhängigkeit zur Programmiersprache weiter hervorheben.
(aus dem
Exposee)
Ziele und Vorgehen
Inkrementelles Vorgehen, wöchentliche Absprache im persönlichen Meeting.
Hauptziel ist es, einen Versionsstand zu erreichen, anhand dessen evaluiert werden kann ob eine Portierung nach VS Code sinnvoll ist.
Meilensteine und Sprintplan
Wöchentlicher Status
Woche 1 (KW 39)
Aktivitäten
- Checkliste begonnen abzuarbeiten
- Saros geforked (Github)
- mit Projekt vertraut gemacht (Commit Guidelines)
- Draft Pull Request eingereicht
- Fos Wiki eingerichtet
- VS Code Extension angelegt
- Java Adapter für Saros PoC's
- beide basisch verheiratet
- Thesis begonnen
Ergebnisse
- Entwicklungsumgebung eingerichtet
- Verheiratung Saros/VS Code
- Pull Request (Draft)
Nächste Schritte
- master Update in Fork integrieren
- Projekt in Saros (Github) anlegen lassen
- Kern anbinden
- IoC Container Typescript einbinden
Probleme
- Eclipse zeigte Build-Errors und Tests fehlgeschlagen → war fehlerhafte JAVA_HOME Umgebungsvariable
Saros Meetings
- Montag
- Donnerstag
(PDF)
Woche 2 (KW 40) [M1]
Aktivitäten
- Java-Typescript Brücken gesucht und getestet
- Saros Server als Basis für VS Code dupliziert
- Gradle Prozess integriert
Ergebnisse
- Java-Typescript Brücken ausgeschlossen
- Saros Java Entwicklung in VS Code vorrangetrieben
- Kern ist lauffähig
Nächste Schritte
- erste Pull Requests anlegen
- IPC's NPM Pakete evaluieren
- Kontaktverwaltung beginnen
Probleme
- saros.repacked Imports in VS Code
- Kompilierung NPM Java Paket
Saros Meetings
- Montag
- Donnerstag (Feiertag)
(PDF)
Woche 3 (KW 41)
Aktivitäten
- Saros Server minimal eingebunden (ohne Code Redundanzen)
- Language Server Protocol Recherche
- Einbindung Eclipse LSP4J begonnen
- Saros.Repackaged Fehler untersucht
Ergebnisse
- Saros Server ohne Redundanzen eingebunden
- LSP4J Server ohne Funktion eingebunden
Nächste Schritte
- Language Server über VSCode Language Client anbinden
- Kontaktverwaltung beginnen
Probleme
- Saros.Repackaged Fehler
- Jar mit Abhängigkeit zu LSP4J nicht startbar
- Gradle Abhängigkeitsdefinition war weitgehend unbekannt und in Verbindung mit LSP4J Fehler zeitaufwändig
Saros Meetings
- Montag
- Donnerstag (Skype)
(PDF)
Woche 4 (KW 42) [M2]
Aktivitäten
- Language Server Java implementieren
- Language Client Typescript einbinden
- Server und Client verheiraten
- Server / IPC abwägen als Kommunikation
- Language Server um Kontaktverwaltungsprotokoll erweitern
- Kontaktverwaltung implementieren
Ergebnisse
- Server und Client implementiert
- Server und Client verheiratet
- Protokoll erweitert
- Pull Requests vorbereitet
Nächste Schritte
- Kontaktverwaltung abschließen
- Sitzungsverwaltung beginnen
- Pull Requests einstellen
Probleme
Saros Meetings
- Montag
- Donnerstag (Ausgefallen)
(PDF)
Woche 5 (KW 43) [M2]
Aktivitäten
- Kontaktverwaltung erweitert
- Sitzungsverwaltung begonnen
- Entwicklungsumgebung Probleme angegangen
Ergebnisse
- Kontaktverwaltung fertig
- "Development mit VS Code" geschrieben
Nächste Schritte
- Sitzungsverwaltung abschließen
Probleme
- Entwicklungsumgebungsfehler in Windows
Saros Meetings
- Montag
- Donnerstag
(PDF)
Woche 6 (KW 44) [M3]
Aktivitäten
- Sitzungsverwaltung erweitert
- IDE Probleme verfolgt
- Server Komponenten von LSP Teil losgelöst
- Strukturverbesserungen
Ergebnisse
- Sitzungsverwaltung weitesgehend fertig
- Reproduktionsschritte mit Team geteilt
Nächste Schritte
- Sitzungsverwaltung abschließen
- Projekt teilen
Probleme
Saros Meetings
- Montag
- Donnerstag
(PDF)
Abwesend wegen Arbeit (KW 45-50)
Krankheit (KW 51)
Weihnachten und Neujahr (KW 52-01)
Organisatorisches (KW 02)
Woche 7 (KW 03) [M3]
Aktivitäten
- Sitzungsverwaltung erweitert
- Projekt teilen begonnen
- Error Handling
- Wizard für Dateneingabe
- Dialoge
- Bugfix Kontakte hinzufügen
- Refactoring
- Verbindung angepasst
- Progressmonitor begonnen
Ergebnisse
- Sitzungsverwaltung basisch fertig
- Code Verbesserung
- Verbesserte UX
Nächste Schritte
- Projekt teilen abschließen
- Aufteilung in PRs
- Übertragung von Änderungen impl.
Probleme
- Deadlock bei Dialogen
- Subscription Pending Problem
Saros Meetings
- Montag
- Donnerstag
(PDF)
Woche 8 (KW 04) [M4]
Aktivitäten
- Projekt teilen impl.
- Wizard impl.
- Progress Monitor impl.
- LSP4J bzgl. LSP Protokoll impl. (Progress Unterstützung)
- Messaging Konzept
- Settings von VS Code angebunden
- Service generalisierung
- Client Proxy für IOC
Ergebnisse
- Projekt teilen fertig
- Wizard vorhanden
- Progress Unterstützung
- Messaging Konzept
- Settings Austausch möglich
- Code Verbesserungen
Nächste Schritte
- sauberen PR Stand herstellen
- Übertragung von Änderungen impl.
Probleme
- Fehlender Progress Support bei LSP4J
Saros Meetings
- Montag
- Donnerstag
(PDF)
🡫 Aktuell 🡫
▷ Woche 9 (KW 05)
[
M5]
▷ Woche 10 (KW 06)
[
M6]
Implementierungsphase zu Ende
▷ Woche 11 (KW 07)
▷ Woche 12 (KW 08)
Woche zum Druck der Arbeit inkl Abgabe (KW 09)