Zusammenfassung und Motivation
Die aktuellen Phorge-Module Differential (Code-Review) und Diffusion (Repo-Hosting) inklusive Arcanist stellen ein erhebliches technisches Risiko dar und sind nicht mehr zeitgemäß. Die Ablösung des Systems ist notwendig, um die Zukunftsfähigkeit unserer Entwicklungs-Workflows, die Stabilität unserer Infrastruktur sowie die Einhaltung aktueller Sicherheitsstandards zu gewährleisten.
Dieser Schritt erfordert einen komplexen, strategischen Infrastruktur-Change (Lift & Shift / Replatforming) mit weitreichenden Auswirkungen auf unsere Entwicklungsprozesse.
Die Dokumentation des Projekts wird im Hauptwiki stattfinden, da das Projekt globale Auswirkungen haben wird. Die Doku steht auf der Seite Wikonia:Code-Review_verbessern_(Projekt)
Tickert: Problemstellung (IST-Analyse)
- Veraltete Technologie/Wartung: Die Basis von Phorge (ehemals Phabricator) ist veraltet, die aktive Community-Unterstützung ist stark begrenzt, und die langfristige Stabilität und Sicherheit ist nicht garantiert.
- Komplexität im Workflow: Der Pre-Commit-Review-Workflow von Differential mit Arcanist ist im Vergleich zu modernen Pull/Merge-Request-Systemen (z.B. in GitLab, GitHub) weniger intuitiv und führt zu Ineffizienzen bei neuen Mitarbeitern und in der Zusammenarbeit mit externen Teams.
- Mangelnde Integration: Die Integration in moderne CI/CD-Pipelines und andere zeitgemäße DevOps-Tools ist oft aufwendig oder nur über Workarounds möglich.
Ticket: Zielsetzung (SOLL-Zustand)
- Ablösung: Vollständige Deaktivierung und schrittweise Außerbetriebnahme der Phorge-Module Differential und Diffusion.
- Migration: Migration aller aktiven Code-Review-Daten (Revisions/Diffs) und aller gehosteten Repositories (inklusive Verlauf, Branches und Tags) in das neue Zielsystem.
- Modernisierung des Workflows: Einführung eines modernen, standardisierten Pull/Merge-Request-basierten Code-Review-Workflows.
- Stabilität und Zukunftsfähigkeit: Wechsel zu einer stabileren, zeitgemäßen Plattform mit aktiver Weiterentwicklung, besserem Support und besserer CI/CD-Integration (z.B. GitLab, GitHub Enterprise, Gerrit o.ä.).
Phasen des Infrastruktur-Changes
Dieser komplexe Change wird in folgenden Phasen durchgeführt:
1. IST-Analyse & Strategie (Current State Assessment)
- Detaillierte Erfassung aller von Differential und Diffusion genutzten Repositories, User-Accounts, aktiven Reviews und Customisations (z.B. Herald Rules).
- Dokumentation der Abhängigkeiten zu anderen internen Systemen (z.B. CI/CD, Build-Server, interne Authentifizierung).
- Kandidaten-Analyse: Bewertung möglicher Zielsysteme (siehe Vergleichstabelle unten) basierend auf Kriterien wie Funktionalität, Stabilität, Wartungsaufwand, Lizenzkosten und Migrationsaufwand.
- Entscheidung und Strategie-Wahl: Auswahl des Zielsystems und Festlegung der Migrationsstrategie (z.B. Big Bang vs. Phasenweise).
2. Konzeption & Proof-of-Concept (POC)
- Zielsystem-Setup: Aufbau der neuen Ziel-Infrastruktur.
- Datenmigration: Entwicklung und Test von Skripten/Tools zur Überführung von Repositories und Metadaten. Besonderer Fokus auf der Konvertierung von Arcanist-Patch-Workflows in Merge/Pull Requests.
- Workflow-Definition: Ausarbeitung des neuen Code-Review-Prozesses.
- POC: Durchführung einer vollständigen Test-Migration mit einem nicht-kritischen Repository und Test der End-to-End-Workflows.
3. Migration & Parallelbetrieb (Rollout)
- Piloten-Migration: Migration einer Pilotgruppe/eines kritischen Projekts zur Validierung des Prozesses unter Produktionsbedingungen.
- Schulung und Change Management: Schulung der Entwicklerteams auf den neuen Workflow.
- Full Migration: Schrittweise Migration der restlichen Repositories und Teams.
- Wichtig: Sicherstellung eines stabilen Parallelbetriebs oder eines geplanten Migrationsfensters mit minimaler Ausfallzeit.
4. Abschließende Außerbetriebnahme
- Validierung: Umfassende Überprüfung der neuen Systeme und Workflows.
- Deaktivierung: Abschaltung der Phorge-Module Differential und Diffusion.
- Archivierung: Archivierung zur Compliance (historische Daten).
Ticket: Kandidaten-Vergleich (Auszug)
| System | Code-Review-Modell | CI/CD-Integration | On-Premise-Option | Migrationsaufwand (geschätzt) |
| GitLab (Self-Managed) | Merge Request | Native & Tief | Ja (Enterprise) | Mittel-Hoch (Viele Features) |
| GitHub (Enterprise) | Pull Request | GitHub Actions | Ja (GHES) | Mittel-Hoch (Standardisiert) |
| Gerrit | Change/Patch Set | Jenkins, Andere | Ja (Open Source) | Hoch (Workflow-Wechsel) |
Ticket: Risiken und Chancen
- Chancen
- Zukunftssicherheit: Nutzung einer modernen, aktiv gewarteten Plattform.
- Effizienzsteigerung: Vereinfachung des Code-Review-Workflows durch Branchenstandards (Merge/Pull Request).
- Integration: Nahtlose Anbindung an moderne CI/CD-Systeme und andere DevOps-Tools.
- Skalierbarkeit/Stabilität: Verbesserte Performance und Hochverfügbarkeit des Repository-Hostings.
- Risiken
- Datenverlust: Gefahr des Verlusts oder der fehlerhaften Übertragung von Code-Review-Historie (Kommentare, Zustände). (Minderung: POC, Testmigrationen, Backup-Strategie).
- Akzeptanz: Widerstand in Entwicklerteams gegen den Wechsel des gewohnten Arcanist-Workflows. (Minderung: Change Management, Schulungen, Einbeziehung der Key User).
- Ausfallzeiten: Lange oder ungeplante Ausfallzeiten während der Migration kritischer Repositories. (Minderung: Geplante Wartungsfenster, Parallelbetrieb, automatisierte Migrationstools).