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

Meilenstein Nr. Erfüllt days KW Ziele target Anmerkung/Ergebnis wrench
1
DONE 06.10 KW40 Saros Kern angebunden an VS Code Brücke ist noch Prototypisch
2
DONE 20.10 KW42 Kontaktverwaltung impl.  
3
DONE 03.11 KW44 Sitzungsverwaltung impl.  
4
DONE 15.12 KW50 Projekt teilen impl.  
5
22.12 KW51 Übertragung von Änderungen impl.  
6
12.01 KW02 Veröffentlichungsworkflow fertig  

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 DONE
  • Donnerstag DONE

(PDF)

Woche 2 (KW 40) targetDONE[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 DONE
  • 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 DONE
  • Donnerstag DONE (Skype)

(PDF)

Woche 4 (KW 42) target[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.Repackaged Fehler

Saros Meetings

  • Montag DONE
  • Donnerstag DONE (Ausgefallen)

(PDF)

Woche 5 (KW 43) targetDONE[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 DONE
  • Donnerstag DONE

(PDF)

Woche 6 (KW 44) target[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 DONE
  • Donnerstag DONE

(PDF)

Abwesend wegen Arbeit (KW 45-50)

Krankheit (KW 51)

Weihnachten und Neujahr (KW 52-01)

Organisatorisches (KW 02)

Woche 7 (KW 03) targetDONE[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 DONE
  • Donnerstag DONE

(PDF)

Woche 8 (KW 04) targetDONE[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 DONE
  • Donnerstag

(PDF)


🡫 Aktuell 🡫


▷ Woche 9 (KW 05) target[M5]

▷ Woche 10 (KW 06) target[M6]

Implementierungsphase zu Ende

▷ Woche 11 (KW 07)

▷ Woche 12 (KW 08)

Woche zum Druck der Arbeit inkl Abgabe (KW 09)