Zed pulled from the Chrome Webstore

This morning I received a notification from Google saying Zed has been pulled from the Chrome Webstore. This is significant because around 80% of Zed users use the Chrome web version, and about 41 thousand people have Zed installed this way.

Dear Developer,

Your Google Chrome item, "Zed Code Editor," with ID: pfmjnmeipppmcebplngmhfkleiinphhp did not comply with our program policies and was removed from the Google Chrome Web Store.

The Program Policies can be found here: https://developers.google.com/chrome/web-store/program_policies

I was surprised, so I checked the policies, but indeed: if you scroll down a bit you get to the "Chrome Apps Quality Guidelines" there's an item that reads:

Packaged and Hosted apps should not:

  • Download or execute scripts dynamically outside a sandboxed environment such as a webview or a sandboxed iframe.

And guess what, this is exactly how Zed implements its extensibilty features. About 75% of code included when you download Zed runs inside a <webview> sandboxed environment, and now -- I'm not sure if this is a new policy or not -- this is not allowed.

I've always realized that running so much of the code in a sandbox, and exposing extra APIs to this sandbox was a bit of a grey area. However, I've been very open about how this works and why it works this way. In fact, I even presented this at Google itself (an extended version of a talk I gave there, I gave at the STX Next Tech Summit where it was recorded, if you're interested).

So, yeah. Awesome.

I see four paths forward:

  1. I remove all extensibility features from Zed, severely limiting the ability of the user to extend Zed with custom scripts and packages. In practice, only allowing to run everything that comes bundled with Zed. This way Zed can go back in the Chrome Web Store.
  2. I switch over to another version of extensibility that I once prototyped, which is to use Chrome Extensions to extend Zed (for a description of how this can work, see the STX Next tech summit talk I linked to before). This is technically possible and shouldn't break any rules in place today. But again I would be in a grey area, using Chrome extensions in a way they weren't intended. Will I face the same problem again in a few months?
  3. Just accept that Zed won't be in the Chrome web store and tell people to clone the Github repo (or download a zip) and install Zed into Chrome that way.
  4. Completely ditch the Chrome Web Store version and go node-webkit (or nw.js, or Github's thing) only. That is: switch over completely to a downloadable app. This simplifies a bunch of things (supporting both node-webkit and the Chrome App version isn't always easy), but as I said: right now, about 20% of Zed users use the downloadable version.

Either way, this pull will result in a lot of lost users, which is a big shame. Option 1 or 2, it will also result in a lot of work to be done to make this work. Effectively, option 3 is in place today already.

I have to think about what to do next. For now: you can clone the Github repo and install Zed that way, instructions are in the README.

If anybody has any creative ideas, get in touch.

Update: It looks like Google just put Zed back in the Web Store.