Question: Individual annotations vs One large annotation (conceptual riddle for the interested)

Jeroen van Meeuwen (Kolab Systems) vanmeeuwen at
Tue Oct 11 18:51:12 CEST 2011

On 11.10.2011 16:32, Georg C. F. Greve wrote:
> On Tuesday 11 October 2011 16.21:14 Jeroen van Meeuwen wrote:
>> The only reason "large" is being used in the context to refer to one
>> annotation, is a misconception created by Georg putting "large" in 
>> the
>> topic.
> Considering we're talking about several kb of data per annotation in 
> some
> cases, putting them all into one annotation seemed to make "large" a
> reasonable attribute to apply.

You are right only when one annotation would 1) implicitly or 
explicitly trump all other annotations, 2) none of the data currently 
stored in the "several kb" value is eligible to be stored in 
configuration XML instead of annotations.

>> Obtaining:
>> [...]
>> is actually more traffic then
>> [...]
> Yes. For the special case of "retrieve all annotations" there will be
> slightly more traffic with individual annotations. But there is no 
> scenario
> where that special case makes a reasonable default assumption, as 
> also pointed out by
> others.
> Usually clients want to get/set that one setting, and that setting 
> only.

With more features then currently under review, which is a rather 
feasible scenario for the future, it is very likely clients will want to 
obtain multiple features configured on a folder. This I actually 
consider part of the scenario for which configuration XML stored in a 
folder of type 'configuration' is very sensible; quick, easy and 
sustainable addition of features.

The argument for generating slightly more traffic (and maintaining a 
significantly larger (more rows) database) similarly applies to one 
annotation; at first with only few features to be made available through 
a single annotation, the overhead of obtaining a single JSON object from 
one annotation with potentially a couple of bytes not part of the 
configuration for the feature for which the configuration was sought to 
be obtained is minimal.

Again, nobody argued the annotations currently carrying "several kb" 
should immediately be consolidated in one single annotation to rule them 
all. As I've mentioned before, with configuration stored in annotations 
as well as Kolab XML objects the configuration stored in those "several 
kb" annotations will most probably need to be dissected and split over 
the three canonical locations for said configuration; 1) the 
annotation(s) to store specific feature configuration in, whether one 
for all features or one per feature, 2) Kolab XML objects, 3) 
potentially application specific, not to be shared configuration.

> It even seems questionable that the special case of "retrieve all
> annotations" has any application, as it is unclear why Kontact would 
> want to routinely
> retrieve the Horde settings or the ActiveSync configuration.

One can perfectly well imagine the ActiveSync configuration to be 
obtained by applications other then Z-Push, as it is implemented more 
then once before already.

> Optimizing traffic for a non-existing scenario at the expense of the 
> default
> scenario does not seem sensible.

Basing a design decision solely on what is currently under proposition 
isn't sensible either. We have to take into account the mechanism we are 
laying down as the way to go today for all possible scenarios that the 
future may offer.

>> Note that some features, not so many, are perhaps better suitable 
>> for
>> configuration through Kolab XML objects. Nobody is arguing *all*
>> configuration should go into one folder annotation, nor separate 
>> folder
>> annotations.
> Indeed.
> The question of "is this stored best in XML or annotations" is fully
> orthogonal to the question of "do we want one 'superannotation' or 
> 'one
> annotation per use case'?" - they have no connection whatsoever.

That is true, but to argue "several kb" of configuration currently 
being stored in a very application-specific annotation is, for the 
aforementioned reasoning, not an argument validating that one annotation 
is necessarily "large".

>> Nobody so far has recognized the fact using one annotation for
>> configuration to be shared across application isn't mutually 
>> exclusive
>> with, in addition to said one annotation, additional annotations of
>> which perhaps only one application may be compatible.
> So the suggestion becomes we can have one 'container annotation' and
> individual annotations per use case in parallel? What would be the 
> advantage
> of that and by which criteria would we decide what goes where?

The original question evolved around configuration information that is 
to be shared across clients, no?

Kind regards,

Jeroen van Meeuwen

Senior Engineer, Kolab Systems AG

e: vanmeeuwen at
t: +44 144 340 9500
m: +44 74 2516 3817

pgp: 9342 BF08

More information about the format mailing list