This is the third message in my funding request thread.
Priorities and Cost Breakdown
Basic needs for feature completeness (Tier-1)
These are the new features, improvements, and fixes needed for Patchfox to become a viable main client. In the original proposal they are:
- Private Message Support
- Gathering Support
The new UI work was done so that I would have a better toolset to work on these features.
I guesstimate that they will take each two weeks of work.
Go-SSB and Browser-SSB support (Tier-1)
Now that multiple identities work, it is time to implement support for both Go-SSB and Browser-SSB. Patchfox separates treats each server as a different platform. When a user selects an identity, Patchfox launches itself and selects the appropriate platform for that identity. You can see the platforms here. In each platform there is a
SSB High-Level API library that provides the features that are used by the packages. I need to implement a version of this library for each of the new platforms.
NodeJS SSB-Server, Go-SSB, and Browser-SSB are all Secure Scuttlebutt but their selection of plugins and indexes are different. For example, I can use the amazing
ssb-db2 with Browser-SSB but I can't do it with the NodeJS SSB-Server (as loaded by Patchwork). SSB is very flexible, creating these libraries will mostly be a work of patching the current one to work with the other implementations and separating the new patched copy on its own.
This is also an opportunity to refactor the mess inside the main
SSB.js — the Patchfox SSB High-Level API library — that file is thousands line long and has a ton of duplicated and unused code inside. It really needs a clean up. A lot of developers in SSB enjoy working with the protocol itself, I never did. What I want to do is applications and provide nice features to the users. That means that I was slopy and cut some corners when dealing with low-level work. Not cutting corners in sense of doing something harmful, but made some decisions that make it harder to maintain such as having many different ways to execute a db query instead of a single canonical way.
I foresee one month of work for each platform.
That is it. I'm cutting down on the original proposal and focusing on the features I think are more useful and that can be delivered on time.
Feel free to reach out with feedback, questions, or general comments.