You are reading content from Scuttlebutt
@SoapDog (Macbook Air M1) %c3nLd7uH4PlNbh7EPbvdYEYTUJujMEy0HSlhW0P375w=.sha256
Re: %1qMKADi2K

Fox McFoxface with a retrospective on the last grant(1).png

This is the second post in my new funding request thread, it is a retrospective post about the last funding round as requested by @elavoie.

Compared to the original proposal, what did you accomplish (even if not in the original proposal)?

My original proposal covered a lot of ground that was to be executed over a six months period. We broke the budget into two rounds and also compressed the timeline into two chunks of three months. I couldn't cover all features I wanted too but I'm quite proud of the work that has been done so far. I think that the idea to break the budget into two rounds was clever and beneficial. It helps us have a checkpoint and be accountable.

Patchfox received 6k EUR to work on the features described in this post.

Wider deployment

This was a major ask in the community since many people here didn't use Firefox and wanted to try Patchfox. I'm happy to say that Patchfox is now available and working on Firefox, Chrome, MS Edge, Vivaldi, Brave, and Opera Next. The only missing browser is Safari. I have a Patchfox version that works with Safari, but to ship it I need to go through the App Store approval process and it is a much more involved process than what I can cope with right now. Safari Extensions need to be shipped as part of a native application, so I've moved this to after Patchfox supports go-ssb because that will enable me to create a native application that bundles go-ssb and the Safari Extension thus making Patchfox for Safari a self-contained solution. Still, we covered almost all evergreen browsers in the market already. :sparkles:

The hardest part was reworking Patchfox to make sure that APIs that are Firefox-only or that are enabled in just a subset of those browsers do not cause bugs when running in other browsers. An example of this is sidebar support which is only available in Firefox and Vivaldi. Previously, clicking the sidebar button in the main navigation menu on Patchfox would break the add-on on other browsers, now it detects which APIs are supported and will only show that icon when browser.sidebarAction.* is available.

Multiple identities support

Patchfox is now one of the few clients that supports multiple identities and the only one that I'm aware that can actually run all of them at the same time. This was not trivial but I had a firm grasp on how to do it. The hardest part was patching all the internal links — things that allow you to jump to a message, a profile, etc — so that opening those links wouldn't always select the default identity. Now, if you're running an identity and open a link in a new tab, that tab is running that same identity. That required a lot of patching.

At the moment, Patchfox is compatible with the JavaScript ssb-server written with NodeJS. This multiple identity work laid down the groundwork necessary to support identities running on other server implementations such as go-ssb and browser-ssb. Identities in Patchfox store which kind of server they're supposed to be connecting, and there is an API to allow Patchfox packages to detect the kind of server they're connected to so that they can branch and use code that is compatible with each implementation. That is already working, what is missing is building versions of the core Patchfox SSB libraries that are compatible with the other servers. All this started with multiple identity support.

New UI

It had became evident to me in the recent year that the UI framework that I was using for Patchfox reached a dead-end. Users were asking for features such as themes that I couldn't implement using those systems, and I also reached a point where I didn't had the components I wanted available to me.

To replace the UI, I had to touch every single view. This took a long time. But now Patchfox has a much better UI framework and is better positioned to implement new features. A recent addition that was only possible due to the new UI is the addition of bundled themes.

This new UI work was not in the original proposal. I had to do it to move features such as gatherings, private messages, and themes forward because I couldn't implement them well with my previous system.

What turned out more complicated than expected?

I underestimated how hard it would be to replace the old spectre2 + augmented UI system with TailwindCSS + DaisyUI. It took half of those three months to get it right, and I'm sure there will be small tweaks and fixes moving forward. I'm much happier with the new system.

Shipping Patchfox for other browsers was not really complicated, it was just a lengthy and tedious process. I spent a long time trying to get it to work on all browsers, and then spent a lot more time trying to get it into the various WebExtension stores. Gatekeepers sucks.

In which state is the project currently?

The project is very healthy and it is looking gorgeous. At the moment, I see Patchfox as a sprint-runner at their starting mark, all the energy bubbling, ready to start running. This initial three months covered a lot of work that is not immediately visible to the user —with the exception of the whole new UI— but that prepared the foundation for much more complex and exciting features which I hope will be funded in this new round.

If the project were to be extended, what would be the next steps?

The following post will cover that in detail.

What could be done to improve the funding process?

I have said this before but I think that the funding process is great. I wouldn't change a thing.

Join Scuttlebutt now