Hi John:
Your doing too much reading, your questions are getting harder.

(f) I wonder about the techniques for multiple instances of a given plugin. Suppose we have some of those nice USB-connected Jog/Shuttle dials that the video editing guys use. The simplest plugin would support one peripheral giving, say, jog and step control of one axis. If I want two dials then I could probably copy and rename the DLL and configure it for another axis. But the plugin name would of course be the same in the list and worse the XML tags for the configuration would be the same and get totally confused.
>> This is very complex to do. Not only because M3 woudl have to recognise each plugin, but because each plugin woudl have to recognise another. Its my feeling that a plugin , properly designed, should take into account other devices of its type. This is likely to be a failing in some of the earlier plugins. For example, my joystick plugin looks for any JoyStick and uses the first it finds. It is not settable to the stick #. Properly done, it shoudl "tag" that stick as used, and it should then ignore it so another plugin could grab the next stick. (If multiple sticks are desired. ) and then xml tags should reflect the device being used. All very hard to do. A further problem is that when a plugin calls into MAch3, its very hard for MAch to tell WHO is calling, it just knows its a plugin. There is no enumeration device to show exactly whos on the phone, this makes it very difficult to make an easy interface to multiple objects. I suspect I can add support for this type of thing as I learn more on the shortcomings involved, but I think I'll do it as the next few Plugs are made, just in case a better solution pops up as I go. Even I have not played in this area enough to be considered an expert. But in the interim, I really recommend a plgin be the master of its device type. It is my hope by having most of them as open source, that some integration can aoocur of features for various types of devices, but this will always be an area of concern I think. Of course, for th eavergae user, his interest will be in using 1-5 plugins, each representing a particular device, someone for example, with multiple ModIO's is likely to be somethign of a configuration expert and not as concerned as he will already have learned the shortcomings of that type of system.
It would be possible to design the code to support multiple devices but this seems like hard work when what is needed is multiple instances of one driver. The issue is not hypothetical as it arises when one wants to support two ModBus devices of the same type at one time (e.g. two ModIOs or DL5s)
>> ModBus is, I think a special consideration. I am designing it be be an all in one solution, where only one instance is used. I suspect this "first of the real" plugins will show us the problems we're likely to see. We'll have to discuss this more as I find ways around the problems about to hit me on this..
I feel that it would be good to allow the user to give a name to an entry in the Plugins list (e.g. ToolChanger, Pendant). I.E. the list for a Profile would be manually setup by adding (installing?) DLLs in the Plugins folder rather than just being automatically built from all the DLLs in the folder. That way multiple instances could be defined and run. This name would be accessible to the DLL code and could then be inserted part of the XML tag names defined when the plugin config code is run so making them unique.
>> Probably a good idea. Ill see what I can do as I go. Mach3 for its part simply allows a plugin to be turned on or off at the moment, but turning off one instance of a plugin, will turn them all off. Multiple instances does seem a lot of redundant code, but may be the way to go.
(g) Might there be a problem with dead-wood in Profiles caused by having once run a given plugin? If so the proposal in (f) would certainly makre it worse as the user could keep inventing new "names"!
>>Thats one of the concerns I have. At the moment, the XML tags the plugin name as on or off. If a plugin is deleted, then that particular deadwood is left, but I doubt it will eveer add up to much at the moment, there can be only one deadwood per plugin type right now..
(h) The extended port numbering thing is not only related to motion controllers. If one has two similar Modbus devices then a given terminal will naturally be a given Mach pin number. To distinguish them it is, I think, easiest to be able to nominate the port that each device belongs to. There are other solutions, of course but another level of mapping from multiple devices onto different pins of port 0 feels wrong.
>> For ModBus it isnt so bad, I think ModBus needs to be one PlugIn per device type, and Im designing it to know what type is what. I have created 64 different modbus data areas, each name tagged to a type of device. Though undoubtedly problems will arise. I dont think I can anticipate them as yet. This is one of those "LEarn as you go" type of things. Its good to plan, but in this area, Ive found planning tends to go out the window as you solve more intricate types of problems found, thus making prethought solutions redundant.

(j) I wonder if you or anyone else reading has any good ideas on distribution and installation procedures for the users? By definition most plugins will not be part of the Mach release. A self extracting archive would be fine for the momenent and anyone with an "InstallSheld" type system could provide a rekease package. Are there any other good ways?
>> This one does concern me a bit. My thought is to write a small system registerable ocx. (very small ). Its job will be to recognise a plugin, downloaded plugins will have an extention like *.M3P and will download to your desktop or other area. Wehn you double click it, the OCX will recognise the *.M3P extension, and know to copy this to the Mach3 plugins folder and remove it from the desktop or place it was downloaded to while renaming it to *.dll. This type of Auto-Plugin facility woudl I think, make installation fo plugins a no-brainer.
Hope this clears up some items, likely it raises others..
Regards,
Art