Skip to main content

RSS Part 6: GORSS

There is one more TUI client that I want to try out, so I will try it next. The GORSS client gets its name from the programming language used to develop it. (Naming things is difficult!)

Impressions

I prepared a container for testing GORSS using the binary that is distributed on GitHub. The tarball extracts to a directory named dist, which contains the binary as well as configuration files. The program needs to be run in the same directory as the configuration files, if they are not explicitly specified via the command line. All of this gives me the impression that the software is still at a prototype level of development.

I copied the default configuration to tcard.conf and edited it to point to my OPML file as well as remove the example highlight keywords and commands. My first run failed:

docker@gorss:/tmp/dist$ ./gorss_linux -config tcard.conf
2021/11/05 23:42:43 main.go:48: Failed to create dir: /home/docker/.local/share/gorss
2021/11/05 23:42:43 main.go:48: Failed to create dir: /home/docker/.config/gorss
2021/11/05 23:42:43 main.go:89: Using config: tcard.conf
2021/11/05 23:42:43 main.go:90: Using theme: themes/default.theme
2021/11/05 23:42:43 main.go:91: Using DB: /home/docker/.local/share/gorss/gorss.db
2021/11/05 23:42:43 main.go:92: Using log file: /home/docker/.local/share/gorss/gorss.log
2021/11/05 23:42:43 main.go:95: Failed to create log file. Will log to stdout.
2021/11/05 23:42:43 db.go:42: unable to open database file
2021/11/05 23:42:43 controller.go:50: Database init failed.

It looks like the software does not create parent directories when they do not already exist. After creating them myself, the program runs.

docker@gorss:/tmp/dist$ mkdir -p /home/docker/.local/share
docker@gorss:/tmp/dist$ mkdir /home/docker/.config
docker@gorss:/tmp/dist$ ./gorss_linux -config tcard.conf
2021/11/05 23:45:52 main.go:89: Using config: tcard.conf
2021/11/05 23:45:52 main.go:90: Using theme: themes/default.theme
2021/11/05 23:45:52 main.go:91: Using DB: /home/docker/.local/share/gorss/gorss.db
2021/11/05 23:45:52 main.go:92: Using log file: /home/docker/.local/share/gorss/gorss.log

The TUI loads, but there are no feeds. I confirmed that I did not make a mistake in configuring the OPML file path, and I confirmed that the OPML file exists and is readable. I checked the GORSS log file, but it is empty. I tried copying the OPML file to the current directory (and updating the configuration), but that did not help. There is no indication of what is going wrong, and the documentation (just the README) is extremely sparse.

I manually added a feed to the feeds configuration to test it out. The program runs, and I see the “total” and “unread” counts increase when I update the feeds, but I had a really difficult time figuring out how to view the items! The default configuration uses the s key to move down, but it was not working for me even though the border indicated that the “Feeds” window was selected. It eventually started working, but I have no idea what went wrong. I assume that it was an error on my part, as I find the default configuration to be extremely unintuitive.

With the default configuration, the window can be selected using number keys or by pressing the tab key. For some reason, the “Preview” window is no included when pressing the tab key. Perhaps it is a bug.

I added another feed, but it did not show up when I ran the program and updated the feeds. Again there is not indication of what is going wrong, and the log file remains empty. I tried deleting the gorss.db file, but the new feed still did not load! I tried again with a different feed, and it also failed to load.

Perhaps the issue is that the new feeds are Japanese. I removed them and added an English feed, but it also failed to load! The log file remains empty. I deleted the gorss.db file again, but the new feed still did not load. I have a busy day ahead, so I gave up on loading feeds.

I tried updating my configuration to use the k key and j key to move up and down respectively. It worked fine, and the help window shows the customized keys correctly. I noticed that the software automatically checks for updates every time that the program is loaded.

I wanted to see how GORSS displays podcast enclosures, and I was finally able to get another feed to load! (My guess is that the feed parser is not very robust and the program silently fails when anything is not as expected. I shall refrain from making jokes about error handling in Go.) There are many problems, however. The feed contains five items, but only the latest one is shown in GORSS. Why? The enclosure URL is not displayed at all, making GORSS useless for podcast feeds.

I noticed that UI has a very noticeable pause when navigating to unread items. It is ironic that a TUI fails to meet my performance requirements!

My Client Requirements

I do not want to spend any more time on this software. How does GORSS measure up to my client requirements?

GORSS does not meet my essential requirements. It fails to load most of the feeds that I tried it with, with no indication of what is going wrong. Some feeds that load do not show all of the items. Surprisingly, the user interface has performance problems.

One of the reasons why I tried GORSS is that I wanted to try out the windowed interface. It unfortunately turns out to be very basic. The keyboard navigation has some usability issues, but such issues could easily be fixed. I was unable to get any feeds that have items with large descriptions to load, so I was unable to see how the “Preview” window scrolls.

GORSS does not support hierarchical organization of feeds. The screenshots in the README indicate that the feeds are not displayed in the order specified in the configuration. (I was unable to test this myself due to feeds failing to load.) Not being able to organize feeds would have a huge impact on my efficiency in processing them and is a show-stopper for me.

The user interface does not display the links of enclosures, making GORSS useless for podcast feeds. This is also a show-stopper.

I was unable to determine how links in item descriptions are handled. I suspect that there is no way to copy the URLs or open links in the browser. I was unable to load feeds that have items with tables, so I do not know how tables are displayed. I was unable to load any Japanese feeds, so I do not know if the program works with Japanese.

There is no trash functionality, which has a significant negative impact on efficiency. There is no support for periodic checking.

Overall, GORSS does not seem to be ready for use. The version is just 0.3, so I bet that it is just in a very early stage of development. It has a long way to go before reaching a usable state, IMHO.