references and searches Re: [Kroupware] Kroupware RFC

Helge Hess helge.hess at skyrix.com
Fri Apr 11 12:17:37 CEST 2003


Sorry, I accidently pressed send in my previous mail before finishing 
the text ...

Bernhard Reiter wrote:
>>Two more general questions for understanding the design:
> I'll try to answer as much as I can.

Thanks :-)

>>Obviously the IMAP4 uid isn't suitable for that because of the copying
>>semantics. Do you use some special mail header field (msg-id ?) or
>>internal key for locating an entry ? 
> 
> No. But I don't fully get the question.

Yes, I think I explained not good enough what I mean. Consider you 
create an appointment record in a shared (group) folder. Now you add 
people from your shared contacts folder as participants to the 
appointment and save.

In other words, you have created an association (a link for each
contact) between the appointment and the contacts records participating
in the appointment.
If someone else opens the appointment, he can probably jump from the
appointment record to the contact participating in the appointment by
just clicking on the participant entry in the appointment viewer. Right ?
So the appointment viewer needs to resolve the participant reference to
the contact viewer and I would like to understand how this is accomplished.

Hm, I wonder whether this can be understood :-) Please tell me, if you
still don't get what I lined out.

> The E-Mail address is the reference link for most tasks.

This makes some sense for a contact, but doesn't cover references to
appointments, todos or notes. And how does the appointment viewer in 
KOrganizer know in what folder he needs to search for the email address ?
So the email address isn't really sufficient for locating an exact entry 
and therefore would need quite some additional UI in each place 
attempting to resolve that reference.

> Then each single entry has an imap number.

Yes, but the IMAP-ID is volatile since each modification to a contact
record results in a new one and therefore isn't suitable for persistent
references.

>>Is there a specific (and efficient)
>>IMAP query to locate such an entry ?
> Cyrus imapd has an efficient way to find the file in question.

How ? This should be documented in the RFC how references are resolved 
by the IMAP server ! Eg if you use the email address as a reference 
stored in the appointment, how do you locate that efficiently ?

Since the email address of a contact is stored in the vcard content of 
the contact-email, all Cyrus can do in my understanding is a fulltext 
search over all contact bodies (probably thousands in a shared contact 
folder) which is hardly efficient.

>>How does the current interface (eg the appointment editor) deal with the
>>case that a record was duplicated on conflict ? 
> If the appointment is fresh, than two concurrent ones will be creates
> because it is possible to have two appointments at the same time.

I'm not referring to the appointment itself, see above, but with 
references to it the participants stored in the contact folder.

> If the appointment is the same we plan to have a resolving dialog.
> 
>>Does any single GUI
>>component resolving a reference need to deal with the fact that the
>>query may return multiple objects and provide proper resolution GUI ?
> 
> No as one event as one imap number.

Please see above, I'm talking about resolving references between 
messages, not about the reference of the messages which is already 
opened in an editor/viewer (I understand the copy-design of that).

For example if you use the email address as a reference to a contact, 
all places wanting to resolve it (eg the appointment viewer, the task 
viewer, the contact viewer itself for associated contacts and for each 
client), will need to have some "resolving and search dialog" and 
functionality.

>>b) What is the general strategy of dealing with queries ?
> The KDE Kolab client should have a full cache of the interesting
> calender entries. Thus it is performing searches locally.

OK.

>>If this is the case, I'm interested in your approach for dealing with
>>that in the webclient. Were is the webclient going to store it's local
>>cache ?
> The concept for a webclient is not finished yet.

I'm interested in that since it should answer a lot of my questions 
above :-)

I thought about writing a Kolab webclient for fun, but the provided 
information isn't yet sufficient, that's why I'm asking. Seems like 
writing one is pretty complicated since the Kolab server itself does 
provide so little functionality in terms of reference resolution and 
searching :-(.

>>Does it use
>>a Berkley DB for storing the attributes of an appointment ?
> I believe KOrganizer does not, but I'm not deeply into the KOrganizer
> implementation details.

I would be quite interested in how KOrganizer stores the local cache of 
an imap folder locally. Maybe this could be abstracted in a class 
library and reused for the webclient.

best regards,
   Helge
-- 
__________________________________________________________________
Helge Hess                         Email:    helge.hess at skyrix.com
SKYRIX Software AG                 Tel:      +49-391-6623-0
Universitaetsplatz 12              Fax:      +49-391-6623-599
39104 Magdeburg, Germany           Internet: http://www.skyrix.com
__________________________________________________________________
Exchange your Exchange                http://developer.skyrix.com/
__________________________________________________________________




More information about the Kroupware mailing list