We considered monorepos in the style of Google, Facebook, etc. We think any monorepo scaling issues are so far in the future that we will be able to leverage the same practices as Google and Facebook, by the time we need them.
Wir haben Monorepos im Stil von **Google und Facebook** betrachtet. Wir glauben, dass eventuelle Skalierungsprobleme erst in ferner Zukunft relevant werden und wir bis dahin deren Best Practices übernehmen können.
We considered polyrepos in the style of typical Git open source projects, such as Google Android, Facebook React, etc. We think these are the best choice for general public participation (e.g. anyone in the world can work on the code) and individual availability (e.g. the project is used on its own, without any other pieces).
Wir haben auch Polyrepos im Stil typischer **Git-Open-Source-Projekte** wie **Google Android** oder **Facebook React** in Betracht gezogen. Diese sind ideal für öffentliche Beteiligung (z. B. jeder kann am Code mitarbeiten) und für einzelne, unabhängig genutzte Projekte.
### Argument
### Argumentation
We choose a monorepo, since it stores all parts of the code in one single place. Every dev instantly knows where to find code and can develop faster. Also DevOps is easier when all the code is stored in a monorepo.
Wir haben uns für ein **Monorepo** entschieden, da es den gesamten Code an einem einzigen Ort speichert.
### Implications
Das bedeutet:
CI+CD could take more time for a full build for a monorepo, because CI+CD could build all the projects in the monorepo.
- Jeder Entwickler weiß sofort, wo er den Code findet, was die Entwicklung beschleunigt.
- DevOps-Prozesse werden vereinfacht, da der gesamte Code in einem Repository verwaltet wird.
If an organization/team/project grows, then a monorepo will have scaling issues.
### Implikationen
Monorepo scaling issues may make it increasing valuable to transition to a polyrepo.
-**CI/CD-Prozesse könnten länger dauern**, da bei jeder Änderung potenziell alle Projekte im Monorepo gebaut werden müssen.
- Wenn das Team oder die Organisation wächst, können **Skalierungsprobleme** beim Monorepo auftreten.
- Falls das Monorepo zu groß wird, könnte ein Wechsel zu einem Polyrepo nötig sein.
- Der Übergang von einem **Monorepo zu einem Polyrepo** ist ein großer DevOps-Aufwand und muss gut geplant und verwaltet werden.
Transition from monorepo to polyrepo is a signficant devops task, and will need to be planned, managed, and programmed.
## Verwandtes
## Related
### Verwandte Entscheidungen
### Related decisions
Keine verwandten Entscheidungen.
No related decisions.
### Verwandte Anforderungen
### Related requirements
Wir müssen eine **CI/CD-Pipeline** entwickeln, die gut mit Git arbeitet.
We need to develop the CI+CD pipeline to work well with git.
### Verwandte Artefakte
### Related artifacts
Wir erwarten, dass die Repository-Struktur Artefakte für **Provisionierung, Konfigurationsmanagement, Tests und andere DevOps-Bereiche** enthält.
We expect the repo organization to have related artifacts for provisioning, configuration management, testing, and similar devops areas.
### Verwandte Prinzipien
### Related principles
-**Einfache Rückkehr**
Falls das Monorepo in der Praxis nicht funktioniert oder vom Management abgelehnt wird, kann leicht auf ein Polyrepo umgestellt werden.
Easily reversable. If the monorepo doesn't work in practice, or isn't wanted by leadership, it's simple to change to polyrepo.
-**Kundenfokus**
Unser Ziel ist es, das Projekt so schnell wie möglich in die Hände der Kunden zu bringen. Wir glauben, dass ein Monorepo dies beschleunigt und eine schnellere Iteration ermöglicht.
Customer Obsession. We value getting the project in the hands of customers, and we believe that a monoreop can get us there faster than a polyrepo, and also help us iterate faster.
Think big. Google and Facebook are very strong advocates for monorepos over polyrepos, because all the core offerings can be developed/tested/deployed in concert.
\ No newline at end of file
-**Groß denken**
Google und Facebook setzen stark auf Monorepos, da alle zentralen Komponenten gemeinsam entwickelt, getestet und bereitgestellt werden können.