User:P.A./Panel-based Download Manager: Difference between revisions

The final overview of the feature is now available at http://mikeconley.ca/blog/2013/04/02/downloading-stuff-in-firefox-its-better-now/
mNo edit summary
(The final overview of the feature is now available at http://mikeconley.ca/blog/2013/04/02/downloading-stuff-in-firefox-its-better-now/)
 
(28 intermediate revisions by 4 users not shown)
Line 1: Line 1:
{{FeatureStatus
{{FeatureStatus
|Feature name=Panel-based Download Manager
|Feature name=Panel-based Download Manager
|Feature stage=Development
|Feature stage=Landed
|Feature status=In progress
|Feature status=Complete
|Feature version=Firefox 13
|Feature version=Firefox 20
|Feature health=OK
|Feature health=OK
|Feature status note=In beta, go to release.
}}
}}
{{FeatureTeam
{{FeatureTeam
|Feature product manager=Asa Dotzler
|Feature product manager=Asa Dotzler
|Feature feature manager=Marco Bonardo
|Feature feature manager=Marco Bonardo
|Feature lead engineer=Paolo Amadini, Jared Wein
|Feature lead engineer=Paolo Amadini, Mike Conley
|Feature qa lead=Simona Badau
|Feature qa lead=Simona Badau
|Feature ux lead=Alexander Limi
|Feature ux lead=Alexander Limi
|Feature additional members=Sinchan Banerjee, Stephen Horlander, Shawn Wilsher, Mehdi Mulani
|Feature additional members=Sinchan Banerjee, Stephen Horlander, Shawn Wilsher, Mehdi Mulani, Jared Wein
}}
}}
{{FeaturePageBody
{{FeaturePageBody
|Feature overview=This is a page I'm using to track the current status of the [[User:P.A./Download_user_experience_improvements#Panel-based_Download_Manager|Panel-based Download Manager]] feature at a level of detail I'm comfortable working with. This feature is part of the [[User:P.A./Download_user_experience_improvements|download user experience improvements]].
|Feature overview=<div style="margin: 1em 0px; border: 2px solid orange; padding: 1em; background-color: #FFC; text-align: center; font-size: large;">
THE DOWNLOADS PANEL HAS BEEN RELEASED IN FIREFOX 20.


<div style="margin: 1em 0px; border: 2px solid orange; padding: 1em; background-color: #FFC; text-align: center;">'''FEEDBACK'''
YOU CAN READ MORE ABOUT THE FEATURE IN THE '''[http://mikeconley.ca/blog/2013/04/02/downloading-stuff-in-firefox-its-better-now/ INTRODUCTORY BLOG POST]'''.</div>
<div style="font-size:x-small"><p>If you have questions (or better, answers!) the best way to provide feedback is to add a comment to the [[#Bugs_list_and_patch_queue|relevant bug]].</p><p>I'll update this page periodically to reflect the current status and make sure that all the relevant items are tracked.</p></div></div>


I've read all bug comments, and updated this page accordingly, up to this point:
This is the detailed technical [[Features/Planning_and_Tracking|feature page]] for the [[User:P.A./Download_user_experience_improvements#Panel-based_Download_Manager|Downloads Panel]]. This feature is part of the [[User:P.A./Download_user_experience_improvements|download user experience improvements]].
* [https://bugzilla.mozilla.org/show_bug.cgi?id=564934#c354 Bug 564934, comment 354].
 
It's possible that some of the latest comments are not yet reflected in this page. See below for detailed tracking of individual items.
 
----


The current Download Manager user interface is not optimized for several common use cases, and is not yet integrated with the latest Firefox user experience design. Integrating this interface with the latest design is the first step to improve the downloads user experience.
The current Download Manager user interface is not optimized for several common use cases, and is not yet integrated with the latest Firefox user experience design. Integrating this interface with the latest design is the first step to improve the downloads user experience.
Line 47: Line 43:
* '''Any other improvement already defined as [[User:P.A./Download_user_experience_improvements|download user experience improvements]].'''
* '''Any other improvement already defined as [[User:P.A./Download_user_experience_improvements|download user experience improvements]].'''
** ''For example, streamlining the entire download process.''
** ''For example, streamlining the entire download process.''
|Feature ux design=We'll reach the stated goals by moving the interface for handling current downloads in a panel, anchored to a status indicator in the main browser window, and adding a new '''Downloads''' predefined folder to the Library window.
|Feature ux design=We'll reach the stated goals by adding a panel for handling the most recent downloads, anchored to a status indicator in the main browser window, and moving the interface for handling all downloads to a new '''Downloads''' predefined folder in the Library window.


In the following sections, entries are marked with these indicators:
In the following sections, entries are marked with these indicators:
Line 58: Line 54:
Provides a status overview, visible during normal browsing when there are download notifications.
Provides a status overview, visible during normal browsing when there are download notifications.


* {{done|Only shown when there are download items in the panel, either active or completed.}}
* {{done|Always visible by default, located on the navigation bar, between the search bar and the home button.}}
** <span style="color: orange; font-size: 80%; font-weight: bold">[INPUT]</span> Maybe, also shown after the last download is removed from the panel, giving access to downloads history only.
* {{done|When there are no active downloads, shows the classic button icon (downwards arrow).}}
* {{done|When there are no active downloads, shows the classic button icon (downwards arrow).}}
* {{done|When there are active downloads, shows a progress bar and a compact indication of the remaining time, if known.}}
* {{done|When there are active downloads, shows a progress bar and a compact indication of the remaining time, if known.}}
Line 67: Line 62:
* {{done|New downloads are notified with a brief animation near the indicator.}}
* {{done|New downloads are notified with a brief animation near the indicator.}}
* {{done|Finished or failed downloads make the indicator glow until the panel is displayed.}}
* {{done|Finished or failed downloads make the indicator glow until the panel is displayed.}}
* {{done|If the indicator is removed from the toolbars, or moved to an invisible toolbar, the usual screen-level notification is shown when all downloads are completed.}}
* {{done|The usual screen-level notification is shown when all downloads are completed.}}
** Note that this is shown even when the indicator is visible.


Provides the anchor for the panel.
Provides the anchor for the panel.


* {{done|Located in the tab bar by default, which by default is always visible, except in Panorama mode.}}
* {{done|If the indicator is removed from the toolbars, or is located in an invisible toolbar, the panel will never be displayed.}}
* {{done|If the indicator is removed from the toolbars, or moved to an invisible toolbar, we show it temporarily in the default tab bar position or in the navigation bar when the panel is opened, until the panel is closed.}}
** {{done|In this case, the full download management interface will be shown when a new download is started.}}
* If we need to show the panel and both the tab bar and the navigation bar are invisible, then:
* {{done|User-initiated requests to show downloads will always open the Downloads view in the Library window, regardless of indicator visibility.}}
** {{done|For user-initiated requests (like the Downloads menu item), show the panel without the anchor, near the default anchor position.}}
** {{done|For user-initiated requests, if there is no browser window open (like clicking a screen-level notification, or the Downloads menu item on OSX), open a new browser window and show the panel there.}}
** {{done|For background-initiated requests, do nothing.}}


=== Downloads panel ===
=== Downloads panel ===
Line 84: Line 77:
The panel works as follows:
The panel works as follows:


* {{done|The panel should be shown automatically for the first download of the browsing session.}}
* {{done|The panel should be shown automatically for the first download after the feature is enabled, for discoverability.}}
** <span style="color: orange; font-size: 80%; font-weight: bold">[INPUT]</span> Maybe show the panel automatically only for the first few sessions, not for the first download of every session.
* {{done|Only a few recent downloads are shown in the panel, thus not all the current downloads can be managed from the panel.}}
* {{done|The panel can be fixed-width.}}
** This must ensure that the panel does not expand to the full screen height when opened in a maximized window.
** Resizeability is not as much of an issue with the downloads panel as it is with the bookmarks panel, because the downloads panel is less of a "management" interface. The full title of a download is shown in a tooltip.
* {{done|Notifications are sorted by start time, most recent first.}}
* {{done|Notifications are sorted by start time, most recent first.}}
** It's consistent with notification sorting in other platforms, and the order doesn't change unexpectedly while the panel is open.
** It's consistent with notification sorting in other platforms, and the order doesn't change unexpectedly while the panel is open.
** Another option is to show first the items on which an action is more likely, i.e. completed downloads first, then failed, then running downloads.
* {{done|The panel contains a link to the full list of downloads.}}
* {{done|The panel is fixed-width.}}
** Resizeability is not as much of an issue with the downloads panel as it is with the bookmarks panel, because the downloads panel is less of a "management" interface. The full title of a download is shown in a tooltip.
* {{done|When there are no download items, the panel's width can be smaller.}}


Individual notifications have the following behavior:
Individual notifications have the following behavior:


* Notifications should disappear as soon as the user is done with them. We can't know the exact moment, so we use a set of heuristics.
* Notifications should disappear as soon as the user is done with them. We can't know the exact moment, so we use a set of heuristics.
** <span style="color: orange; font-size: 80%; font-weight: bold">[INPUT]</span> Opening the target file or folder makes the notification disappear.
** {{done|Completed downloads are removed from the list when the last browser window is closed.}}
** {{done|Canceling a running download makes the notification disappear.}}
*** Active downloads are never removed from the list automatically, though they can be hidden by most recent downloads.
** {{done|Completed downloads are removed from the list when the session ends, but are restored when the session is restored.}}
*** Completed downloads are not restored if the previous session is restored. They can still be accessed from the Downloads view in the Library window.
*** Active downloads have no session boundary. When the browser is closed and reopened, they're paused and resumed automatically whenever possible.
** {{done|Canceling a running download does not make the notification disappear.}}
** {{done|Manually removing a download from the list is possible, but not a top-level interaction.}}
** {{done|Manually removing a download from the list is possible, but not a top-level interaction.}}
*** <span style="color: orange; font-size: 80%; font-weight: bold">[INPUT]</span> Understand if we might want a top-level remove button for completed downloads, that would be the same button that cancels running downloads.
* There are no actions that make sense on more than one notification at a time.
* There are no actions that make sense on more than one notification at a time.
* {{done|The height of each notification does not change when its state changes.}}


The layout of a notification includes a main area with the download's distinctive details, and an optional action button. In some states of the download, the main area can be clicked. Double-clicking the main area, instead, is not a supported interaction.
The layout of a notification includes a main area with the download's distinctive details, and an optional action button. In some states of the download, the main area can be clicked. Double-clicking the main area, instead, is not a supported interaction.


A context menu for the item can always be displayed, though it never contains commands already available through a top-level interaction.
A context menu for the item can always be displayed. It may contain commands already available through a top-level interaction for consistency.


* {{done|When the main area can be clicked, a link-style mouse cursor is displayed on hover.}}
* {{done|When the main area can be clicked, a link-style mouse cursor is displayed on hover.}}
* When the download is ongoing [not paused or finished or canceled]:
* When the download is ongoing [not paused or finished or canceled]:
** {{done|The button cancels the download.}}
** {{done|The button cancels the download.}}
** <span style="color: orange; font-size: 80%; font-weight: bold">[INPUT]</span> Clicking the main area might indicate to open the download when it's finished, however this could be surprising.
** {{done|The context menu has commands to pause, open containing folder, go to download page, copy download link.}}
** {{done|The context menu has commands to pause, open containing folder, go to download page, copy download link.}}
* When the download is paused:
* When the download is paused:
** {{done|The button cancels the download.}}
** {{done|The button cancels the download.}}
** {{done|The context menu has commands to resume, open containing folder, go to download page, copy download link.}}
** {{done|The context menu has commands to resume, open containing folder, go to download page, copy download link.}}
* When the download is failed or canceled:
** {{done|The button retries the download. Often, the download will resume from where it stopped, if supported by the server.}}
** {{done|The context menu has commands to remove from list, go to download page, copy download link.}}
* When the download has finished:
* When the download has finished:
** {{done|Clicking the main area opens the file.}}
** {{done|Clicking the main area opens the file.}}
*** {{ok|If the target file is missing, the main area should not be clickable. The existence detection should happen in the background.}}
** {{done|The button opens the containing folder.}}
** {{done|The button opens the containing folder.}}
** {{done|The context menu has commands to remove from list, go to download page, copy download link.}}
** {{done|The context menu has commands to remove from list, go to download page, copy download link.}}
There are additional items in the context menu that act on all downloads:
** {{done|A context menu item is available for removing completed downloads from the list, without closing the last browser window.}}


=== Library window ===
=== Library window ===


The Library window allows the user to find and open previous downloads.
The Library window allows the user to see the full list of downloads. The user can control ongoing downloads, as well as finding and opening previous downloads.
 
'''The interaction with ongoing downloads is different from the standalone Downloads window.''' The interaction will be more similar to the Downloads Panel.


* {{done|Items can be found by source location or original target file name.}}
* {{done|When the user selects the Downloads folder, the list of history pages is replaced with a different view for handling current downloads.}}
** Note that downloaded entries can be mixed with normal pages in history results, and a normal web page can be downloaded locally.
* The Downloads view shows both ongoing downloads and download history.
* {{ok|You can see the full target path of the download.}}
** <span style="color: orange; font-size: 80%; font-weight: bold">[INPUT]</span> Items are sorted based on the current criteria, selected by the user.
* <span style="color: orange; font-size: 80%; font-weight: bold">[INPUT]</span> In all history views, we want to visually mark those entries that are downloads and whose target file exists, unless the entry was also visited as a normal page.
** {{done|Items can be found at least by source location or original target file name.}}
** {{ok|Double-clicking those entries opens the target file instead of navigating to the source URL.}}
** {{done|Most ongoing downloads should also be present in the browsing history, in which case they are shown in the same position as the history item.}}
** In other words, we open the file in those cases where we expect that double-clicking the history entry would make the download dialog appear.
*** If there is no specific matching history item, ongoing downloads might be shown in no particular order.
* {{ok|In the Downloads view, the size of file, and time should be there too.}}
** {{done|History items with no matching current download behave in the same way as completed downloads.}}
* {{done|Download items have an interaction similar to the Downloads Panel items.}}
** {{done|The items contain the same elements as the panel items, based on the current download state.}}
** The interaction will also be different from history items in other Library views.
|Feature implementation notes===== Bugs list and patch queue ====
|Feature implementation notes===== Bugs list and patch queue ====
Patches on the following bugs are required, in order, to complete the feature:


<table class="fullwidth-table">
'''Feature tracking bug:'''
<tr>
 
<td style="font-weight: bold; background: #ddd;">Bug number</td>
* {{bug|564934}} (see also the [[/Status|status]] page)
<td style="font-weight: bold; background: #ddd;">Description</td>
 
<td style="font-weight: bold; background: #ddd;">Status</td>
'''Relevant patches that are available in nightly builds:'''
</tr>
 
<tr>
The feature is now available in standard release trains. Key implementation bugs are:
<td>{{bug|591289}}</td>
 
<td>Save chosen download file name and other metadata in Places history.</td>
* {{bug|726444}}: Implement the Downloads Panel.
<td>Completed</td>
* {{bug|675902}}: New Downloads view for Places Library.
</tr>
 
<tr>
'''Additional patches needed to test the feature:'''
<td>{{bug|564900}}</td>
<td>Add folder to Library sidebar specifically for downloads.</td>
<td>Completed</td>
</tr>
<tr>
<td>{{bug|669905}}</td>
<td>Searching in the new Downloads folder should limit the search to downloads.</td>
<td>Completed</td>
</tr>
<tr>
<td>{{bug|564934}}</td>
<td>Implement new Download Manager UI for browser.</td>
<td>Active</td>
</tr>
<tr>
<td>{{bug|663772}}</td>
<td>Implement new Download Manager status indicator for browser.</td>
<td>Active</td>
</tr>
<tr>
<td>{{bug|675902}}</td>
<td>Additional interaction with downloads in the Library.</td>
<td>On hold</td>
</tr>
</table>


==== Open tasks and questions ====
* None. The feature is now available in standard release trains.
<table class="fullwidth-table sortable">
<tr>
<td style="font-weight: bold; background: #ddd;">Description</td>
<td style="font-weight: bold; background: #ddd;">References</td>
<td style="font-weight: bold; background: #ddd;">Difficult?</td>
<td style="font-weight: bold; background: #ddd;">Blocking?</td>
<td style="font-weight: bold; background: #ddd;">People</td>
</tr>
<tr>
<td>Theming and XBL review.</td>
<td>[https://bugzilla.mozilla.org/show_bug.cgi?id=564934#c280 Bug 564934, comment 280]</td>
<td class="no">No</td>
<td class="yes">Yes</td>
<td>r=Frank?,Dão?</td>
</tr>
<tr>
<td>Port the relevant automated regression tests from the Download Manager.</td>
<td></td>
<td class="yes">Yes</td>
<td class="yes">Yes</td>
<td>d=Paolo, r=Marco</td>
</tr>
<tr>
<td>Sometimes clicking certain areas of the indicator does not work, for example when it is placed in the title bar of the window.</td>
<td>[https://bugzilla.mozilla.org/show_bug.cgi?id=564934#c290 Bug 564934, comment 290]</td>
<td class="no">No</td>
<td class="yes">Yes</td>
<td>r=?</td>
</tr>
<tr>
<td>The panel's arrow should be able to point near the screen edge and move without the panel itself also moving.</td>
<td>[https://bugzilla.mozilla.org/show_bug.cgi?id=564934#c347 Bug 564934, comment 347]</td>
<td class="yes">Yes</td>
<td class="yes">Yes</td>
<td>ui=?,d=?,r=?</td>
</tr>
<tr>
<td>The preference "Show the Downloads windows when downloading a file" should be removed from the user interface, and should have no effect on the new panel.</td>
<td></td>
<td class="no">No</td>
<td class="yes">Yes</td>
<td>ui=?,d=?,r=?</td>
</tr>
<tr>
<td>Define the behavior when the target file is removed from disk, and understand at which point we should detect the condition.</td>
<td></td>
<td class="maybe">Maybe</td>
<td class="yes">Yes</td>
<td>ui=?</td>
</tr>
<tr>
<td>Define whether download items should keep the same height when they change state.</td>
<td></td>
<td class="no">No</td>
<td class="no">No</td>
<td>ui=?</td>
</tr>
<tr>
<td>Accessibility review</td>
<td></td>
<td class="yes">Yes</td>
<td class="yes">Yes</td>
<td>r=?</td>
</tr>
<tr>
<td>Where to put the manual testing procedures, for example those for toolbar migration?</td>
<td>[https://bugzilla.mozilla.org/show_bug.cgi?id=564934#c85 Bug 564934, comment 85]</td>
<td class="no">No</td>
<td class="no">No</td>
<td></td>
</tr>
<tr>
<td>Understand if the two makefiles in the patch can be checked in and retain public domain status</td>
<td>[https://bugzilla.mozilla.org/show_bug.cgi?id=564934#c272 Bug 564934, comment 272]</td>
<td class="no">No</td>
<td class="no">No</td>
<td>Gerv</td>
</tr>
</table>


'''Work required to release and enable the feature for everyone:'''


==== Other feedback received ====
* Bugs listed as blocking {{bug|747422}} (completed).
* [https://etherpad.mozilla.org/panel-based-download-manager UX Group Etherpad with Known Issues]
* The indicator jumps from 1 minute to 30 seconds left, by design, though this can be confusing ([https://bugzilla.mozilla.org/show_bug.cgi?id=564934#c315 Bug 564934, comment 315] and [https://bugzilla.mozilla.org/show_bug.cgi?id=564934#c317 comment 317]).
* "Search" icon on completed items doesn't convey the idea of "Open containing folder" ([https://bugzilla.mozilla.org/show_bug.cgi?id=564934#c348 comment 348]).
* No X button to delete an entry from the panel (comment 348).
* Indicator does not appear immediately on startup (comment 348).
* Indicator has no hover effect like other buttons in Tab bar (comment 348).


==== Follow-ups ====
==== Follow-ups ====
Confirmed users
183

edits