Zim

Comment 12 for bug 505847

Revision history for this message
Matthieu Rakotojaona (matthieu-rakotojaona) wrote :

Digging this thread from the past.

I am currently implementing a couchdb store class. It's the first time I use both bzr and launchpad, so I haven't had time to set up my account and my branch. I will do it ASAP =]

I have a remark about document versions : One shouldn't use couchdb's _rev to store revisions of his documents.

_rev effectively stores revisions, but it is relevant only to couchdb to resolve conflicts upon replication with other couchdbs. When you compact your database, you lose all the _revs that are not part of a conflict: you can't rely on this to store documents versions.

My idea is to store one document per version of a page. Each of these documents would be identified by a couchdb-generated id that ensures unicity among any of your databases. It would also contain the version number.

By using one document per version, we can share all of the versions in the databases, and detect conflicts easily.

Also, I understand that everyone would like to see this implemented as a plugin rather as a core storage method. I am also a proponent of "plain text if possible". But storing pages in couchDB has the advantage of not dealing with the system's means to detect changes; all the changes are already in the db, and can be livestreamed with a friend for realtime collaboration.

Any way, thank you for Zim, it is a very good software that I am happy to use !