As a pre-requisite for Make DC a replacement for MUAs? and hybrid chat/mail clients in general, the DeltaChat Core library should support sending and receiving arbitrary MIME mails.
I see several ways to add the API to DCC, in order from least to most abstraction:
- Send/receive raw bytes. Not stored in DCC database.
Folders are simply strings representing the full path, i.e. starting with “INBOX/”.- pro: least effort for DCC
- con: most effort for DCC clients, duplicate DCC functionality
- con: need to expose more internals to access e2ee keys, etc.
- New class allowing direct access to
libetpan
. Optionally stored in DCC database.
Folders have their own class.- pro: reduced effort to implement now
- con: more effort for clients on migration away from
libetpan
- New class with all necessary methods, abstracting
libetpan
. Optionally stored in DCC database.
Folders have their own class.- pro: reduced efforts for clients
- con: more effort to implement now
- con: more effort for DCC to migrate away from
libetpan
- Extend the existing message class (
dc_msg_t
). Stored in DCC database.
Folders can use either their own class or extend the existing chat class (dc_chat_t
).- con: big change to existing APIs, code and DB
- con: gets in the way / increases the learning curve for pure chat clients
Just counting the pros and cons, options 2 seems the best so far. But before we start thinking about implementation detail, what are your thoughts and ideas about it? Maybe some completely different implementation ideas?