Firefox/Projects/Network Error Pages: Difference between revisions

no edit summary
No edit summary
Line 6: Line 6:
<blockquote>More useful/helpful set of network error pages that offer tools helping users get to a useful end point via search, analysis of Places DB, or automatic redirects/reloads.</blockquote>
<blockquote>More useful/helpful set of network error pages that offer tools helping users get to a useful end point via search, analysis of Places DB, or automatic redirects/reloads.</blockquote>


= Status =
= Project steps =
* '''String Freeze for Beta 4''': Mar 19, 2009
* '''Code Freeze for Beta 4''': April 6, 2009


* Opened a bug for 404 handling: https://bugzilla.mozilla.org/show_bug.cgi?id=482874.  Also:  Bug [http://bugzilla.mozilla.org/show_bug.cgi?id=484313 484313] (DTD changes).
*Open initial bug for 404 handling<br><br>
*:[[Image:250px-Pictogram voting keep.svg.png|20px]] '''Completed:''' [https://bugzilla.mozilla.org/show_bug.cgi?id=482874 Bug 482874] and [https://bugzilla.mozilla.org/show_bug.cgi?id=484313 Bug 484313] (DTD changes).


* Completed the experimental 404 extension and sent it out for comments.
*Create experimental 404 extension and send it out for comments<br><br>
*:[[Image:250px-Pictogram voting keep.svg.png|20px]] '''Completed,''' comments were:
** Works well for simulated small errors in URLs
** Works well for simulated small errors in URLs
** Hard to say how well it works for real errors in the wild.
** Hard to say how well it works for real errors in the wild.
** Drawing alternatives from the Places DB looks like a practical tool we can use for suggesting alternatives.
** Drawing alternatives from the Places DB looks like a practical tool we can use for suggesting alternatives.


* Discussions with Google Link Doctor team are ongoing
* Discuss with Google Link Doctor team<br><br>
** Follow up on experimental access to the service.
*:[[Image:250px-Pictogram voting wait.svg.png|20px]] '''In progress,''' next: follow up on experimental access to the service.


* Discussed possible 404 implementation with bzbarsky and others.
* Discuss possible 404 implementation with bzbarsky and others<br><br>
*:[[Image:250px-Pictogram voting keep.svg.png|20px]] '''Completed,''' comments were:
** 404 interception unified with the existing error handling architecture is too deep a change to make for 3.1.
** 404 interception unified with the existing error handling architecture is too deep a change to make for 3.1.
** A less intrusive approach similar to the one the experimental 404 extension uses may be possible -- need to investigate further.
** A less intrusive approach similar to the one the experimental 404 extension uses may be possible -- need to investigate further.


* Discussed UI design with jboriss. She has a blog post on the subject at http://jboriss.wordpress.com/2009/03/10/improving-everyones-favorite-feature-404/.
* Implement Levenshtein Distance algorithm in C++<br><br>
*:[[Image:250px-Pictogram voting keep.svg.png|20px]] '''Completed'''
** Followup: Plug algorithm into Firefox+Sqlite, providing better performance and accuracy compared to the approach used in the extension.<br><br>
**:[[Image:250px-Pictogram voting wait.svg.png|20px]] '''In progress'''


* Implemented Levenshtein Distance algorithm in C++, but have not plugged it into Firefox+Sqlite yet.  Should provide better performance and accuracy compared to the approach used in the extension.
* Proposed a plan for actual implementation<br><br>
 
*:[[Image:250px-Pictogram voting wait.svg.png|20px]] '''In progress,''' see below
* Proposed a plan for actual implementation -- see below.


= Proposed Plan =
= Proposed Plan =


* Target two error types:
'''We're targeting two error types:'''
** 404 errors.
# 404 errors.
** DnsNotFound errors.
# DnsNotFound errors.
      
      
* Tools to draw on:
'''Tools to draw on:'''
** Places alternatives: Places DB + Edit Distance -- can be called automatically.
# Places alternatives: Places DB + Edit Distance -- can be called automatically.
*** Good for errors on URLs that the user has visited before
#* Good for errors on URLs that the user has visited before
*** Might be especially useful for misspelled hostnames.
#* Might be especially useful for misspelled hostnames.
** Google Link Doctor
# Google Link Doctor
*** Assuming partner issues are worked out with Google.
#* Assuming partner issues are worked out with Google.
*** Can't be called automatically for privacy reasons.
#* Can't be called automatically for privacy reasons.
*** Available with one click (similar to pre-loaded Google search box)
#* Available with one click (similar to pre-loaded Google search box)
** Other easy to implement tools
# Other easy to implement tools
*** common transformations (www..example.com --> www.example.com, etc.)
#* common transformations (www..example.com --> www.example.com, etc.)
*** pre-loaded search box
#* pre-loaded search box
*** etc.
#* etc.


** 404 redirection
=404 redirection=
*** do not redirect obvious custom server error pages
==Design scope==
*** when we do redirect, original error page is available at one click.
* Will use 404-specific error page for 3.1 rather than trying to re-use the generic network error page.  The goal is to give the user better indication of the problem and provide tools for next steps if needed.
*** use some heuristic beyond simple page size for identifying default 404 pages
* Will not redirect obvious custom server error pages.  To this end, we'd like to use a heuristic beyond simple page size for identifying default 404 pages.  Possibilities:
**** compare to standard Apache and IIS 404 pages, possibly fuzzy (use edit distance?)
*# Compare to standard Apache and IIS 404 pages, possibly fuzzy (use edit istance?)
**** use EndDocumentLoad (or other event) + redirect
*# Use EndDocumentLoad (or other event) + redirect
**** can't do deep docshell changes for 3.1
*# Implement listener in C++, should be able to access 404 status directly from dcument.
***** should unify with existing error page architecture in v.next.
*# <s>Deep docshell changes</s> (Not possible for 3.1}
**** similar to how the Friendly Error extension works now
* Will allow original error page to be available at one click
**** implement listener in C++, should be able to access 404 status directly from document.
* Will unify with existing error page architecture in v.next.
*** use 404 specific error page for 3.1 rather than trying to re-use the generic network error page.
 
**** more design flexibility
==Open questions==
**** easier to get in before string freeze
* Which tools will be provided?
**** unify with generic network error page in v.next
* Should indication that the error is "404" be provided in the first screen?
*****Sketches:
* Is it possible to link to a page with more information about the problem?
* How many alternatives should be shown, and how closely should those match user input?
* What distinction should be drawn from the user's perspective between this and a DnsNotFound error?
* Problem: The 404 error page can't be a chrome page, since that could expose us to privilege escalation attacks piggy-backed on XSS attacks.<br><br>
*:[[Image:250px-Pictogram voting keep.svg.png|20px]] '''Solution:''' Use an about: URL to access the 404 error page.
 
 
==Resources==
===Sketches===
<gallery>
<gallery>
Image:Linkdoctor places 404.png|A near match has been found (http://www.americas.com) along with the level above (http://news.bbc.co.uk), either via Places or Google
Image:Linkdoctor places 404.png|A near match has been found (http://www.americas.com) along with the level above (http://news.bbc.co.uk), either via Places or Google
</gallery>
</gallery>
===Notes===
==Most current design==


** DnsNotFound:
=DnsNotFound=
*** Extend existing error page with alternatives drawn from Places.
==Design scope==
*** Add one-click access to Google Link Doctor.
* Will use the DnsNotFound error page to give the user better indication of the problem and provide tools for next steps if needed
*** Other tools.
* Will provide the user tools via one-click access to Google Link Doctor
*** Improved design
* Will provide the user with better link options with data drawn from Places
*****Sketches:
 
**** May be constrained by the generic network error page architecture.
==Open questions==
* Which tools will be provided?
* Should indication that the error is "DnsNotFound" be provided in the first screen?
* Is it possible to link to a page with more information about the problem?
* How many alternatives should be shown, and how closely should those match user input?
* What distinction should be drawn from the user's perspective between this and a 404 error?
 
==Resources==
===Sketches===
<gallery>
<gallery>
Image:Dns error 1 suggestion.png|A suggestion is found, via Google or Places, and search is provided
Image:Dns error 1 suggestion.png|A suggestion is found, via Google or Places, and search is provided
Image:Dns error 2 suggestions.png|Two suggestions might be given if two are clear strong matches
Image:Dns error 2 suggestions.png|Two suggestions might be given if two are clear strong matches
</gallery>
</gallery>
** Constraints
===Notes===
*** String Freeze for Beta 4: Mar 19, 2009
*** Code Freeze for Beta 4: April 6, 2009
 
* Security Issues
** Our 404 error page can't be a chrome page, since that could expose us to privilege escalation attacks piggy-backed on XSS attacks.
*** Solution: Use an about: URL to access the 404 error page.
 


==Most current design==




Confirmed users
954

edits