@wolf480pl You certainly could write a DNS server that does this, I'm sure they exist. It can be nice to have the option to do it in the protocol and DNS already has plenty of situations where you have to make another query to get an answer back.
@swiley yeah, but aside from CNAMEs and out-of-bailwick NS records... and MXes and SRVs, every query a caching resolver does returns either an error, a final answer, or gets it closer to the result. And the resolver knows that it will need to do at most as many queries as there is labels in the queried domain name.
OTOH with CNAMEs and those other pesky indirections, it can potentially go on for an infinite journey chasing aliases.
@wolf480pl You definitely can't get rid of NS records though so even without getting CNAME records back you'd still have the problem.
@swiley you can make glue mandatory though
@wolf480pl You'd be responsible for updating the glue records for name servers from other domains then. Stuff would break more often.
@wolf480pl Then the authoritative server would be making queries on behalf of someone else which I thought was generally considered poor design.
@wolf480pl Oh right, I guess I was only thinking about CNAMEs inside one domain.
@swiley yes, and this also true about my* initial idea with CNAMEs
*(actually it's djb's idea)