RFC: Location for KexiDB and 3rdparty libs like sqlite

Thomas Zander zander at kde.org
Mon Jun 25 22:02:22 BST 2007


On Monday 25 June 2007 19:38:29 Jaroslaw Staniek wrote:
> Thomas Zander said the following, On 2007-06-25 16:21:
> > What problems do you see if the kexiDB code just stays in the same
> > subdir it is in now until there is a stable API?
>
> I being lazy about this, have been really hoping the lib can stay in
> koffice/kexi/.
> But people outside of KOffice would want to avoid checking out entire
> KOffice and/or disable compilation of apps. 

Further in this post you said that the other apps would have a compile 
time dependency.  In effect the location of where kexiDb is then has zero 
effect.  People can just checkout the kexidb dir if they want instead of 
koffice.
Bottom line; just because people don't want to do a full checkout is no 
reason to create a new top-level module.  Especially if you don't want to 
make it a library that keeps BC.

> What are your thoughts 
> about this regarding, say, Flake?

I don't see the relation to flake.

> I'd like to employ 'release early & release often' style during the
> development, if someone is interested, just like the kdelibs had before
> stabilization.

Why would location in svn have any effect on that?

> >> Other apps would not have problems with this as the support would be
> >> dynamically loaded.
> >
> > I don't follow this line.   Do you mean the other apps will not link
> > to the full kexiDb library?
>
> It's about moving dependency on KexiDB to a plugin. So there can be
> configure checks for KexiDB

Just for clarity; this is not what most people will think a plugin is.  We 
tend to call it a compile time dependency.
A plugin is something very different.
Your answer does leave me a little confused;  if it is a compile time 
dependency your line above makes no sense;
 "Other apps would not have problems with this as the support would be
  dynamically loaded."
Compile time dependencies are not loaded dynamically and even if they were 
the binary compatibility problems would still be there.

This in combination with your answer below leaves me to conclude that any 
source incompatibility has to be applied to all apps and any binary 
incompatibility will have a severe effect on all depending apps as well.

That should be very clear to anyone that wants to depend on it.

> > Question; Is it possible to have just a couple of classes public so
> > the gory details of connections and drivers are all hidden from the
> > public API?
>
> Yes, that's good design pattern. The new design for KDE 4, as I plan
> it, is more layered to address this. E.g. drivers/providers (plugins)
> require complicated API while apps using the freamework - do not. 

Hmm, if those drivers are plugins (I ask since you used the term 
incorrectly earlier in this post) then that means they can be compiled 
independently from kexiDB and also be installed independently and those 
drivers are then dynamically discovered and loaded at runtime.
Is that the case? Its good to know we agree on this usage of the 
term 'plugin' ;)

> Thus, 
> users (of applications) would be rather satisfied that only updating of
> drivers/provides (plugins) is needed after KexiDB API version changes,
> while apps can still work as these use a subset of the KexiDB API
> (which is also more stable part).

Ok, so you move several drivers to a subdir.  That leaves the design of 
the core library and thus the exported APIs.

> However, such things have to be developed and stabilized too.
> During the heavy changes, users of KexiDB could be prepared to close
> collaboration to get effects they expect; this is a price of
> integration at relatively high level.

Yeah, sure.
Bottom line is that kexi DB is currently very far from binary-compatible.  
If you look at 
http://www.englishbreakfastnetwork.org/krazy/index.php?component=bundled-apps&module=koffice
you'll note a good 500 issues.  And the d-pointer checks are not being run 
on kexi-db (ask Allen to enable those if you want to make it an exported 
lib).
If you are honest about it, you'll have to conclude it is foolish to make 
kexiDB a more public module right now, where it has to abide by a LOT 
more strict rules then the code has ever done.  I think it makes a lot of 
sense to fix all those issues first and foremost.
Or, to say it in another way;  if you want to make it possible for others 
to use kexiDB, start by cleaning up the library and make it possible to 
be binary compatible, add loads of API docs, fix the EBN issues, finalize 
the APis for plugins (like the drives) etc.  One of the last steps is to 
make it more public.  It should not be the first step.

In the end; I'm still hoping that with the developers of those other 
applications you can design a small set of interfaces (say, some 5 
classes) so those apps can do what they want without actually linking to 
the full kexiDB.  In other words; make the full database API a plugin 
like all the drivers are going to be plugins.  Those interfaces can then 
be placed in kdelibs or similar.

-- 
Thomas Zander
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: not available
URL: <http://mail.kde.org/pipermail/kde-core-devel/attachments/20070625/c80df5de/attachment.sig>


More information about the kde-core-devel mailing list