Discussion:
Preliminary medline support (first python plugin)
John Spray
2007-12-20 00:21:50 UTC
Permalink
Hi there,

Since a few people have previously expressed an interest in getting
involved with supporting more metadata scraping, I thought I'd mention
what I'm working on. There is now code in subversion which fetches
metadata from documents on medline via python. Referencer is written in
C++, which means that this involved a sorta-kinda python plugin
framework. Existing crossref and arxiv code will be somehow munged into
this framework so that things get into a nice extensible state.

Any interested developers should check out src/PluginManager.[Ch] to see
where I've got to so far.

John
Aurélien Naldi
2007-12-20 08:37:30 UTC
Permalink
Post by John Spray
Hi there,
Since a few people have previously expressed an interest in getting
involved with supporting more metadata scraping, I thought I'd mention
what I'm working on. There is now code in subversion which fetches
metadata from documents on medline via python. Referencer is written in
C++, which means that this involved a sorta-kinda python plugin
framework. Existing crossref and arxiv code will be somehow munged into
this framework so that things get into a nice extensible state.
Any interested developers should check out src/PluginManager.[Ch] to see
where I've got to so far.
Hi,

This is just wonderfull, thanks a LOT for working on this!
It seems to work fine on my list, but I still have a few quirks to
report ;)

* it crashes whenever I try to "get metadata" on several entries at once
* it crashes reproductibly on one specific paper, which I can find on
pubmed without a problem. Its DOI is: 10.1038/ni1500


I don't have much to look at the code right now, but the addition of a
python plugin system looks like a great news to me. Is it limited to
metadata fetching ? Do you have any kind of great plan for it in mind ?


Best regards.
--
Aurelien Naldi
John Spray
2007-12-23 12:28:10 UTC
Permalink
Post by Aurélien Naldi
I don't have much to look at the code right now, but the addition of a
python plugin system looks like a great news to me. Is it limited to
metadata fetching ? Do you have any kind of great plan for it in mind ?
There are always ideas, but saying I had a great plan would imply some
kind of commitment to implement it. Plugins for other areas such as
web-linking would be nice. Frankly I'd rather write any new code in
python than C++, but there's no way I'm re-doing the whole thing in
python.

Anyway, I've committed a bunch of new stuff including fixes to the
problems you had, so give it another go.

John
Aurélien Naldi
2008-01-01 13:07:59 UTC
Permalink
Post by John Spray
Post by Aurélien Naldi
I don't have much to look at the code right now, but the addition of a
python plugin system looks like a great news to me. Is it limited to
metadata fetching ? Do you have any kind of great plan for it in mind ?
There are always ideas, but saying I had a great plan would imply some
kind of commitment to implement it. Plugins for other areas such as
web-linking would be nice. Frankly I'd rather write any new code in
python than C++, but there's no way I'm re-doing the whole thing in
python.
Anyway, I've committed a bunch of new stuff including fixes to the
problems you had, so give it another go.
John
Hi,

Best wishes to all of you for the new year.

My problems where fixed before I left for xmas, thanks.
I just did a checkout on my home computer. You made an awesome work
during the break, I hope that 2008 will see a great release of
referencer ;)

I still have some problems getting some metadata. It may be just that my
home network access is flacky right now, but it works for other papers
and fails reliably for some others... Can you check if you get metadata
properly from pubmed for these doi ?

10.1016/S0022-5193(03)00201-7 this one is not found manually
10.1093/bioinformatics/bti1130 this one is on pubmed
10.1016/j.biosystems.2005.10.002 this one is found but not filled
(authors and title are).


The updated views works fine for me, the icon view is a bit weird at
first, but I like it.

It looks like the new metadata plugin system is fully functionnal now.
I just have one complain with the two-tabbed pref dialog: you could use
one single tab by removing the proxy config (puttng a button to launch
the corresponding capplet) and adding a "currently-selected-plugin" pref
panel bellow the plugin list.

Thanks again for your work, referencer will make my life much easier
now!

