Okay, now that https://forums.swift.org/t/pitch-a-vision-for-com-interoperability-in-swift has been posted, I can share some additional context here. This pitch is motivated by the work for COM Interop.
Reducing the COM interop design: the general idea is that COM is an ABI system for programming with bounded existential discovery. You work almost entirely with existentials and opaque types, with the root type being IUnknown. IUnknown provides 3 critical features:
AddRef(swift_retain)Release(swift_release)QueryInterface(as?)
With that in mind, each interface has type metadata associated with it: the IID (Interface ID). The pitch is meant to enable each interface (protocol) to provide metadata — its identifier. That is, IUnknown.IID would spell the protocol metatype identifier. A concrete type does not inherit this interface ID, but rather has its own unique type identifier (CLSID — the class ID).