I have noticed that the "Started" event is supposed to go away in 1.7. I think this is a bad idea. Here are two use cases that require the Started event.
(1) Modifiying an event. In a component system, it is a desirable feature to wrap an existing component, in order to adapt its behaviour. In circuits I can achieve something very similar by adding a "wrapper-component" that listens for a started event, modifies the event in some respect and optionally restores the original state after the event has been processed (in case the same event object is used again). I admit that I can achieve the "Started" part with a filter as well, but balancing a filter-handler (for the start) with an "End"-handler (for the end) doesn't feel right.
(2) Tracking a "broadcast". If you want to track components that provide some service, you can do this in the way the dispatcher keeps track of the controllers, listening for registered and unregistered events from components of a specific kind. This, however, has two prerequisites: components must be "of a kind" (i.e. inherit from some class to be easily identifiable) and the relationship between the tracking component and the tracked component must be static. Being tracked cannnot depend on some state of the component. A more flexible approach is to send an event "SendEventIfYourAreAXYZ" and track the response events from the components. Those must, of course, be framed by a "Started" query and "End" query event, so that a listening "registry" component knows when to start and end a new registration cycle. That's where the "Started" and "End" events from circuits 1.6 come in nicely.
- Michael