Best regards
--
Aur?lien Naldi <aurelien.naldi at gmail.com>
John Spray
2008-01-01 14:16:23 UTC
Permalink
Post by Aurélien Naldi
I still have some problems getting some metadata. It may be just that my
home network access is flacky right now, but it works for other papers
and fails reliably for some others... Can you check if you get metadata
properly from pubmed for these doi ?
10.1016/S0022-5193(03)00201-7 this one is not found manually
10.1093/bioinformatics/bti1130 this one is on pubmed
10.1016/j.biosystems.2005.10.002 this one is found but not filled
(authors and title are).
The first one is on pubmed but isn't coming up as a search result for
its DOI, because pubmed don't have its DOI in their database. The third
one is on pubmed but doesn't have all the information. Neither of those
I can do much about.

The second one is interesting, I will look into it.
Post by Aurélien Naldi
It looks like the new metadata plugin system is fully functionnal now.
I just have one complain with the two-tabbed pref dialog: you could use
one single tab by removing the proxy config (puttng a button to launch
the corresponding capplet)
Assuming a gnome-control-center installation isn't acceptable (KDE users
hate me enough already). The proxy configuration stuff could also be
needed on various other platforms in the dim and distant future.
Post by Aurélien Naldi
and adding a "currently-selected-plugin" pref
panel bellow the plugin list.
Line 8 in TODO.

John
Aurélien Naldi
2008-01-01 19:44:36 UTC
Permalink
Post by John Spray
Post by Aurélien Naldi
It looks like the new metadata plugin system is fully functionnal now.
I just have one complain with the two-tabbed pref dialog: you could use
one single tab by removing the proxy config (puttng a button to launch
the corresponding capplet)
Assuming a gnome-control-center installation isn't acceptable (KDE users
hate me enough already). The proxy configuration stuff could also be
needed on various other platforms in the dim and distant future.
I dunno what kde/xfce/enlightenment/other do, but if you really want to
be desktop agnostic, you can just use the "http_proxy" and friends env
variables. At least under gnome they are set properly, I guess that kde
does it as well. If it doesn't, it should anyway, to make sure that
console applications keep working.
Duplicating proxy configuration (even if it is only it's GUI) is a bad
idea IMHO (and one of the reason why I use epiphany instead of
firefox...). Duplicating it and trying to support several desktop will
make your life harder and in many case not improve significantly this of
your users, unless you use the good old accepted UNIX stuff ;)
Then, supporting windows/mac becomes harder :/ Speaking of this, do you
know if referencer works with them ?


If you really want to show something up, you can have a button launching
whatever configuration tool correspond to the detected desktop (starting
with gnome seems natural, KDE would be nice, and putting a comment if
you don't support the desktop used by the user: whoever uses something
else than gnome/kde is likely to be able to set en env variable or to
discover by himself the approriate configuration tool.
Post by John Spray
Post by Aurélien Naldi
and adding a "currently-selected-plugin" pref
panel bellow the plugin list.
Line 8 in TODO.
Great. Seeing the number of changes commited during the last two weeks I
can hardly complain anyway ;)

Regards
--
Aur?lien Naldi <aurelien.naldi at gmail.com>
John Spray
2008-01-01 20:27:14 UTC
Permalink
Post by Aurélien Naldi
I dunno what kde/xfce/enlightenment/other do, but if you really want to
be desktop agnostic, you can just use the "http_proxy" and friends env
variables. At least under gnome they are set properly, I guess that kde
does it as well. If it doesn't, it should anyway, to make sure that
console applications keep working.
*sigh*

http://ftp.gnome.org/pub/gnome/sources/gnome-terminal/2.13/gnome-terminal-2.13.2.changes:

2006-01-16 Guilherme de S. Pastore <gpastore at gnome.org>

* src/terminal-screen.c: applied patch from John Spray to set
the http_proxy environment variable based on the GNOME proxy
settings. Closes bug #321952.

I have tricked you. It's only set in the terminal. Sorry! ;-)

