** Collection deletion: no effects on stored items/collections, so no problem

** Collection deletion: no effects on stored items/collections, so no problem

* Query: for search folders only, should be moved into an dedicated attribute.

* Query: for search folders only, should be moved into an dedicated attribute.

+

+

Note that virtual collections so far are not explicitly marked as such, to keep them as transparent as possible for the clients. However, since the interaction with them differs from that with storage collections, we need ways to distinguish them at least implicitly. All the below for example is covered by the additional ACL properties for linking/unlinking.

=== Interaction with Virtual Collections ===

=== Interaction with Virtual Collections ===

Revision as of 09:58, 9 September 2009

All about virtual resources, virtual collections and searching. So far mostly a brain dump of ideas and requirements so we can come up with a nice design for all this. It is based on previous discussions for this topic, those are linked in the last section for reference.

Terms

Storage collection: An Akonadi collections that represents a storage location for items.

Virtual collection: An Akonadi collection that does represent an arbitrary set of items stored in any storage collection. Virtual collections are implemented by "linking" to existing items, comparable to symlinks in a file system.

Virtual Resources

A resource that creates virtual collections instead of storage collections.

A virtual resource can exist in two forms:

Physical virtual resources: I.e. there is a conventional agent instance for that resource that operates like any other resource but instead creates and maintains virtual collections.

Virtual virtual resources: These have no agent instance responsible for their collections, but are used for scoping search folders. The Akonadi server itself is responsible for maintaining those, while the applications decide about their lifetime.

We definitely need better terms for these...

Virtual Collections

The following lists properties of "normal" Akonadi::Collection objects and maps them to the corresponding semantics of virtual collections:

UID: stays the same

RID: for application use (currently it holds the query, but that's a dirty hack) (search folders only, still used for its original purpose by the tag resource)

Name: stays the same, for display purposes only

Resource Id: see virtual resources

Content mime-types: good question actually...

ACL: extend by link/unlink operations

Item creation: not allowed, would lack a storage location

Item modification: in theory possible if the storage collection allows it

Item deletion: in theory possible if the storage location allows it

Collection creation: depends on resources, useful for the Nepomuk tag resource, not for persistent search folders

Collection modification

Name: no problem

RID: not allowed once there is a actual resource behind it, not a problem when used by the application

Query: requires special support in the server, but no principal problem

Parent (that is moving): tricky for the tag resource, not really a problem for search folders, moving to non-virtual resources needs to be prevented.

Any other attribute: no problem

Collection deletion: no effects on stored items/collections, so no problem

Query: for search folders only, should be moved into an dedicated attribute.

Note that virtual collections so far are not explicitly marked as such, to keep them as transparent as possible for the clients. However, since the interaction with them differs from that with storage collections, we need ways to distinguish them at least implicitly. All the below for example is covered by the additional ACL properties for linking/unlinking.

Interaction with Virtual Collections

This is about possible user interaction patterns with virtual collections.

Linking/Unlinking of Items

Copy/DnD a "real" item into a virtual collection: That would mean "linking" the item there.

Useful for the tag resource

Makes no sense for search folders

Move/Copy/DnD a "link" out of a virtual collection into a storage one: That would mean moving/copying the item to a different storage location, not changing anything regarding the actual linking.