gloo icon indicating copy to clipboard operation
gloo copied to clipboard

WebExtensions crate

Open Pauan opened this issue 5 years ago • 3 comments

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.

Pauan avatar Mar 13 '19 04:03 Pauan

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 avatar Mar 24 '19 19:03 OddCoincidence

@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

Pauan avatar Mar 25 '19 15:03 Pauan

There is web-extensions now, which uses web-extensions-sys

dlight avatar Sep 07 '22 16:09 dlight