gloo
gloo copied to clipboard
WebExtensions crate
Summary
A crate which contains idiomatic high-level Rust APIs for the WebExtensions standard, which is used to create browser extensions for Firefox, Chrome, and Edge.
Motivation
I personally have made multiple Chrome extensions, so this is something I need and have a lot of experience with.
Being able to create fast and safe and maintainable browser extensions in Rust is a big deal. In my experience JavaScript just does not scale well with big extensions.
But the APIs are... well, rather terrible. So in addition to porting the APIs to Rust, we should clean them up and make them actually reasonable.
I've done this sort of work before in JavaScript, so I know a lot of the weird quirks and gotchas of the APIs.
I would like to work on this, @Pauan would you be willing to mentor?
I assume the first step is to add support for WebExtensions
to wasm-bindgen
, perhaps a new IDL-generated webextensions-sys
crate?
@OddCoincidence WebIDL would be nice, but it doesn't really exist (there's just the non-standard spec, which differs a bit from what the actual browsers do).
There's no need to add support to wasm-bindgen, we should be able to bind to them using the #[wasm_bindgen]
macro.
Sure, I'd be happy to mentor. Do you have Discord? I'm Pauan#6666
There is web-extensions now, which uses web-extensions-sys