[HN Gopher] Open UI
       ___________________________________________________________________
        
       Open UI
        
       Author : twapi
       Score  : 87 points
       Date   : 2020-03-30 20:21 UTC (2 hours ago)
        
 (HTM) web link (open-ui.org)
 (TXT) w3m dump (open-ui.org)
        
       | c-smile wrote:
       | Am I the only one who think that <switch> https://open-
       | ui.org/components/switch is a usability disaster?
       | 
       | Distinguishing on/off state only by color is highly non-usable.
       | Neither from a13y perspective nor for ordinary users. And to keep
       | in mind LTR/RTL problems if someone rely on knob position.
       | 
       | What's wrong with classic check box for that purpose?
        
         | hanniabu wrote:
         | I absolutely hate them. 80% of the time it's confusing as to
         | which way is on/off either because of design or because of the
         | wording for that setting/option.
        
         | dragonwriter wrote:
         | > Distinguishing on/off state only by color is highly non-
         | usable.
         | 
         | All of the examples use at least color and position, the
         | majority also add an additional icon in the checked state (one
         | of those also has a different icon on the unchecked state) and
         | Material Design uses a relative contrast distinction (which,
         | unlike a simple color distinction, is readily distinguishable
         | for the colorblind.) There is exactly one (ANT design) that
         | uses only color and position to distinguish between checked and
         | unchecked states.
        
         | superhuzza wrote:
         | Check boxes don't imply immediate effects. They require
         | 'saving' to take effect. Like when you're filling out a form,
         | the checkbox doesn't do anything until the form is
         | 'interpreted' by a human.
         | 
         | Switches(toggles) on the other hand, imply immediate effects.
         | Like a light switch, we expect the change to occur immediately.
         | 
         | https://www.nngroup.com/articles/toggle-switch-guidelines/
        
           | saagarjha wrote:
           | I have never heard of or expected this from my "binary choice
           | components". To my knowledge, switches are used on iOS, while
           | checkboxes are a macOS thing (though they just added support
           | for iOS-style switches, but with a very specific purpose).
        
             | pvg wrote:
             | _I have never heard of or expected this from my "binary
             | choice components"._
             | 
             | It's fairly standard in 'traditional' desktop UI where
             | actions are supposed to be initiated by regular buttons and
             | things like radio buttons and checkboxes are for setting
             | the options of the action. "Radio buttons never initiate an
             | action" says the classic MacOS HIG, for instance.
        
               | saagarjha wrote:
               | Right, but on macOS, checkboxes often apply immediately.
               | Just look through System Preferences, which largely
               | doesn't even have a "save" action: checkboxes have take
               | effect instantaneously. (So do many radio buttons...)
        
               | pvg wrote:
               | Yep, that's why I said 'traditional', this has drifted a
               | fair bit because there's a benefit to providing immediate
               | feedback, especially if the action is some visual and
               | reversible change like turning on dark mode. Windows
               | ribbons are also full of such radio buttons and
               | checkmarks.
        
         | aliveupstairs wrote:
         | if you open iOS settings, you'll see them all over the place.
         | They are not a usability disaster and any shortcoming in
         | articulating intent should be attributed to the designer
         | themselves. Switches can also be used when the binary state is
         | not on/off and you don't want to imply a default state
         | necessarily such as dark/light theme switches.
        
       | sdfhbdf wrote:
       | This website has really messed up mobile view (Safari on iPhone)
       | for a UI project.
        
         | ricardobeat wrote:
         | It also pollutes your browser history with a ton of navigation
         | routes. Not the end of the world, but I feel a project with
         | this ambition needs to have flawless standards to succeed.
        
       | memco wrote:
       | Ambitious project! I hope there's some useful contributions to
       | come for UI development. I was confused by the "concepts"
       | sections--there's little meters with red and green, but it
       | doesn't really express what those meters mean nor how they've
       | been evaluated for each concept. It's surprising to me that
       | something like a "basic" checkbox would get a 3/14 green:
       | checkboxes are a pretty standard form element for both electronic
       | and printed forms: what's so poor about the UI of this element?
       | What's the better alternative?
        
         | chiefofgxbxl wrote:
         | > I was confused by the "concepts" sections--there's little
         | meters with red and green, but it doesn't really express what
         | those meters mean nor how they've been evaluated for each
         | concept.
         | 
         | It isn't explained, but if I'm not mistaken it looks like they
         | put a green box in the meter for each different UI system that
         | they've recorded for it.
         | 
         | E.g. on https://open-ui.org/components/switch, the "basic"
         | switch has 5 green boxes in the meter: Ant Design, Atlaskit,
         | Evergreen, Lightning Design System, Material Components Web.
         | The next example, "autofocus" only has 1: Ant Design
         | 
         | So it appears they are ranking the features (basic, autofocus,
         | default, large, etc. of each component by how much support each
         | feature has across design kits.
         | 
         | I was confused too because using the green/red meter makes it
         | seem like they're giving it a score or rating. A better
         | alternative would to say: "We found 5 frameworks that support
         | this feature"
        
       | maxcan wrote:
       | Ok, I'll post the obligatory XKCD reference https://xkcd.com/927/
        
         | jimhefferon wrote:
         | Fair enough, but there _does_ need to be a standard, or at
         | least a convention.
        
           | maxcan wrote:
           | Oh, I fully agree and would _love_ for this to work. I just
           | felt that this xkcd was going to get posted eventually so
           | might as well be me. From the react world, being able to
           | transition easily from MUI to Ant or something would be
           | beautiful.
        
       | interactivecode wrote:
       | Projects like these are saying just because we figured out how
       | chairs work, everyone should use the same chair.
       | 
       | It just completely misses the point, people like it when they
       | build something themselves it looks how they like it. Want to
       | spend years working on something that looks exactly like
       | everything else?
        
       | PaulDavisThe1st wrote:
       | Back when <insert-SQL-database-vendor's-name-here> "Forms" SDK's
       | and tools where the way that data-centric applications were
       | developed, do you think there was any consensus on naming and
       | components?
       | 
       | You might have been able to leverage some conceptual knowledge
       | from Oracle's tools to the ones associated with Postgres, but
       | everything was different at the syntactic level.
       | 
       | When <insert-software-development-corp-here>'s GUI toolkit were
       | the way that data-centric applications were developed,do you
       | think there was any consensus on naming and components? Not all.
       | People using MS GUI tools would flounder amidst Cocoa, and vice
       | versa. Qt users would have to constantly read the GTK manual, and
       | vice versa.
       | 
       | You might have been able to leverage some conceptual knowledge
       | from one vendor's tools to the ones associated with another's,
       | but everything was different at the syntactic level.
       | 
       | It might be a good idea to settle on some "global" definitions
       | and components, but that hasn't happened before, and I can't see
       | any particular reason it will happen for applications developed
       | around the web platform.
        
         | nexuist wrote:
         | > It might be a good idea to settle on some "global"
         | definitions and components, but that hasn't happened before,
         | 
         | But it has. We all know what buttons, dropdowns, forms,
         | windows, text boxes, etc. are. Windows and macOS gave us these
         | concepts and the Web adopted them.
        
       | [deleted]
        
       | stevenpetryk wrote:
       | Not seeing much in the way of accessibility here.
        
       | grizzles wrote:
       | It would be neat for AB testing if you could make a one line code
       | change and get a whole new style.
       | 
       | This project could just make a positioning component that's a
       | parent to it's different child components and then also way to
       | catch and translate all it's events to it's consumers.
       | 
       | It wouldn't be so bad if you just had to write a thin shim layer
       | to do this for each new component framework you tried out.
        
       | davnicwil wrote:
       | > Untold amounts of human effort are exhausted globally every day
       | on rebuilding identical components for web apps. This should not
       | be the case. The UI community should standardize namings and
       | structures for common components.
       | 
       | It's so tempting to think of all the efficiency that could be
       | gained if we'd stop replicating the same work and just all decide
       | how to do things 'right', unfortunately though this isn't how the
       | best results are achieved.
       | 
       | This is fundamentally a conversation about markets - in this case
       | for ideas. Lots of parallel work is done in a distributed manner,
       | much of it is wasted, but because of the competition between and
       | combination of different ideas, you get emergent results that are
       | really finely tuned to what people actually want in practice.
       | 
       | Top down planning won't get you this. You'll have less waste, to
       | be sure, but you'll also have inferior results.
        
         | brundolf wrote:
         | The web has traditionally followed a pattern where people are
         | left to try out new things themselves, experiment with ideas,
         | have a competitive marketplace of libraries and frameworks, and
         | then once there's a consensus the selected approach gets
         | enshrined and implemented as a browser standard that everyone
         | can use. This happened with DOM selection and XHR fetching
         | (jQuery), with promises, with list comprehensions, with modules
         | syntax (ES Modules). It's time it happened with reactive DOM
         | rendering.
        
           | davnicwil wrote:
           | I know what you mean, but I'd argue while that works for
           | technical details with defined inputs->outputs, it doesn't
           | really work for UI which is a much more open ended
           | problem/solution space which the user directly interacts
           | with. Beyond even the practical concerns with locking
           | yourself down to certain modes of doing UI, there's also just
           | evolving taste, trends of usage, device types etc. I just
           | don't think UI is something you can ever call done.
        
             | akiselev wrote:
             | I don't think what the GP is describing would restrict
             | anyone from innovating in the UI space. What we need is a
             | standard API for framework+component life cycles, tracing -
             | i.e. a currentComponent api for tracking the relationship
             | between JS scopes and DOM elements, and context/slot apis
             | powerful enough to bridge between the parent-child
             | semantics in React/Vue/etc and more complex implementations
             | like Svelte's slots. A better abstraction between browsers
             | and OS accessibility layers also wouldn't hurt.
             | 
             | Think aria attributes, window.requestAnimationFrame, source
             | maps, and the JS debugger statement - not UI frameworks or
             | new standard HTML elements.
        
       | goblin89 wrote:
       | I wonder whether UI component patterns have, in fact, stabilized,
       | and whether an attempt to standardize them could result in
       | stagnation.
        
       | brundolf wrote:
       | The standard is the web platform itself. That's the only standard
       | that will ever be followed to any meaningful degree.
       | 
       | Much of the needless splintering we see today can be traced back
       | to having too many mutually-incompatible reactive rendering
       | systems. If you make a button in React, even though I'd like the
       | exact same button in my Vue app, I can't use it because it's
       | rendered via a different API.
       | 
       | The core barrier _here_ comes down to the different templated-
       | rendering systems. What we need is a browser standard for
       | templated /reactive rendering of DOM content (data + template =
       | DOM). The <template> element doesn't count because it doesn't
       | actually do anything. Web components are nearly useless without
       | having a story for reactive rendering.
       | 
       | Beyond just compatibility this would give web apps a massive
       | performance boost, in terms of both CPU cycles and initial
       | payload size. It's long past due.
        
         | spankalee wrote:
         | > The core barrier here comes down to the different templated-
         | rendering systems.
         | 
         | This shouldn't be a barrier at all. The rendering system a
         | component uses should be an entirely encapsulated
         | implementation detail of the component. Components should
         | absolutely not have to use the same template system to be used
         | together.
         | 
         | This is something web components get very, very correct.
         | 
         | > Web components are nearly useless without having a story for
         | reactive rendering
         | 
         | There are libraries that address just that specific need, like
         | lit-html which I maintain. Again, it's an implementation detail
         | of the component.
         | 
         | > What we need is a browser standard for templated/reactive
         | rendering of DOM content (data + template = DOM)
         | 
         | While rendering should be an implementation detail, I still
         | agree with you here, simply because templating is such a
         | universal need that the platform should provide some primitives
         | to help developers.
         | 
         | The current best proposal in this area is Template
         | Instantiation: https://github.com/w3c/webcomponents/blob/gh-
         | pages/proposals...
         | 
         | The main idea is that it lets you mark up a <template> with
         | references that will be cloned along with the template
         | contents. These references can then be used to dynamically
         | update the cloned instance. You can accelerate most template
         | systems with these primitives. It's critical because the DOM
         | doesn't have any other way to clone a chunk of DOM along with
         | references to specific nodes in that tree without manually
         | walking the clone's tree.
        
         | shadowgovt wrote:
         | This division isn't unexpected. Compare the Mac OS toolbox and
         | the Windows API for UI elements. UI's widget toolkits are built
         | atop the graphics and input APIs below them and tend to end up
         | tightly interwoven (and the projects that attempt to provide a
         | spanning set of widgets across different graphics / input UIs
         | seem to tend to end up looking like a lowest-common-denominator
         | solution with the clock rolled all the way back to the late
         | '80s / early '90s concept of what "good UI" looks like).
        
       | bmn__ wrote:
       | Project neglects UI paradigms/technical terms outside of the
       | browser, that kind of wilful ignorance can only end in tears.
       | Open up `designer-qt5` some time and marvel at the sheer number
       | of UI widgets.
       | https://duckduckgo.com/?iax=images&ia=images&q=qt+designer
        
         | kitsunesoba wrote:
         | Having cut my programming teeth on a Visual Basic analogue and
         | later Cocoa/AppKit, both of which have a similarly rich roster
         | of widgets, going into front end web development was somewhat
         | shocking and frustrating. Where I would've been writing
         | application logic, I was instead writing common widgets from
         | scratch.
         | 
         | It's hard to believe that this has barely changed in the
         | decade+ since then. The web has grown and matured immensely as
         | a platform, yet it's still necessary to bring in (often heavy)
         | third party libraries to not spend all our time writing basic
         | widgets.
         | 
         | At minimum, browsers should provide basics like recycler views
         | that can satisfy a majority of use cases with a little CSS and
         | act as a foundation for libraries to build upon for the use
         | cases they can't. One shouldn't need to pull in heavy third
         | party code for such common functionality.
        
       ___________________________________________________________________
       (page generated 2020-03-30 23:00 UTC)