As a software project built on an event sourcing architecture evolves, the event schema (or event types) are among the things most likely to change over time.
One of the benefits event sourcing architecture offers is that it's able to "replay all events" and build a current state from old events.
What if I need to change the event schema (event types), by adding or removing an attribute, or by changing the semantics of an attribute? The current service implementation won't be able to process old events, because they use the old schema (they do not contain an attribute, or the semantics have changed).
Any ideas for how to handle this situation?