I try to solve interesting theorists-philosophical question about eventsourcing, event versioning and A/B testing, and would like to get some advises and solutions from practice.
One of primary benefits of an event-sorsing is easy and simple transition of application to upcoming version. It is enough to create an event in the new version and to write an event handler for it, and application will work as with old, and new events. It saves from need of a data migration and is the main feature of an eventsourcing.
However in practice more complex problem meets. Let the new application version be ready, however it is dangerous to publish it for all users, there is a wish to check stability and incorrect working capacity by classical A/B-testing. At first the minimum of users is transferred to the new version and if there is no negative feedback, then the increasing number of users gradually upgrades to the new version.
And now users who got access to upgraded version begin to work, and in a basis events of new type which the old version doesn't understand are created. It seems that according to the theory of an eventsorsing and shall be, however in practice it threatens with serious problems.
Suppose that our application is a forum, well or a messenger. Users of upgraded version carry activity, send someone messages, but users of the old version just won't see them. There will be a situation that messages disappear in anywhere, and it becomes impossible to use a product. And in practice the event was updated very little, added one emoji for the message, for example. And from the point of view of business values everything shall work for users without problems.
Whether there are some well-known methods of the solution of this problem? Yes, it can be contrary a little to ideology and the theory of eventsourcing, however the favor is more important for the end user/customer.