key exchangeIt's Autocrypt, there's an RFC for it
So what about the reply-to email address? Or "on behalf of"?why would you need to set a reply-to header? I guess you could but why?
Do I mark large threads with the mailing list headers?it's not a mailing list and doesn't use mailing list style headers
Are group chats expected to support threads or always be flat?Flat for now but it's possible to change the subject of a reply to make something that would be a subthread. Some email clients kinda work that way. I've asked but this isn't planned because there's no real RFC for this kind of thing. If you want a "subthread" you can literally just use the client functionality to clone that chat to a new one, set a new subject for the subthread, and continue there. It's basically a shortcut for starting a whole new group chat is all, nothing special.
Also, if I choose not to implement deltachat apps in my chatmail client, what is the method of capability negotiation that I should use to indicate that to the deltachat appYou don't have to do anything, like Parla for example doesn't support WebXDC apps at all because it doesn't have a browser engine to run them in. The app is just a zip file with a .xdc extension. You could choose to just ignore those messages or display the attachment for download or do whatever you want really
And what if I send a message to another deltachat user on a different server from mine? How should that be handled?I don't know what you mean? It's just an email address, it gets sent by your email server like any other email.
Will they refuse it if it's plaintext?They could, just like they can refuse a message with an attachment that's too big. But why are you trying so hard to send plaintext emails anyway?
without requiring enormous web URLs that depend on the continued existence of deltachat's domains and serversthis is actually a misconception, there is no need or dependency on any delta chat URL, the invite links i.delta.chat are just a nice clickable representation of the actual invite link that is a openpgp4fpr:... link and you can easily convert an i.delta.chat link into openpgp4fpr
If I don't like the c# library I'm using to build XMPP, I can rip it out and pick another onewhich already implies they each have different features or lack thereof, which is exactly the exact same situation you have in XMPP with a lot of fragmentation,