I have created a set of requirements for an app called Booklist Browser, and for Booklists to be read by Booklist Browser. The draft requirements can be viewed on this Github issue. This is my contribution to the conversation I tried to start in this blog post on Federated Bookshelves. Input from others would be welcome!
Requirement brainstorm and some tools for Federated Bookshelves
I summarized requirement-type information from a number of posts on the Federated Bookshelves/Library JSON idea, see the Github repo for details. If anyone is interested in participating in a conversation on this topic, I have created a Github issue to capture comments.
Also, I found two tools today to more easily view OPML and JSON files:
- OPML Viewer – Can open an OPML file (local or online) and show original text and XML tree view
- JSON Viewer – Can open a JSON file (local or online) and show original text and object view
I added these to the tools section on the main Federated Bookshelves repo file.
Library JSON test viewer now available
I have created a test viewer for the Library JSON format as defined by Tom Critchlow. It reads a JSON file following the format and displays the elements in the JSON file. I have a working one on my website reading Tom Critchlow’s test file. I have added the HTML file for the viewer to the Federated Bookshelves Github repo.
Now that we have a simple way to view both OPML and Library JSON files, I am going to put some thoughts together on Github about the next items to work on….
The proof copy of my new book came in – need to make a few updates, but will be available soon!

A Federated Bookshelves reader
Recently, Ton Zijlstra wrote about the concept of “federated bookshelves”, in which he referenced a post by Tom Critchlow on a similar concept called “Library JSON”. I have played with this idea based on Ton’s proof of concept. I also read through the postings flowing from Tom Crichlow’s post in 2020, and the ones from Ton Zijlstra’s post this year, and thought it would be helpful to provide a chronology of the development of this idea. To this end, I have created a Github repo with a chronology and links to tools and other distributed book info concepts that I have come across in reading on this topic. Pull requests and other comments are welcome! I am planning to spend more time on this in the next few weeks, so hopefully more prototypes and ideas to come….
OPML in the wild
Dave Winer posted a few days ago that he was looking for examples of OPML in “production”. I assume that means “being used by someone or in an app”. I thought I would contribute a few items…
Zylstra.org – Ton Zijlstra’s OPML blog roll in a human readable form (reference)
Zylstra.org – Ton Zijlstra’s booklist in OPML (reference)
AndySylvester.com – Andy’s beginning booklist in OPML (reference)
AndySylvester.com – Reading lists in OPML for the River5 feed reader/aggregator
Federated Bookshelves Update #2
After reviewing a Selfoss issue on Github which described the behavior I saw in my first post on this topic:
This depends on the mime-detection on your server. You need to map .opml to the right mime-type
application/xmlin your webserver.
and this MDN page on updating mime types:
- If you’re using the Apache web server, check the Media Types and Character Encodings section of Apache Configuration: .htaccess for examples of different document types and their corresponding MIME types.
I decided to look at my own web hosting to see if I could find and modify the .htaccess file. For Bluehost, there is an .htaccess file within the public_html folder. I thought I would start with this one and see how things went.
Looking at this example configuration file for media types from HTML5 Boilerplate project, I saw this:
AddType application/xml xml
I then added this line to my .htaccess file:
AddType application/xml opml
After uploading that addition, my OPML file renders the same way that Ton’s file does – success!
Federated Bookshelves Update #1
Ton gave me a suggestion to refer to the XSL file on my local domain. I did this, but still only saw the raw OPML appear. After some thinking, I thought about MIME types, and wondered if this was set up on my web hosting to serve OPML as XML. I uploaded a copy of the file with a .xml extension, and everything worked! I have found some resources for updating MIME types, will post later after some experimenting.
Getting started with Federated Bookshelves
Some time ago, I read a post from Ton Zijlstra on the concept of federated bookshelves. His original post was riffing on an idea by Tom Critchlow called Library-JSON. Recently, Ton revisited this topic, and in a short period of time created a working prototype OPML file and a XSL stylesheet to view the OPML file.
I finally had some time this weekend to play around with this. Here is my work so far:
- My first booklist in OPML format
- The transformed file
I had some problems using Ton’s XSL file. On my server, when I entered the URL of the OPML file, all that was displayed was the OPML file. However, I found a tool to apply the XSL transformation, and the resulting file was a valid HTML page (the “transformed file” above). I will continue to investigate this and also reach out to Ton to see if I did something wrong.
My new book – coming soon!
After my work on setting up Portland Protest News, I spent a lot of time documenting the tools and processes I used to create the site and its enhancements. This work will soon be available in paperback from Lulu.com! Here is the back cover copy for “Set Up Your Own Platform: How to create and own your website, newsletter, and social media presence”, more news coming soon…
===
Wouldn’t you like to have your own platform for your personal or business website instead of depending on Facebook or other website creation services? This manual is a complete step-by-step guide on how to create and launch a WordPress website, create a newsletter for your site using a WordPress plugin, and manage your social media presence. By using this guide, you will be in control of your presence on the World Wide Web!
You will discover how easy it is to:
- Create a WordPress website
- Buy a domain name and assign it to your website
- Customize your site through themes and social media links
- Use a WordPress plugin to create a site newsletter to attract and engage readers
- How to set up a Linux virtual server for just $5/month
- Use a virtual server to run applications to enhance your site
Andy Sylvester is the author of four books on microblogging, using and creating web applications, and web server setup. He has worked in software development for over 36 years in the aerospace industry, academia, and government research and development.
This guide shows you how to make your place on the Web. What are you waiting for?