Archiving For evolution 2.14

 This feature is planned for evolution 2.14 release. 
 Its under construction now.

Backup And archiving :

  Archiving applies to data that is likely to be needed again and logically placing information where it can  
  be easily found and retrieved. Backup creates a mirrored copy of data, a reserve resource should something 
  happen to the original data. Retrieval is a slower, more cumbersome process, with the additional cost of 
  storage involved.

  Archiving, requires fast file-level access to data and should involve search and retrieval software and 
  indexed repositories. Whereas backup volumes are usually kept for days before being replaced by new 
  volumes, archived files can be kept for decades.

  At the very broad view archiving is long term storage and backup is short term.
  We archive the things which we will be needing very frequently and it should be easily accessible.
  More info on : 1)

Functional Specification :

The following functionality is going to be implemented as a part of feature..

How to archive a mail.

 1) Select message and click on tool called archive in the tool bar. 
 2) For messages: Select message right click it and select a option 
  in context menu called "Mark as archive". 
 3) For Folder: Select a folder right click on it say Archive
  this folder all mails in that folder will be "Marked to archive". 
  Please note that if you move any other mails to this folder after marking this   folder for archiving the newly moved mail will not be automatically marked as archive.    

 4) Once the mail is marked as archived mail the status symbol
  in front of the message in message list will change
  to disk icon (Icon may vary). 

Viewing Archived mails

 1) Just select â€oArchiveâ€? folder (Virtual Folder) in current account folder  
  hierarchy you will be able to see all archived folder 
  in one message list only.
 2) You can also disable an option available in View menu 
 Hide archived messages. And you will be able to see archived message 
 in current  folder. 
 3) User can read the archived message even in off line mode.

UI Changes and UI addition:

 1) An archive tool on the tool bar will be added. 
 2) Quick search option will be added in quick search bar to show only archived message. 
 3) In defaults tab of mail preferences setting will add one more option â€oArchived 
 message folder� in "Sent, Draft and Archived messages" header. 
 4)Every account which support archiving (for now IMAP and EXCHNAGE) will have  
 archive folder in their folder hierarchy, And archived messages on that account 
 will be visible in that archive folder. 
 5)User will be able to â€osave asâ€? all archived message to .mbox format as we can do  
 with any message list when we do save as.
 6) For Folders: If the folder is marked as archived, then folder property will be  
 showing a status of folder as "This folder is marked for archive".

Basci UI

Archived messages loacations Archived Folder and Messages

Archived virtual folder Archived Folder and Messages

Archived Settings Archived Folder and Messages

Archived Physical Folders Archived Folder and Messages

Implementation And Design :

 1) Add a camel_message_archive flag to enum "_CamelMessageFlags".
 2) Add a icon to replace the message-status icon if message is archived message.

 3) Add a option "Mark for archiving" in right click menu on message list.
 4) Add function of changing the camel_message_archive flag after clicking on the above menu.

 5) Add option menu in View menu of standard menubar "Hide Archived Messages".
 6) Add functionality to above menu if this flag is true don't show archived message in message list.

 7) Add a tool on the tool bar named "Archive".
 8) Add functionality to it the same one we did for "Mark as archived".

 9) Add archived folder in IMAP & exchange account hierarchy.(Same as the Trash and Junk is there.) (Make this folder by default visible.)
 10) Analyze and understand the code of how deleted messages are shown in Trash folder (can also follow junk messages.).
 11) Implement the same functionality to "Archived" folder also.

 12) Find out how does upstreaming with IMAP and exchange happens.
 13) While upstreaming add a check if the messages marked for archiving are still present on the server or not. If they are not present on the server move them to ".archived" folder (or the user specified folder).

 Note: First round of implementation will only be for IMAP.
 in second round we can go ahead with Exchange archiving support also.

The code changes

 1) Add one method to camel-folder class for retrieving archived physical folders.
        So that we will be able to move the mails from one providers camel-store to get archived physical folders.

 2)  Write functions in em-format-view.c for archiving and un archiving.
    It will be basically setting the CAMEL_MESSAGE_ARCHIVED flags as true and false.
    But if user checked the option to forcefully move messages from server as soon as you delete.
    then archive will execute the code to move messages from server to Archived physical folders directly.

 3) Start a thread for archiving and un archiving messages So that it will not bloack UI..

 4) Implement get_archived_real_folder method for provider you want to provide archiving for..( This returns physical archived folder object it it exits otherwise it create and return it).

The code for auto archiving

 1) Start a thread with evolution for auto archiving service..
 2) This thread will read settings from gconf when to run the autoarchive..
 3) It will run the auto archive on all folder and on all account based on there settings for auto archiving.

== Some specific scenarios to take care ==

 1.What if user deletes a folder (Means user don't want that folder any more).

We will show up a dialog to user saying â€oYou are trying to delete a folder which has some archived message. This action will delete that messages too â€o. And will delete that folder from .archived physical folder.

 2.What if server has deleted that folder . Will pop up a message saying â€oEvolution is unable to find a  folder on the server : â€oNAMEâ€? but it is there in you archived folders do you want to remove it from archive.[YES][NO]â€? And user says yes we will delete it otherwise dont delete it.

 3.What if there is some message which doesn't exits on server (only header is there with client) and user want to archive it..  Will pop up message saying â€oSorry cannot archive this message as this message doesnt exits on server any more. â€o

 4. What if user tries to move/copy messages to .Archived folder.
         a) We will check if destination folder for moving/copying is
         b) Will popup message saying this action will result in mmoving/copying your messages to archived folder do you want to do so [YES/NO]
         c)  if [YES] if copying mark message as archived.
                      if move move message to .archived folder.

 5. If some message is marked as archived in folder X. Now if user wants to move this X folder under folder Y..
    a) We will also move physical archived folders in the same fashion.

Current status of work:

 Working on the design specs for archiving.. Will soon be updated..

 Done with manual archiving.

Tracker Bug :


 New Ideas and comments are always welcome for improvement.
 Please put in your comments here in...

== Developer for this feature: ==

   Lucky Wankhede

Apps/Evolution/Archiving (last edited 2013-08-08 22:50:10 by WilliamJonMcCann)