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

List:       kdevelop-devel
Subject:    inter-plugin dependencies and BC
From:       Alexander Dymo <adymo () mksat ! net>
Date:       2005-09-08 10:53:54
Message-ID: 200509081353.54504.adymo () mksat ! net
[Download RAW message or body]

Hi!
This mail summarises what we've discussed with Ian Geiser at aKademy.
Current policy in KDevelop is to put all public interfaces people may use
to lib/interfaces (libkdevelop.so) and implement them somewhere in shell.
This obviously means that we have lots of interfaces in the core but not all
of them are necessary for platform applications.

The solution is to allow individual plugins to define their interfaces and
link other plugins to those interfaces. Basically, we'd like to introduce
inter-plugin dependencies (like Eclipse ;)). The only problem is that we'd
be forced then to keep BC not only in the core interfaces, but in plugins
as well. And this is not good for us.

But there's a way to introduce inter-plugin dependencies and at the same
time do not care about BC. The solutions is simple - we can use 
QMetaObject::invoke and some kind of IDL compiler.
Please take a look at attachment where a simple model of kdevelop architecture
is implemented and two plugins (plugin1 and plugin2) are created.
plugin2 uses plugin1iface.h file (ideally created by an "IDL" compiler) and
does not link to plugin1 (thus BC is kept). "kdeviface" keyword will show
which methods of a plugin form the interface of a plugin.

What do you think about exposing interfaces in that way?
PS: If we do that, we could move more interfaces from the core to plugins
(like in Eclipse where you have runtime plugin, resources plugin, etc.).

-- 
Alexander Dymo
ICST Department, National University of Shipbuilding, Mykolayiv, Ukraine

["bic.tar.bz2" (application/x-bzip2)]
_______________________________________________
KDevelop-devel mailing list
KDevelop-devel@barney.cs.uni-potsdam.de
http://barney.cs.uni-potsdam.de/mailman/listinfo/kdevelop-devel

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

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