Thunderbird:Activity Manager
Activity Manager
There are 2 major pieces to the Activity Manager.
- Thunderbird:Activity Manager/Service — collects errors and events from the components inside Thunderbird and translates information for display in the Activity Manager Window
- Thunderbird:Activity Manager/Window — displays information about and gives actions related to the system and user actions performed according to the Activity Manager Service
The Activity Manager Service is recording actions performed by the user and some actions taken by Thunderbird. While the Activity Manager Window is providing an interaction point for the user see what actions were performed in the past as well as what actions are currently being processed by Thunderbird.
Development for the Activity Manager can be tracked in bug 257942
While the Activity Manager can show more detailed information about any specific item, the Thunderbird:Interactive Status Bar only shows some of the high level events.
Activity Items
There are 2 different classifications of activity items which can be displayed in the Activity Manager Window.
Processes
Processes are vague notions of activity and provided for the users benefit. They do not directly translate into an operating system process or Thunderbird thread and therefore can be comprised of many different parts of which are actually separate processes internally.
Processes are transient in the display. They are not written to disk as they are always acting on some data that already exists locally or remotely. If a process has finished and needs to keep some state for the user (like last sync time) it can convert itself into an event.
Processes can be in one of these states
- Active
- When a process is running (like sending mail)
- Try Again
- When a process failed to run and is waiting on a certain timeout before trying again
- Users can interrupt this state by telling the process to run now or cancel
- Waiting for Input
- A process can only continue if the user gives additional input (like a password)
- Additional input is not acknowledgement of a problem
- A process can only continue if the user gives additional input (like a password)
- Finished
- When a process is done and has converted itself into an event
- Not all processes need to convert to events (such as sending mail)
There is no failure state included in the process state, there is only try again and wait for input. This is intentional because there should never be a time that Thunderbird completely quits on it's user, it can and should continue trying until it has succeeded or been told to cancel. During this period of continually trying it's important that, through these changes, the user is aware of what Thunderbird is doing and has the capability to alter it's actions by cancelling the try again process.
Processes should (essentially) be directly attached to a server URL. With incoming email accounts and outgoing email accounts the errors are almost always problems with server connections. When a connection fails the group of actions running will often all block at the same issue, be it trying the connection again or waiting for user input. Therefore by creating a relationship of process to server with multiple actions in the process we can have a user interface where single actions are available to try now for all actions running in a process.
An active process is always sorted at the top of the Activity Manager Window by start time while it is active. Once a process is finished it can convert to an event and then is sorted like an event.
Here are 2 examples of processes
Account Activity
A Process connected to the mail account which creates multiple events for different activities. This is the parent process essentially responsible for the connections between Thunderbird and a mail server. As it synchronizes mail or performs user initiated actions it can create events or errors in the Activity Manager.
A single account process can perform multiple actions at the same time, for example.
+--------------------------------------------------------------------+ | Moz Mail | | | | [===================== ] 100 of 300 messages | | Synchronizing Folder 'bugs' | | [============ ] 3 of 20 messages | | Moving Conversation from 'Inbox' to 'Personal' | | [=============================== ] 23 of 30 messages | | Filtering messages in 'Inbox' | | | +--------------------------------------------------------------------+
Possible Events Created
- Moved - Folder / Message / Conversation
- Copied - Folder / Message / Conversation
- Deleted - Folder / Message / Conversation
Possible Try Again States
- Connection Error
Possible Waiting for Input State
- Password Error
Possible Finished State
- Completed Sync
Sending Mail
A parent process which represents the connection to an SMTP server. The display of this process is transient, therefore on finished state it disappears from the Activity Manager Window leaving behind only the Sent Mail Events.
Once the connection to the server is made this process can display progress as it creates Sent Message events for each message sent.
+--------------------------------------------------------------------+ | Account - /Default SMTP/ | | | | [===================== ] 10 of 30 messages | | Sending Messages | | | +--------------------------------------------------------------------+
Possible Events Created
- Sent Message
Possible Try Again States
- Connection Error
- General Error
Possible Waiting for Input State
- Password Error
Finished State
- Disappear
Events
Historical actions performed by the user and created by a process for the Activity Manager Window. Events can show up in the Thunderbird:Interactive Status Bar and be displayed to users as they are created. However often the process is being actively displayed.
The goal of an event is to provide a historical context to the user about actions they performed, such as sending mail or deleting contacts. In future versions events could have an and undo context to all people to recover from operations they didn't intend.
Old Designs
These designs need to be cleaned up and associated with examples above.
+---------------------------------------------------------------+ | Synchronize _GMail_ messages 10:30am | | [================================================= ] (x) | | 1 minute remaining -- 146 of 148 _new messages_ | +---------------------------------------------------------------+
+---------------------------------------------------------------+ | Synchronize _GMail_ messages yesterday | | Canceled (&) | +---------------------------------------------------------------+
+---------------------------------------------------------------+ | Sent message _Road Trip Plans_ 10:30am | | to:joe@example.com, 1 attachment | +---------------------------------------------------------------+ | Moving _Road Trip Plans_ to _Archives_ 10:32am | | to:joe@example.com, 1 attachment | +---------------------------------------------------------------+
Much of this taken from the blog post Activity is the new Download
Relevant Bugs
- bug 123440 — Stop that annoying modal dialog when mail can't connect to the mail server from connection time out error
- bug 253426 — display activity in status bar
- bug 131965 — Actions of message filters should be displayed in the status bar
- bug 194949 — better status / progress UI feedback with junk mail
- bug 238972 — should have extensive/detailed download status window
- bug 227551 — No error message when connection to POP3 server lost