Hi all,
I'm not sure if this is of interest, but in Liitin project the following
method is used:
(Liitin coming from a very different approach with a very different
implementation)
Each liitin account has it's own namespace (real person, organisation,
device...). You can save/publish named objects within your namespace,
which are then visible to others unless marked private. You may "update"
the object, but it actually creates a new timestamped version of the named
object automatically. Existing objects can never be modified or deleted,
nor can you interfere with other namespaces. You may access either the
latest version of the object by leaving out the timestamp attribute, or
any specific version by including the timestamp. The timestamp here is
actually intepreted as "the latest version at the specified time" so it
need not be precise. This timestamp is a built-in functionality and merely
indicates the time when the object - or an update of it - was originally
saved.
Since liitin objects are not restricted to any particular content type or
format, some content may stay static, whereas some may have frequent
updates. Say, a function that was originally buggy or slow. Again, you may
execute the latest version or stick to the one you prefer, or compare the
two if you like, for example.
On a higher level, you may compose an object referring to several objects
from various namespaces, some using latest versions, some timestamped
ones. Some data may be used as functions, dealing with data. Referred
object may further refer to other objects etc.
Referring to any object that was once there is quaranteed to exist any
time later. This is especially important for automated processes, but
reduces frustration for everyone, I think.
This method has proved to be simple, consistent and reliable.
br, jukka