We had private messages on-chain with SteemPower.org that worked with custom JSON operations, but it didn't take off and it also required we hold a database on our own server that indexed all the messages and enabled notifications of new messages.
As I discussed in the post, on-chain isn't really suitable because of both bandwidth usage and privacy.