Kulga I think it is possible to create a fluid private discussion that works well between just two people.
Sure, but that's sort of missing the point I was trying to make. I don't think "private messaging" is necessarily limited to one-on-one conversation. I've used forum scripts that allow you to invite any number of people to participate in a private conversation.
The difference lies in the relationship between the private content and the non-private content. A private discussion is simply a discussion that is restricted to specific people. Beyond that, it will behave just like other discussions: it will take tags just like any discussion, and it will appear in the list views for those tags together with other (non-private) discussions. Private message style conversations, by contrast, won't be tagged and will never appear in the same list as other non-private content. They get a UI all of their own, which segregates them from the rest of the content.
Kulga The problem here is by solving it top-down or bottom-up. Should discussions be specialized by existing code to satisfy this or create a whole new system just for this?
Yes, that's the thing. The private conversations in esoTalk were (I believe, and @Toby can correct me if I'm wrong) built as a simple way to support private communication by leveraging the existing conversation functionality. That's why you can't invite someone to a private conversation in a channel that they can't see. To get around that issue, you'd have to adjust many aspects of how conversations work. And if you're going to do that much work, well, why not just go all the way and give private communications their own space (i.e., build a segregated private messaging style interface)?
Kulga I think most of your objections are on user interface on esotalk.
I do see see some limitations in how esoTalk does private conversations, and I believe Flarum will be able to do better. I've got ideas about how that system could be improved. But I'd also like to see an extension that provides a more segregated way of handling private conversations. I think such an extension would be very useful in certain situations.