CouchDB als Versionsverwaltung?
Könnte man auf Basis von CouchDB nicht eine verteilte Versionsverwaltung implementieren? Mir sind einige Gedanken gekommen, weshalb die Idee funktionieren könnte und welche Vorteile sie bietet.
Bereits aus der Beschreibung von CouchDB geht hervor, dass CouchDB auf schemafreien Dokumenten (also weshalb nicht Programmcode?) arbeitet. Außerdem lassen sich mehrere CouchDB-Server (also warum nicht einen CouchDB-Server für jeden Entwickler?) gleichberechtigt replizieren. Zudem kann ein Entwickler lokal arbeiten und seine Ergebnisse erst später replizieren, sodass man auch arbeiten kann, wenn man temporär keinen Internetzugang hat (oder will). Ein gehöriges Stück der Logik ließe sich sogar über sog. Views in der Datenbank ablegen. Ein Upgrade wäre somit nichts anderes als ein Commit - der von einem berechtigten Benutzer durchgeführt werden muss. Für gewisse Aktivitäten ist jedoch ein Werkzeug notwendig, mit dem man z.B. das Kommando zum Replizieren geben oder die Dateien der Versionsverwaltung ins Dateisystem extrahieren kann. Da CouchDB eine schöne HTTP-Schnittstelle hat, dürfte der Aufwand zum Schreiben eines solchen Werkzeugs gering ausfallen. Insgesamt wäre CouchDB also die passende Basis für eine solche Versionsverwaltung. In welchem Format ließen sich diese Dokumente jedoch speichern? Darcs bietet mit seiner Patch-Theorie einen sehr interessanten Ansatz für dieses Problem. Vielleicht ließe sich sogar beides kombinieren, da bei der Entwicklung von darcs kein Übertragungsweg festgelegt wurde.
Ich gebe zu, die Idee ist noch nicht ausgereift, aber wie heißt es so schön: "Release early, release often." Das gilt auch für meine Ideen und ich hoffe, dass ich die Idee bald schon weiter ausarbeiten kann - vielleicht mit einigen Anregungen von euch? :-)