NIST SP 800-63 has formalized this. Specifically, look up Section 3.1.1.2 in SP 800-63B-4, released just this year. Minimum length 15, max length at least 64, but no other requirements, including complexity or regular rotation. Unicode is supposed to be accepted, normalized against a standard process (that one I don't remember, but it's documented), with one code point counting as one character. Filtering for known bad passwords or patterns is strongly encouraged.
I pushed through an implementation at our company last year, explaining why, showing the NIST draft. A bunch of people protested because it was different, but the CIO told them to live with it because their entire argument was "but we've done it this way for 30 years!" Some critical vendors complained when we started pushing them to comply (or at least implement SAML), but we only have a couple of vendors not complying now, and they should be compliant soon. Users are largely happy with the change, and they complain a lot less when we see suspicious activity and force a rotation.