Skip to main content

RSS Part 19: Current Thoughts

This blog entry expresses my current thoughts on RSS clients, now that I am looking for a new one (again).

QuiteRSS

QuiteRSS has been working well for me, so I am pretty disappointed to learn that it is dead. While writing this blog entry, I discovered that even the website is down, so I updated my links to point to the repository instead.

I am currently using Arch Linux for my daily driver, and somebody patched (deprecated) Qt Webkit to work with the new release of ICU. I needed to remove QuiteRSS and Qt Webkit and then reinstall them after upgrading the system, but QuiteRSS is working for me again. It is of course still available on many distributions. To continue the anthropomorphization, it is like an animated corpse that is still getting work done despite being dead for years and having hundreds of security vulnerabilities.

It might be worthwhile for somebody to create an AppImage for the final version (0.19.4) so that users have a way to continue using it (while searching for a replacement) if/when their distribution no longer runs it. It has many dependencies that might make this difficult, but one for an older version shows that it is possible.

Dependency tree on my system (large)
  • quiterss
    • gst-plugins-good
      • gst-plugins-base-libs=1.24.3
        • gstreamer=1.24.3
          • glib2
            • bash
              • readline
                • glibc
                  • linux-api-headers>=4.10
                  • tzdata
                  • filesystem
                    • iana-etc
                • ncurses
                  • glibc
                  • gcc-libs
                    • glibc>=2.27
                • ncurses provides libncursesw.so=6-64
              • readline provides libreadline.so=8-64
              • glibc
              • ncurses
            • glibc
            • libffi
              • glibc
            • libsysprof-capture
            • pcre2
              • bzip2
                • glibc
                • bash provides sh
              • glibc
              • readline
              • zlib
                • glibc
            • util-linux-libs
              • glibc
              • sqlite
                • readline
                • zlib
                • glibc
            • zlib
            • libffi provides libffi.so=8-64
            • util-linux-libs provides libmount.so=1-64
          • libcap
            • gcc-libs
            • glibc
            • pam
              • glibc
              • libtirpc
                • krb5
                  • glibc
                  • e2fsprogs
                    • bash provides sh
                    • util-linux-libs
                  • libldap
                    • libsasl
                      • gdbm
                        • glibc
                        • bash provides sh
                        • readline
                        • readline provides libreadline.so=8-64
                      • gdbm provides libgdbm.so=6-64
                      • glibc
                      • openssl
                        • glibc
                  • keyutils
                    • glibc
                    • bash provides sh
                  • libverto provides libverto-module-base
                    • glibc
                    • libevent
                      • openssl
                  • keyutils provides libkeyutils.so=1-64
                  • e2fsprogs provides libss.so=2-64
                  • e2fsprogs provides libcom_err.so=2-64
                  • libverto provides libverto.so=1-64
                • glibc
              • pambase
              • audit
                • glibc
                • krb5
                • krb5 provides libkrb5.so=3-64
                • krb5 provides libgssapi_krb5.so=2-64
                • libcap-ng
                  • glibc
                • libcap-ng provides libcap-ng.so=0-64
              • audit provides libaudit.so=1-64
              • libxcrypt
                • glibc
              • libxcrypt provides libcrypt.so=2-64
              • libnsl
                • glibc
                • libtirpc
          • libelf
            • bzip2
            • bzip2 provides libbz2.so=1.0-64
            • curl
              • ca-certificates
                • ca-certificates-mozilla
                  • ca-certificates-utils>=20181109-3
                    • bash
                    • coreutils
                      • glibc
                      • acl
                        • glibc
                      • attr
                        • glibc
                      • gmp
                        • gcc-libs
                        • glibc
                      • libcap
                      • openssl
                    • findutils
                      • glibc
                      • bash provides sh
                    • p11-kit>=0.24.0
                      • libp11-kit=0.25.3-1
                        • glibc
                        • libffi
                        • libtasn1
                          • glibc
                      • coreutils
                      • libp11-kit provides libp11-kit.so=0-64
                      • systemd-libs provides libsystemd.so=0-64
                        • glibc
                        • gcc-libs
                        • libcap
                        • libgcrypt
                          • libgpg-error
                            • glibc
                            • bash provides sh
                        • lz4
                          • glibc
                        • xz
                          • bash provides sh
                        • zstd
                          • glibc
                          • gcc-libs
                          • zlib
                          • xz
                          • lz4
              • brotli
                • glibc
              • brotli provides libbrotlidec.so=1-64
              • krb5
              • krb5 provides libgssapi_krb5.so=2-64
              • libidn2
                • libunistring
                  • glibc
                • libunistring provides libunistring.so=5-64
              • libidn2 provides libidn2.so=0-64
              • libnghttp2
                • glibc
              • libnghttp2 provides libnghttp2.so=14-64
              • libnghttp3
                • glibc
              • libnghttp3 provides libnghttp3.so=9-64
              • libpsl
                • libidn2
                • libunistring
                • libidn2 provides libidn2.so=0-64
                • libunistring provides libunistring.so=5-64
              • libpsl provides libpsl.so=5-64
              • libssh2
                • openssl
                • zlib
              • libssh2 provides libssh2.so=1-64
              • zlib
              • zlib provides libz.so=1-64
              • zstd
              • zstd provides libzstd.so=1-64
              • openssl
              • openssl provides libcrypto.so=3-64
              • openssl provides libssl.so=3-64
            • curl provides libcurl.so=4-64
            • gcc-libs
            • glibc
            • xz
            • xz provides liblzma.so=5-64
            • zlib
            • zstd
            • zstd provides libzstd.so=1-64
          • libunwind
            • glibc
            • xz
            • zlib
          • libxml2
            • glibc
            • icu
              • gcc-libs
              • glibc
              • bash provides sh
            • ncurses
            • readline
            • xz
            • zlib
        • iso-codes
        • libdrm
          • libpciaccess
            • glibc
            • zlib
          • glibc
        • libglvnd provides libgl
          • libxext
            • libx11
              • libxcb
                • xcb-proto
                • libxdmcp
                  • glibc
                  • xorgproto
                • libxau
                  • glibc
                  • xorgproto
                • glibc
              • glibc
              • xorgproto
            • glibc
            • xorgproto
          • mesa
            • expat
              • glibc
            • gcc-libs
            • glibc
            • libdrm
            • libelf
            • libglvnd
            • libx11
            • libxcb
            • libxext
            • libxfixes
              • libx11
            • libxshmfence
              • glibc
            • libxxf86vm
              • libxext
            • llvm-libs
              • gcc-libs
              • zlib
              • zstd
              • libffi
              • libedit
                • glibc
                • ncurses
                • ncurses provides libncursesw.so=6-64
              • ncurses
              • libxml2
            • lm_sensors
            • wayland
              • glibc
              • libffi
              • expat
              • libxml2
              • default-cursors
            • zlib
            • zstd
            • libomxil-bellagio
              • glibc
          • mesa provides opengl-driver
        • libgudev
          • glib2
          • systemd
            • systemd-libs=255.7
            • acl
            • acl provides libacl.so=1-64
            • bash
            • cryptsetup
              • device-mapper
                • glibc
                • systemd-libs
                • systemd-libs provides libudev.so=1-64
              • device-mapper provides libdevmapper.so=1.02-64
              • openssl
              • popt
                • glibc
              • util-linux-libs
              • util-linux-libs provides libuuid.so=1-64
              • json-c
                • glibc
              • json-c provides libjson-c.so=5-64
              • argon2
                • glibc
              • argon2 provides libargon2.so
            • cryptsetup provides libcryptsetup.so=12-64
            • dbus
              • audit
              • libcap-ng
              • expat
              • systemd-libs
              • audit provides libaudit.so=1-64
              • libcap-ng provides libcap-ng.so=0-64
              • expat provides libexpat.so=1-64
              • systemd-libs provides libsystemd.so=0-64
            • dbus-broker-units provides dbus-units
              • dbus
              • dbus-broker
                • audit
                • libcap-ng
                • expat
                • systemd-libs
                • audit provides libaudit.so=1-64
                • libcap-ng provides libcap-ng.so=0-64
                • expat provides libexpat.so=1-64
                • systemd-libs provides libsystemd.so=0-64
            • kbd
              • glibc
              • pam
            • kmod
              • glibc
              • zlib
              • openssl
              • xz
              • zstd
            • kmod provides libkmod.so=2-64
            • hwdata
            • libcap
            • libcap provides libcap.so=2-64
            • libgcrypt
            • libxcrypt
            • libxcrypt provides libcrypt.so=2-64
            • libidn2
            • lz4
            • pam
            • libelf
            • libseccomp
              • glibc
            • libseccomp provides libseccomp.so=2-64
            • util-linux
              • util-linux-libs=2.40.1
              • coreutils
              • file
                • glibc
                • zlib
                • xz
                • bzip2
                • libseccomp
                • libseccomp provides libseccomp.so=2-64
                • zstd
                • zstd provides libzstd.so=1-64
              • file provides libmagic.so=1-64
              • glibc
              • libcap-ng
              • libxcrypt
              • libxcrypt provides libcrypt.so=2-64
              • ncurses
              • ncurses provides libncursesw.so=6-64
              • pam
              • readline
              • shadow
                • glibc
                • acl
                • acl provides libacl.so=1-64
                • attr
                • attr provides libattr.so=1-64
                • audit
                • audit provides libaudit.so=1-64
                • libxcrypt
                • libxcrypt provides libcrypt.so=2-64
                • pam
                • pam provides libpam.so=0-64
                • pam provides libpam_misc.so=0-64
              • systemd-libs
              • systemd-libs provides libsystemd.so=0-64
              • systemd-libs provides libudev.so=1-64
              • zlib
            • util-linux-libs provides libblkid.so=1-64
            • util-linux-libs provides libmount.so=1-64
            • xz
            • pcre2
            • audit
            • audit provides libaudit.so=1-64
            • openssl
            • openssl provides libcrypto.so=3-64
            • openssl provides libssl.so=3-64
          • glib2 provides libglib-2.0.so=0-64
          • glib2 provides libgobject-2.0.so=0-64
          • systemd-libs provides libudev.so=1-64
        • libxi
          • libxext
          • libxfixes
        • libxv
          • libxext
        • mesa
        • orc
          • glibc
        • wayland
      • aalib
        • glibc
        • gpm
          • bash
          • procps-ng
            • glibc
            • ncurses
            • ncurses provides libncursesw.so=6-64
            • systemd-libs
        • libx11
        • ncurses
        • slang
          • pcre
            • glibc
            • gcc-libs
            • readline
            • zlib
            • bzip2
            • bash
      • cairo
        • fontconfig
          • expat
          • freetype2
            • brotli
            • bzip2
            • libpng
              • zlib
              • bash provides sh
            • bash provides sh
            • zlib
            • harfbuzz
              • freetype2
              • glib2
              • glibc
              • graphite
                • gcc-libs
              • freetype2 provides libfreetype.so=6-64
              • graphite provides libgraphite2.so=3-64
              • glib2 provides libglib-2.0.so=0-64
              • glib2 provides libgobject-2.0.so=0-64
          • expat provides libexpat.so=1-64
          • freetype2 provides libfreetype.so=6-64
        • freetype2
        • glib2
        • libpng
        • libx11
        • libxcb
        • libxext
        • libxrender
          • libx11
        • lzo
          • glibc
        • pixman
          • glibc
        • zlib
      • flac
        • gcc-libs
        • libogg
          • glibc
      • gdk-pixbuf2
        • glib2
        • glibc
        • libjpeg-turbo provides libjpeg
          • glibc
        • libpng
        • libtiff
          • gcc-libs
          • glibc
          • jbigkit
            • glibc
          • libjpeg-turbo
          • libjpeg-turbo provides libjpeg.so=8-64
          • zlib
          • xz
          • zstd
        • shared-mime-info
          • libxml2
          • glib2
          • glibc
          • gcc-libs
      • lame
        • ncurses
      • libavc1394
        • glibc
        • libraw1394
          • glibc
      • libcaca
        • freeglut
          • libxi
          • libxrandr
            • libxext
            • libxrender
            • libx11
            • glibc
          • libglvnd provides libgl
        • gcc-libs
        • glibc
        • glu
          • libglvnd provides libgl
          • gcc-libs
          • glibc
        • imlib2
          • bzip2
          • freetype2
          • giflib
            • glibc
          • libjpeg-turbo
          • libpng
          • libtiff
          • libxext
          • xz
        • libglvnd
        • libx11
        • ncurses
        • slang
        • zlib
      • libdv
        • glibc
        • popt
      • libgudev
      • libiec61883
        • libraw1394
      • libpulse
        • dbus
        • libasyncns
          • glibc
        • libsndfile
          • glibc
          • flac
          • flac provides libFLAC.so=12-64
          • lame
          • lame provides libmp3lame.so=0-64
          • libogg
          • libogg provides libogg.so=0-64
          • libvorbis
            • libogg provides libogg.so=0-64
          • libvorbis provides libvorbis.so=0-64
          • libvorbis provides libvorbisenc.so=2-64
          • mpg123
            • alsa-lib
              • alsa-topology-conf
              • alsa-ucm-conf
              • glibc
          • mpg123 provides libmpg123.so=0-64
          • opus
            • glibc
          • opus provides libopus.so=0-64
        • libxcb
        • systemd
      • libraw1394
      • libshout
        • libvorbis
        • libtheora
          • glibc
          • libogg
        • speex
          • gcc-libs
          • libogg
          • speexdsp
            • gcc-libs
          • libogg provides libogg.so=0-64
          • speexdsp provides libspeexdsp.so=1-64
        • openssl
      • libsoup3
        • brotli
        • glib-networking
          • glib2
          • glibc
          • gnutls
            • glibc
            • gcc-libs
            • gmp
            • libtasn1
            • zlib
            • nettle
              • glibc
              • gmp
            • libp11-kit
            • libidn2
            • zstd
            • libidn2 provides libidn2.so=0-64
            • libunistring
            • brotli
          • gsettings-desktop-schemas
            • adobe-source-code-pro-fonts
            • cantarell-fonts
            • dconf
              • glib2
            • glib2
          • libproxy
            • curl
            • duktape
              • glibc
            • gcc-libs
            • glib2
            • glibc
        • glib2
        • krb5
        • libnghttp2
        • libpsl
        • libsysprof-capture
        • sqlite
        • brotli provides libbrotlidec.so=1-64
        • krb5 provides libgssapi_krb5.so=2-64
        • glib2 provides libglib-2.0.so=0-64
        • glib2 provides libgobject-2.0.so=0-64
        • glib2 provides libgio-2.0.so=0-64
        • libpsl provides libpsl.so=5-64
      • libvpx
        • gcc-libs
        • glibc
      • libxdamage
        • libxfixes
      • libxtst
        • libxext
        • libxi
        • libxfixes
      • mpg123
      • nettle
      • opencore-amr
        • glibc
      • speex
      • taglib
        • gcc-libs
        • glibc
        • bash provides sh
        • zlib
      • twolame
        • glibc
        • libsndfile
      • v4l-utils
        • hicolor-icon-theme
        • gcc-libs
        • libjpeg-turbo
        • systemd-libs
        • json-c
      • wavpack
        • glibc
    • qt5-multimedia
      • qt5-base
        • libjpeg-turbo
        • xcb-util-keysyms
          • libxcb
        • xcb-util-renderutil
          • libxcb>=1.7
        • libglvnd provides libgl
        • fontconfig
        • xdg-utils
          • bash provides sh
          • file
          • xorg-xset
            • libxmu
              • libxext
              • libxt
                • libsm
                  • libice
                    • glibc
                    • xorgproto
                  • util-linux-libs
                • libx11
              • libx11
              • xorgproto
              • glibc
          • xorg-xprop
            • libx11
            • glibc
        • shared-mime-info
        • xcb-util-wm
          • libxcb
        • libxrender
        • libxi
        • sqlite
        • xcb-util-image
          • libxcb
          • xcb-util
            • libxcb>=1.7
        • mesa
        • tslib
          • glibc
        • libinput
          • mtdev
            • glibc
          • systemd
          • libevdev
            • glibc
          • libwacom
            • glib2
            • libevdev
            • libgudev
            • glibc
          • systemd-libs
          • glibc
        • libxkbcommon-x11
          • glibc
          • libxcb
          • libxkbcommon
            • glibc
            • libxml2
            • xkeyboard-config
          • libxkbcommon provides libxkbcommon.so=0-64
        • libproxy
        • libcups
          • gnutls
          • avahi
            • dbus
            • expat
            • gdbm
            • glib2
            • libcap
            • libdaemon
            • dbus provides libdbus-1.so=3-64
          • glibc
          • zlib
          • bash provides sh
        • double-conversion
          • gcc-libs
        • md4c
          • glibc
        • qt5-translations
      • gst-plugins-base
        • gst-plugins-base-libs=1.24.3
        • alsa-lib
        • cdparanoia
          • glibc
        • graphene
          • glib2 provides libglib-2.0.so=0-64
          • glib2 provides libgobject-2.0.so=0-64
        • libjpeg-turbo provides libjpeg
        • libpng
        • libtheora
        • libvorbis
        • opus
        • pango
          • cairo
          • fribidi
            • glibc
          • harfbuzz
          • libthai
            • glibc
            • libdatrie
              • glibc
          • libxft
            • fontconfig
            • libxrender
      • libpulse
      • openal
        • gcc-libs
    • qt5-webkit
      • qt5-location
        • qt5-declarative
          • qt5-base
      • qt5-sensors
        • qt5-base
      • qt5-webchannel
        • qt5-declarative
      • libwebp
        • giflib
        • glibc
        • libjpeg-turbo provides libjpeg
        • libpng
        • libtiff
      • libxcomposite
        • libxfixes
      • gst-plugins-base
      • hyphen
        • glibc
        • perl
          • gdbm>=1.17
          • db5.3
            • gcc-libs
            • bash provides sh
          • glibc
          • libxcrypt
          • libxcrypt provides libcrypt.so=2-64
      • woff2
        • brotli
      • glibc
      • gcc-libs
      • glib2
      • zlib
      • libx11
      • sqlite
      • gst-plugins-base-libs
      • libjpeg-turbo
      • icu
      • libpng
      • gstreamer
      • libxml2
      • qt5-base
      • qt5-declarative
      • icu provides libicuuc.so=75-64
      • icu provides libicui18n.so=75-64

