Ideally, as far as federation goes, what I want to do going forward, is identify the software that the remote instance is using, and use specialized code to push to it, defined in the Federate* plugins.  By doing so this offers a few advantages: We can specifically-tailor the messages sent to remote instances such that their various feature sets are fully utilized, we can ensure the message is sent in a format that the remote instance recognizes, and we also afford the site operator plenty of fine-grained choice in what other services they federate with, and how they do so.  Don't want to federate with Facebook because of privacy concerns?  Just disable that plugin.

(Note: I am not personally writing a Facebook plugin because facebook is shit for privacy, but it sure is a clear example of a case where you might not want to federate!)