4 ms·
The project might do a better job of explaining what it actually intends to solve. At least as far as the readme.md goes. I have been active in the area of bro
by creesch 2y ago
The project might do a better job of explaining what it actually intends to solve. At least as far as the readme.md goes.
I have been active in the area of browser extension development for over a decade now. And to me, it wasn't very clear at first glance.
It isn't crossbrowser extension development (which these days is actually fairly easy if you ignore Safari.... [0]).
The README showcases adding a lot of other frameworks and scaffolding, which to me isn't what makes extension development all that challenging. In fact, using a modern modular approach can be achieved using something like rollup [1].
Of course, I do believe that Plasmo makes setting it all up a lot easier. But just looking at the terminal animation I also can't help but feel that it adds a lot of abstraction I might regret later. To be clear, I also do realize that some people don't mind this and think it is easier to not have to think about the details.
Only when digging a bit deeper into the actually documentation [2] it starts to make more sense to me. From what I gather:
- Manifest creation is done entirely by plasma. You can just declare the thing you want to use or create in the right place like an options page [3]. Which is actually quite neat and something I can see makes things a bit easier for someone freshly starting with extensions. Although I'd argue that the manifest of an extension is not the most complex thing [4], even more when I see that for that with Plasmo you still need to declare similar things just at a different spot [5]
- It provides some scaffolding and abstractions around things like storage and messing between content_scripts and background workers.
- There are some neat utilities available for publishing extensions.
Overall, it looks like it like it does take away the creation of an extension and a lot of the utility functions you would need to write anyway. However it comes at the cost, in my opinion, of extreme abstraction to the degree that a beginner basically will have learned Plasmo and still have next to no understanding of browser extensions themselves.
It's one of those things where I wish this sort of tooling was available around a decade ago but I am also glad that it was not given the knowledge it gained me.
[0] https://news.ycombinator.com/item?id=41043974 https://news.ycombinator.com/item?id=41043974
[1] https://github.com/toolbox-team/reddit-moderator-toolbox/blob/master/rollup.config.js https://github.com/toolbox-team/reddit-moderator-toolbox/blo...
[2] https://docs.plasmo.com https://docs.plasmo.com
[3] https://docs.plasmo.com/framework/ext-pages#adding-the-options-page https://docs.plasmo.com/framework/ext-pages#adding-the-optio...
[4] https://github.com/toolbox-team/reddit-moderator-toolbox/blob/master/extension/chrome_manifest.json https://github.com/toolbox-team/reddit-moderator-toolbox/blo...
[5] https://docs.plasmo.com/framework/content-scripts#adding-a-single-content-script https://docs.plasmo.com/framework/content-scripts#adding-a-s...
- aflorez 2y agoThank you for this thorough analysis. I've built an extension myself with React and TypeScript an honestly I don't know why I would need an extra tooling to make this work. The docs supplied by Google are quite good!
- creesch 2y ago> The docs supplied by Google are quite good! They are okayish in my book. Personally, I prefer using the MDN docs [0][1] for web extensions as I am using mozilla's polyfill library [2] anyway. These contain more practical examples and less abstract descriptions at times, including a very thorough getting started guide [3] going over everything including various concepts. The point remains the same though, the basics aren't all that difficult and while Plasmo does seem to make some aspects easier it also seems like overkill in other areas in regard to abstraction. [0] https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/Browser_support_for_JavaScript_APIs https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/Web... [1] https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/Web... [2] https://github.com/mozilla/webextension-polyfill https://github.com/mozilla/webextension-polyfill [3] https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/Web...
- moi2388 2y agoThey don’t ignore safari. It creates a bundle for it which you run through Xcode and then it just works perfectly in safari as well. It’s really a great little framework
- creesch 2y agoI am saying that I ignore Safari, for a variety of reasons including not having a device to run Xcode on. I am also highly doubtful of it working perfectly given my experiences with Safari's implementation of the webextensions API. Though that of course depends on what API calls you actually need.