i'm not joking.
kind definititons are very nebulous, some subprotocols use one, with tags (eg kind 1) and others use multiple kinds for a single subprotocol.
indexing all tags is not complicated, that's what hash functions are for.
i was building a db engine that could do it, it wasn't that complicated. kinds, however, are not self describing. neither are single letter tags. it's my biggest disagreement on the design of nostr aside from the use of JSON instead of an email-style line structured sentinel based format. the reason i prefer this type of encoding is a) it's also plain text b) it's self describing and c) it's cheaper to parse it, json's english-style structuring nearly doubles the processing requirement.