[Dev] Issues regarding item clouds, permissioning etc...
Andi Vajda
vajda at osafoundation.org
Fri Apr 9 19:24:17 PDT 2004
Quite a few interesting and important meetings have been taking place over
the past couple of weeks. Brian asked me to put my thoughts in writing.
So, here we go:
- Terminology
How do we name these things ? Item clouds, uppercase-I-items ?
Interfaces ? Bundles ? Molecules (where lowercase-i-items are atoms)
I find 'Interfaces' intriguing...
So, for now calling them Item Clouds, here is more about them.
They seem to be addressing several problems and occurred to several
people at the same time almost. Serendipity at work. Neat.
They appear to fill the need of defining semantics for a set of items that
work together in some fashion.
For example, an email item cloud can be viewed as the set of items made
up by the email body, its headers, the addresses in its headers, its
attachments, etc... where each of these pieces is actually implemented
by an item and defined by a kind.
- Uses
I see several uses for item clouds such as permissioning, sharing,
exporting, or any other operation where there needs to be applied an
operation to a semantically coherent set of items.
In permissioning: rather than permission each item inside a cloud,
derive permissions to them from the permissions set at the entry point of
the cloud and by following the cloud's boundaries. By default,
everything inside a cloud inherits permissions from the entrypoint.
In sharing: when shipping an item from one Chandler to another, shipping
along all items that are relevant with it, ie, the items that are most
likely to be requested immediately after the entry point item was
shipped over has the immediate advantage of significantly reducing
roundtrips between two peers exchanging items.
In exporting: by exporting items, I mean exporting Chandler data to
non-Chandler applications in a way that makes semantic sense at both
ends of the transaction. For example, if I export an email, I do mean to
export its headers and contents as well. An exporting module, could
leverage the cloud concept to know which items belong together and
implement some of the exporting code in terms of clouds and not just in
terms of emails.
Clouds can of course overlap: The email cloud and the contact cloud
probably overlap at the level of email addresses, for example. I believe
that this addresses the very early Chandler vision of where an item could
be looked at as one thing one time and another at a different
time. Instead of achieving this with some re-kinding functionality,
having clouds overlap (ie, have multiple different semantic entrypoints)
achieves the same without any of the complexities behind re-kinding.
- Implementation issues
Obviously, the concept of clouds should be represented in the schema
instead of in code. That way much code can exploit it, and less code has
to be written.
I've been thinking that the Kind item should be enhanced to describe the
boundaries of the item cloud it serves as entrypoint for by maintaining
a collection of reference attribute sequences that would be dereferenced
when all the items in a cloud were collected. Brian has been thinking
that such information should actually reside with the attributes
themselves instead of the kind, a more attribute centric model.
Both models are identical as long as kinds don't share attributes. If
they do, which is something desirable and we intend to do, then storing
the boundary information at the attribute level would also cause the
boundaries at these attributes to be shared by their kinds.
Choosing the latter model would cause us to move into a more attribute
centric data model than we are today, a decision not to make lightly. We
need to involve more people into this debate to raise the awareness about
such a decision.
Currently I'm leaning towards yet another way to represent these
boundaries. It came up during a recent conversation with Katie where
she asked: "Why should there be only one such boundary per kind anyway ?"
With that in mind we discussed the following:
How about introducing the notion of Uppercase-K-kinds (need yet another
name here) whose purpose is to define such item cloud groupings. A kind
(lowercase-k) such as Email, would reference one or several of these
uppercase-K-kinds for cloud boundary information. The choice of which
uppercase-K-kind would be picked for the item-gathering operation would
depend on the context of the operation in progress, such as permissioning,
sharing or exporting. I currently like this idea a lot, I must admit...
It provides a great opportunity for later extension. We could probably
imagine storing more such cloud specific metadata there at a later
time. I like such built-in extensibility a lot.
- Permissioning
The issue here is simpler. Should the data model allow the definition of
permissions at the attribute level (more precisely, at the attribute
value level, on a per item basis) ?
Or should permissioning be done at the item instance level only ?
Rephrasing the question: should the unit of permissioning be the same as
the unit of access into the repository ? the item (lowercase-i).
(of course, in both cases, appropriate defaults could be set at the kind
and attribute item level).
Items may be defined by kinds for certain semantic purposes that I
don't necessarily see easily aligning with permissioning granularity
limited to the item. It is easy to imagine an Employee kind with various
attributes of different sensitivities that would need to be permissioned
separately.
Workphone, salary and SSN, for example, can be thought of as public,
private and very-private levels of information sensitivity. If only the
employee item can be permissioned then the more sensitive information
would have to be moved into smaller items, referenced by the employee
item, solely for the purpose of permissioning which, if taken to an
extreme, could lead to lots of one-attribute items. I view this as
undesirable.
Similarly, Pieter had raised an issue about different levels of
sensitivity in information stored in a contact. While there may be an
acceptable solution for this particular objection (contact sections), I
don't think it addresses the original concern of forcing the item to
satisfy two semantic needs, one defined by the kind, the other one defined
by permissioning (which reflects information sensitivity).
Recommendations
---------------
These reflect my current thinking and could change as these conversations
and meeting proceed, of course:
- item cloud boundaries should be represented on an uppercase-K-kind, a
new data model concept to hold metadata and semantic information about
items that work together.
- item clouds and uppercase-K-kinds need better names !!!
- permissioning needs to be built into the data model down to the
attribute value level, although appropriate defaulting mechanisms using
kinds and uppercase-K-kinds defined clouds should be used normally.
If you've read all the way down to here, thanks for your time !
Andi..
More information about the Dev
mailing list