[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