A quote by Jonathan in a background discussion about the :switch: option
in the NSM API which could be useful for others I think:
"Some applications will have architectural flaws that prevent "switch"
from being feasible without additional effort, but that's fine, they can
just leave out the :switch: capability and NSM will handle it.
NSM 'handles' it, but just killing and relaunching the application.
Which is a stupid thing to do, but that's all that the other SMs ever
supported. People implement "switch" because they see the logic and
value in it and have pride that their software can change projects
without crashing, leaking memory, etc. Yes, I would say if the software
is architecturally flawed in a way that makes adding "switch" difficult,
then it should be omitted at first and added later as the architecture
is improved (if that's a compatible project goal). The Hydrogen thing
you sent me is a good example of that. I'm impressed that they're trying
to fix the problems that prevent switch from working, and that's a good
thing for the quality of the project, but it isn't strictly necessary to
do in order to work with NSM. Personally, I would prefer all clients to
support switch, because it improves the user experience and performance."
http://non.tuxfamily.org/nsm/API.html