Another option is to use Nix, which is quite adept at deploying vulnerable software. (cough) I wonder what the size of the closure for quiterss is…

Promising Clients

I am now looking for a new RSS client that meets my client requirements. As described in my client reflections, I (still) prefer to use a native application, not a web client. I do not check RSS feeds continually, and I dislike distracting notifications. I check RSS at certain times during the day, and I prefer to fetch feeds at that time so that they are current. Native applications that only run at those times are a good match for my use case.

I plan on trying out RSS Guard again. The author is doing a great job at maintaining the project. He asked if I could create some GitHub issues for any bugs that I notice. I have not had time to do so yet, but I plan on doing so when I try it out again.

I also plan on trying out Liferea again. Perhaps I can change my deletion-based workflow in order to use this software? It is worth a try.

After using QuiteRSS for more than two and a half years, it might be painful to go back to Thunderbird. Casual observation indicates that both the UI and UX has gotten worse over the years, IMHO. I plan on trying it out again, however.

I occasionally read about new RSS clients. Just today, I saw a Show HN post about a new web-based client called Fusion. While it looks like an interesting project, the screenshot indicates that it would probably not provide efficient usage with hundreds of feeds.

Various Other Thoughts

Rachel Kroll published So many feed readers, so many bizarre behaviors earlier this week, describing some poor RSS client behavior as well as some features that she wishes RSS clients had. It is an interesting read.

It seems like many RSS clients try to provide a stream of posts/notifications like Mastodon or X (formerly Twitter). Checking an RSS feed that rarely updates every ten minutes is not a great design, especially when the TTL and other metadata is being ignored. RSS works great for my use case, where I check for updates at specific times, but something like WebSub (formally PubSubHubbub) would probably work better for people who like such continuous streams. Perhaps I should look into adding support for WebSub to this website when I can find the time.

The demise of QuiteRSS brings the difficulty of software maintenance to mind. In particular, dependencies often incur a high cost. Most difficulties in maintenance of my own projects are caused by the lack of maintenance of dependencies. Thinking about RSS clients in particular, I would be interested in finding a robust client that minimizes dependencies. I need a client that makes it easy to organize and manage many feeds as well as efficiently filter entries. I do not need my RSS client to act like a web browser, as opening non-textual content in a separate web browser is fine. I wonder if I am part of a small minority or if there are many others who prefer to use RSS like this.