RSS Refactor for PLoS ONE Tools and Webapp

PLoS ONE 0.7 will remove its dependency on a SOAP based web services back end. It is being replaced by a more capable OTM architecture. As the RSS tools will need to be refactored to support this new architecture, we have an opportunity to address many existing RSS issues and desired enhancements in PLoS ONE.

A key component of the new RSS design is that the functionality will be exposed in a more REST like fashion. Tools and other applications will be free to use simple URIs to consume/config/control PLoS's RSS feeds.

A sample PLoS Developer's Guide has been developed for PLoS users and external developers.


Basic Design

  • the PLoS ONE webapp will be able to generate highly configurable feeds
    • webapp config file defines stock feeds feeds we offer (e.g. recent article/annotations, by subject, etc.)
    • any arbitrary feed will be available through a simple, derivable URI (e.g. arbitrary query results returned as a feed)
  • feed generation & refresh will be relatively dynamic, triggered by:
    • webapp startup
    • article ingestion
    • admin request
    • timer, say every # minutes
    • most common feeds served to the world from the file system, it's assumed that this is efficient (e.g. web machinery knows how to deal with caching, we do it in a web/http cache friendly way)
  • this is actually an attempt to expose all of PLoS ONE through a REST like interface, feeds are just a specific use case with a specified query and response format
    • today, basic feeds are just: request current articles and respond with RSS
    • in general
      • requests can be arbitrary queries specified in the URI
      • responses can be full Article XML, + all other objects, etc., (format specified in the URI or request headers)

Every resource in PLoS ONE (and every state that PLoS ONE provides from the user's perspective) is just a URI.

Examples

RequestResponse
http://plosone.org/article/feednew articles, all categories, Atom
http://plosone.org/article/feed/CellBiologynew articles, category=CellBiology, Atom
http://plosone.org/article/feed?max=100100 new articles, all categories, Atom
http://plosone.org/article/feed/ComputerScience?format=article;max=1010 new articles, category=ComputerScience, article XML
http://plosone.org/article/feed/?oql=(this one's for Ronald)OQL query results in Atom
  • Exposing OQL via REST
    • users have to know PlosOne app's domain model (Entities and properties)
    • access control (which Entities and properties are allowed to be exposed)
    • queries that can bogg down mulgara and hence PlosOne
      • btw: this can happen if we are not careful while exposing the REST api for feeds

Usage

  • easy to type in a user's browser, newsreader, email, web link, etc.
  • command line
    wget http://plosone.org/article/feed
    xsltproc myStylesheet http://plosone.org/article/feed/neglected?format=article
    
  • AJAX XMLHttpRequests, e.g. PLoS widget/portlet
  • scripts/code
    while(storedUserQueries.hasNext(){
      generateFeed(storedUserQueries.next().toURI());
    }
    

Note: Names are for demonstration. Typing conventions like camelCase would be normalized out for ease of use, i.e. any capitalization, etc. allowed. Be tolerant of category/categories, etc.


The current RSS tools are straightforward. The initial implementation will remain straightforward and address the issues listed below. Most importantly, it will also enable the enhancements listed below.

Issues Addressed

  • support new OTM interface in RSS tools
  • not all feeds currently validate
  • PLoS ONE articles are highly structured XML and metadata rich, let more of this goodness flow out through the RSS feeds

Existing Tickets

  • break up author name into give, surname, suffix in rss tool ticket:330
  • please add volume and issue number to output from RSS tool ticket:332
  • Update from CC 2.5 to CC 3.0 as default license, add CC 3.0 to RSS feeds ticket:338

Enhancements

  • Atom 1.0 & RSS 2.0 feeds TODO: why not just Atom?

Implementation

  • use Rome
    • highly compliant Atom, RSS 2.0, etc.
    • easy fit with OTM (feeds are OTM queries with filtered and slightly transformed results, e.g. map our OTM models to Atom models)
    • active user/developer communities

Future Enhancements