[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-core-devel
Subject:    Re: Moving new address book API to kdelibs
From:       Cornelius Schumacher <schumacher () kde ! org>
Date:       2001-10-30 10:13:33
[Download RAW message or body]

On Tuesday 30 October 2001 04:02, Mirko Boehm wrote:
> Cornelius Schumacher wrote:
> > I would like to move the new address book API from kdepim/kabc to
> > kdelibs. This also requires that the vCard lib is moved to the libs
> > (kdepim/vCard). The test GUI client (kdepim/kabc/frontend) should stay
> > in kdepim.
> >
> > When the code is moved I will start porting the applications to the new
> > API, starting with kaddressbook. When all applications are ported, I
> > think we should disable installation of libkab and only link it to the
> > conversion tool for old addressbooks.
> >
> > Any objections?
>
> I hate to write that email but I tried my very best. I talked to
> Cornelius in a number of emails regarding this matter, to explain to him
> why I think the move he wants to make is a step back.
>
> I basicly think his approach does not provide anything better than the
> current one, but limits us by using the vCard format in the backend.
> vCards are designed as a common denominator for data interchange and by
> this do not provide the features for a decent contact database support.

The backend is not very relevant in this context. Implement another one, if 
you are not happy with vCard. The new API mainly addresses the _API_ 
problems, not the backend problems.

The reason I chose vCard as backend is that it is designed as a storage 
format for addressbook data, it is extensible, it is useful as an interchange 
format, it is standardized (RFC 2426) and it is widely used. Most of these 
things are not provided by libkab. How do you come to the conclusion that 
this is a step back? I don't get it.

API-wise the new API provides a lot of improvements over the old one:

- Value based interface, addressbook entry data is implicitly shared.
- Clean separation of GUI and data handling (in libkab you had to instantiate 
a widget to get access to the data)
- No more dependencies on STL
- Results of functions are delivered as return values not written in 
references passed as function parameters
- Functions to set and get data, no public variables like libkab had them.
- Classes are cleanly namespaced (libkab had e.g. a class AddressBook in the 
global namespace)
- Backend details are not exposed in the API.
- Clean way to add custom entries, preventing conflicts of entries added by 
different applications
- Well-defined way to handle different types of phonenumbers, addresses etc. 
(who ever has tried to get e.g. a fax number from libkab, knows what I'm 
talking about here)
- Support for distribution lists implemented as extension, which does not add 
overhead to applications not using this feature.
- Dialog for selecting address book entries supports mouse and 
keyboard selection, supports automatic name completion.

> Additionally, the library has not been tested in real live except a
> small and customized example application. Regarding that KDE 3's feature
> freeze is right around the corner he will never be able to port the
> applications needed - while extending his library for the missing
> features - and provide our existing users with conversion tools that
> ensure data consistency in time.

Porting the applications will be a matter of a few days. I already have 
ported Kandy and it took me less than an hour. I'm not aware of any features 
that the old API had and the new API does not have. Which features do you 
mean? The conversion tool for converting old address book data to the new 
format exists and works fine.

I don't see a problem here. You are right that the new lib needs more testing 
in real life, but how is this supposed to happen, if we don't use the lib? 
Moving it to kdelibs and porting the apps is exactly the right step to get 
this testing.

> While I agree that we need something new regarding the PIM api, I think
> - this is not the right step
> - it will push us back a long leap just implementing what is already
> there
> - we need an approach that spans more than the local contact storage
> (basicly all other pim applications in a concerted approach) to get out
> of the KDE PIM mess

We have to make one step after the other. The new address book API only 
addresses the problem that we currently don't have a nice programming 
interface to access address book data in KDE. Without that all further steps 
to a more global PIM solution will fail. The new address book API does not 
pose any restrictions on further developments.

> Sorry, Cornelius, but I think rushing in with something definitly not
> mature is the wrong way.

I'm not rushing anything. The new API was carefully designed, discussed, 
implemented and tested. It is feature complete and we still have a few months 
left to fix the remining problems which might occur, when it is used by more 
applications.

-- 
Cornelius Schumacher <schumacher@kde.org>

[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic