Under all circumstances the user has the right to a privacy /set'ting which allows her to forbid all transmission of such notices as follow:
1 _notice_composing_do_type / _notice_composing_end_type
The classic: The user is using a Jabber or PSYC GUI application which is capable of sensing that the user is typing into a query window. So everytime the user starts editing a message for a recipient, a composing event can be triggered and sent to the other side. This is done every time a new message is being typed, so you typically receive one of these for each message finally delivered. Obviously the reception of this message should be displayed in a status-type output and ideally using an icon.
We may also support transmitting the "pause" of a composing-state whenever the input field loses focus and a reasonable timeout of say one minute is reached. Since it doesn't mean we closed the window we send this as _notice_composing_end_type.
(Optional: In the case of telnet or IRC only the first time a message of the _notice_composing family is received from a sender, a message should be issued - unless the user explicitely likes to receive all.)
2 _notice_composing_do / _notice_composing_end
This is for applications which cannot sense the actual typing, but have a notion of a current conversation going on (telnet and /query command in general, _notice_composing_do_query). Also the opening of a conversation window qualifies (_notice_composing_do_window). In this case we send a notification once as the conversation is opened and another when the conversation window or /query mode is closed.
3 the jabber way
fippo wrote an irssi script that implements jabberistic typing notifications as defined in XEP 0085. Works quite well, but has some glitches left. The Jabber gateway can translate all _notice_composing_do events to <composing/>.
See also Method Naming