
$Id: FAQ.Principles.txt,v 1.12 2025/08/11 20:42:18 gilles Exp gilles $

This documentation is also available online at
https://imapsync.lamiral.info/FAQ.d/
https://imapsync.lamiral.info/FAQ.d/FAQ.Principles.txt


=======================================================================
             Imapsync principles and design ideas  
=======================================================================


Questions answered in this FAQ are:

Q. Give me some design ideas of imapsync

Now the questions again with their answers.

=======================================================================
Q. Give me some design ideas of imapsync

A0. The main design ideas of imapsync I keep in mind: 

* No configuration file.
* Stateless.
* Rsync spirit.
* Reliable.
* Robust.
* The user is not an expert, help him with:
  * Good behavior by default. 
  * No harm by default.
  * Prefer fixing an issue in the code than documenting the issue.
  * Inline help suggestions, along the sync and resumed at the end.

Good and bad consequences of those design ideas:

A1. Stateless behavior pros and cons: 

   * A sync can be done by another tool before or after imapsync, it is
     safe as long as the other tools don't modify the messages' headers 
     "Message-Id:" and "Received:", or at least "Message-Id:".

   * Imapsync is ready to run in a container that disappears completely
     at each run.

   * A stateless behavior takes longer than maintaining a local cache. 
     The stateless principle is broken with --usecache or --useuid 
     options, but then imapsync speeds up on next syncs.


=======================================================================
=======================================================================