w3c / permissions

Permissions API
https://www.w3.org/TR/permissions/
Other
105 stars 50 forks source link

Definition of Powerful Features #451

Open torgo opened 1 month ago

torgo commented 1 month ago

Hi folks - this is in reference to our design principles issue which is about harmonizing what we say in design principles with what you're saying here - to avoid confusion and make sure we're in sync. In §3.3 of your doc you state:

A powerful feature is a web platform feature (usually an API) for which a user gives express permission before the feature can be used."

We say in §2.2 of design principles

Some powerful APIs can produce intrusive UI (eg. auto-playing audio), expose user data (eg. interacting with the clipboard), perform a background activity without an obvious indicator to the user (eg. accessing local storage), or prompt the user to interact with trusted UI (eg. permission prompts, device hardware features). These APIs should be designed to require some indication of user intention (such as user activation) in order to function. This indicates that the user is intentionally interacting with the web page in question.

Do y'all agree that this is a good definition of powerful features? Could we coalesce on one definition which we could both reference? Also we are saying "user activation" and you're saying "express permission". Maybe this indicates there are two different levels of powerful features we're talking about? Or should design principles strengthen our recommendation to also recommend express permission?

annevk commented 1 month ago

I wonder if there's a better term that can be used to describe these than "powerful". For instance, SharedArrayBuffer doesn't fit this definition, yet it is definitely considered quite powerful and adding it in a secure fashion required a lot of web platform integration work.

jyasskin commented 1 month ago

Overall, +1 to unifying the definitions. The one here is primarily just so we had a term for "features that need permission".

Some history:

I think there's a useful distinction between the sort of features that Permissions and Design Principles are talking about, and features like SharedArrayBuffer which aren't supposed to expose the user's information but that do require care in their design to make sure that goal is achieved. I've always felt that "powerful" isn't quite the right word, but it's always been the best we could come up with.