[HN Gopher] Things I wish I knew before making a paid extension ... ___________________________________________________________________ Things I wish I knew before making a paid extension (2019) Author : luu Score : 32 points Date : 2020-05-22 07:48 UTC (15 hours ago) (HTM) web link (www.amie-chen.com) (TXT) w3m dump (www.amie-chen.com) | mastermojo wrote: | YC W19 Sapling here. We have a freemium browser extension that | acts as a grammar checker. Couple thoughts below: | | 1. Source code. You are allowed to minify source code. Chrome | actually recommends minifying source to improve performance. If | you require certain permissions you'll have to submit un-minified | source for security review. | | 2. Cloud/subscription based models are the way to go if piracy is | an issue, but it doesn't make sense for all products. Licensing | hasn't been an issue for Sapling fortunately because the "brains" | of our app are in the cloud. I know hacker news is very privacy | conscious but our language models are too large to run on a | user's end machine right now. Spier Pro seems like a useful web- | scraping helper. People who can pirate a chrome extension | probably can probably run xpath scripts or a free xpath testing | extension themselves so if I were Amy I wouldn't worry _too_ much | about piracy. | | 3. Forked Code. There should be no reason to do it. Firefox and | Edge have done a lot of work to support most of the chrome apis. | You can handle minor edge cases build time with a variable | toggle. Keep the same manifest, even. Browsers are good about | ignoring keywords in the manifest they don't recognize. My | recommendation is to pretend they are the same platform until you | find bugs/issues and hard code around them. Theres a handful but | it's very manageable. | | [0] https://blog.chromium.org/2018/10/trustworthy-chrome- | extensi... | | [1] https://stackoverflow.com/questions/37649620/does-chrome- | mar... | | [2] https://developer.mozilla.org/en-US/docs/Mozilla/Add- | ons/Web... | AlexITC wrote: | > 3. Forked Code. There should be no reason to do it | | The actual problem is that some APIs are different, for | example, in Chrome the notifications has a richer set of | options but you need to be careful to not use the ones not | supported by Firefox. | | > Keep the same manifest | | Actually, it depends on which options you use, for example, | i18n placeholders aren't supported in Firefox while they are in | Chrome, in Edge, the manifest is drastically different. | diob wrote: | I've had some extensions that were approved, had no changes, | then suddenly disapproved because someone on the chrome team | decided to re-review it and didn't understand webpack / | minification. | | I've been so busy I haven't bothered to go try and "fix" the | extensions. These are OSS extensions, nothing paid, so I all | the code is available for the reviewer to read by the way. | mastermojo wrote: | Yea, I've seen some some stories around Chrome review | problems, most recently around pushbullet. I think it the | review outcome depends a little bit on a mixture of reviewer | and the permissions required. The more permissions an | extension asks for the longer the review process, and | unfortunately some false positive flags do happen now and | then. | weaksauce wrote: | Browser vs chrome point is moot. Both namespaces exists in | Firefox and there's a polyfill to bring the browser namespace | into chrome if you want to use promises over function callbacks. | https://github.com/mozilla/webextension-polyfill | AlexITC wrote: | As you said, the namespace is not a problem but some APIs | definitely are, for example, in Chrome the notifications has a | richer set of options but you need to be careful to not use the | ones not supported by Firefox. | quwert95 wrote: | These are great points. I'd like to add some more to them: | | On minified source code, Extensions/Add-Ons are allowed to be | deployed with minified source code as long as you provide the | unminified versions to Google/Mozilla during review time. | | On chrome vs. browser namespaces, a quick 'let chrome = browser;' | can help you keep the diffs small between versions. I have yet to | find a complete solution to fixing 'forked code' between | Google/Mozilla Extensions/Add-Ons. | | Also, storage mechanisms between browsers using the same | extension code can be completely different. Beware if you're | using caches, navigator.storage, and storage.local. | | Finally, extensions don't consider themselves secure, depending | on the browser. moz-extension:// is not considered secure for | cache access, whereas chrome-extension:// is. | | There lots of little 'gotchas' like these when developing browser | extensions. :) | VWWHFSfQ wrote: | > as long as you provide the unminified versions to | Google/Mozilla during review time. | | I'm curious how they could know that the source code is the | same | weaksauce wrote: | They ask for the minification command that was used as well I | believe. | AlexITC wrote: | Firefox asks you to provide the source and the instructions | to get the same build you are submitting to the store. | [deleted] | AlexITC wrote: | > as long as you provide the unminified versions to | Google/Mozilla during review time. | | I have been publishing extensions for a while and never found | Google asking me for the source code, is there any hidden | option to submit it? | | Another detail I have missed is release notes, Firefox is | supposed to provide those but I have never been able to add | them, Chrome doesn't seem to display them but I have got my | submission rejected just after "improving" the description. | | > On chrome vs. browser namespaces, a quick 'let chrome = | browser;' can help you keep the diffs small between versions. I | have yet to find a complete solution to fixing 'forked code' | between Google/Mozilla Extensions/Add-Ons. | | Firefox actually supports the chrome namespace but you need to | be careful as some other APIs are different, for example, in | Chrome the notifications has a richer set of options but you | need to be careful to not use the ones not supported by | Firefox. ___________________________________________________________________ (page generated 2020-05-22 23:00 UTC)