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

List:       kde-devel
Subject:    KPlugins - summary
From:       Vladimir Lobak <vels () vdo ! net>
Date:       1997-05-13 0:45:42
[Download RAW message or body]


  I've been away for a couple of days, so i couldn't reply to all the mail
about plugins immediately. I'll try to combine all the ideas i got from you
guys in this mail. 


  Summary
  -------

*  Runtime creation of plugin chains will be implemented, but i'll put it
   on low priority right now.

*  Ability for application to provide data for first filter in chain (working
   as input plugin) and receive data from last filter (output plugin). It
   doesn't look like the right thing to me though. IMO it would be better if
   app programmer created input and output plugins and distributed them with
   application.

*  Mime type is used to identify data type passed between two plugins. We
   must use as much standard mime types as possible. All other mime types
   should be created using the form '<type>/x-kde-<subtype>'. E.g. 
   'text/x-kde-directory'.
   Association between mime type and file type (should be needed only by
   input or output plugin, filters don't deal with files) must be global.
   I.e. kfm may want to know about those association even if it doesn't use
   plugins for some specific tasks.

*  Two ways to 'execute' plugins in chain: 
    
      a) Blocking - all plugins reside in one process and pass pointer
         on data to each other. I leave this approach in hope that some day
         we will have threads in Qt (Arnt !!! :)

      b) Non-blocking - every plugin resides in it's own process. IPC is
         used to pass data between plugins. IMO this will slow down processing
         when you have huge amounts of data to be passed through all the
         chain (e.g. video). But this way has many advantages compared to
         the previous.
    
    Both approaches use the dl* functions to load/unload plugins.

*  Plugin may be configured in three ways:

      a) Using get/set methods with option name and option value. App
         programmer has to create his own config dialog for plugin parameters.
         This may be useful if app programmer wants to provide some fancy
         dialog with animated icons for e.g. some graphics filter.
  
      b) Calling the 'showConfigDialog' method of this plugin. It's not
         required (IMHO) to implement this method in each plugin.

      c) Using the recent idea for automatic config dialogs. This way
         plugin manager may automaticly create dialog for plugin that doesn't
         provide it's own.

*  Plugins report errors/warnings/notifications to manager which decides what
   to do next (may be user configurable) - e.g. abort chain, report to 
   application, show message box, etc.. Manager should also abort chain if
   some plugin crashed during processing.

*  API should allow filter to accept/produce more then one stream (have to
   think about implementation). This is required for e.g. MPEG video stream -
   somewhere in the chain (before decoding) you have to break this stream in
   two parts - video and audio - and continue processing each part
   in it's own node of chain. Similarly when you encode MPEG stream you
   receive audio and video and after encoding each you have to interleave them
   into one stream.


  Release date :)
  ---------------

  Plugins will not be released in the first alpha because there will be nothing
to release actually :) I don't think we'll be able to release something until
basic plugins (url input, audio output etc.) are finished.


  Some notes about kmodules (proposed by Christian Czezatke):
  -----------------------------------------------------------

  I still prefer to think of plugins as of 'data processing code'. They may
have some limited GUI for presenting configuration dialogs or showing the data
(output plugin), but please don't mix them with things like addressbook.
  I do think the modular design is the Right Thing. But for things like 
addressbook we can't use plugins. We need a completely different approach here.


  The name of the project:
  ------------------------

  I'm not sure it ML is the right place to vote, maybe it would be better if
everyone who is interested in changing the name from KPlugins to something
else will mail to me and i will post the results to ML.
  Here are the nominees: :)

    1. KPlugins (no change)
    2. MediaChain 
    3. DocChain
    4. You name it :)
  

  Comments are very welcome.


P.S.:
   Could someone please post a short overview of kparts and kioslaves (other
similar projects) ?


--
#include <disclaimer.h>
html *address(void) 
{ return Vels == (mailto:vels@vdo.net | http://aldan.ml.org:7000/vels); }

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

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