Expand description
§Collaborative Objects
Collaborative objects are graphs of CRDTs.
§Basic Types
The basic types that are found in radicle-cob
are:
CollaborativeObject
– the computed object itself.ObjectId
– the content-address for a single collaborative object.TypeName
– the name for a collection of collaborative objects.History
– the traversable history of the changes made to a single collaborative object.
§CRU Interface (No Delete)
The main entry for manipulating CollaborativeObject
s is by
using the CRU like functions:
§Storage
The storing of collaborative objects is based on a git
backend. The previously mentioned functions all accept a Store
as parameter. The Store
itself is an accumulation of different
storage capabilities:
object::Storage
change::Storage
– Note: there is already an implementation for this forgit2::Repository
for convenience.
§Resource
The create
and update
functions take a Resource
. It
represents the type of resource the collaborative objects are
relating to, for example a software project.
§History Traversal
The History
of a CollaborativeObject
– accessed via
CollaborativeObject::history
– has a method
History::traverse
which provides a way of inspecting each
Entry
and building up a final value.
This traversal is also the point at which the Entry::author
and Entry::resource
can be retrieved to apply any kind of
filtering logic. For example, a specific author
’s change may be
egregious, spouting terrible libel about Radicle. It is at this
point that the actor
’s change can be filtered out from the
final product of the traversal.
Re-exports§
pub use change::store::Contents;
pub use change::store::Embed;
pub use change::store::EntryId;
pub use change::store::Manifest;
pub use change::store::Version;
pub use change::Entry;
pub use history::History;
pub use type_name::TypeName;
pub use object::create;
pub use object::get;
pub use object::info;
pub use object::list;
pub use object::remove;
pub use object::update;
pub use object::CollaborativeObject;
pub use object::Create;
pub use object::Evaluate;
pub use object::ObjectId;
pub use object::Update;
pub use object::Updated;
Modules§
Traits§
- The
Store
is an aggregation of the different types of storage traits required for editingCollaborativeObject
s.