A new side project
Iāve really wondered what my own concrete contribution to the technological landscape could be. Iām certainly limited in time and resources, but there is much that needs to be done. I hoped to come up with a project I could reasonably accomplish on my own, that would make a meaningful impact. I believe I have found that project. One of the languages I spent time learning the basics of was Rust. I followed the development when it was still in alpha and learned the syntax back then. It has taken a long time for me to find the a library for building user-interfaces that is approachable enough for me to understand.
A close contender was the language Go and module Fyne. Fyne is interesting because I could compile for Android. The downside of this pair is that I havenāt spent any time learning Go. So I would have to spend a lot of time familiarizing myself with the ecosystem before really getting started. Rust has an interesting advantage when it comes to learning how to use their libraries.
So my new obsession is the rust library (crate) iced. Itās a cross-platform user interface library that is in itās infancy. When I learned the new COSMIC linux desktop environment built by system76 was built using it, I had to try it out. It turns out that cosmic is adding a lot on top of iced with their library libcosmic. But the goal here is to become proficient at building user-facing applications that can move the needle towards greater online freedom. At the moment I’m not sure if I’ll inevitably need to move from iced to libcosmic, but the goal is to get as far as I can with iced first.
So how can I make a difference?
I sincerely believe that we donāt love RSS enough. Many people treat old tech solutions as ātried and failedā and run off to the shiny new idea. I believe that there are many things that can be done to make RSS a first-class contender in the media landscape. RSS already is a decentralized media ecosystem, we just need to figure out how to bring it to more people. To quote the post, I outline that thereās a great deal of opportunity in building new tools for RSS.
Build Software for RSS
As Iāve alluded to before, there are many applications waiting to be written to leverage the benefits of RSS feeds even further. Lowering the barrier to participation can help adoption significantly, and new software can allow us to leverage the best of our modern systems with the full benefits of the old web.
- Accessible tooling Static site generators are awesome, but it would be great to have an accessible feed generator that allows for non-technical people to create feeds with an intuitive application. The feed generator could have plug-ins to automatically integrate with a variety of web-hosts to make going online significantly easier.
- New media Thereās opportunity to leverage completely different multimedia beyond just news and podcasts. RSS feeds support anything you can link to, so other opportunities like announcements, surveys, or even VR experiences are all possibilities. There is a great deal of software that quietly supports them, that can be used in interesting ways. For example, PeerTube supports RSS feeds for channels. This means that even without using the Fediverse, or even PeerTube itself, you can use a podcast app to have your own independent media experience. AntennaPod is excellent for this.
- Enhancing the ecosystem Some very low-hanging fruit would be updating existing RSS feeds to have a helpful style where they donāt at the moment. By enhancing discovery, indexing, ranking and aggregation features, there is a phenomenal amount of opportunity left yet untapped.
So whatās the project?
Iām building a multi-media RSS browser code-named āReally Sweet Stuffā. Building a functional RSS reader is a relatively trivial task that is a great learning project. You have to learn how to pull information from the web, display it somehow, and add all kinds of extra features to really make it shine. I really love using FreshRSS & AntennaPod, but if I can make a desktop application thatās halfway as good as AntennaPod Iāll consider this project a success.
Immediate to do:
-
Build reader interface for written content
- write code to parse arbitrary html-encoded content to iced widgets with content. (this feels like a huge pain given my current level of comfort with Rust, so I’ll be learning a bit as I do this)
- create placeholder widgets for embedded items like embedded media
-
Store information in a local database
- UI for adding/managing feeds
- Additional features such as read/unread flags and favorites
-
Derive application state from the database
- Basic indexing & full-text search
- high-performance local retrieval of contents from database
- background sync to update feeds
- User-centric design
- workspaces
- user-defined themes
- font-size adjustment
-
UI redesign
Once the application is a feature-complete RSS reader, a concentrated redesign will be required for the addition of more advanced features. Hopefully by this stage I’ll have enough comfort with the library that I’ll have a grasp of what can be accomplished and how I can make the tool more visually appealing.
I have a long-term vision for this project! I think there are a wide variety of features that can make using a RSS browser more effective than other forms of gathering information online. I hope to build a tool that fellow information junkies see as a critical tool in their toolbox, and motivate people to create informative, entertaining and engaging RSS feeds to browse. My hope is that if this project is successful, I can build more censorship resistant software to exemplify what the Libre Solutions Network is all about.
I hope youāll find subsequent updates interesting! A great deal of the near-future work involves stuff that isnāt easy to show off, but will pay performance dividends in the long run. At the same time Iāll be wondering how I should lay everything out, and how to make it be a pleasant visual experience. By the next time I write about this project Iām aiming to have a nearly feature-complete RSS reader, but thatās only the beginning of the excitement!
Where is the code?
It’s not ready yet! But if you’re absolutely curious you can follow my early steps on my code forge