Unique Item Identifiers

Wiki tries to mark every item created with a unique identifier. We can think of each item in the federation as a database record, and we can refer to it with this unique id however it might move through the federation, and whatever its contents.

# Fluid not permanent

This is different from the permanent web, in that we are not trying to refer to the content - rather the intent of the author.

# Universal Intent

However even though we do not use content addressable references (ie mulithash-based) - we do want these references to be universal. Our software will break if our ids are not unique, and we seek to preserve content across time, and with the participation of any number of future authors.

However even though we do not use content addressable references (ie mulithash-based) - we do want these references to be universal. Our software will break if our ids are not unique, and we seek to preserve content across time, and with the participation of any number of future authors.

# Permanent Snapshots

We look to archive the federation, or parts of the federation on the permanent web. We seek to translate wiki into a flat-file storage format which can stand the test of time.

This in not wiki, this is dead wiki, that is a moment of wiki's life frozen in time. We aim to provide tools that an author can use to create a permanent snapshot of their part of the federation.

To this end we need page-items to be robustly unique. We seek to avoid name clashes over the long now. The current wiki implementation uses an improvised item id of non-standard origin. We propose moving over to uuid version 4.

# Livecode implementation

The mediawiki transport and other Livecode based transporters have been creating wiki-pages for a while now using version 4 (random) UUID's The C++ library that creates the UUID uses a cryptographic quality pseudo-random number generator is used to generate the randomness.

We can change the type of uuid for any new items created to any version needed (this is only one line of code to change), but we recommend the use of uuid version 4 for this purpose.

# Suggested Node.js implementation

npm install uuid var uuid = require('uuid'); Then create some ids ... const uuidv1 = require('uuid/v1');uuidv1(); // -> '6c84fb90-12c4-11e1-840d-7b25c5ee775a' const uuidv4 = require('uuid/v4');uuidv4(); // -> '110ec58a-a0f2-4ac4-8393-c866d813b8d1'

- https://github.com/broofa/node-uuid - https://www.npmjs.com/package/uuid

# See also