In any case, it all depends on how the http work is being done.
Currently I'm using gnome-vfs, which reads its configuration from gconf
(not the environment). Other platforms might have different libraries
with different configuration backends.
Post by Aurélien Naldi
Then, supporting windows/mac becomes harder :/ Speaking of this, do you
know if referencer works with them ?
http://icculus.org/referencer/faq.html
Post by Aurélien Naldi
If you really want to show something up, you can have a button launching
whatever configuration tool correspond to the detected desktop (starting
with gnome seems natural, KDE would be nice
See above: if I fire up a KDE configuration tool, it's not going to
configure gnome-vfs. Whether it should or not is someone else's
problem.

To have the "launch this environment's proxy configuration" applet
button would mean that referencer would have to be using a http client
library aware of the platform's proxy settings, which would mean using a
different http library on each platform, or using some magical one
(maybe it exists?) which knows what platform it's on. Anyway, it would
mean something other that gnome-vfs, which I'm not interested in doing
myself. It would only be worthwhile for a windows/mac port, which I'm
also not interested in doing (but will give plenty of support to anyone
else to do).

Convinced?

John
Michele Mattioni
2008-01-01 22:01:31 UTC
Permalink
I can't compile the 625 referencer svn
error log:


CrossRefPlugin.C:124: error: missing terminating " character
CrossRefPlugin.C:124: error: missing terminating " character
CrossRefPlugin.C: In member function 'virtual bool
CrossRefPlugin::resolve(Document&)':
CrossRefPlugin.C:124: error: expected `)' before 'may'
CrossRefPlugin.C:124: error: expected `)' before ';' token
make[2]: *** [CrossRefPlugin.o] Error 1
make[2]: Leaving directory `/home/mattions/svn/referencer/src'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/home/mattions/svn/referencer'
make: *** [all] Error 2

any idea?
Post by John Spray
Post by Aurélien Naldi
I dunno what kde/xfce/enlightenment/other do, but if you really want to
be desktop agnostic, you can just use the "http_proxy" and friends env
variables. At least under gnome they are set properly, I guess that kde
does it as well. If it doesn't, it should anyway, to make sure that
console applications keep working.
*sigh*
2006-01-16 Guilherme de S. Pastore <gpastore at gnome.org>
* src/terminal-screen.c: applied patch from John Spray to set
the http_proxy environment variable based on the GNOME proxy
settings. Closes bug #321952.
I have tricked you. It's only set in the terminal. Sorry! ;-)
In any case, it all depends on how the http work is being done.
Currently I'm using gnome-vfs, which reads its configuration from gconf
(not the environment). Other platforms might have different libraries
with different configuration backends.
Post by Aurélien Naldi
Then, supporting windows/mac becomes harder :/ Speaking of this, do you
know if referencer works with them ?
http://icculus.org/referencer/faq.html
Post by Aurélien Naldi
If you really want to show something up, you can have a button launching
whatever configuration tool correspond to the detected desktop (starting
with gnome seems natural, KDE would be nice
See above: if I fire up a KDE configuration tool, it's not going to
configure gnome-vfs. Whether it should or not is someone else's
problem.
To have the "launch this environment's proxy configuration" applet
button would mean that referencer would have to be using a http client
library aware of the platform's proxy settings, which would mean using a
different http library on each platform, or using some magical one
(maybe it exists?) which knows what platform it's on. Anyway, it would
mean something other that gnome-vfs, which I'm not interested in doing
myself. It would only be worthwhile for a windows/mac port, which I'm
also not interested in doing (but will give plenty of support to anyone
else to do).
Convinced?
John
---
To unsubscribe, send a blank email to referencer-unsubscribe at icculus.org
Mailing list archives: http://icculus.org/cgi-bin/ezmlm/ezmlm-cgi?60
John Spray
2008-01-01 22:27:28 UTC
Permalink
Post by Michele Mattioni
I can't compile the 625 referencer svn
Try now
Aurélien Naldi
2008-01-02 13:44:56 UTC
Permalink
Post by John Spray
Post by Aurélien Naldi
I dunno what kde/xfce/enlightenment/other do, but if you really want to
be desktop agnostic, you can just use the "http_proxy" and friends env
variables. At least under gnome they are set properly, I guess that kde
does it as well. If it doesn't, it should anyway, to make sure that
console applications keep working.
*sigh*
2006-01-16 Guilherme de S. Pastore <gpastore at gnome.org>
* src/terminal-screen.c: applied patch from John Spray to set
the http_proxy environment variable based on the GNOME proxy
settings. Closes bug #321952.
I have tricked you. It's only set in the terminal. Sorry! ;-)
In any case, it all depends on how the http work is being done.
Currently I'm using gnome-vfs, which reads its configuration from gconf
(not the environment). Other platforms might have different libraries
with different configuration backends.
ok, sorry for the noise then :/
(I still think that this kind of stuff should be easilly shared between
desktop, even if it can't be done right now)

I have one more question about the plugin system: how do we add
capabilities ?

I would like to add a plugin which:
* adds a button in the toolbar
* knows the selected items when this button is clicked
* preferably in python

I would love to kill the "lyx support" TODO item, which is pretty easy
in shell:

echo "LYXCMD:<whatever>:citation-insert:<key1>,<key2>" > .lyxpipe.in

It could use a pref UI: the path to the lyxpipe can change

I think that it is worth making it easy to add another one later on:
openoffice may get real bibliographic capabilities someday and some
people may use stg else than lyx/kile ;)

I am having a first look at the code right now, but it looks like plugin
are metadata tools only for now, right ?
--
Aur?lien Naldi <aurelien.naldi at gmail.com>
John Spray
2008-01-02 21:39:16 UTC
Permalink
Post by Aurélien Naldi
I am having a first look at the code right now, but it looks like plugin
are metadata tools only for now, right ?
Yes. Metadata fetchers came first because they had the best ratio
between usefulness and compactness of interface. Okay, that's a lie.
Metadata fetchers came first because I swore I would never do XML
manipulation in C++ again.

If anyone wants to do some work to extend what can be done with python,
I would suggest that designing python interfaces for the Document and
DocumentView classes would be most useful. Also, figuring out how to
let python plugins do UI stuff with PyGtk would be valuable -- this is
what gedit does, I believe.

John
John Spray
2008-01-02 21:28:45 UTC
Permalink
Post by John Spray
Post by Aurélien Naldi
I still have some problems getting some metadata. It may be just that my
home network access is flacky right now, but it works for other papers
and fails reliably for some others... Can you check if you get metadata
properly from pubmed for these doi ?
10.1016/S0022-5193(03)00201-7 this one is not found manually
10.1093/bioinformatics/bti1130 this one is on pubmed
10.1016/j.biosystems.2005.10.002 this one is found but not filled
(authors and title are).
The first one is on pubmed but isn't coming up as a search result for
its DOI, because pubmed don't have its DOI in their database. The third
one is on pubmed but doesn't have all the information. Neither of those
I can do much about.
The second one is interesting, I will look into it.
Fixed it now.

John
Aurélien Naldi
2008-01-02 22:03:12 UTC
Permalink
Post by John Spray
Post by John Spray
Post by Aurélien Naldi
I still have some problems getting some metadata. It may be just that my
home network access is flacky right now, but it works for other papers
and fails reliably for some others... Can you check if you get metadata
properly from pubmed for these doi ?
10.1016/S0022-5193(03)00201-7 this one is not found manually
10.1093/bioinformatics/bti1130 this one is on pubmed
10.1016/j.biosystems.2005.10.002 this one is found but not filled
(authors and title are).
The first one is on pubmed but isn't coming up as a search result for
its DOI, because pubmed don't have its DOI in their database. The third
one is on pubmed but doesn't have all the information. Neither of those
I can do much about.
The second one is interesting, I will look into it.
Fixed it now.
it works fine, thanks.

I have been playing with extending the plugin system to allow plugins to
add actions. It is nowhere near finished nor clean as I have been
learning C++ in the meanwhile, but here is a short patch, to avoid
duplicate work, start discussion and to force me to finish it later!

Remaining work:
* actually call some python code in PythonPlugin.C
* give it the list of selected documents, so that it can do something.
* write 5 more lines of python to push a lyx citation
* API to set text/icon for the action
* API to be able to define several actions from a single plugin, and to
add toolbar, menu or context menu items ?

Is it going in the right direction for you ?
--
Aur?lien Naldi <aurelien.naldi at gmail.com>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: referencer_start_pluginaction.diff
Type: text/x-patch
Size: 4188 bytes
Desc: not available
URL: <http://icculus.org/pipermail/referencer/attachments/20080102/e0ea3898/attachment.bin>
John Spray
2008-01-02 22:51:47 UTC
Permalink
Post by Aurélien Naldi
I have been playing with extending the plugin system to allow plugins to
add actions. It is nowhere near finished nor clean as I have been
learning C++ in the meanwhile, but here is a short patch, to avoid
duplicate work, start discussion and to force me to finish it later!
This looks like a reasonable place to start. Suggestions:
* RUN should be something like DOCUMENT_ACTION. There also needs
to be a way to express whether the action can be applied to just
one document or to multiple documents at the same time, perhaps
with another capability called DOCUMENT_MULTIACTION. There is
probably a better way.
* shortName is a one-word thing like "arxiv", while longName is a
description. This means that for things in menus one needs
something else like actionName to be, for example, "Cite in
LyX", set in referencer_plugin_info. However, that field would
be absent/meaningless in metadata plugins, which could get a bit
messy.
* There need to be hooks for updating sensitivity of the action,
not just on whether any documents selected, but also on (for
example) whether lyx is running. It will be interesting to see
what performance consequences there are associated with jumping
into a python plugin everytime updating status UI.
Post by Aurélien Naldi
* actually call some python code in PythonPlugin.C
* give it the list of selected documents, so that it can do something.
How you give the Document to python is the interesting part. I guess
you could just do it as a dictionary of Document->getFields, (plus the
document filename, key and type, which aren't included there). It would
be nicer to pass a full-fledged object to python, but I don't know how
easy/hard this is.
Post by Aurélien Naldi
* write 5 more lines of python to push a lyx citation
Don't forget to deal with referencer giving you utf-8 that lyx won't
understand.
Post by Aurélien Naldi
Is it going in the right direction for you ?
Sure, I look forward to seeing what you come up with.

Cheers,
John
Aurélien Naldi
2008-01-03 14:46:36 UTC
Permalink
Post by John Spray
Post by Aurélien Naldi
I have been playing with extending the plugin system to allow plugins to
add actions. It is nowhere near finished nor clean as I have been
learning C++ in the meanwhile, but here is a short patch, to avoid
duplicate work, start discussion and to force me to finish it later!
* RUN should be something like DOCUMENT_ACTION. There also needs
to be a way to express whether the action can be applied to just
one document or to multiple documents at the same time, perhaps
with another capability called DOCUMENT_MULTIACTION. There is
probably a better way.
I renamed it (See the new version of the patch attached). I don't see a
better way for the multiple document stuff right now, so I'm just
letting it on the side. I also reworked the loading of python plugin to
avoid having mandatory stubs of the functions the plugin doesn't
implement (which allows to let the pubmed plugin unchanged and to skip
the "resolve" function in the lyx plugin.
Post by John Spray
* shortName is a one-word thing like "arxiv", while longName is a
description. This means that for things in menus one needs
something else like actionName to be, for example, "Cite in
LyX", set in referencer_plugin_info. However, that field would
be absent/meaningless in metadata plugins, which could get a bit
messy.
I used shortName as identifier for the action. I have now added fields
for the text and tooltip of the button. If the plugin doesn't have the
DOCUMENT_ACTION capability, these fields are not used (and can thus be
left undefined)
Post by John Spray
* There need to be hooks for updating sensitivity of the action,
not just on whether any documents selected, but also on (for
example) whether lyx is running. It will be interesting to see
what performance consequences there are associated with jumping
into a python plugin everytime updating status UI.
The other bib manager I used don't test if lyx is running. I guess that
detecting it when actually trying to use it and putting a warning is
enough for now. As I understand it the python interpreter is always
running and you have pointers to python functions preloaded, so the
performance cost should not be that bad if someone want to add this
later.
Post by John Spray
Post by Aurélien Naldi
* actually call some python code in PythonPlugin.C
* give it the list of selected documents, so that it can do something.
How you give the Document to python is the interesting part. I guess
you could just do it as a dictionary of Document->getFields, (plus the
document filename, key and type, which aren't included there). It would
be nicer to pass a full-fledged object to python, but I don't know how
easy/hard this is.
I agree, defining a document as a python map seems enough for now, even
if a real python object would be much nicer to have. It looks like the
boost C++ libs have some tools to do this kind of stuff, but I'm too
unexperienced with both python and C++ to have a real look at it now.
I am a bit affraid that by doing so we may duplicate everything in
memory, which can be annoying if many documents are selected.

For now, I have just added a hook in the referencer python module to do
it. Mixing python and C++ is not as hard as I expected :). For now it
returns a string, but it should return the list of selected documents.

I can add another hook to return a list of the keys of selected
documents, which is all what I need for the lyx plugin. I also think
that the metadata resolvers could use a real acces to the document.

I may not have time to finish it before the end of the week, so here is
my current patch, feel free to improve it in the meantime.

Comments ?

Best regards.
--
Aur?lien Naldi <aurelien.naldi at gmail.com>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: referencer_secondStep_pluginaction.diff
Type: text/x-patch
Size: 8385 bytes
Desc: not available
URL: <http://icculus.org/pipermail/referencer/attachments/20080103/2f5a5387/attachment.bin>
jcspray
2008-01-04 17:21:34 UTC
Permalink
Post by Aurélien Naldi
I renamed it (See the new version of the patch attached). I don't see a
better way for the multiple document stuff right now, so I'm just
letting it on the side. I also reworked the loading of python plugin to
avoid having mandatory stubs of the functions the plugin doesn't
implement (which allows to let the pubmed plugin unchanged and to skip
the "resolve" function in the lyx plugin.
Looks fine. The explicit if() distinction between DOI|ARXIV|PUBMED
and DOCUMENT_ACTION for which functions to load isn't desirable long
term, but we can deal with that long term.
Post by Aurélien Naldi
I used shortName as identifier for the action. I have now added fields
for the text and tooltip of the button. If the plugin doesn't have the
DOCUMENT_ACTION capability, these fields are not used (and can thus be
left undefined)
Fine. I notice in your following version of lyx.py you fixed the
capitalisation of the strings, very good.
Post by Aurélien Naldi
Post by John Spray
* There need to be hooks for updating sensitivity of the action,
not just on whether any documents selected, but also on (for
example) whether lyx is running. It will be interesting to see
what performance consequences there are associated with jumping
into a python plugin everytime updating status UI.
The other bib manager I used don't test if lyx is running. I guess that
detecting it when actually trying to use it and putting a warning is
enough for now. As I understand it the python interpreter is always
running and you have pointers to python functions preloaded, so the
performance cost should not be that bad if someone want to add this
later.
I would like the sensitivity mechanism in before this is releasable,
since it's something in the Python/referencer API that we need to
define rather than an implementation detail.

I think it's true that the performance cost will be acceptable.
Post by Aurélien Naldi
I agree, defining a document as a python map seems enough for now, even
if a real python object would be much nicer to have. It looks like the
boost C++ libs have some tools to do this kind of stuff, but I'm too
unexperienced with both python and C++ to have a real look at it now.
I am a bit affraid that by doing so we may duplicate everything in
memory, which can be annoying if many documents are selected.
Barring unforseen circumstances, I am going to implement true Python
Document class this weekend, which will be useful for this. There's a
nice example in Python in a Nutshell on how to do this :-)
Post by Aurélien Naldi
I can add another hook to return a list of the keys of selected
documents, which is all what I need for the lyx plugin.
Don't do that, the API for a DOCUMENT_ACTION should simply return
documents, and leave it to the plugin to decide what information it
needs. A separate API for just the keys would be unnecessary
special-casing.
Post by Aurélien Naldi
I also think
that the metadata resolvers could use a real acces to the document.
I agree.
Post by Aurélien Naldi
I may not have time to finish it before the end of the week, so here is
my current patch, feel free to improve it in the meantime.
I may commit it to svn once I've done the python Document interface;
and adapt it to use that. I'll send you a note if I do.
Post by Aurélien Naldi
Comments ?
Style:
- Indentation: tabs only please. Seems like in this patch there is
some kind of mixture of tabs and spaces. It's no fun when these
things get inconsistent.
- Variable naming: abbreviate only when necessary. For instance,
there is no need to call a plugin pointer "pl" in
RefWindow::onPluginRun. Calling it plugin is harmless and reads more
easily.

The actionText_ and actionTooltip_ members of Plugin are unnecessary,
these values should be returned using getPluginInfoField. Therefore
they should be defined as {} in Plugin, with the real implementations
in PythonPlugin.

Constructing the plugin UI statically works for testing, but really
that needs to be dynamic. Disabling a plugin should remove its UI
elements. This should be accomplished by using Gtk::UIManager::add_ui
to merge in a plugin's UI, and storing the return value to use with
Gtk::UIManager::remove_ui when the plugin is disabled.

When constructing the GtkAction, prepend "_plugin_" to the shortname,
to avoid possible name conflicts.

This is encouraging, we're not too far from having this in a decent
state, and once the plugin API is well defined people hopefully can
scratch their own itches rather than needing me to do it ;-)

John

Loading...