Status Update: org-webring

available as: html | org | pdf | tex | txt

1 What is new?

It has been almost a few weeks since the initial announcement of org-webring1, and the response has been great! I have have many great conversations with fellow GNU Emacs citizens about the project, and much to my surprise there have been people persuaded to switch to Org for their website in-part to this neat utility. Obviously the bulk of the benefit will come from the Org-tooling, itself. However, I can not help but feel at least somewhat happy that people have found the project to be an enhancement.

The project continues to be developed in bulk by a handful of contributors, about five of us to date. Since we last spoke we have much progress to report:

1.1 ATOM Implementation

Yes, ATOM feeds have finally been implemented much to the demand of the ATOM fan-base. This turned out to be slightly more difficult than we had originally anticipated. ATOM feeds are curated and formatted differently in some feeds.

ATOM, unlike RSS, follows the ISO-86012 date-time specification, which was only added recently to GNU Emacs starting in version 27.1. However, the parsing for 8601-compliant date-time strings is currently only available in GNU Emacs 28.x. For now, we have a condition to check for the support of ISO-8601, and load it if available and parse correctly in a new function org-webring--parse-datetime. If you are on Emacs 25.1-26.3, ATOM dates will simply be parsed using our fallback method.

Additionally, ATOM feeds have some peculiarities around references for URLs. This was solved in part by checking for the 'alternate reference, or checking for a URL with a null reference and extracting the proper URL from these conditions.

The bulk of this work was accomplished with the help of Jamie Beardslee, and Alexandru-Sergiu Marton.

1.2 Only Parse Unique URLs

This one is a little less exciting, but still important for functionality and speed. When given a duplicate entry in org-webring-urls, we now filter out and create a new list without the redundancy.

The bulk of this work was accomplished with the help of Ivan Sokolov who kindly realized my hashtable solution was messy.

1.3 Sanitization is Stricter and Thorough

Now, all content from both RSS and ATOM feeds pass through a stricter DOM-XML sanitizer. The effect is still achieved using the same DOM library, but the result is cheap and effective. There are no lingering elements, tags, identifiers, nothing.

1.4 Installation from GNU Guix

You can now obtain org-webring through GNU Guix3! Either on Guix System, or using the Guix package manager on your “foreign” distribution, you can obtain and use the latest tags from our project through this package manager. There are two primary ways to achieve this:

You can install org-webring through the upstream repository which tracks tags.
You can install org-webring through the script available in the /etc directory which tracks HEAD.

The bulk of his work was accomplished with the help of Alexandru-Sergiu Marton, who has taken the liberty of sending patches to GNU Guix upstream for me to commit and merge, and for the maintenance of both the upstream and local package.

2 What now?

While we have achieved a great deal with this project, there still remain before feature parity is achieved and stability is ensured. Eventually, the goal is to have this be merged upstream into Org, and subsequently into GNU Emacs. What remains?

2.1 Implement Planet/Syndicates

There is a nice functionality that can be extended with a fair amount of code reuse. Planets are essentially what we have implemented already, but formatted differently and generally without the limitation on how many entries will be displayed total and from each source. Distinct from the webring feed, a planet feed generally goes on a dedicatede page rather than being embedded with other content. A syndicates list (formatted list of sources with URLs to feeds) is displayed either to the right-hand, left-hand, or bottom of the planet feed.

There are still some details in discussion, but this should be implemented soon.

2.2 Future-proofing

Ivan Sokolov has brought up some good implementation changes hinding around reusing code already available in GNUs (through nnrss), and newsticker.el. This is considered desirable as it will not only de-bloat our current codebase (which is getting a little lengthy), but should also offer future-proofing to our implementation. This is currently being investigated and fledged out on a distinct branch.

2.3 Integrate TINY Pictures

People have brought it to my attention that social networks such as Mastodon4 have RSS and ATOM feeds. It has been requested that we investigate the ability to integrate a Mastodon account-roll with correct profile pictures into the current org-webring implementation. This is not guaranteed, but is being look at.

2.4 arXiv Document Integration

Similar to the last request, there are people (such as myself) who frequent arXiv, and would like to use org-webring to integrate and share recent publications (including a formatted URL) to the research (usually in PDF format). This is not guaranteed, but is being investigated.

2.5 Pinned Responses

In another blog post of mine, I sort of hacked around the functionality of org-webring to “pin” a post from Drew DeVault5. I did not know at the time people would find this feature to be desirable. Currently the solution is to self-host a modified feed featuring only that post. The correct implementation will be much simpler, probably involving specification of a date, url to the post, or a snippet of the title to return the correct result. This feature is guaranteed, but is still being investigated. :)

3 Final Thoughts

I think I have hit all of the relevant points here. If you are using org-webring on your blog or website, I would really love to hear your thoughts and see it in action. Please, please do not hesitate to send me and email to the list linked in the next section, or using my email address found on the index page.

Have a response?

Responses and discussion pertaining to any of the blog entries on my website are welcome! Start a discussion on the mailing list by sending an email to ~brettgilio/