Closed Bug 305134 Opened 19 years ago Closed 19 years ago

Remove FeedView from Firefox 1.5

Categories

(Firefox Graveyard :: RSS Discovery and Preview, defect)

defect
Not set
normal

Tracking

(Not tracked)

RESOLVED FIXED

People

(Reporter: bugs, Assigned: bugs)

References

Details

(Keywords: fixed1.8)

Attachments

(4 files)

Per discussion, due to remaining bugs with FeedView that require either a) nasty
hacks or b) architectural changes to Gecko at a late point in the development
cycle, we should remove FeedView from the 1.5 release and focus on better
integrating it in the 2.0 cycle. 

Summary of issues leading to this decision (supported so far by cbeard, schrep,
beltzner, jst and probably axel):

The issues I have been looking at have included:

- Some feeds, like the BBC, are not pretty printed, because they are
styled with their own XSLT stylesheet. There are a couple of issues
here:

1) that the BBC feed is not being pretty printed
2) that functionality such as Add Live Bookmark etc are not being
exposed effectively for these feeds.

1 - BBC supplies its own stylesheet because they did not want users
clicking on RSS links on their site and getting raw XML display -
that's a bad user experience, and up until very very recently no
browser has handled RSS internally. The argument for pretty printing
the BBC document anyway is that they supply their stylesheet only to
work around limitations of certain UAs, so since we are not limited we
should treat theirs as a fallback. The counter argument is that they
specified it, so it should win. This is a debate that needs to be
explored by web platform, RSS and UE people.

2 - if we decide to force pretty print the BBC feed (as Safari does),
or if we don't but we need to adjust the browser UI elsewhere to show
"Add Live Bookmark" instead of "Add Bookmark", for example - we need
the original, untransformed document so we can detect that the
document is a feed, not just some random HTML document (which is what
the BBC feed ends up looking like to the browser code once it comes
out).

I've talked to Axel about this one and he suggests maybe exposing some
properties on DOMDocument that Microsoft offers - document.XMLDocument
and document.XSLDocument - the document is the transformed dom, the
XMLDocument is the original DOM, and the XSLDocument is the stylesheet
document. Axel also believes though that the notion of registering a
pretty print stylesheet for a particular doc type should be part of
Gecko... I don't believe that the XSL we use should be part of Gecko
since it makes references to Firefox specific things like live
bookmarks, but the detection logic that selects feedview.xsl (or
camino-rss.xsl, etc) should be.

- HTML tags show up in the feed entries. The old code dealt with this
I am going to imagine by stripping the contents of < > in all the
article text. This might be enough, but some people were complaining
that richer markup (tables, lists etc) weren't being properly handled.
Images were special cased. The HTML that shows up in entries is often
edited by hand by bloggers and as such cannot be relied upon to be
well formed XML - thus these blocks are often contained in <![CDATA[
]]> sections. The fix here is (may be?) to assume that the content of
the entry/excerpt fields are quirks HTML (is there a way to detect
otherwise?), and parse as fragments, constructing a DOM for the text
content of an article and replacing the text content with it, then
using <xsl:copy-of /> to copy the DOM nodes over to the target
document. The problem is there's no easy way to parse a HTML fragment
from a string, there are roundabout, hacky ways, but none I would feel
comfortable submitting for code review.

For example, typically one constructs a DOM for a fragment string like so:

var range = document.createRange();
var fragment = range.createContextualFragment("some arbitrary tag soup");
rssEntryElement.replaceChild(rssEntryElement.firstChild, fragment);

The problem is, for the tag soup to be parsed as quirks HTML, we need
the range to be created in the context of a HTML document, and since
quirks HTML has no namespace, we can't create one with
document.implementation.createDocument().

Instead, we have to do something far hackier, e.g.

var htmlDocument =
    Components.classesByID["{5d0fcdd0-4daa-11d2-b328-00805f8a3859}"].
    createInstance(Components.interfaces.nsIDOMHTMLDocument);

... but before we can call createContextualFragment using a range
established in this document, we need to set the document's content
type to text/html. This is a problem - nsIDOMNSHTMLDocument provides
only readonly access to the contentType field. The only way to set the
contentType property of the newly created document is to call |open|
on it and set the type. The problem then is that |open| fails
miserably if the HTML document does not have a docshell associated
with it (and it doesn't - it's just a hidden document that we're using
to create a context within which to parse HTML). So we have to do
something like this:

try {
 htmlDocument.open("text/html", false);
}
catch (e) { }

