This post is part of a series of technotes about r-universe, a new umbrella project by rOpenSci under which we experiment with various ideas for improving publication and discovery of research software in R. As the project evolves, we will post updates to document features and technical details. For more information, visit the r-universe project page.
Continuous deployment in r-universe
A major difference between r-universe and static repositories like CRAN and BioConductor is continuous deployment: packages in r-universe are continuously built in CI and immediately deployed to our package server. This package server stores binaries and metadata in a database, which enables us to dynamically query and expose all the package data through APIs, dashboards, feeds, etc.
The package server also makes it relatively easy to add new functionality to expose information about R packages from the database in some other way. For example, we recently added a badges API to display package versions and totals in the form of a small badge image that can be embedded in webpages.
Based on suggestions from our early adopters, we have now added support for RSS feeds of package updates in a cran-like repository.
Why RSS feeds in r-universe
Open science means that content is not locked in to some platform, but be made accessible in a variety of standard formats. Therefore all of the information that you can see in the r-universe dashboards, and much more, can also be retrieved through machine readable APIs.
The RSS format sadly lost popularity to social media platforms in recent years, but it is still the most widely used open standard for publishing feeds of regularly updated content. It actually seems to be making a bit of a come-back with applications like Chrome and Slack now supporting it again.
This week we added experimental support of RSS feeds to the package server: the
/feed.xml endpoint on any r-universe domain now gives an RSS feed of recent R package updates in the repository:
Each feed item contains the name and version of the updated R package, along with a timestamp and a link to the build log of the most recent commit. The feed also contains some additional metadata such as the package description, and a list of the articles (vignettes) contained in the package.
The dashboard for any universe also includes a link to this same URL, such that users can easily find and subscribe to your feed.
Example: Slack integration
What would you use an RSS feed for in 2021? For example, if you use Slack, you can install the Slack RSS app to subscribe to any number of RSS feeds. Thereby you can get a notification when your packages, or those of your favorite maintainers, have been updated in r-universe.
Do you have suggestions for other RSS use cases, or completely different functionality that the package server should expose? Let us know in the comments or on twitter!