>  Do you volunteer?

No, but I did. I just created an almost empty plug-ins/gpim (on
sourceforge), gpim = gimp plug-in manager (does anybody have a good
expansion for "mel"? :)

The first step for redistributable plug-ins is the plug-in layout
specification:

every plug-in is stored in a subdirectory with it's own name, or a
subdirectory with it's name+version (when it was stored in a versioned tar
file).

Inside, we have the following structure (source package):

  xxx/po [optional]
     contains .pot files and .po files. I guess this is the common standard
     anmd will stay for some time. Every successor must be able to manage .po
     files in some way, and maybe we can manage this more intelligent (using,
     say, a translation server that collects .pot files from plug-ins and
     updates them, easing both translator work and programmer work. Hey, that
     could be web-based!).

  xxx/plug-in.def [mandatory]
     contains a description, version, type fetch information, status etc..
     This would be a good candidate for an XML application, but I do not want
     to drag in eitehr XML::Parser nor gnome-xml, nor any other external
     reference. Maybe it gets similar to the PPM format.
  
  xxx/configure [optional]
     Can be used to generate the Makefile. Somehow we must communicate some
     gimp-settings to the plug-in, but setting GIMPTOOL and related envvars
     should suffice.

  xxx/Makefile (this must somehow get generated, of course)
     it should have some standard targets (make dist for example, for
     creating source distributions, and bindist for making a binary package).

  xxx/README [mandatory]
     a long description.

Binary packages would look like:

  xxx/plug-in.def [mandatory]
     this would be similar to the source, except that it also contains
     architecture information (e.g. config.guess output), should be
     autogenerated form the normal plug-in.def
  xxx/lib [mandatory]
     contains the subdirs "brushes", "gradients", "modules", "plug-ins", e.g.
     a partial mirror of ~/.gimp, so plug-ins can create their own
     subdirectories by putting them here)
  xxx/po [optional]
     guess what
  xxx/README [mandatory]
     again..

Of course, if I forgot anything... now step 2, managing and distributing
these things:

for plug-ins on sourceforge this would be easy. Just educate the people
about their plug-in.def and the common layout.

Source and binary distributions would be uploaded to some common place
(preferably), say download.sourceforge.net, or they reside at the place
stated in the plug-in.def.

The manager program would then fetch the plug-in.def of all plug-ins
and would synthesize a common database at a common place (e.g.
http://plug-ins.gimp.org/plug-in.db.gz). This database could be downloaded
by gpim on the "end-user" side. The end-user could then select the package
(getting a short description of what it is), or the README (which will be
fetched via the net).

Then he would have to choose between different versions (e.g. the latest
stable and the latest experimental release) and any precompiled binary
packages we happen to have.

After that the package would be fetched (cd-rom, net..) and installed
either as user-only or systemwide, and do any magic necessary to update
the translation tables (if at all possible ;) BTW: we need to consult
a ~/.gimp/po/ directory for translations as well at some point in the
future!

Here is an example of a plug-in.def file, for a binary
plug-in (this draws heavily on the ppd format described in
http://www.activestate.com/ActivePerl/docs/lib/site/XML/PPD.html)

<SOFTPKG NAME="GPIM" VERSION="0,1,0,0">
        <TITLE>Gimp Plug-In Manager</TITLE>
        <ABSTRACT>GPIM is a coonvinient tool to manage gimp plug-ins</ABSTRACT>
        <AUTHOR>Marc Lehmann <[EMAIL PROTECTED]></AUTHOR>
        <IMPLEMENTATION>
                <CODEBASE HREF="GPIM-0.1.tar.gz" />
                <DEPENDENCY NAME="gimp-perl" />
                <INSTALL>
                   perl Makefile.PL ;;
                   make ;;
                   make install ;;
                </INSTALL>
        </IMPLEMENTATION>
        <IMPLEMENTATION>
                <OS NAME="Linux" />
                <ARCHITECTURE NAME="i686-pc-linux-gnu" />
                <DEPENDENCY NAME="gimp-perl" />
                <CODEBASE HREF="GPIM-0.1-i686-pc-linux-gnu.tar.gz" />
        </IMPLEMENTATION>
</SOFTPKG>

-- 
      -----==-                                             |
      ----==-- _                                           |
      ---==---(_)__  __ ____  __       Marc Lehmann      +--
      --==---/ / _ \/ // /\ \/ /       [EMAIL PROTECTED] |e|
      -=====/_/_//_/\_,_/ /_/\_\       XX11-RIPE         --+
    The choice of a GNU generation                       |
                                                         |

Reply via email to