one thing that was not done well in vst2 was the identification of plugins by a "unique-id" that had to registered at steinberg. i think, better would the following scheme:
plugins are identified by a combination of:
-vendor name (string)
-plugin name (string)
-version number (unsigned int)
-there should be clear rules for what happens when a project was saved with a different version
than installed and/or if several versions of the same plugin are installed (maybe like:
take the version number that is closest to and >= the saved version number)
just an idea (maybe crap - dunno, i'll just throw it in the ring for discussion):
for extensibility, maybe there should be some completely general way of issuing requests from plugin to host and from host to plugin - maybe some sort of generalized callback function hostToPluginRequest(int type, void *data) and pluginToHostRequest(int type, void *data). the type would be one of an enum-value (that can be easily extended later) and the data could be any data-structure suitable to specify the input and output of the request (the receiver of the request would have to do an appropriate type-cast of the void-pointer - which cast is "appropriate" is dictated by the type). this pair of functions would constitute a super-general and easily extensible two-way communication channel (in the extreme case, even the audio processing callbacks could be handled that way and you would not need anything else - but that's probably not a good idea - there should probably be specific callback functions for that, for efficiency reasons, etc). ..maybe it should return an int, informing whether the request was handled (it should be possible to ignore requests, i.e. not implement a particular feature), etc. and maybe input and output data should be separate (or maybe not). the pluginToHostRequest could be a function pointer that is passed to the plugin on instantiation and the hostToPluginRequest could be a function-pointer field in a data-structure similar to AEffect that has to be filled out by the plugin during instantiation. there could be also a similar data-structure for hosts, though and the pluginToHostRequest could be a field of that - then, that "host" data-structure would be passed to the plugin on instantiation.
i'd say, that's a tight schedule for such an endeavor - to say the leastOn August 1st, we will make it happen. We will release a new free and open community plugin format.