...and basically rely on the fact that the |open| implementation sets
its content type up before getting to the point where it fails and
throws an exception. Brittle, hacky.

Alternatively, one could create a hidden <iframe> and load a HTML
document in it and use that as a context, but creating hidden
<iframe>s when this is just something we should be able to expect to
get from Gecko ("parse this string into a DOM from quirks HTML!") is a
huge hack too.

...

This bug covers backing out the FeedView feature, but retaining the RSS link in
the location bar, functioning similarly to as it did with Firefox 1.0 but with
better autodetection logic, so that it can be more discoverable.
Marking blocking1.8b4+ - we should be feature complete by beta. 
Flags: blocking1.8b4+
I kept a bit silent on the mail discussion, but I do support the back-out.
Attached patch remove feedviewSplinter Review
Remove FeedView, leaving the location bar icon. Enhance single-feed
multiple-format autodetect by automatically selecting ATOM feeds if present.
Attachment #193185 - Flags: review?
Atom isn't an acronym: Atom, not ATOM. And because of a couple of stalled bugs
(bug 262222 and bug 302133) we are actually worse at handling correct Atom than
we are at handling correct RSS.

Would you consider (here or in a new bug) a different algo, that will probably
produce fewer matches, but will certainly produce fewer false positives? If you
strip digits and "Atom" and "RSS" from the link titles, and the results then
match ("Entries in Atom 1.0" "Entries in RSS 2.0" == "Entries in" "Entries in")
then you can safely conclude that they only differ in format; otherwise, you
*will* hide at least one of "Entries in Atom 1.0" or "Linklog in RSS 1.0" or
"Photostream in RSS 0.91".
I have updated my patch reverting it to selecting the first entry it finds. We
can switch back to Atom once an analysis of the bugs has been performed and the
worst issues corrected. 
Depends on: 257247
You may want to consider bug 304727 when changing the findChildShell code.
Blocks: 304727
Ben, do you have anyone particular in your head to review attachement 193185?
As that isn't set, it may just drop off if it's not on a particular review queue.
Comment on attachment 193185 [details] [diff] [review]
remove feedview

Doesn't particularly matter who reviews since its primarily a backout, but
defaulting to mconnor.
Attachment #193185 - Flags: review? → review?(mconnor)
Flags: blocking1.8b5+
Comment on attachment 193185 [details] [diff] [review]
remove feedview

Ugh, my ISP ate my homework.  I haven't looked in-depth at every single change,
but my two quick passes didn't turn up anything.
Attachment #193185 - Flags: review?(mconnor) → review+
Comment on attachment 193185 [details] [diff] [review]
remove feedview

requesting approval
Attachment #193185 - Flags: superreview+
Attachment #193185 - Flags: approval1.8b4?
Note, please see bug 305799 for some small recommended changes to the newly
restored 1.0-like functionality.
Attachment #193185 - Flags: approval1.8b4? → approval1.8b4+
landed on the branch...
Keywords: fixed1.8
When closing a browser window I now get an error in the js console:

Error: FeedHandler.uninit is not a function
Source File: chrome://browser/content/browser.js
Line: 907
Just wanted to highly recommend the FeedView extension for anyone who comes
across this bug interested in a temporary replacement. Works great so far.

https://addons.mozilla.org/extensions/moreinfo.php?application=firefox&id=445
Patch ready to land on the trunk. 
Attachment #193869 - Flags: approval1.8b4+
why do you want to remove it from trunk? Shouldn't we keep it for 2.0?
with regards to the BBC - have we asked them how they want this done to their pages?

Maybe they'd prefer their own stylesheet but we could use the yellow bar, a
google image style top frame or something else to indicate it can be made a live
bookmark.
Landed on trunk too. 
Status: NEW → RESOLVED
Closed: 19 years ago
Resolution: --- → FIXED
Removing this from the trunk because per discussions the feature needs an actual
design document, implementation plan etc - and that may look very different from
the way the feature works now.
The trunk patch backed out a little too much, removing some of the patch for
bug 304727.
Comment on attachment 194074 [details] [diff] [review]
additional patch [checked in]

r=me, but with change in param docs for 'doc' to not talk about "document that
contains the feed" (instead something like 'the document to find a shell for')
Attachment #194074 - Flags: review+
Comment on attachment 194074 [details] [diff] [review]
additional patch [checked in]

mozilla/browser/base/content/browser.js; new revision: 1.498;
Attachment #194074 - Attachment description: additional patch → additional patch [checked in]
Resetting QA Contact to default.
QA Contact: nobody → rss.preview
Product: Firefox → Firefox Graveyard
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: