Okay, now it makes sense. What I was against of is moving static types away from their static ports; using them elsewhere beside their static ports shouldn’t be prohibited.
Unless I missed something important, that brings us to the following rules:
- A static ID can’t be removed under the same major version number. Meaning that if a major version was first released with a static ID, it can’t be removed until a new major version is released. On the other hand, if a major version was released without a static ID, it can be added later under the same major version.
- All revisions of a data type that share the same major version number have to use the same static ID. The implication is that the same static ID can’t be used for incompatible definitions.
- Applications are allowed to utilize types with static ID with arbitrary ports, as long as the port defined through the static ID is always available as well. The port ranges have to be respected though.