Hey all,
This API enables inter-app/extension communication. In a sense it's a bit like using an external sandbox, much like Zed already has in a sandbox iframe (in which all the current extensions are run). However, the advantage is that we could reuse the Chrome web store as a distribution channel for Zed extensions and offer better debugging support (the extension can be debugged separately from Zed).
A user can simply:
1. Install Zed
2. Search the Chrome store for cool Zed extensions (Rust language support, say) and install it
3. Uninstall the Rust extension if it he or she doesn't want to use it anymore
The current hypothetical flow is:
1. Install Zed
2. Find an extension somewhere online (none exist at this point)
3. Clone the git repo
4. Drag & drop files into the configuration project
5. Patch /user.json to load the extensions JSON file
Removing would require removing the individual files.
Of course the latter flow can be improved, but why not use the Chrome's built in mechanism for discovering, installing and removing extensions?
I only see two potential problems:
1. Performance may not be great (although I highly doubt this will be a bottleneck)
2. Inter-extension communication happens based on application ids. That means that all extension would have to know Zed's id. If everybody installs Zed from the chrome web store, this is fine, but if you have a local clone your ID will be different and id won't match. That means that you'd also have to patch the extension code to make it work.
Note that both approaches have the advantage of taking your extensions with you wherever you go, since Google Chrome automatically syncs your installed extensions and apps wherever you login.
Thoughts?