### 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.
(NOTE) Die Dokumentation des Projekts wird im Hauptwiki stattfinden, da das Projekt globale Auswirkungen haben wird. Die Doku steht auf der Seite [[ https://wiki.wikonia.net/Wikonia:Code-Review_verbessern_(Projekt) | 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)**.
---
### Ticket: Nächste Schritte (Initial Task)
1. **Formierung der Projektgruppe:** Benennung eines **Change Owners** und Definition des Kernteams (Infrastruktur, Development).
2. **Kick-off-Meeting:** Initiales Meeting zur Abstimmung des Umfangs.
3. **Start IST-Analyse:** Beginn der detaillierten Bestandsaufnahme und Anforderungsdefinition für das Zielsystem.