Codeowners gegen Verantwortungsdiffusion
13.10.2025, Christian Mäder

Als nxt übernehmen wir die Verantwortung für die Instandhaltung der Software unserer Kund:innen. Doch welche Person bei nxt ist am Ende wirklich dafür verantwortlich?

Verantwortungsdiffusion

Dieser Fachbegriff beschreibt das Phänomen der Verantwortlichkeiten einer Gruppe. Ist die Verantwortung für eine Aufgabe einer ganzen Gruppe zugewiesen, fühlen sich die einzelnen Personen dieser Gruppe nicht direkt dafür verantwortlich. Oder auf gut Deutsch: «Jemand anderes macht es dann schon.»

Verantwortlichkeit für Aktualisierungen

Je nach Entwicklungsstand arbeiten mehrere Personen an einem Projekt. Während der Entwicklungsphase tauschen sich diese häufig aus. So kann fortlaufend die Verantwortung für die Aktualisierungen geklärt werden.

Für wichtige Software beauftragen uns unsere Kund:innen damit, über die Entwicklungsphase hinaus die Software sicher und aktuell zu halten. Das garantiert Kompatibilität mit neueren Browsern, Betriebssystemen sowie angeschlossenen Umsystemen und beugt Schwachstellen vor, welche die Sicherheit beeinträchtigen könnten. In einigen Fällen wird auch die Performance der Applikation über die Zeit besser, insbesondere bei Updates von .NET oder Java. Das ist auch nachhaltig, weil dann die bestehende Hardware mehr Wertschöpfung erbringt und somit länger genutzt werden kann.

Wie in einem früheren Text geschrieben, nutzen wir bei nxt deshalb Renovate. Renovate ist eine Applikation, die eingesetzte Drittkomponenten regelmässig auf neuere Versionen prüft. Renovate schlägt in allen Projekten selbstständig Aktualisierungen via unser GitLab vor. Früher wurde das Projektteam über solche Aktualisierungen nicht aktiv informiert. Das führte dazu, dass sich in vielen Projekten die Aktualisierungen anstauten und sich niemand dafür verantwortlich sah.

Verantwortlichkeit für internen Code

Für internen Code hatten wir ein ähnliches Problem. Wir wussten jeweils nicht, wer die Verantwortung für etwas trägt, wenn es nicht mehr ging und aktualisiert werden musste.

Ein Beispiel dafür ist unsere Kontaktsynchronisierung von Pipedrive – unserem CRM – zum firmenweiten Google Adressbuch. Damit erreichen wir, dass wir in unserer Google Voice-Telefonsoftware direkten Zugriff auf alle Telefonnummern haben. Zudem sehen wir bei eingehenden Anrufen meistens, wer anruft.

Wenn nun Pipedrive oder Google seine Schnittstelle ändert, oder es ein Problem in der Synchronisierung gibt, wollen wir wissen, wer die Hauptansprechperson für den Code ist. Denn die Synchronisation ist wichtig für uns.

Codeowners als Lösung

Beide Probleme konnten wir lösen, indem wir für jedes Projekt eine hauptverantwortliche Person bestimmt haben. Diese Person haben wir in einer speziellen Datei im Code vermerkt, die CODEOWNERS heisst.

In dieser Datei haben wir hinterlegt, wer die verantwortliche Person für den Code ist. Der Inhalt folgt dabei einem bestimmten Muster.

* @michi            # michi ist hauptverantwortlich

/frontend/ @steffi  # steffi ist fürs Frontend verantwortlich
/infra/ @christian  # christian ist für die Infrastruktur verantwortlich

Das Format erlaubt uns sogar, Teilverantwortlichkeiten zu definieren. Etwa wenn eine Person hauptsächlich das Frontend pflegt und eine andere Person eher den Server-Teil.

Auch Renovate versteht das Codeowners-Format. Wird die entsprechende Einstellung aktiviert, weist Renovate sämtliche Aktualisierungen, die es in GitLab erstellt, der Person zu, die für diesen Teil als Codeowner eingetragen ist. Somit erhält die Person eine Benachrichtigung per E-Mail.

Diese Funktion muss in Renovate explizit aktiviert werden. Dazu dient die Einstellung reviewersFromCodeOwners=true. Zudem setzen wir bei uns noch expandCodeOwnersGroups=true und reviewersSampleSize=1. Denn in der Codeowners-Datei können mehrere Verantwortliche für denselben Teil oder sogar ganze GitLab-Gruppen (bzw. Teams in GitHub) eingetragen werden. Das versuchen wir bei nxt zu vermeiden. Gelingt uns das aber nicht, dann führen die zwei zusätzlichen Einstellungen dazu, dass sich Renovate zufällig eine Person aus der Gruppe aussucht und nur der Person die Änderung zuweist.

Nun wissen wir bei nxt für jede Software, wer verantwortlich ist, und auch, wer sich um die Aktualisierungen kümmern muss.

Was bedeutet es, eine Software entwickeln zu lassen?

Mein Name ist Christian Mäder. Jeden Freitag nehme ich mir eine Stunde Zeit, um Fragen rund um die Entwicklung und Pflege von Software zu beantworten.

  • Wie gehe ich vor? Was muss ich können?
  • Ist eine Individualentwicklung sinnvoll?
  • Was kostet das? Wie lange dauert es?
  • Welche Technologie soll ich verwenden?

Solche und weitere deiner Fragen beantworte ich dir gerne. Die Stunde steht exklusiv dir zur Verfügung. Sie ist für dich komplett kostenlos und unverbindlich. Du musst dich lediglich anmelden: