Sorry it took my some time to get back to you. I have looked at my notes yesterday evening and modified the ommysql module this morning so that you have a template.
The idea is that a single character, as it is now, is not sufficient to handle all possible "action call cases". I think that was your root question, too. In the long to medium term, it is also not good practice to let the module itself decide it a config line is for it or not. Just think about an evil module, which may steal away other module's config lines (which may include passwords or such). So the basic idea is to move this module selection process up into the rsyslog core.
To do it immediately, this requires too many changes (especially given the fact that I will be away soon and we are still hunting for a bug). However, what we can do is make the modules mimic that behavior - and this is also quite easy to do.
The most important thing is that we do no longer relay on single characters. To distinguish old style from new style, however, I need to one last time introduce a special character. That is ":". If an action selector starts with it, the next characters sequence uniquely identifies the module. The module name must be terminated by another ":", whereafter the actual module parameters follow. In short: the syntax is ":modname:modparams".
In the actual case of the ommysql, the syntax is starting with 1.19.10:
*.*

mmysql:dbserver,dbname,uid,pwd;format
Similarly, an ompostgres module could be called with
*.*

mpostgres:dbserver,dbname,uid,pwd;format
[assuming that the parameter part is similar - but that's up to the module decision]
In order to not break existing configuration files, the ">" syntax must still be supported for ommysql. For new modules, usage of the single character syntax is not permitted (well, maybe its better to say not recommended ...).
The module should strip the :modname: part right at the beginning of its processing. The reason is that over time rsyslog itself will evaluate this part of the action selector and rsyslog will strip the module designation and only after that will call the module with the param part. So the module will, at some time in the future, only see that part. Of course, it requires changes to the module once this interface change happens. If the module is today programmed to drop the :modname: selector, this change will simply be removing that code (and may be a few tweaks). Thus it is highly recommended to do it that way.
I have made the relevant code change to ommysql. You can see the diff at:
http://rsyslog.cvs.sourceforge.net/rsys ... 1.2&r2=1.3
As you can see, that version is currently in cvs. It will be part of 1.19.10, which I will release early this week. I think this solution is a good one: it can be applied quickly, but is also something that is clean and can stay for quite a while.
Regarding whether or not to include third-party modules into the main tarball, I agree that for the time being it is probably the best to do so. Once the interface has really matured (and hopefully many more plugins are available), that will probably change. But we can think about it then ...
Regarding the directory structure, the new source distribution tarball has received sufficient review and should be fine both from the developers, users and packagers point of view. So I want to keep it the way that each plugin resides in the ./plugins directory, within its specific subdirectory and has its own makefile (which is referenced by the main makefile). As I said, over time this will change for practical reasons, but this time is not yet.
I hope this message, though late, is useful. Feedback is appreciated. If I have overlooked something in regard to the interface, let's discuss this, it is now a great time to do so.
Rainer