[Development] Let's discuss QPluginManager

eike.ziller at nokia.com eike.ziller at nokia.com
Mon Jan 23 10:58:28 CET 2012


On 20 Jan 2012, at 12:57, ext Mathias Hasselmann wrote:

> Hi,
> 
> Qt nicely supports extending applications and libraries via plugins,
> still in my opinion one major building block is missing: Some reusable
> object which iterates the shared object files in relevant plugin folders
> and returns all instances implementing a given set of interfaces. This
> seems a pretty common task.
> 
> Just had to think about implementing such a thing today. Yes, once
> again. Actually rather wondered from where to copy-and-paste it: I've
> stopped counting how many of them I touched during the last two years.
> Something that's even worse than the need of copy-and-paste: Most of
> them were created with some kind of ad-hoc mentality, so of course most
> of them are highly inefficient, if not even plainly broken.
> 
> Hope you still reading and got somewhat hooked. Also hope you agree we
> need something like QPluginManager, so let's discuss the feature set it
> should have:
> 
>     1. Iterate relevant plugin folders to find plugins implementing a
>        given set of QObject interfaces.
>     2. Introspect as few plugin files as possible to keep application
>        startup time low. This could be done by caching the interfaces
>        each plugin file provides.
>     3. Do we need meta informations like vendor name, description or
>        dependencies? Think of QtCreator's .pluginspec files.
> 
> Once we figured out the needed feature set, we should figure out how to
> implement the object. Most importantly: Is there some code, are there
> some specifications we could reuse?
> 
> Guess this should be enough to get the discussion started.

The plugin manager of Qt Creator might be a good starting point. It has been created with the possibility in mind that this might be of more general interest, and should have no dependency on Qt Creator itself.

* iterates directories for plugin specification files, that describe plugins to be loaded, their license, vendor, description, webpage, etc
* plugin dependencies & versioning
* plugins can register for command line arguments
* plugin life cycle management
* object registry where objects implementing (qobject based) interfaces can be registered, and retrieved by type, object name and type name.

Br,
-- 
Eike Ziller
Principal Software Engineer

Nokia, Qt Development Frameworks

Nokia gate5 GmbH
Firmensitz: Invalidenstr. 117, 10115 Berlin, Germany
Registergericht: Amtsgericht Charlottenburg, Berlin: HRB 106443 B
Umsatzsteueridentifikationsnummer: DE 812 845 193
Geschäftsführer: Dr. Michael Halbherr, Karim Tähtivuori




More information about the Development mailing list