I am developing a desktop application (C++/Qt), which might be roughly represented as consisting of two parts - data-handling part and the GUI.
I want the data-handling part to be extensible with 3rd-party plugins. After thinking over possible strategies (and googling :) ), I've come to the conclusion that probably the optimal way is to use plugins as standalone executables which might be started as separate processes from my main app.
The advantage here is that 3rd-party plugin developers are not restricted to using the same language that I use for the main app (C++) - they might create plugins with whichever language they choose. The only thing they need to know is the protocol of data exchange with the main app (for which I see two alternatives - either using standard pipes to read/write data from/to plugins as child processes, or I might set up local server and then exchange data with plugins via, e.g., HTTP requests).
But then I thought - given this advantage, why can't I remember a single desktop application which uses such strategy? :) Are there drawbacks that I miss? Does anyone know of a desktop app which works with plugins written in entirely different languages?