I think that mixing private and group messages too closely in any interface is dangerous, via user mistakes if nothing else.
Well, the software would prevent a user from rebroadcasting a private message to unauthorized users. And if users want to circumvent the software in order to do so, well, we cannot prevent leaks.
While behind the scenes, they're probably the same thing at a storage/transport level, they probably should be treated as separate from a user experience. I assume they'll be encrypted differently.
The encryption is the same for either.
If Carol sends Alice a private message, it should be encrypted so only Alice can read it.
Indeed, it will be. But I take the concept of private messaging to mean more than one on one. Carol can send a private message for Alice and Bob to read and respond to. In such a case it will be encrypted for both of them.
If she wants to send it on to Bob, she should RE-send the decrypted text, possibly with commentary, encrypted so only Bob can see it. At that point, if Alice has betrayed Carol's trust, that's on Alice. And since she's only sending Carol's alleged text, Carol has full repudiation, "Alice made that shit up. Bob, I don't know what she's talking about.". Private messages shouldn't ever thread with group messages.
Right now we are not planning to include deniable signatures, although I suppose that isn't a bad idea. Currently all messages are signed with a private key and impossible for the author to deny having written. This is also how identity is managed, a user essentially is their private ECC key. The threading is entirely up to the user. A user could have one giant thread consisting of all private and public messages if they wanted to, although it wouldn't be very well organized I imagine. The organization of the messages is entirely up to the user, with support from the software. It is up to the user to organize the information into their own perception of a forum, however the software should help them not shoot themselves or others in the foot.
If you want to win the UI contest, maybe you insert a red placeholder (like a comment bubble) at that point in the group thread for context, but I think the bubble takes you obviously to PrivateMessageLand. And the private message content shouldn't be quotable to group via GUI. Make them paste it in if they want to quote private messages into group discussion.
Yes, certainly. The issue I am thinking of is this: Alice wants to talk about a subject and she doesn't really care who reads what she has to say. Similar to how people posting here obviously don't care who reads what they say here. But Alice only has five contacts on her buddy list. So she can send them each her message, but that is the extent to which her message propagates. The idea I had is that Alice can mark the message as public, in which case her five contacts can choose to propagate her message to their contacts as well, and to introduce their contacts to Alice via the message. So Alice writes a message and marks it as public, the message is sent to her only contact Bob. The message is about the effects of a certain drug, and Bob happens to be having a conversation about this very same topic with twenty of his other friends. So Bob adds the message from Alice to this thread. Now nobody else Bob is talking with can see the post from Alice or any responses Bob makes to it, even though to Bobs perception they are part of the same thread. But since Alice marked the message as public, Bob decides that it is a good idea to make the other people he is talking about the subject with aware of Alice's post, so they can see the information Alice has to contribute. So Bob presses a button and it merges Alices post into his original conversation with the twenty others, when this happen Bob rebroadcasts Alice's message and contact information to his twenty other friends. He also rebroadcasts the previous messages and contact information in the thread from his other twenty friends to Alice, provided that their messages are marked public as well. Now Bob's peers see the new message from Alice rebroadcast from Bob, and if they like the content of the message they can click a button to whitelist Alice so they can see future posts from her on this or other subjects. The same happens with Alice, she sees the posts from the others and can whitelist them as well. Now all of them can continue to talk with each other about the subject at hand, and also Alice has added new people to her contact list and Bobs friends have all added Alice to their contact list. But let's say one of Bob's friends said something he only wanted the original 20 people (including Bob) to be able to read. So he marked his message private. In this case, Bob does not rebroadcast this specific message to Alice, and if it is the only message from that poster in the thread, alice is never introduced to him, although he is introduced to Alice as her post was public. But as whitelisting needs to be 1:1 this means neither of them will be able to carry out a conversation with each other or see each others posts in the thread, which is not totally ideal as maybe Bob's friend wants to be introduced to Alice but doesn't want her to see the message he marked as private. So perhaps two settings would be the best option, public/private for posts and introduce/hide for the thread in general (public = share this post with your friends, private = this post is just for you, introduce = tell others I am in this thread and help us communicate with each other, hide = don't tell anyone I am in this thread). But the actual thread itself is actually the composite of several base threads. So we could call one a Weave and the other a Thread.