SSBC grant proposal - Add SSB features to Firefox
This proposal is for creating an add-on (or multiple) for #Firefox using the WebExtension APIs to add some scuttlebutt features to the browser.
Motivation
At the moment, there are two main ways of interacting with scuttlebutt: running an electron based app or running some form of server and opening a local webapp. In the first case, your scuttlebutt experience is decoupled from your web experience which is at the same time good and bad. In the second case, even if you're using scuttlebutt from a tab in your browser of choice, it doesn't interact with the remaining web experience you have while using the browser. The creation of this (these) add-on, would make possible new experiences and features that are not easy done with the above mentioned ways of running scuttlebutt. I'd like to summarize some reasons why I believe this is a good idea:
Richer interaction with the browser
Using an add-on allows us to tap into APIs that are not available to normal webapps. It opens possibilities for contextual menus, browser buttons, sidebars, and other UX experiences. For example, a compose message window on a sidebar allows you to change your active tab while still composing the message, thus making it a lot easier to compose entries that carry content from multiple sources and to fact-check stuff while you're posting.
Allows us to run one less web engine
There are too many electron based apps in our daily usage. Many of us (me included) are running an editor such as visual studio code or atom, slack, spotify, patchwork, trello app, and each of those apps is one more chrome engine running. Chrome is not known for being a diet browser, if we could run one less instance of chrome, that would help our machine.
Investigate new usage patterns
As this deeper integration opens up new possibilities of usage (mostly by reducing friction), new forms of interaction between the current web and the decentralized web might be investigated. Having a decentralized technology inside a major browser will probably lead to new usage patterns beyond what we have seen so far.
Pave the way for more decentralized features inside major web browsers
Once completed and working, the method of adding ssb features to Firefox will make it easier to add features from other dex solutions such as dat and ipfs, which could lead to larger and more frictionless adoption of those technologies as well.
WebExtensions are a standard
The new add-on API called WebExtensions is basically an standard. The API is shared between Firefox, Chrome, Opera and even Edge and Vivaldi. Each browser has some APIs that are not present in the others but it is a lot easier to port between browsers than it was when each used their own API. This work could later be used in porting the add-ons to other browsers.
What I will build
Due to the lack of TCP and UDP APIs in WebExtensions, we'll use native messaging api to talk to a native companion app built with NodeJS which will have sbot and friends as a dependency. All the ssb features are provides by this companion application which does IPC with add-ons over standard input and output, websockets and HTTP.
A major add-on called patchfox is planned and will provide features that ressemble patchwork/patchbay/patchfoo. We can think of pathfox add-on as a client for scuttlebutt.
Other smaller add-ons might be built if there is time and money to cover features beyond normal patchwork-like usage such as git-ssb, bookmarks and #ticktack
How the money will be used
The money will be used to cover my time as a part-time worker and any other professional I might need to hire (such as buying some custom graphical designs for icons and other GFX).
Why me? Why I need the grant?
Since I started here on patchwork not long ago, I have been building simple experiments talking with sbot from other languages (mostly #red and #webextensions). My investigations proved that it is possible to build a custom scuttlebutt client as an add-on and I'd like to have the resources to build this correctly.
I am a Mozilla Rep and a Mozilla TechSpeaker. I wrote the first book about Firefox OS in the world back when the project was alive. I used to contract for Mozilla Foundation (not as a developer, but as a coordinator for a digital skills social program). I have sent patches to different Mozilla apps and know a lot of people inside. I am in a very good position to build this as I know the APIs well (for add-ons) and know who I can contact if I need help from Mozilla, I also know that I can reach out for all you amazing people in case (aka when) I need help with scuttlebutt APIs.
I am building this anyway but without the grant, I can't devote the necessary time to do this in the best way possible and also in a short time. The grant would allow me to focus.