RSS is a technology that has significantly influenced the way people access and consume information on the web. At its core, RSS is a content syndication format that enables users to receive updates from their preferred websites in an easy and automated manner. This is essentially a news alert service. The importance of RSS lies in its ability to provide quick and organized access to online information, allowing users to stay informed about publications and other relevant content without having to manually visit each website. Moreover, RSS promotes greater informational freedom, as users choose which websites and information sources they wish to follow, without relying on recommendation algorithms or social networks, which apply filters and biases that risk informational manipulation and reduce users to passivity. It could be said that the potential of RSS resides in the simplicity of its system (which is open source), built on open standards, thereby facilitating its implementation on any online publishing platform. However, the rise of social media and the deliberate shutdown of the Google Reader service (the primary content aggregation platform) triggered a shift in how we consume online information, thereby impacting freedom of choice on the web and restricting and transforming users' informational options.
The history of RSS dates back to the late 1990s, when Dave Winer, one of the pioneers of the blogosphere (the collective community of Internet blogs), created the RSS 0.9 format as a means to allow users to syndicate (subscribe to) and receive updates from blogs. As blogs grew in popularity, the demand for a standardized syndication solution increased, leading to the creation of the RSS 2.0 specification in 2002.
At its peak, RSS was widely used by blogs, news websites, and other online media. However, with the emergence of social networks and recommendation algorithms, RSS lost popularity and ceased to be as commonly used as before. Although RSS was a simple system, the lack of development around aggregation software, readers, and filtering methods, combined with difficulties in monetization and the implementation of a social layer, prevented it from competing on equal terms with emerging technologies. Even in the early stages of social networks, RSS was introduced to track user posts; however, due to privacy concerns, this feature proved controversial and was eventually removed. Nevertheless, the need to monitor social media content has spurred the development of RSS solutions to convert such content into syndication feeds, demonstrating a latent demand despite corporate policies that largely contributed to the stagnation of syndication technology.
Despite its decline, RSS remains an important technology when considering the recovery of independence and freedom of information. Its ability to organize and provide automated access to relevant content continues to be a valuable feature for most users, hindered only by the lack of adequate and stable software over time.
The RSS 2.0 Format
RSS 2.0 is a content syndication format designed for the distribution of information on the web. It enables website publishers to share and update content such as news articles, blogs, and other types of information in a manner easily readable by content aggregators and feed readers. The format is based on an XML structure with a set of predefined tags that allow the representation of various types of information within an RSS 2.0 document. These tags include elements such as title, description, publication date, author, and a permanent link to the original source. Although the structure is simple, it can be extended due to the extensibility property of XML-based formats by incorporating tags from other standards such as Dublin Core, MARC-XML, MADS, MODS, EAD, etc. This enables the description of documents and multimedia files, making it far more versatile. It is important to note that the simplicity of RSS specifications aims to ensure compatibility across different systems and applications. Thus, it guarantees that the information contained in the feed can be easily read and interpreted by any reader or aggregator, allowing any website or content platform to implement it.
<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
<channel>
<title>Channel Title</title>
<link>Channel URL</link>
<description>Channel Description</description>
<language>Channel Language</language>
<copyright>Channel Copyright</copyright>
<managingEditor>Channel Editor</managingEditor>
<webMaster>Channel Web Master</webMaster>
<pubDate>Channel Publication Date</pubDate>
<lastBuildDate>Channel Last Build Date</lastBuildDate>
<category>Channel Category</category>
<generator>Channel Generator</generator>
<docs>Channel Documentation</docs>
<ttl>Channel TTL</ttl>
<item>
<title>Item Title</title>
<link>Item URL</link>
<description>Item Description</description>
<author>Item Author</author>
<category>Item Category</category>
<comments>Item Comments</comments>
<enclosure url="file link" type="Attachment File Type"/>
<guid isPermaLink="Indicates whether the GUID is a permanent link">GUID Value</guid>
<pubDate>Item Publication Date</pubDate>
</item>
</channel>
</rss>
Table 1. XML tag structure of an RSS 2.0 format
In this code, the complete set of tags for the RSS2.0 format is shown, as specified in the official standards of the Harvard Law School and the RSS Advisory Board. Note that the RSS channel consists of the <channel> element, which contains the tags describing the channel itself, as well as the <item> elements corresponding to the blocks of content, news, or documents to be reflected in the channel. The channel code is updated with new content published on the associated website. Thus, any new entry or information from the website is reflected in the syndication channel, triggering an informational alert for all users subscribed to the channel.
Improvements to the RSS Format
- Integration of blockchain technology to ensure the immutability and authenticity of information. A true implementation of blockchain that uses the RSS structure as a foundation would allow users to verify the authenticity of data and content hosted on the RSS feed, significantly enhancing its integrity and security. This enhancement could also include the addition of advanced blockchain features, such as smart contracts to automate certain actions in response to specific events within the RSS feed. Additionally, a function for decentralized validation of RSS data using blockchain nodes could be added, enabling users to verify the authenticity of news, content, and files without relying on a single centralized source. Feeds with more subscribers would, in this case, have a larger network of nodes; if linked to a cryptocurrency, this could serve as a payment mechanism for the creative efforts of authors whose sources feed into the RSS channel, thereby establishing a reward system proportional to actual consumption and reader demand.
RSS 3.0 Format: A Proposal
In this section, we present an initial draft proposal, by no means definitive, but intended to provide a foundation upon which to work, refine, and develop a future RSS 3.0 format. While it is true that a new format should entail a rethinking of existing tags and the introduction of new ones, Table 2 below leverages XML's extensibility property by incorporating Dublin Core elements, which provide enhanced descriptive capabilities, as well as blockchain-specific tags.
<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
<channel>
<title>Channel Title</title>
<link>Channel URL</link>
<description>Channel Description</description>
<language>Channel Language</language>
<copyright>Channel Copyright</copyright>
<managingEditor>Channel Editor</managingEditor>
<webMaster>Channel Web Master</webMaster>
<pubDate>Channel Publication Date</pubDate>
<lastBuildDate>Channel Last Build Date</lastBuildDate>
<category>Channel Category</category>
<generator>Channel Generator</generator>
<docs>Channel Documentation</docs>
<ttl>Channel TTL</ttl>
<item>
<title>Item Title</title>
<link>Item URL</link>
<description>Item Description</description>
<author>Item Author</author>
<category>Item Category</category>
<comments>Item Comments</comments>
<enclosure url="file link" type="Attachment File Type"/>
<guid isPermaLink="Indicates whether the GUID is a permanent link">GUID Value</guid>
<pubDate>Item Publication Date</pubDate>
<dc:contributor>Author Name</dc:contributor>
<dc:coverage>Location where the news occurred</dc:coverage>
<dc:date>2022-12-31T23:59:59Z</dc:date>
<dc:description>Detailed description of news item 1</dc:description>
<dc:format>text/html</dc:format>
<dc:identifier>https://www.mydomain.com/news1</dc:identifier>
<dc:language>es</dc:language>
<dc:publisher>Publication Name</dc:publisher>
<dc:relation>Relation to other news items</dc:relation>
<dc:rights>News Copyright</dc:rights>
<dc:source>News Source</dc:source>
<dc:subject>News Topic</dc:subject>
<dc:title>News Item 1</dc:title>
<dc:type>News Type</dc:type>
<blockNumber>1</blockNumber>
<timestamp>2022-12-31T23:59:59Z</timestamp>
<hash>0x9ffjd939393jdfdf93jdfdfj39393jfjdfj3</hash>
<previousHash>0x0</previousHash>
<nonce>59485</nonce>
<difficulty>2</difficulty>
<minerAddress>0x9d9jd93939jdfj93jdfjdfj93jdfj9j3</minerAddress>
<transactions>
<transaction>
<type>News item</type>
<data>{
"title": "News Item 1",
"link": "https://www.mydomain.com/news/news1",
"description": "Brief description of news item 1"
}</data>
</transaction>
</transactions>
</item>
</channel>
</rss>
Table 2. XML tag structure of a hypothetical RSS 3.0 format
Regarding Dublin Core tags, the complete basic set is observed, allowing specification of format, title, description, identifier, source, publisher, link to related news, rights, subject, and type. It would be advisable to consider integrating these tags as native elements in a hypothetical RSS 3.0 standard, in order to simplify metadata naming without requiring a Dublin Core extension, thereby enhancing richness and complexity for greater descriptive exhaustiveness. This procedure should be based on the common denominator principle of objects that could be registered in a new RSS 3.0 format—for example, news articles, scientific papers, micro-publications, multimedia, office files, periodic data streams for self-publishing, etc.
On the other hand, the blockchain aspect is reflected as it would appear in a real blockchain log, with key labels such as the block identifier <blockNumber>, the <hash>, and <previousHash>, which enable chaining blocks or content to be registered through their keys. Furthermore, if one wishes to implement a system of rewards based on interest, reads, and subscriptions, it is necessary to link the RSS blockchain to some mining and cryptocurrency system that captures the difficulty of the mathematical problem to be solved, along with the target and miner of the node network responsible for resolving said problem. However, unlike other cryptocurrency cases, the fixation of content should coincide with the publication date of the content at the moment the platform author decides to make it public. To accommodate this, the system can be designed to grant mining rewards prior to data registration, maintaining a pool of miners queued to perform the registration of transactions and content precisely at the moment the content creator publishes their entries. In this way, immediacy in the process could be ensured. Another possibility would be reducing the difficulty of the cryptocurrency’s mathematical problems to guarantee rapid response times from miners, functioning as typical crypto systems do. In any case, it appears fundamental that the blockchain system be simplified as much as possible to preserve the simplicity inherent to the RSS format.
An aggregator for RSS 3.0
Content aggregators are programs that enable users to subscribe to any syndication feed, store its content, read it, receive information alerts, apply filters, and facilitate information retrieval. It is therefore essential that, alongside the RSS 3.0 content syndication format, such programs and open-source codes be provided to maximize their utilization. In this regard, it seems a sound approach to offer pre-prepared code snippets in major programming languages such as PHP and Python, so that developers’ communities can integrate them into their creations and Internet-based content creation and publishing platforms. Furthermore, it is indispensable to provide users with an aggregation program that can be installed on mobile devices, desktop environments, and web servers, featuring all the functionalities expected in the new RSS 3.0 version. These aggregators should also function as nodes in the RSS blockchain network, implying their operation within the transaction network.
Focusing on the technical aspect of retrieving content from an RSS 3.0 feed, the code employed by aggregators would not differ significantly from that used in aggregators for previous versions. Table 3 illustrates two options for collecting <item> content within a syndication channel—what could be considered the core of the aggregation program. The SimpleXMLElement and cURL function libraries can still be used, yielding identical results.
<?php
// Option 1 - SimpleXMLElement Parser
// =======================================================
$rss = new SimpleXMLElement(file_get_contents('rss.xml'));
foreach ($rss->channel->item as $item) {
$title = $item->title;
$description = $item->description;
$link = $item->link;
$timestamp = $item->timestamp;
$hash = $item->hash;
$previousHash = $item->previousHash;
$nonce = $item->nonce;
$difficulty = $item->difficulty;
$transactions = $item->transactions->transaction->data;
$minerAddress = $item->minerAddress;
$contributor = $item->children('dc', true)->contributor;
$coverage = $item->children('dc', true)->coverage;
$date = $item->children('dc', true)->date;
$dcDescription = $item->children('dc', true)->description;
$format = $item->children('dc', true)->format;
$identifier = $item->children('dc', true)->identifier;
$language = $item->children('dc', true)->language;
$publisher = $item->children('dc', true)->publisher;
$relation = $item->children('dc', true)->relation;
$rights = $item->children('dc', true)->rights;
$source = $item->children('dc', true)->source;
$subject = $item->children('dc', true)->subject;
}
// Option 2 - cURL Parser
// =======================================================
$url = 'rss.xml';
$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_URL, $url);
$data = curl_exec($ch);
curl_close($ch);
$doc = new DOMDocument();
$doc->loadXML($data);
$items = $doc->getElementsByTagName('item');
foreach ($items as $item) {
$title = $item->getElementsByTagName('title')->item(0)->nodeValue;
$description = $item->getElementsByTagName('description')->item(0)->nodeValue;
$link = $item->getElementsByTagName('link')->item(0)->nodeValue;
$timestamp = $item->getElementsByTagName('timestamp')->item(0)->nodeValue;
$hash = $item->getElementsByTagName('hash')->item(0)->nodeValue;
$previousHash = $item->getElementsByTagName('previousHash')->item(0)->nodeValue;
$nonce = $item->getElementsByTagName('nonce')->item(0)->nodeValue;
$difficulty = $item->getElementsByTagName('difficulty')->item(0)->nodeValue;
$transactions = $item->getElementsByTagName('transaction')->item(0)->nodeValue;
$minerAddress = $item->getElementsByTagName('minerAddress')->item(0)->nodeValue;
$contributor = $item->getElementsByTagName('dc:contributor')->item(0)->nodeValue;
$coverage = $item->getElementsByTagName('dc:coverage')->item(0)->nodeValue;
$date = $item->getElementsByTagName('dc:date')->item(0)->nodeValue;
$dcDescription = $item->getElementsByTagName('dc:description')->item(0)->nodeValue;
$format = $item->getElementsByTagName('dc:format')->item(0)->nodeValue;
$identifier = $item->getElementsByTagName('dc:identifier')->item(0)->nodeValue;
$language = $item->getElementsByTagName('dc:language')->item(0)->nodeValue;
$publisher = $item->getElementsByTagName('dc:publisher')->item(0)->nodeValue;
$relation = $item->getElementsByTagName('dc:relation')->item(0)->nodeValue;
$rights = $item->getElementsByTagName('dc:rights')->item(0)->nodeValue;
$source = $item->getElementsByTagName('dc:source')->item(0)->nodeValue;
$subject= $item->getElementsByTagName('dc:subject')->item(0)->nodeValue;
$title = $item->getElementsByTagName('dc:title')->item(0)->nodeValue;
$type = $item->getElementsByTagName('dc:type')->item(0)->nodeValue;
}
?>
Table 3. Two examples of RSS 3.0 parsers in PHP using the cURL and SimpleXMLElement techniques
On the other hand, the addition related to the blockchain, and specifically to the <transaction> tags for transactions, requires a secondary foreach loop that iterates through all annotations in the transaction array of the RSS remuneration system; see the tentative example in Table 4.
<?php
$url = 'https://example.com/rss.xml';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$data = curl_exec($ch);
curl_close($ch);
$dom = new DOMDocument();
$dom->loadXML($data);
$items = $dom->getElementsByTagName('item');
$transactions = array();
foreach ($items as $item) {
$transactionsNode = $item->getElementsByTagName('transactions')->item(0);
$transactionsList = $transactionsNode->getElementsByTagName('transaction');
foreach ($transactionsList as $transaction) {
$transactions[] = array(
'hash' => $transaction->getElementsByTagName('hash')->item(0)->nodeValue,
'previousHash' => $transaction->getElementsByTagName('previousHash')->item(0)->nodeValue
);
}
$subject = $item->getElementsByTagName('dc:subject')->item(0)->nodeValue;
$title = $item->getElementsByTagName('dc:title')->item(0)->nodeValue;
$type = $item->getElementsByTagName('dc:type')->item(0)->nodeValue;
}
?>
Table 4. PHP procedure for the recursive extraction of items and blockchain transactions from an RSS 3.0 channel
Conclusions and Future Developments
- The evolution of web standards is fundamental to the adaptation and continuous improvement of technology. RSS has been an important standard for content syndication, but its lack of updates demonstrates the need for a new version, such as RSS 3.0, that addresses current deficiencies and challenges, such as the integration of blockchain, indexing and retrieval systems, accessibility, or personalization.
- User privacy and security are increasingly important issues in the digital age. By incorporating authentication and authorization methods, RSS 3.0 could enhance user data confidentiality, which is crucial for protecting users' rights and privacy.
- Internet users have diverse needs and preferences; therefore, advanced customization options in RSS 3.0 would be essential to meet varying user requirements. This would also improve the user experience and increase user engagement and loyalty. These objectives require the development of better content aggregators and the release of the necessary source code to facilitate the creation of plugins and modules for web publishing systems. Parser/aggregator tools play a key role in RSS functionality and can be enhanced to provide users with a more advanced and personalized reading experience.
- The ability to aggregate and display multiple RSS channels within a single user interface is a useful feature that would allow users to manage and view their content more effectively. This would also promote interoperability between different systems and applications, improving content management efficiency and the overall user experience.
Bibliography
- Arnepalli, K.; Rao, K.S. (2021). Blockchain Technology: Possibility of Application for Library Networks in India. Pearl: A Journal of Library and Information Science, 15(3), 153-161. http://dx.doi.org/10.5958/0975-6922.2021.00017.6
- Babu, P.R. (2020). Measuring Research in RSS Feed Literature: A Scientometric Study. In Measuring and Implementing Altmetrics in Library and Information Science Research (pp. 74-86). IGI Global. http://dx.doi.org/10.4018/978-1-7998-1309-5.ch008
- Barman, B. (2020). Changing the Ways the Libraries Reach to the User: RSS and its Applications in Libraries with Special Reference to Feedburner. Library Philosophy and Practice, 1-11. https://digitalcommons.unl.edu/libphilprac/3832
- Cammack, R.G. (2007). Open content Web mapping service: a Really Simple Syndication (RSS) approach. Location Based Services and TeleCartography, 417-431. https://doi.org/10.1007/978-3-540-36728-4_30