b) abstractions that finish with "_" are graphical abstractions. Sometimes, we create an abstraction without a gui, then we create a gui that wraps the same abstraction. The name of both abstractions will be the same, except that the second version will have a "_" appended.
This sounds to me that you are exposing the implementation in the interface. The interface should be defined separately from the implementation, and definitely does not need to reflect it. When using an object, it is a distraction to think about the implementation of that object. Instead the programmer should be thinking about the implementation of the program that is being built. Therefore, the programmer would only need to know about the interface.
I do not understand your comment, but here are more details on how this works: a pdmtl abstraction whose name ends with a "_" (or a "_~") is usually exactly the same abstraction as one that has the same name but does not end with a "_" (or "_~"). For the programmer, there is no difference between the inlets or outlets of both versions. The only difference is that in one version, the abstraction is a Graph On Parent that displays on screen controls, while the other does not. Usually when I am programming, I will use the nice and convenient "_" (GOP) version. But, since we all know Pd's graphic engine is real slow, when it is time to set up an installation or do a performance or when I generate the abstractions dynamically , I will switch the abstractions to the non GOP version WITHOUT hurting in any way the interconnection between all the objects. Also, since the "_" abstractions simply wrap their counterparts, they are both automatically updated if the "engine" is updated.
Tom