update on library project
hey, remember when I talked about the fancy distributed library project I announced back in May? no? yeah, me too lol
Okay, but for real this time. It might seem like I've done nothing, but actually, a lot of work has been put in. Honestly, I thought it would be more straightforward, but life is about letting things unfold themselves, isn't it? The time I spent on this project helped me dive deeper into JavaScript and reshape some fundamental design decisions on this project. Here's a brief list of things that have changed since then:
Things that disappeared:
- electron - I decided to get more into go, resulting in a fundamental change to the tech stack. Moving from the heavy, even cloggy node.js based electron to fast and elegant wails along with a go backend. This change, hopefully, will make the whole app more stable due to go's static nature and also make it less resource-intensive. It should work on low-end devices as great as with the high-end ones.
- js ipfs - Not long after announcing this project, Helia emerged as the official successor to js ipfs, leading to the discontinuation of js ipfs support. This added a learning curve to the project, but I hope this change will also improve the overall performance of the app.
Things that appeared:
- welcome on board, scuttlebutt - Initially, I planned to use ipns for storing all data about users, book collections, book metadata, and so on. However, it turned out to be overkill for this use case. Instead, I will implement our own scuttlebutt network in the library to allow users to exchange data fast. Seriously, it's remarkably faster in terms of data synchronization than ipns, which wasn't really designed for such dynamic data like direct messaging, handling live feeds, and tracking user pins collections. Speaking of which, that takes us to the next point.
- pins, boards, collections, you name it - I changed the architecture of the entire app to introduce a new feature: pin boards. Those silly little things to collecting content known from pinterest. Now you'll be able to create your own, for books, which will help save them for later and increase their availability in the sea of the ipfs network. This means other users will be able to fetch them even more efficiently, with less latency, and higher availability. No more waiting for the person who originally published the book to come online to finish downloading.
That was the good part. Now, here are the things that still suck:
- ui - It's eccentric, to not say ugly. Raw and counterintuitive. Since I focused more on backend functionality, the aesthetics of the app unfortunately stagnated.
- dependent on an external ipfs node - While I'm trying to manage running a scuttlebutt node seamlessly in the background, ipfs is still an issue. Not just because it's challenging, but mainly because it's resource-intensive. I'm actively trying to find ways to optimize its performance and decrease bandwidth usage.
- bugs - I mean a LOT of them. Moths even. Since the project is still in its early stages, many things either don't work or if they do, they're unstable as shit (or to be more precise, Uranium-214), so temper your expectations.
In the meantime, the code will be published on my github. Stay tuned and perhaps even contribute to the source code, which would be invaluable help.
Once again thank you for reading, and see next time :3
if you are here, maybe would you like to listen to nirvana?