4 ms·
> so that parts of your system can speak an older version compatibly with a parts that speak a slightly newer version. I think this doesn't guarantee bug-free
by proc0 7y ago
> so that parts of your system can speak an older version compatibly with a parts that speak a slightly newer version.
I think this doesn't guarantee bug-free event code at all. The usual problems would still arise, I can see at least this would create repetition in logic which doesn't scale properly with large apps.
Additionally versioning is needless if you have strongly typed events that get checked at compile time. Any time you need to add an abstract feature to the event architecture, the compiler would tell you what other part of the app broke as a result.
- thelittlenag 7y ago> I think this doesn't guarantee bug-free event code at all. Please don't misinterpret me. The goal is to have fewer issues, not zero issues. > Additionally versioning is needless if you have strongly typed events that get checked at compile time. Any time you need to add an abstract feature to the event architecture, the compiler would tell you what other part of the app broke as a result. I disagree. Most type systems, especially those describing data, are really only good for checking syntactic consistency and not very good at semantic consistency. That is, it can tell if field changes from an Int to a String, but not if the content of a String field changes it's semantic, i.e. from a user id to an email address. Lack of ability to validate content pervades wire-appropriate encodings.
- Archit3ch 7y agoSemantic consistency is at least an order of magnitude harder, in my experience.