Chrome (almost) demolished an extension we worked on for three years, and doesn't want to say why

Imagine you have a small business. One fine day, you receive a letter, composed by a robot, informing you that you are violating some point of government regulations. What exactly you are violating is not said, but you are given fourteen days to correct the situation, otherwise you will be shut down. If you receive too many applications for revision, the robot reports, you will be closed without the right to appeal.



This is the kind of Russian roulette that the Chrome web store makes developers play. Some are lucky, and through long bickering and guessing games they end up being moderated - as it was with Pushbullet . Others are less fortunate - they cut off oxygen... We were among the losers: on June 11 we were removed from the market. Business is on the verge of death, and its fate is decided by people who refuse to contact us.



Our extension is a tool for creating an accessible online environment; it allows people with motor impairments or injuries to use voice control instead of a mouse and keyboard when using the browser. We work honestly: no ads, no data pumping - just a transparent choice between a free version and a paid subscription. The rating is 4.7, the number of active users per week is about four thousand. We have invested three years of call-to-call work in this product.



On May 26th we were notified that we were breaking the rules as follows:







ยซ ยป, :



  • , ;
  • , , ;
  • ยซ ยป, , .


, , , , . .



Was: debugger, notifications, tabs, activeTab, tts, storage, unlimitedStorage, host permission

Now: tabs, debugger, notifications, tts, storage, host permission



On June 16, we received a fresh notification that the application was rejected, but now on a different one reason. The letter seemed to us encouraging: it said that the previous version, which was moderated, would remain on the market, we only need to correct the description. The problem was that the previous version was also denied due to a permissions issue. Therefore, our extension was still presented on the market with a 404 page.



Re-opt-out text:



C



, , .



, , .
We decided that this is a good sign: it means that at least we did everything right with the permissions. And this is a matter of paramount importance - if we began to further reduce the list of permissions, we would have to seriously curtail the product's capabilities, including those that our users cannot do without.



We didn't quite understand where the moderators saw the abuse of keywords, but there were really a lot of words in general, because the description included the chronology of changes by version. Accordingly, we removed this part, and the description was reduced by ninety percent. Here is the edited version .



On June 17, we received a rejection letter for the same reason - spam and advertising in the store. At this point, we stopped understanding anything at all and began to compress the description to the maximum. Maybe they didn't like the fact that we indicated specific sites for which the tools were made (Gmail, Google Sheets, Reddit, Hacker News)? We have plugins in the extension that provide special functions for these resources. Well, for example, for Gmail there are special commands "write", "reply", "back to the inbox" and so on. Perhaps the moderators did not delve too deeply into particular.



We quickly threw out the unnecessary from the text until something like that remained .



This morning, June 18th, we received another letter of happiness from the Chrome store. This time the topic of spam and advertising was not touched upon, but we returned to where we started - we were denied because of permissions. How did we get thrown back to our starting position? After all, we only made changes to the description, no new packages with new permissions were uploaded. Some kind of nonsense.



We are completely at a loss. Tried contacting Chrome Developer Support but got no response. Nobody tells us which of the permissions are considered redundant for expansion. We ourselves have carefully analyzed each and came to the conclusion that they are all strictly necessary for work.



All letters from the Chrome administration end with these words:

Regular or gross violations of the Chrome Web Store policies may result in your developer account being frozen or banned from using the platform.
After three years of efforts to make Chrome more accessible, this faceless and inhuman attitude from the store's administration is shocking. Here is a list of the permissions we are requesting. In our opinion, they are all dictated purely by the requirements of functionality.



tabs



The activeTab permission lets us go to the tab from which the user clicked on the extension icon. But this is not enough for our needs. Imagine: a user launches an extension by clicking on an icon and then says "Next tab" to navigate to an adjacent tab in the same window. In this situation, without the permission of tabs, he will no longer be able to issue commands, because activeTab operates only within the tab where the launch took place. This is why tabs is required, which is not so restrictive.



debugger



It is necessary to press the keys with your voice ("press the left arrow", "press Enter"). Listeners that respond to generated events do not fire in many cases, as in Google Sheets or with some divs with the contenteditable attribute. It is impossible to make the permission optional (the restriction is written in the manifest).



host permission



This permission is added by default, because the ContentScript scripts for us should run freely on all pages. You need to inject scripts that interact with the DOM to give users the ability to manipulate the content of the page - click on links, scroll, play videos, and so on.



tts



Implemented for dyslexic users who need to be spoken text. It is impossible to make the permission optional (the restriction is written in the manifest).



notifications



We use it to inform users that the LipSurf extension has been disabled after a long period of inactivity, or that an update has been installed.



storage



The permission is used to store user settings and custom plugins.



Supplement to the article published later



We won this battle, but we did not win the war.



I was lucky. If I had not won the main prize in the Interest of the Internet lottery that day , our project would have been shut down and users would have been left to fend for themselves with a tool that helped them out in everyday life, and is no longer supported. Thousands of people with disabilities could lose their comfortable online environment, and we - our business, because the fate of both was in the hands of an impersonal controller, who also sometimes makes mistakes.



To recap, our Chrome app was removed from the market, ostensibly because it violated the rules. After extensive code edits, numerous unsuccessful attempts to pass moderation and weeks of expulsion from the market without the opportunity to discuss the situation with the administration, we began to loudly indignant on Reddit. Our post caught the eye of someone entering the inner kitchen of the Chrome web store; This man wrote to us on Twitter - said that there was a misunderstanding and apologized. On the same day, we once again sent the extension for moderation and reappeared on the market.



But online complaints should not become a channel of communication with the administration. Developers should not rely on the Internet Interest lottery out of desperation. The Chrome store has been around for ten years, so it's time for them to somehow clean up their mess. Well, we at LipSurf want to take advantage of our enviable position in the spotlight and help other developers improve the system.



First, we want to thank the hero of the day @DotProto . He not only saved us, but also Pushbullet and many others. Moreover, he does it in his free time from work . Although @DotProto says the administration is working on debugging processesfrom the inside, from our side it would be somehow silly to stand on the sidelines, wait and hope. The problem is clearly systemic, judging by the fact that the market forums are littered with pleas for help , and in the comments to our post on Reddit, a whole census of such stories has been collected . It can happen to others and is more likely to happen.



Based on this, today we are opening a group for developers collaborating with the Chrome Web Store, which will conduct a dialogue with the market. This is not a technical support channel or a platform where you can attract attention if the administration does not respond to you. This is the place where developers can get together and discuss how to improve the fundamental principles of collaboration. The initiative is not organized by Google and the group is not under its leadership.



Together we will have a better chance of success in the following:



  1. Convince Google Chrome to allow stores with third-party extensions. This will add variety to a previously fenced-in range of extensions, put developers in a better position, and reduce the risk of your product being irrevocably demolished simply because.
  2. Chrome . , , โ€“ , . , - .


You need to start huddling together and build your defenses now - if you don't, everything will remain in the hands of a controller named Chrome. The forum will also be open to company employees and people who advocate for the interests of developers, like @DotProto. We're not going to fight them, in fact - a good platform itself stands for, not against its customers.



If you are developing extensions for Chrome or you have friends who are doing this - please support the endeavor by filling out the form or dropping the link . We plan to open a forum as soon as we make sure there are enough interested people.



FAQ
?



, , , , . Chrome . โ€“ , (, ) , .



adware , ?



, โ€“ , . , Google.




All Articles