This is a proposal for mini-API that can ask multiple plugins if they would like to return some data or change some object.
It is already implemented in Moodle using callbacks, hooks just provide better documentation and faster implementation (by caching the list of plugins responding to particular hook).
Examples: allow not only modules but also blocks and other plugin types to interact with course reset process (add fields to the form, etc), allow modules or other plugin types to return chunks of data for recent activity report/block, allow plugins to alter navigation, etc.
This is NOT a specification yet, we are trying to understand what development community thinks about it, will it make devs life easier or more complicated. I expect a lot of comments like "do not overcomplicate, there are already many ways to do it". Would be nice to hear other point of view, what potential examples of hook usages can you imagine.
The main difference with callbacks is that they are always limited to one plugin type, where hooks can execute callbacks from all plugin types at once.
Issue: MDL-44078