comments inline ...
Dave Johnson wrote:
First, some review: the current Roller newsfeed situation...
Currently, each Roller blog has an RSS 2.0 and an Atom 1.0 newsfeed.
Each of
these lists the most recent X number of entries (where X is set on the
blog's
Preferences->Settings page). Each newsfeed accepts two request:
'catname' so
you can get a category specific feed and 'excerpts' so you can request an
excerpt only feed. So we have:
/roller/rss/<weblog-handle>?catname=<catname>&excerpts=[true|false]
/roller/atom/<weblog-handle>?catname=<catname>&excerpts=[true|false]
At the site-wide level, there is an RSS 2.0 newsfeed and an Atom 1.0
newsfeed
for the entire site. Both accept the same 'catname' and 'excerpts'
parameters.
/roller/rss?catname=<catname>&excerpts=[true|false]
/roller/atom?catname=<catname>&excerpts=[true|false]
Plus, there's a Planet feed. Normally, the feed contains entries from all
of the weblogs on the Roller site plus all of the entries from
subscriptions
in the 'external' group. But you can also specify request parameter 'group'
to get feed containing only entries from one subscription group.
/roller/planetrss?group=<groupname>
So, what's the question?
With Atlas, I'd like to allow the frontpage blog to specify it's newsfeeds.
It's possible that a frontpage blogger might want his blog's feed to
contain:
* Only entries from the front-page blog itself
* Entries from the entire site
* Entries from the entire site plus external blogs
* Entries from one specific planet group
How do we do this? I've come up with four options.
Option #1: There's nothing special about the frontpage blog
Treat site-wide feeds and blog-specific feeds as completely independent
things.
So, the frontpage blog's feeds are just like any other blog's feeds.
And, the
site-wide feeds must be configured at the site level by a Global Admin at
runtime or via roller-custom.properties.
easiest, but crude and not very user friendly :(
Option #2: Pick feedscope=site or feedscope=weblog
Frontpage blogger must chose either a site-wide or a blog-only feed. Add
a new
field to the website table to allow a blogger to pick a 'feedscope' of
either
'weblog' or 'site'.
this is reasonable, but still too limited if you ask me. it doesn't
really account for the planet feed option, or possibly the option that
the user wants to add an arbitrary new custom feed type.
Option #3: Pick almost anything via simple syntax
Frontpage blogger must create a simple feed-specification, a string that
specifies the feed to be produced by the frontpage blog. That 'feedspec'
would
be stored as a new field in the website table. It must have one of the
following three formats.
A. site?cats=<cat1,cat2>&lang=<lang>&excerpts=[true|false]
A site-wide feed optionally restricted by catnames, lang and excerpts.
If excerpts not specified, then subscibers can choose either.
B. weblog?cats=<cat1,cat2>&lang=<lang>&excerpts=[true|false]
Weblog-only feed optionally restricted by catnames, lang and excerpts.
If excerpts not specified, then subscibers can choose either.
C.
planet?groups=<group1,group2>&cats=<cat1,cat2>,lang=<lang>,excerpts=[true|false]
Planet feed optionally restricted by groups, catnames, lang and excerpts
If excerpts not specified, then subscibers can choose either.
i can't say that i am really a fan of the feedspec idea for a couple
reasons. 1) it's still limited to feedspec options that Roller is
knowledgeable about, so it wouldn't support arbitrary feeds the user
wants to define, and 2) i would like to see us make better use of our
existing infrastructure via templates.
Option #4: Same as #3, but for all weblogs
Allow all weblogs to specify their feedspec and feedtypes, but only
the frontpage
blog can specify ones that start with 'site' and 'planet'.
i don't see how the feedspec would be useful to weblogs if you are only
allowed to use 1 of the 3 options.
Personally, I like #4. Comments, suggestions, other options?
i am on board with the idea behind #4, which is that each weblog should
have the ability to control what feeds it offers, but i don't
particularly see how the feedspec thingy is useful.
i have a couple more fundamental questions about what direction we
really want to take here, then a suggestion ...
1. Do we want to allow admins/users to have full control over what feeds
are available for a weblog? or do we want to continue our current path
where we basically handle feeds for them?
2. Is it important for all feeds to be under the new
<weblog>/feed/<flavor> url? or is it okay if custom feeds exist as
custom weblog pages under <weblog>/page/<myfeed>
3. Do we want the site wide feed to be the default? or should Roller
admins have to enable it when they want it?
4. Should the rss/atom feed for the main blog only pertain to that
weblog? or should it possibly pertain to a different set of data, like
the site wide feed or planet feed? if it always pertains to the weblog
then other feeds need their own url path <weblog>/feed/<something>
suggestions ...
technically, as far as our rendering is concerned, there is no
difference between a weblog page and a weblog feed. both are just
content to be rendered from a template. the only difference right now
is that we don't let users manage their feed templates, instead we do
that for them.
if we really want to give users truly flexible control over their feeds
then i suggest we simply move the feeds to become weblog templates just
like pages are now. to make this happen i think all we would really
need to do is add 2 fields to the weblogpage table ...
* content type - to allow users to specify if the feed is rss, atom, etc.
* page type - to specify if the template represents a "feed" or a "page".
we then make use of the existing "link" attribute of a weblog template
to complete the picture. this way when an incoming request for
<weblog>/feed/foo comes in we simply lookup a template named "foo" with
a page type of "feed" and render that template. these templates would
be editable as part of normal template editing interface, and we could
also lock down certain feeds that we prefer people not edit, like atom
and rss.
then when someone wants to add a new feed, like the site wide feed or
planet feed, they just define a new template of type "feed", give it a
link value that they want and define the contents however they want it
to be rendered.
one thing to consider though is if this is really a good idea? is this
really something that is desired from an enterprise blogging solution?
this would be quite a bit of change just to support a site wide feed. a
lot of this sounds nice to me, but i'm not sure it's really needed.
-- Allen
And another thing. It's now considered a best practice now to offer only
one
format of newsfeed. Mutliple formats are confusing to users and to
aggregators
trying to uniquely ID entries. So, if we go with #4, we should also
add a 'feedtype'
field to the website table so that the frontpage blogger can pick the
blog format to
be supported (must be a supported flavor from the classes/flavors
directory).
- Dave