This is an issue that the programmers have to decide about. The programmers of some apps have some routines to check if an instance is already open - some don't because it might be useful to some users to have several instances of a same app (I do that with konqueror - one for surfing, one for local filesystem)