Über Konflikte und Konkurrenz

…Nein, nicht am Arbeitsplatz! Nicht nur. Dort auch… Diese zwei Begriffe treffen wir ständig an – vor allem auf dem Computer. Wenn Sie sich fragen, was Konflikte und Konkurrenz mit Computern zu tun haben, gehören Sie zu den Menschen, die sich nie darüber Gedanken machen mussten, was passiert, wenn zwei Personen an einer Datei arbeiten.

Die Informatik hat diese zwei Begriffe als Repräsentanten zweier möglichen Zustände auserwählt. Trotzdem werden Sie im Web kaum eine gute Erklärung der Problematik finden. Deshalb möchte ich diese Sachen etwas näher beleuchten.  

Von „konkurrierenden Zugriffen“ (bzw. „Konkurrierende Zugriffe“ als Eigenname) sprechen wir, wenn in einer Situation, in der zwei Personen in derselben Stunde, Minute oder gar Sekunde auf die Idee kommen, dieselbe Datei abzuspeichern. Derjenige der zuletzt kam hat Recht gehabt. Eigentlich müsste man sagen: derjenige, dessen Speicherwunsch zuletzt abgearbeitet wurde, hat recht gehabt. Wie immer bei Konkurrenz steht eines fest: Es kann nur einen geben! Was der Andere abgespeichert hat, geht verloren. Trotzdem lebt der „Verlierer“ in dem Glauben, seine Änderungen gesichert zu haben, was jedoch nicht zutrifft.

Eine alte und beliebte Lösung dieses Problems besteht in einem sog. „Lock“ oder „Locking-Mechanismus“. Das öffnende Programm (seltener das Betriebssystem selbst) vermerkt, dass die Datei X geöffnet wurde. Wenn die zweite Person dieselbe Datei öffnet und dasselbe Programm benutzt [ und der Vermerk für beide zugänglich ist und dieses Programm die Existenz dieses Vermerkes immer beim öffnen prüft ], wird meist eine Warnmeldung ausgegeben, dass diese Datei bereits geöffnet ist und möglicherweise Änderungen vorgenommen worden sind. Aufgrund dieses Vermerkes wird sich ein solches Programm wohl auch weigern, die Änderungen des zweiten Benutzers abzuspeichern.

Locking ist zwar eine Lösung, aber keine gute. Wenn Sie am Anfang der Datei (wie z. B. einem „Vorwort“) arbeiten und Ihre Kollegen am Resümee herumschrauben können Sie sich inhaltlich kaum in die Quere kommen. Zeitliche Verzögerungen wären beim Locking die Folge.

Hier greift die Idee eines Konfliktes. Ein Konflikt ist eine Situation, in der A und B zwar dieselbe Version zum bearbeiten beziehen aber nur einer (der Erste = A) ohne Widerspruch speichern kann. Der Zweite (=B) kriegt einen Fehler angezeigt, weil er die Änderungen seines Kollegen (=A) noch nicht in seine Version aufgenommen hat. Es ist ein offener Konflikt zwischen seiner Version und der aktuellen. Ein Konflikt ist etwas offensichtliches, einen Konflikt kriegt man mit… Doch was ist hier die Lösung? Der Zweite (=B) will ja seine Version auch abspeichern.

Wenn man ein auf Zusammenarbeit ausgelegtes Programm benutzt, kann es sogar selber reagieren: Es bezieht die aktuelle Version, vergleicht sie mit der des Benutzers (=B) und überimmt neue Teile in die Version von B, wo sie sich nicht mit Änderungen von B überschreiden. Einige Programme bieten bei puren Textdateien (keine .doc oder .pdf) einen sogenannten „diff“ (Differenz). Das Ergebnis des Vergleiches ist eine Differenz, die oft als sog. Patch bezeichnet wird. Diese kann mit dem Programm ‚pacht‘ wieder eingelesen werden (Änderungen nachvollziehen).

Also: keine Angst vor offenen Konflikten! Heimliche Konkurrenz ist schlimmer!

Und wen es interessiert, wie das im Zusammenhang mit einem Versionsverwaltungssystem aussieht, sollte sich diese Präsentation von SVN ansehen.