I’d like to propose removing unions from the specification to reduce some complexity and to make the wire-level protocol easier to comprehend. The tagged union introduces a second, variable-length data construct which reduces the ability to statically analyze bandwidth calculations, timing analysis, and memory usage. Furthermore, applications can chose to implement a tagged union as a combination of a custom data field and variable length array. This suggests that the construct is a non-essential feature that could be reintroduced later if YAGNI fails. Removing the feature later is, of course, much more difficult.
I’m reminded somewhat of CAN’s remote frame feature which turned into unused bloat and complexity. We should see if most applications end up reimplementing unions on top of UAVCAN before committing to pulling back into the standard.