@justin2taylor
The problem is that people usually don’t read EULAs. With that being the case, it could be very problematic to have “black sheep” in the current plugin infrastructure since with no rating features, review section in the plugin manager and things like that, there is no real way to call a plugin out for doing malicious things (except reporting it to Adobe, where it would take time for something to happen, in which other users install the plugin and begin to have their doubts about the plugin ecosystem).
In all honesty, if it is clunkiness that’s required for better protection of users (who often have to be extremely careful due to NDAs etc.), so be it – I get your point, but I think that when weighing both sides of this, a system of “xy wishes to access feature xy, allow this time, allow always or disallow” simply has so much better protection of the users that it outweighs inconvenience (also, with single permissions at the correct time, designers under NDAs and such things can rest assured that nothing happens without their consent and that it is, therefore, safe to use plugins in all situations.
Also, having it split means users can agree only to the aspects needed for what they’re using the plugin for. Take the Twitter app for phones, for example. I’ve given it permission to access network stuff (for obvious reasons), but I’ve never agreed to let it access my camera and microphone (because I simply don’t use the features that need that). This allows for user control over what they need and want and for us as developers to explain why we need something. With the Twitter app, for example, it would be unclear to me why it needs to access my microphone when installing the app, but when I want to start a live stream, it’s fair enough that it requires such permissions.
See my example with Twitter above – sometimes, permissions might seem malicious out of context. It might be an idea to let the user decide how they would like to control permissions (per-request or all at once). This way, users who want or need that control have it while folks who just don’t care (for whatever reason) can “blindly” accept everything. That way (when something bad happens), it isn’t the plugin ecosystem’s fault when something happens and it, therefore, wouldn’t affect all other plugins as badly.
All in all, I can absolutely see how you think about it, but being the ethics-in-technology-oriented person I am, I simply have to say that at least for me, the risks outweigh the benefits of a “simplified” permission system and users should – in my opinion – have such control when something they install comes through a “simple” app-store-like plugin manager where they can’t be sure about the source. Don’t get me wrong here: I’m not saying you’re wrong, I’m just adding my opinion to this to hopefully get all of us to a solution that’s best for all of us (developers and users)…
A small proposal for how permissions could work:
try {
app.getPersmission(PERMISSONS.RUNEXTERNAL,
'to analyze the picture') // Throws if permission doesn't get granted
// Do stuff with the permission
} catch (e) {
// Handle "permission not granted"
}
This could then show a dialog like this:
The plugin “My plugin” requires permission to run external apps to analyze the picture.
Don’t ask me again
Allow – Disallow
This would allow us as developers to explain why our plugin requires a – otherwise potentially malicious-looking – permission. Depending on the user’s preferences. He/she could also get asked if he/she wishes to allow all of the permissions needed (specified in the manifest.json
) when installing the plugin to be unintrusive if a user prefers that.
PS: Sorry for the long message – it’s just that I love civilized discussions about such things (especially when it comes down to user privacy and security) and this community is just great as it “allows” for civilized discussions (instead of taking things personally etc., which happens in many other online forums)