How would you differentiate between "pull" and "push" approaches in knowledge management? What are the trade-offs between the two approaches? In which situations would you use one or the other approach?
First of all, I don't think a pure "push" technology really exists.
I would rather say "push" and "pull" is not a binary choice, but has to be mixed and evaluated with other axes including subscription, context-sensitivity and representation.
A user of "push" technology anyway has to "subscribe" information delivery, and it can be considered "pull" technology in longer term.
It will be harder to choose right criterion to filter/subscribe information for "push" technology because interaction to adjust the criterion will be looser than "pull" technology.
I think context-sensitivity is interesting aspect of information delivery; "Biff" is one of the most successful application of "push" technology and it does not watch user's activities but just polls mailbox.
The point is that "Biff" notifies a user existence of newly arrived mails even when the user is doing nothing, while CodeBroker requires user's inputs into emacs regardless whether the inputs are intended to CodeBroker or not.
Representation includes how much attraction for user is intended and how much information is provided, for example, existence of information, an access point to information with a brief explanation or a full description.
I think this is very important because representation of information can define interchanging crosspoint between push and pull accessibility.
For example, CodeBroker pushes access points to documentation of functions in a repository, according to user model collected in pull-styled interaction with users on the access points.