- From: Dael Jackson <daelcss@gmail.com>
- Date: Sat, 17 Oct 2020 11:00:40 -0400
- To: www-style@w3.org
- Cc: public-open-ui@w3.org
=========================================
These are the official CSSWG minutes.
Unless you're correcting the minutes,
Please respond by starting a new thread
with an appropriate subject line.
=========================================
Joint Meeting with Open UI
==========================
Font picker control
-------------------
- There is a proposal for a font picker control
( https://github.com/tabatkins/proposal-local-font-access )
which can be the starting point for discussion on how to expose
local fonts without having fingerprinting issues.
Holistic approach to control/component standardization
------------------------------------------------------
- The conversation started out with a presentation from
gregwhitworth and melanierichards
- Slides are available here:
https://lists.w3.org/Archives/Public/www-archive/2020Oct/att-0002/OpenUI-control-model-definition.pdf
- A recording of a similar presentation is available here:
https://youtu.be/2S2nSqh6EUw
- They outlined different levels of customizeability for form
controls:
- None - no styleability or extensibility
- Hint - author provides value that UA applies in spirit of the
property
- Limited - styleable elements and pseudo-elements, but limited
in some way
- Fully Styleable - Developers can opt into standardized parts
and structure and base styles that are fully restyleable
- Fully Extensible - standardization of a control's anatomy,
states, behaviors, allowing re-using controller code via
defined parts
- After outlining the problem space the group discussed about if
this is a problem they want to solve.
- Though it wasn't an issue that web developers can make custom
controls, the problem is that they often feel they have to.
- Additionally, when developers do have to make custom controls it
loses all of the accessibility benefits which come from native
controls.
- RESOLVED: Web developers needing to re-create a browser's form
controls is a problem.
- The group moved on to reviewing some of the proposed
definitions to use when creating requirements.
- There is no normative definition for control so the proposal was
"A control is a type of component that manages user interaction.
The control has controller code that manages changes in the
component's state and its model based on user interaction with
its parts."
- Using the word component was problematic since it has different
meaning in other places. There wasn't an agreement on the right
word to use but some possibilities raised were:
- UI component
- Widget
- Design component
- Element
- The rough definition at the end of the discussion was "A control
is a UI component that manages user interaction. The control has
controller code that manages changes in its state and its model
based on user interaction with its parts."
- Discussion of the definition will continue on github:
https://github.com/WICG/open-ui/issues/81
===== FULL MINTES BELOW ======
Agenda: https://github.com/WICG/open-ui/blob/master/meetings/telecon/tpac-openui-csswg-oct-2020.md
Present:
Tab Atkins-Bittner, Google
Christian Biesinger, Google
Tantek Çelik, Mozilla
Daniel Clark, Microsoft
Emilio Cobos, Mozilla
James Craig, Apple
Bo Cupp, Microsoft
Elika Etemad, Invited Expert
Brandon Ferrua, Salesforce
Mason Freed, Google
Wenson Hsieh, Apple
Brian Kardell, Igalia
Una Kravets, Google
Peter Linss, Invited Expert
Alison Maher, Microsoft
Myles C. Maxfield, Apple, Inc.
Cameron McCormick, Mozilla
Brody McKee, Beamery
Jan Miksovsky, Salesforce
Theresa (Tess) O'Connor, Apple
Simon Pieters, Bocoup
Melanie Richards, Microsoft
Devin Rousso, Apple
Boaz Sender, Bocoup
Jen Simmons, Apple, Inc.
Alan Stearns, Adobe
Francis Storr, Intel
Chance Strickland, Modulz
Nicole Sullivan, Google
Levi Thomason, Microsoft
Greg Whitworth, Salesforce
Scribe: fantasai
Font Picker Control
===================
myles: Font pickers have some benefits we're interested in pursuing
myles: Don't want to expose fonts installed on the system as a list
myles: bad for privacy because of fingerprinting
myles: ...
myles: font-picker could punch through and allow the page to access
fonts installed on the system beyond the basic set
myles: No proposal or plan yet, but want to work on this particular
project
myles: and think Open UI is a good place to do that
TabAtkins: Myles, you aware of the font picker proposal I put
together?
myles: nope
TabAtkins: I'll send you a link
<TabAtkins> https://github.com/tabatkins/proposal-local-font-access
Holistic approach to control/component standardization
======================================================
Problem Space Introduction
--------------------------
gregwhitworth: Meeting called because CSSWG diving into form control
issues
gregwhitworth: Open UI has been digging into this also
gregwhitworth: Melanie and I, while discussing these topics, running
into meta topics not just tech itself
gregwhitworth: Wanted to take a step back and come up with a
holistic proposal
gregwhitworth: so first want to go through the entire presentation
to get a view on the forest, not get stuck on
individual trees
gregwhitworth: Interested in feedback
gregwhitworth: Please save questions for the discussion at the end.
Presentation
------------
Slides are here:
https://lists.w3.org/Archives/Public/www-archive/2020Oct/att-0002/OpenUI-control-model-definition.pdf
Youtube video is here: https://youtu.be/2S2nSqh6EUw
gregwhitworth: I work at Salesforce on the ?? in particular
gregwhitworth: Formerly on EdgeHTML, working on form controls with
the team there
melanierichards: I work at Microsoft doing multiple things as a CM
on HTML platform. One is how can we make more
customizable control UI for Web Platform
melanierichards: Before we get into any solutions, wanted to spend
time to define the problem.
melanierichards: [ projects forced colors mode calendar / color
pickers ]
melanierichards: A lot of work between Google and Microsoft to
update form controls for modern aesthetic, and also
integrate well with different assistive
technologies.
melanierichards: Here's an example of controls working in Windows
High Contrast mode
melanierichards: Problem is that for all of the care and though put
in by each implementer into native control, a lot
of developers are not using them for various
reasons.
melanierichards: Will talk about <select>, special pain point for
devs
melanierichards: Here's several examples of select drop-downs built
from scratch by devs
melanierichards: The fundamental form of the select isn't changed,
no behavioral difference, but desire for slight
changes in styling:
melanierichards: changing the drop-down button glyph, controlling
colors exactly, etc.
melanierichards: Another example is from Delta, where you need to
pick two dates spanning potentially multiple
months, cannot be achieved with native calendar
controls.
melanierichards: Needing to recreate controls in order to match the
branding and cross-platform
melanierichards: That is the common understanding, is it real?
melanierichards: We ran a survey, and yes devs are recreating form
controls
melanierichards: 36.6% just wanted to adjust the appearance
melanierichards: Another 31.6% wanted to add functionality
melanierichards: Third major reason, 27.3%, to recreate is browser
non-interop
melanierichards: When we observe what are the top 10 controls
recreated by web devs
melanierichards: select, checkbox are the top, date close behind,
radio, then file, progress ...
melanierichards: This isn't just this one survey pointing to this
problem.
melanierichards: We talked to top companies, and they would prefer
not to recreate the controls
melanierichards: Can we make this better, can we increase the use of
native controls?
melanierichards: People are recreating these, it's a fact.
melanierichards: but also true that it's causing a lot of pain
melanierichards: 42.7% of devs consider select to be the most
frustrating
melanierichards: date is next, 17%
melanierichards: Others lower
melanierichards: MDN Web DNA survey also lists this as a problem
melanierichards: 26.7% frustrated at inability to customize
components
melanierichards: 20% with regards to missing components
melanierichards: Whatever we do to solve this, need to get brand
cohesion and behavioral cohesion
melanierichards: [ shares some complaints about styling native form
controls ]
melanierichards: Wanted to get a sense of how much opportunity do we
have to solve this problem with customizable
controls
melanierichards: Ran opportunity analysis
melanierichards: 2 buckets of folks: research folks recruited people
in design/front-end/fullstack and then also reached
out on Twitter
melanierichards: Want to figure out is how important is something
for a user, in our case web developers
melanierichards: and how painful is it today, how satisfied are with
it?
melanierichards: Question is, how much impact could we have by
solving this problem?
melanierichards: [ share some sample questions ]
melanierichards: We found that there was opportunity across the board
melanierichards: Anything scoring 10 and above represents a strong
opportunity, and on appearance, frequency, effort,
and interop all above 10
melanierichards: Ability to change appearance of control is
important, and it's a frequent problem
melanierichards: It's a very effortful problem, having to build up
your own control
melanierichards: Interop is a high concern, making customizations
interoperable is super critical
melanierichards: We've touched on the fact that recreating controls
is painful for developer, but also for user
melanierichards: "Are you testing for accessibility on your
controls?" 31.2% said no
melanierichards: no response from 48%
melanierichards: we surmise many of those are nos
melanierichards: This is very unfortunate
melanierichards: When I joined the workforce, we hadn't talked about
accessibility in my program
melanierichards: Have to pull in knowledge from other people,
ad-hoc, while being charged with building
components that have a consistent brand and work
well everywhere.
melanierichards: When recreating controls, putting onus on devs to
get it right
melanierichards: and issue around people not having the right
expertise
melanierichards: Better to build on top of the platform and get
these benefits for free
melanierichards: So we wanted to find out, how does this lack of
a11y testing bear out in the real world
melanierichards: and we find a lot of problems
melanierichards: and even when it works, users get an inconsistent
experience
melanierichards: e.g. for a drop-down, keyboard controls differ from
site to site
melanierichards: One keyboard user has to relearn how to use the
control from site to site
melanierichards: because all been built from the ground up
melanierichards: If make it more customizable, can UA apply
consistent behavior
melanierichards: Testing is also inconsistent across browsers: some
browsers get heavy testing, others not so much
melanierichards: so probably some issues introduced from lack of
testing
melanierichards: Problem space is that people recreating these
controls quite frequently
melanierichards: causes pain for devs
melanierichards: causes pain for users
melanierichards: Next, defining what is a control
gregwhitworth: We've been talking about this for 1.5yr
gregwhitworth: How can we help solve?
gregwhitworth: It's a lot of money being spent to build controls
gregwhitworth: So outlining potential proposals and solutions
gregwhitworth: and also understand what is a control
gregwhitworth: If you go looking for a definition of a control
gregwhitworth: If you want to introduce a new control to Web
platform, this is what you need to define
gregwhitworth: to have a well-defined and usable control
gregwhitworth: doesn't exist
gregwhitworth: So what we found was all the properties hanging off
the element represent the control
gregwhitworth: ...
gregwhitworth: [ gives abstract model of a select ]
gregwhitworth: I have a state of Open, translate that to controller
code
gregwhitworth: Controller code is the intermediary between the view
and the model
gregwhitworth: We started to pull apart all the HTML controls
gregwhitworth: In some cases spec is very specific about the model,
but nothing about the view
gregwhitworth: Other areas where we help with view, but not the
model or the controller
gregwhitworth: So talking about controls, "A control is a type of
component that manges user interaction"
gregwhitworth: ...
gregwhitworth: Spectrum of customization that's wanted by authors
gregwhitworth: This capability already exists, but longer spectrum
gregwhitworth: so we put different controls and how customizable
they are:
gregwhitworth: None, Hint, Limited, Fully Styleable, Fully Extensible
gregwhitworth: ...
gregwhitworth: Is adding a few pseudo-elements enough to solve this?
gregwhitworth: We need to solve the devs' pain points so that devs
use the controls
gregwhitworth: So these are the buckets we've identified
gregwhitworth: None represents exactly what it means: no control, UA
full control
gregwhitworth: Useful enough for some devs
gregwhitworth: Then customization via hints
gregwhitworth: accent-color is an example
gregwhitworth: hint to the browser, here's a color I would like you
to use, please use it
gregwhitworth: Not necessarily bad to go after, but will only solve
some amount of problems.
gregwhitworth: Limited styling gets us to where CSS often lives, in
pseudo-element world. Most are prefixed atm.
gregwhitworth: Let's say we didn't want to go too far, and just made
pseudo-elements for all the parts
gregwhitworth: Let's make it so that in certain scenarios and
certain form factors, we end up always having some
type of button with an arrow on selects, so going to
define this part
gregwhitworth: How to define?
gregwhitworth: Could make a pseudo-element
gregwhitworth: make it easy to change the color
gregwhitworth: That means have to define everything precisely
gregwhitworth: Now can change the color because we defined it as
SVG, but then people want to change the glyph, what
do we do then?
gregwhitworth: Similar to password field investigation, quickly run
into limitations
gregwhitworth: OK, define it as an image asset. But now it's hard to
change the color
gregwhitworth: Interop here is limited. Ultimately pseudo-elements
can only go so far.
gregwhitworth: Why can't we do this today? Parts are not
standardized.
gregwhitworth: Need to do the work of defining what properties are
valid on the various parts
gregwhitworth: Limitations, but also do unlock use cases.
gregwhitworth: Fully styleable
gregwhitworth: this example is super simple looking, but impossible
gregwhitworth: [shows slide where selected option is magnified by
being bolded and has overlapping box size and
drop-down shadow]
gregwhitworth: The listbox itself doesn't allow overflow. There's no
layout capabilities on option elements at all
gregwhitworth: I'm also breaking outside the listbox's border edge
gregwhitworth: Devs have browser of choice they're testing in, so
probably not testing in yours.
gregwhitworth: What ends up being implication, many ways to stack
list boxes on top of each other
gregwhitworth: could use tables, flex, grid, block to do this layout
gregwhitworth: to make this easy for a Web developer to achieve
gregwhitworth: need to standardize how it's laid out
gregwhitworth: If I try to e.g. make the items lay out in a row, use
'flex-flow', works in one browser, but not in others
gregwhitworth: to make this kind of customization, need to
standardize parts, DOM structure, and styling
gregwhitworth: One step further, fully extensible.
gregwhitworth: [shows a select multiple implemented with tags in the
main input area, and drop-down each item has avatar,
name, and title ]
gregwhitworth: Common example
gregwhitworth: Need to define the parts and states, and then can
build up the accessibility model from there.
gregwhitworth: Shouldn't need to scour the web to make the control
accessible
gregwhitworth: build the correct control
gregwhitworth: interoperability needed here is very high
gregwhitworth: So we have these definitions of the various buckets
[ Spectrum of Customizability slide:
None - no styleability or extensibility
Hint - author provides value that UA applies in spirit of the
property
Limited - styleable elements and pseudo-elements, but limited in
some way
Fully Styleable - Developers can opt into standardized parts and
structure and base styles that are fully restyleable
Fully Extensible - standardization of a control's anatomy, states,
behaviors, allowing re-using controller code via defined parts
]
gregwhitworth: What are you bringing and which bucket does it fall
into?
gregwhitworth: So how do we get over from None to where we want to
be?
gregwhitworth: ...
gregwhitworth: How do we remove the limitations?
gregwhitworth: Let's suppose author writes this code
<select><option></option></select>
<gregwhitworth> https://1drv.ms/p/s!AhG1j1eK4stagbq2fYytKAA1kCU7icM
gregwhitworth: To make it fully styleable have to standardize the
parts
gregwhitworth: The only thing I'm opting in here, I want to be able
to have a set of parts and anatomy that are the same
across UAs
gregwhitworth: by adding this in, I can say "apply the standard DOM
and base styles"
gregwhitworth: Now replaced those parts
gregwhitworth: leverages modifications to parts
gregwhitworth: Ultimately, end up with a standardized anatomy
gregwhitworth: Need to make sure we have all the right parts
gregwhitworth: but once we have that base set of styles, when that
is opted into, you get something which looks very
basic
gregwhitworth: and there's a structure that's agreed upon
gregwhitworth: that you can build on.
gregwhitworth: Imagine within a base style sheet that's
standardized, could look like this
gregwhitworth: achieves similar appearance
gregwhitworth: Not ground-breaking, building on appearance
gregwhitworth: What's missing is a base set of styles
gregwhitworth: that the author can start with and build on
melanierichards: Old friend the MVC model
melanierichards: Talking about extensibility
melanierichards: Today primarily talking about extending the view
melanierichards: Also would want flexibility over controller code to
change behaviors, but that's separate discussion
melanierichards: Several ways to do this in our proposed solution
melanierichards: Unlock styling of select, e.g.
melanierichards: imagine select is button part with a .. inside it,
and options inside of that
melanierichards: Author could replace one part of the control with
slot technology
melanierichards: they can then provide richer markup within that
listbox
melanierichards: So here in this listbox, each option has an image,
the person's name, their title, their online status
melanierichards: whichever part not replaced, gets default for that
type of control
melanierichards: Other option is, I just want to replace the shadow
DOM of the control with my own structure
melanierichards: Web developer can use their own
melanierichards: what's critical about this, if you're going to do
full replacement of the view
melanierichards: the parts of the shadow DOM must be labeled with
'part' , and must have all the requisite parts
melanierichards: Controller needs to know which parts it's
expecting, so can wire things up based on that.
melanierichards: With either of these two solutions, we expect
controller control to provide a lot for the web
developer
melanierichards: Would still provide ... and accessibility semantics
melanierichards: Can also wire up correct behaviors, like keyboard
interactions for opening/closing the pop-up and
selecting options
melanierichards: those would all be provided by the platform, rather
than something the author has to provide
melanierichards: In order to do all of this, we require some
standardization
melanierichards: So standardization of anatomy of control
melanierichards: in order to replace slots predictably, need to know
what parts are provided, how are they nested, how
do they relate to each other
melanierichards: All of the screenshots here are from Open UI
research
melanierichards: We also have to define the states the control can
be in
melanierichards: Also need to standardize required behaviors
melanierichards: How does the control transition from state to state?
melanierichards: How does keyboard interaction work? Type-ahead?
These all need to be defined so that they can be
provided predictably from browser to browser and
context to context.
melanierichards: Question: what process do we need for holistic
control standardization?
gregwhitworth: We want to have this approach every time we talk
about a control
gregwhitworth: whenever someone wants to add a control
gregwhitworth: Want to do a thought experiment to make sure we're
doing the best design of the control
gregwhitworth: and wrt full extensibility, need to define the
behaviors
gregwhitworth: If we don't define the behaviors, then author can't
know what to extend and hook into
gregwhitworth: Controls are ultimately a composite of everything
gregwhitworth: All of these companies, everyone building a control
or component, you start with a design
gregwhitworth: and ultimately what ends up happening is
gregwhitworth: they go and look at the existing specs, HTML/DOM/ARIA/
CSS/ etc.
gregwhitworth: they crowd-source
gregwhitworth: Ultimately produce a blueprint
gregwhitworth: Quite a few have user research, e.g. on a touch
device, this is what's the best from user research
gregwhitworth: Maybe there's a very insightful bug filed, but not
shared outside their tracker
gregwhitworth: We want a holistic approach to defining these
components, one place to define the blueprints
gregwhitworth: for the entire web platform
gregwhitworth: The composite standardization of the control
gregwhitworth: not just the element and its sub-elements, not just
the model that's attached to that, but also behaviors
and accessibility, etc. is what makes a select a
select
gregwhitworth: want to have these all defined within open UI
gregwhitworth: We might not end up moving some of these into the Web
platform
gregwhitworth: Example, skeleton component.
gregwhitworth: Not enough consistency of anatomy to put into HTML
gregwhitworth: but common terminology used
gregwhitworth: Went to ARIA and asked a new model, came back with
use existing stuff this way
gregwhitworth: Anyone can come and implement against this
gregwhitworth: So basically process I'm putting forth, when new
pseudo-elements come in for file or range,
gregwhitworth: take to Open UI to define what that looks likes
gregwhitworth: if CSS needs a pseudo-element, then that gets defined
in CSS pseudo spec, along with other primitives
gregwhitworth: ultimately, that's the procedural discussion I'd like
to have
gregwhitworth: That's the end of the deck.
gregwhitworth: Now want to come back and talk about each tree :)
gregwhitworth: So want to take a 15min break?
gregwhitworth: next topic, we'll be discussing the problem
gregwhitworth: Might be pedantic, but want to resolve that it's a
problem
<br duration=15min>
Problem Discussion
------------------
Scribe: TabAtkins
gregwhitworth: The proposed resolution I'm getting toward is
"webdevs recreating form controls is a problem"
gregwhitworth: May seem pedantic, but it's our first goal
astearns: I don't think it's a problem for webdevs to make their own
controls. We shouldn't *keep* them from doing it.
astearns: But since so many do end up spending so much effort on it,
I see the problem as "let's make it easier, so they don't
have to"
fantasai: It's a problem they feel the need to, in so many cases
levithomason: The problem is that they're all creating the same
thing that already exists. If they were creating
something specific that didn't exist, that would be OK
<bkardell> one of the main problems is that it is very hard to do so
and most of them get really important things wrong trying
to fix something rather small
nicole: In my previous incarnation I spent 5 years with a business I
founded to fix people's broken front-ends
nicole: Each place I would consult with, I would think "oh god, I
won't know what I'm doing here, they're gonna do such
different things"
nicole: But actually almost all the code I had to write was the same
for everyone
nicole: A thin layer of different branding, but overall the same set
of components
nicole: So for me it seems like a *really clear* cowpath to pave
<gregwhitworth> fyi - I'm adjusting the proposal based on feedback
as we don't want to imply webdevs building them is
bad, but we should help remove the need
jensimmons: Authors creating their own form controls from scratch,
ignoring html, being stuck only with JS as their tool,
is a problem
jensimmons: Especially for users, for a11y, because it's really not
possible to test on every browser, every device, this is
really something html *should* be doing
jensimmons: I don't think it's a problem that authors have something
powerful letting them do this
jensimmons: A lego kit letting them hook into this all is complex,
but it's more semantic
jensimmons: so I don't think it's a problem that they can do
something complex, I think it's a problem that they're
using something bad for users
una: Problem here is not giving devs the tools they need to build
what they want. a11y issues, everyone recreating the same form
elements
una: Like Nicole said
una: We've heard and seen time and time again, that users need these
browser features, and devs aren't giving them
una: In the work that OpenUI has done, we've looked at these
cowpaths/templates and how they've been used, and that can
bring us in a direction, but really the problem is folks don't
have the primitives they need to build the forms they want
jcraig: Jen stated most of what I wanted, and Una. The primitives
are lacking.
jcraig: One thing to add, the problem is that with the exception of
a few simple controls - clickables/toggleables like radios,
checkboxes, buttons - I've *never* seen *custom* controls
done in a way that includes all the a11y.
jcraig: Even a11y-conscious devs fall short of support that the
platform provides in their builtins. So it's not even just a
convenience issue, it's a real problem.
<jamesn> +1 to jcraig a11y comment
jan: I agree it's a problem, but I think more in economics - if you
consider a control, today controls are fairly monolithic
jan: A select might have, say, 40 different things it's trying to do
- layout, styling, presentation, behavior
jan: If someone is trying to create a special control, they're
generally trying to change some subset of that - they're fine
with 37 of the things it's doing, want to replace 3 of them
jan: But the cost to replace a custom select is not proportional.
They have to replace *all* of them. Wanting to change 3 aspect
you'd think would be less than changing 10 of them, but there's
actually no relationship, they all cost the same (lots).
jan: So I don't think of recreating the entire thing
jan: Devs need a way to do this alteration in a proportionate-cost
way
<jensimmons> +1 to Jan — or, to thinking about the economics.
Without the tools web teams need built into the
browser, only the biggest budget projects can afford to
solve these kinds of needs.
Kaelig: Agree with a lot of this, and the way the problem is written
now.
Kaelig: The platform doesn't allow people to do the right thing.
Kaelig: Even if you're a11y-minded, you're gonna break a11y somehow,
somewhere
Kaelig: Enabling the interaction model to be reused, would be
fantastic
<bkardell> you can't have to throw away all of the wonderful
platform magic to tweak one little thing which just isn't
sweet enough - the more we get away from that being the a
general problem the better off we are
<fantasai> +1 bkardell
miriam: I'm currently living Nicole's 5y-ago experience
miriam: There's different layers of needing to rebuild.
miriam: There are times I need the full extensibility, but often I
need various steps in between
miriam: So important to me as a dev is being able to adjust only
what I need to adjust, not having a control that is either
"no styling" vs "rebuild everything"
TabAtkins: ...
TabAtkins: It's really important to understand how far browsers
relying on OS-level controls are willing to go
TabAtkins: If we make problems that are only solveable by custom
controls, can only solve problems solveable by Chrome
today
gregwhitworth: We'll get to that. I just want to agree that there's
a problem.
jan: Wanna confirm there's a problem here, like acknowledging it.
jan: Is the question about *this formulation* of the problem?
gregwhitworth: This ordering is on purpose, want to agree on the
problem first then talk about solutions
gregwhitworth: So can we minute that nobody thinks we *shouldn't*
address this problem?
<JonathanNeal> I also agree this is a problem I would like to solve.
fantasai: Take greg's resolution as in his slide?
astearns: I think Jan was saying that's not *all* we need
gregwhitworth: Right, but I want to address the additional parts in
a bit
proposed resolution: Web developers needing to re-create a browser's
form controls is a problem.
RESOLVED: Web developers needing to re-create a browser's form
controls is a problem.
Definitions
-----------
gregwhitworth: Definition of a control-
gregwhitworth: taken from openui
gregwhitworth: No normative definition
[on slide] A control is a type of component that manages user
interaction. The control has controller code that manages
changes in the component's state and its model based on user
interaction with its parts.
hober: The high-level definition seems fine.
hober: The word "component" has a lot of very specific meanings on
the web
hober: Might be good to avoid using this word to avoid confusion
gregwhitworth: Would it be worth defining a component?
<JonathanNeal> suggestion for the name: widget
<TabAtkins> Agree with hober, btw, "component" is an overloaded word
already
nicole: I don't think "widget" speaks to what we're discussing here.
People are usually using that to mean something
self-contained; it controls itself, and doesn't interact
with the outside page.
<bkardell> widget is used in html and aria
nicole: Like twitter widget, or commenting widget.
<levithomason> Agree with Nicole on "widget" definition not suitable
to this case
nicole: I think generally speaking, people use "component" and
"control" interoperably
<BoCupp> A control is an *element* that manages user interaction?
<melanierichards> +1, element seems sufficient
<una> "Element" is what came to mind for me at first, but I'm not
sure its better than component
<boazsender> element is smart
<boazsender> (I think element is a smart substitute)
astearns: Suggestion from IRC is "element"
nicole: Doesn't that usually indicate a singular element?
fantasai: Can we just add a note to bikeshed the term later?
<jensimmons> from a thesaurus: part, element, ingredient,
constituent, fundamental, unit, factor
<TabAtkins> Just making it clear: the problem here is the conflict
with "web component"
<TabAtkins> Which is already an existing concept that means
something specific.
<astearns> perhaps a 'design component' then?
levithomason: Greg, on this definition, does this exclude button?
gregwhitworth: No, I'd expect this to include a button
gregwhitworth: A button takes in user interaction.
gregwhitworth: So a button is a control
levithomason: So does that mean a component doesn't necessarily
manage the state? Unless CSS pseudo classes count as
stateful.
gregwhitworth: I think that's getting a bit too specific -
responding to the disable state (and not clicking) is
responding to user input and component state, right?
<whsieh> are progress and meter elements "controls" as well? these
aren't user interactible
bkardell: Based on Tess and Nicole, ARIA and html use "widget" for
this.
gregwhitworth: Do we want to bikeshed the component, but take as
given that the general meaning is correct?
hober: The first line of this, "component" is the load-bearing term.
hober: Hard to take a resolution on it and just say to change the
term later, if that word does all the work
astearns: Can we just remove the word? "A control manages user
interaction"
levithomason: Was gonna similarly suggest we remove the top
entirely; the second paragraph says all the same
stuff, in more detail.
gregwhitworth: The lower says "component" too though?
<JonathanNeal> While it seems hard to agree on the definition
without a word, I hope it’s possible to reach
consensus on whether the aspects/definitions are
unique and helpful.
<BoCupp> I do think there's a danger with this definition that all
elements are controls since states like hover and active
represent user interactions that change the state of the
element - presumably via controller code.
levithomason: The bottom defines "component" in terms of what it's
doing and interacting; the top is just saying "control
is a type of component", making the implicit
definition of component more important
<boazsender> a control manages user interaction, including changes
in states and data
boazsender: I put some text in IRC suggesting we remove/clarify some
detail
<nicole> I like Boaz's definition
cbiesinger: I think we should reuse ARIA's definition, would be
helpful to use the same terms to hook into a11y
hober: Consistency with ARIA sounds good
<jamesn> ARIA widget definition - Widget
<jamesn> Discrete user interface object with which the user can
interact. Widgets range from simple objects that have one
value or operation (e.g., check boxes and menu items), to
complex objects that contain many managed sub-objects
(e.g., trees and grids).
<fantasai> proposes s/component/thing and let's move on
<fantasai> file a follow-up issue for bikeshedding
una: A "widget" being a self-encompassed app, that's how I think of
the word. A more loaded term than "component".
Element->component->widget goes from "least self-enclosed" to
"most self-enclosed"
una: Think removing the term entirely makes it too broad
Francis_Storr: WCAG uses "component" and has a definition for this
Francis_Storr: Linked it
<Francis_Storr> w3.org/TR/WCAG21/#definition-user-interface-components
<levithomason> Proposal: A control is a thing that manages user
interaction. The control has controller code that
manages changes in its state and its model based on
user interaction with its parts.
<levithomason> Above based on feedback so far.
nicole: I wanted to speak to matching ARIA definitions
nicole: I've seen webdevs struggling to understand ARIA even when
they really care, and so ideally it shouldn't be directly
exposed to end developers
nicole: When I fix people's front-ends, I think I've heard *one*
client ask for everything to be accessible. We should make
sure the end result is accessible, but I'm wary to think of
ARIA as having the patterns. Instead, the patterns live in
design systems, so we should look more to that for naming
<bkardell> +1 to what nicole said - that's why I said just to add to
the complexity - I just intend to point out that these
terms are overloaded in complex ways today that mean
different things to different audiences!
msumner: Suggest "UI components". Work with a few frameworks, and we
use that terminology already. I'm in ARIA WG and don't like
using "widgets" either
<nicole> +1 to UI components
<levithomason> Agree fully on following design systems. These are
the things that define the web.
<jcraig> +1 to Nicole's suggestion to follow the terminology from
design systems, not basing them on ARIA controls or patterns
jensimmons: In the context of design system, "component" has a
meaning, "web components" has a meaning. Important to
put some time into.
jensimmons: But this isn't the right place to put time into it.
<una> +1 I liked melanierichards suggestion of "UI component"
<levithomason> Updated proposal: A control is a UI component that
manages user interaction. The control has controller
code that manages changes in its state and its model
based on user interaction with its parts.
<bkardell> UI Component* (to be potentially bikeshed later)
astearns: I'm seeing enthusiasm for "UI component". Could resolve to
take that for now, and open a bikeshedding issue.
<levithomason> Agree on moving on.
<boazsender> +1 to follow the terms from design systems, and also,
let's incorporate the great work aria is doing with the
practice guidelines design patterns:
https://w3c.github.io/aria-practices/examples/
una: I think "UI component" helps identify what type it is, and adds
to specificity of our exact topic
hober: Going back to Jen's comment, we should have this convo
elsewhere, it might take longer than we have here.
hober: What part of resolving on this definition is required for the
rest of the conversation?
<gregwhitworth> I can re-open this one:
https://github.com/WICG/open-ui/issues/81
<boazsender> +1 gregwhitworth I can post my suggestion there
gregwhitworth: Don't think it's needed yet.
<BoCupp> Like the idea of moving on and also liked this suggestion
from Francis for whenever we revisit it:
https://www.w3.org/TR/WCAG21/#definition-user-interface-components
<JonathanNeal> Sharing my enthusiasm on bikeshedding the term,
following Jen’s take that it’s important and it needs
more time.
gregwhitworth: Outside of the term itself tho, seems like people are
okay with the rest of the definition.
<levithomason> Updated proposal: A control is a UI component that
manages user interaction. The control has controller
code that manages changes in its state and its model
based on user interaction with its parts.
levithomason: Sounds like everyone agrees to not solve it right now.
<bkardell> +1 to move on if we can, I think we agree "what we are
talking about"
gregwhitworth: I'll reopen the issue and drop that definition in
<jensimmons> I don't have a "problem" with what this is now, I just
think we can write & will need a better & more rich
definition that'll be more powerful... and we can't do
that right now.
<gregwhitworth> Ok, added the comment of the updated proposal here:
https://github.com/WICG/open-ui/issues/81
<br until=":05 after the hour">
<BoCupp> Back to the control definition for a sec while we are on
break... in the context of HTML we could just list the
specific elements you want to call a control. I guess it
depends on what you want to use the definition for.
<fantasai> Current and future elements :)
<fantasai> so that wouldn't work
<nicole> Yeah... including examples might help, but couldn't be
exhaustive, I think
<BoCupp> We could just add to the list as new elements are created
and avoid any ambiguity.
<fantasai> then you can't talk about the element as being a control
until it's added
<fantasai> The definition isn't a list of elements.
<fantasai> It's a concept, and certain elements fall under that
concept
<BoCupp> OK, it might be helpful to list all the elements we think
fit the definition and decide what they have in common.
<gregwhitworth> bocupp - depends on the audience I suppose and this
is then where we get into where this should live
Received on Saturday, 17 October 2020 15:01:27 UTC