News for hackers. Stuff that matters.
Re:Boden cross-platform framework: Native C++11, native widg... by Signez on Sunday December 02, 2018 @04:57PM (#18584830)
> Native widgets: Instead of drawing widgets that look nearly identical to the platform's design, Boden uses native OEM widgets ensuring that your app will always have a truly native look and feel.

While I fully understand the underlying concept, I don’t understand why so many people seems to be bothered by that anymore; I used to care about that as an Android user, but most of the apps I use everyday on my phone (Twitter, Inbox, Slack, Youtube, even Google Photos or Maps) do not seems to use the pure platform widgets anyway.

Re:Boden cross-platform framework: Native C++11, native widg... by zapzupnz on Sunday December 02, 2018 @07:17PM (#18585443)
Native widgets don't just mean "look". They can also mean "feel". This is particularly true on macOS.

On macOS, I expect certain widgets in order to accomplish certain tasks. I expect that they will respond to mouseover and button presses in a certain way. I expect to be able to use certain key combinations to cause certain widgets to do certain things, I expect keyboard combinations to be able to be redefined in System Preferences.

On the accessibility front, I expect VoiceOver to be able to read what's on screen, I expect it to be able to tell me what a widget's behaviour will be, I expect to be able to get back to where I was using a standard key combo, I expect images to respect colour inversion settings, I expect text to scale according to the system's Dynamic Type settings.

When it comes to handling text; I expect fonts to have the system's native rendering; I expect that Unicode support is complete, I expect macOS' emoji picker to show up; I expect system-wide text replacements, smart quotes, and orthography checking to work as expected, I expect selectable text to show a list of system-wide Services in the context menu, I expect all text to be draggable and handled correctly by the receiver of the drag action.

There are plenty of other things that I can't think of, but this list could get quite long. Suffice to say, Apple put a lot of default behaviours into Cocoa, and apps that (A) don't use Cocoa, or (B) only use Cocoa for drawing but not inheriting behaviours, they don't just look a bit off, they feel _wrong_.

I think we may be immune to this to some extent on mobile, and Windows users haven't known anything other than complete inconsistency, even with Microsoft's own built-in interfaces. But for some of us, if the interface feels wrong, the app goes straight into the Trash.

Re:Boden cross-platform framework: Native C++11, native widg... by saagarjha on Sunday December 02, 2018 @07:29PM (#18585490)
Cocoa Touch, while being slightly simpler and less arcane than Cocoa, still has a lot of semi-hidden behaviors that are nonobvious to cross-platform UI framework implementers.
Re:Boden cross-platform framework: Native C++11, native widg... by zapzupnz on Sunday December 02, 2018 @08:28PM (#18585729)
I notice this most when playing games and I can't get context menus to show up with long presses.
Re:Boden cross-platform framework: Native C++11, native widg... by tokyodude on Monday December 03, 2018 @01:56AM (#18586850)
I'm trying to find an example of this "long press shows context menu". Tried long pressing a link in Safari Mac no context menu appears. Ctrl-Click brings up context menu. Tried long pressing a shortcut, no context menu but ctrl-click brings up context menu. Tried selecting and long clicking a file in Finder. No context menu appears but ctrl-click brings up context menu. Tried selecting some text in TextEdit and long pressing, No luck. Ctrl-Click brings up context menu. Tried long pressing a tab in the ruler, same issue. It seems like even for Apple this isn't much of a standard.
Re:Boden cross-platform framework: Native C++11, native widg... by zapzupnz on Monday December 03, 2018 @02:21AM (#18586948)
The person to whom I was replying was talking about Cocoa Touch, so this was about iOS, not macOS. If it interests anybody, the specific example was Pokémon Go's text fields which _do_ respond to Cmd-V, but I can't long press to get Copy|Paste to show up.
Re:Boden cross-platform framework: Native C++11, native widg... by tom_ on Sunday December 02, 2018 @07:40PM (#18585539)
The takeaway here is that each OS trains you in its own way to look down at all those morons using one of the other ones.
Re:Boden cross-platform framework: Native C++11, native widg... by zapzupnz on Sunday December 02, 2018 @08:27PM (#18585725)
I don't see that at all. Rather, each OS has its benefits, and if the person who designs a toolkit doesn't account for them, you wind up with something middling and foreign that takes advantage of nothing.

For able users, that can come down to minor irritations. For users with special accessibility requirements, that's downright unacceptable.

If my listing of all the features of macOS might have come off as haughty, it's simply because I'm one of the ones who has special accessibility requirements, and the way macOS does things suits me well. Apps that don't use Cocoa, therefore, can really screw me over.

Re:Boden cross-platform framework: Native C++11, native widg... by mwcampbell on Monday December 03, 2018 @12:06AM (#18586444)
In your experience, how do web applications compare to native Mac apps? Of course, a web app can be accessible with both VoiceOver and magnification (based on all the features you listed, I'm guessing you're low-vision). But are even the most accessible web applications noticeably less efficient for you than native Cocoa apps?
Re:Boden cross-platform framework: Native C++11, native widg... by zapzupnz on Monday December 03, 2018 @12:45AM (#18586608)
You're correct, I have low vision. Enough to code and read relatively comfortably, but not for long; so I either make the text enormous or turn on VoiceOver. Below, I'm talking about macOS; I don't use VoiceOver on iOS.

I tend to find with web apps that they're pretty inaccessible with VoiceOver, depending on what they were made with. If it's Electron or React Native, unusable. I just make the text huge. No good for blind users who shouldn't be left out of the fun, but mightn't even be able to find the voice chat controls.

Even when I'm not using VoiceOver, web apps tend not to respect system accessibility settings like text size. When they have them built into the apps as a setting, that's nice but rarely the case. It would still be better to respect my accessibility preferences; I don't go to all the trouble of setting them up for nothing. It's also not like Apple's accessibility APIs have changed drastically over the years, they're pretty stable. I imagine this to be the same for Windows.

In websites, it's usually a different matter, sometimes a bit better. In general, the web version (that is, in a browser) version of a web app is usable to a greater extent, though that doesn't necessarily mean anything, because VoiceOver knows how to inspect the DOM — whereas it isn't expecting that at all with 'native' web apps.

Proper Cocoa apps always win.

Re:Boden cross-platform framework: Native C++11, native widg... by mwcampbell on Monday December 03, 2018 @10:03PM (#18595732)
Interesting. Based on your description, it seems that NVDA on Windows fares better with Electron apps than does VoiceOver on Mac. NVDA's "browse mode" features work equally well whether it's Electron, Chrome, or Firefox (and to a lesser extent in IE and Edge).

In another thread, you wrote that Xcode is the best IDE you've found for Mac simply because it's native to the Mac. Have you tried Eclipse? Given that Eclipse's SWT widget toolkit is based largely on native widgets, it might be native enough. Then again, the editor is custom, so it may still fall short.

I ask you these questions because I'm interested in the perspective of a Mac user who has apparently learned to make very effective use of multiple Mac accessibility features.

Re:Boden cross-platform framework: Native C++11, native widg... by zapzupnz on Tuesday December 04, 2018 @03:33AM (#18597513)
I had to install Java and Eclipse to give it a try just to reply to this comment.

I never liked Eclipse, it always felt extremely non-native to me. Nothing much seems to have changed.

Right from the start, the Eclipse Installer (by Oomph, apparently) is a web app that VoiceOver has difficulty with meaning I have to interact with it using web navigation controls which is a pain when I'm not expecting it.

The rest of the interface was a bit hit and miss. Either VO could read what was on screen, or it thought I was looking at a table that apparently had no elements in it.

Turning VO off and clicking around, still definitely not a native experience, though better than I remember it. Native-handling of text, access to macOS Services… but only in certain parts of the program!

After poking around a bit more, it turns out the only places I could get native handling of text were web views (of which there are many); most text presents non-native controls to deal with things like copying and pasting, precluding the ability to use built-in Services.

Besides that, the way the app is designed was just foreign. Non-native paradigms for presenting information like those tear-off palettes (that turn into weird, full windows when torn off, rather than inspector palette windows; if you click the internal (non-macOS) minimize button on one of these windows, the window itself stays the same size, but the UI inside gets smaller, leaving this huge empty window with nothing in it.

I was curious to see what VO would say about this window. It was just as confused as I was, thinking one of the two remaining on-screen buttons was a checkbox. That's probably how it was implemented internally, but it was certainly not a checkbox. Once I clicked on the internal restore button, the rest of the UI came back, but VO couldn't tell me what it was looking at. I had to Tab around blindly to get to a usable control, and even then, VO couldn't tell me where it was or in what context.

I couldn't actually create a new project because the "Finish" button, when creating a project, didn't seem to do anything, either through VO or using the mouse pointer directly. The button was lit up and coloured as though it were selectable, it just didn't do anything. So I couldn't actually play with the IDE itself, but I knew I was done with it.

The design looks and feels like Windows in the late 90s/early 00s, from the layout of various windows to those weird tear-off sidebar things. I especially despised the tiny icons that all practically looked the same, conceptually blurred together, and I couldn't find a clear way to make them bigger. VO saw each draggable toolbar as separate, making the toolbar at the top unnecessarily difficulty to navigate. Then those same icons infiltrated the global menus, making those a mess to wade through.

I'm a great believer that there is absolutely nothing stopping cross-platform desktop software being a first class citizen on, at the very least, the three main players: Windows, macOS, and Linux. Sadly, Eclipse, like most Java software, thinks it can get away with the last common denominator stuff and force it on other systems. It just makes for a rather unpleasant time, whether VO is on or not. Native widgets don't make up for non-native design patterns.

Sorry for the novel!

As to NVDA, I expect NVDA uses some heuristics to figure out how to read out all the myriad types of interfaces there are on Windows. I remember one app for vision impaired people, I can't remember it's name because I wound up passing on actually buying it, that basically constantly scanned what was on screen and made informed guesses. I'd say VoiceOver probably relies more on well-made apps conforming to system guidelines; if so, it's somewhere between naïve and brilliant, because I personally favour a system where accessibility is a first-class citizen, not an afterthought for which we need to call upon the powers of magic to figure things out.

Re:Boden cross-platform framework: Native C++11, native widg... by tokyodude on Monday December 03, 2018 @01:58AM (#18586853)
I find native apps frustrating that they won't let me select what I want, only what they want to allow me to select, where as in a web page I can generally select whatever I want.
Re:Boden cross-platform framework: Native C++11, native widg... by zapzupnz on Monday December 03, 2018 @02:36AM (#18587011)
This is true for web pages, but not necessarily true for native web apps (like Discord, VS Code, etc.) where certain UI elements are just as inaccessible as in native Cocoa apps; sometimes you can get to them by enabling a web inspector (if it's possible), but not always.

Depends on the app, I find, and how well it's made.

Re:Boden cross-platform framework: Native C++11, native widg... by phs318u on Sunday December 02, 2018 @11:25PM (#18586310)
While the intention of the design may not be what you describe, one of the consequences often is.
Re:Boden cross-platform framework: Native C++11, native widg... by gitoby on Monday December 03, 2018 @03:47AM (#18587289)
Author here. The goal of Boden is very much that the applications should look and feel as if they were custom-coded for the specific platform. We also think that custom widgets often fall slightly short of the native feel, as other commenters have pointed out. While it is certainly possible to make them 100% consistent with other native apps on the platform, it is a lot of work to get all the details right. And not all frameworks manage to do that.

We wanted to try a different approach. Why not just use what the platform gives you and always get the right look & feel out of the box? That certainly creates its own challenges, like having to provide a good abstraction layer for the core application code. But you do not have to worry about look, feel, drawing performance, interactions with other OS features and the like. And when the OS changes something then the app is automatically up-to-date.

Re:Boden cross-platform framework: Native C++11, native widg... by kccqzy on Sunday December 02, 2018 @09:05PM (#18585865)
There are so many hidden behaviors in native widgets that once you get accustomed to, you can't go back any more. Here are a few of the ones:

* Right click the document icon on the title bar to reveal a menu bar for ancestor directories * Drag the document icon into things like an email client as an attachment * Support Emacs-style text editing shortcuts such as C-a C-e C-k everywhere, as well as user-defined ones (I added a bunch of other Emacs ones like M-f) * Trackpad shortcuts such as three finger press on a word to show dictionary and thesaurus * Drag and drop selected text to move it * Hold option while selecting text for rectangular selection

There are many others. I get upset if something doesn't work when I know it should work if the app developer is using native controls.

Re:Boden cross-platform framework: Native C++11, native widg... by zzo38computer on Monday December 03, 2018 @01:59AM (#18586857)
Another thing is Xaw (X Athena widgets). Xaw supports using X resource manager to control some things, and also I like how scrollbars work in Xaw
Re:Boden cross-platform framework: Native C++11, native widg... by 0xcde4c3db on Sunday December 02, 2018 @06:43PM (#18585309)
I might be totally off base here, but I get the sense that native widgets have become a skeuomorph for following the common UX conventions of the platform you're running on, with the latter being what brings the real value. The equivalent conventions for web apps and their desktop derivatives are much looser and don't yield as much consistency on which to build effective user expectations and habits. People who experienced the shift can tell something is missing, and the most obvious correlate is the disappearance of native widgets.
Re:Boden cross-platform framework: Native C++11, native widg... by SiempreViernes on Sunday December 02, 2018 @07:56PM (#18585606)
Maybe you mean that "native widgets" has become just a byword for "following platform conventions"?
Re:Boden cross-platform framework: Native C++11, native widg... by esrauch on Monday December 03, 2018 @03:42AM (#18587273)
I think he means "things tend to either with follow conventions and use native widgets, or they do neither". Users can internalize that dichotomy, and recognize that as soon as they don't see native widgets they probably aren't getting platform conventions either.
Re:Boden cross-platform framework: Native C++11, native widg... by 0xcde4c3db on Tuesday December 04, 2018 @11:16PM (#18605648)
Basically that, yes. I don't think people are necessarily conscious of the association, though.
Re:Boden cross-platform framework: Native C++11, native widg... by jjnoakes on Sunday December 02, 2018 @05:13PM (#18584910)
Getting the native look and feel is nice. Using the native widgets had other benefits too, like accessibility for example.
Re:Boden cross-platform framework: Native C++11, native widg... by maxxxxx on Sunday December 02, 2018 @05:21PM (#18584945)
You also often get UI automation. I hate the trend to not use the built-in widgets. I am talking you, Microsoft...
Re:Boden cross-platform framework: Native C++11, native widg... by asituop on Sunday December 02, 2018 @05:46PM (#18585059)
Especially when Google itself is promoting Flutter which in a way is a non-native UI framework. I think as long as a framework is performant and implements well the design guidelines of the OS this is what really matters
Re:Boden cross-platform framework: Native C++11, native widg... by saagarjha on Sunday December 02, 2018 @06:41PM (#18585304)
Except that Flutter is pretty bad on anything that isn’t Android. The “Cupertino” theme needs significant work; it’s significantly worse than even Ionic is.
Re:Boden cross-platform framework: Native C++11, native widg... by nfin on Sunday December 02, 2018 @07:10PM (#18585416)
v1.0 final is not even out yet...
Re:Boden cross-platform framework: Native C++11, native widg... by zapzupnz on Sunday December 02, 2018 @07:19PM (#18585454)
I don't call that a defence when it's already out in the wild, and people are already talking about it like it's "good enough" when we are already able to use its version number as justification when it's clearly not.
Re:Boden cross-platform framework: Native C++11, native widg... by zapzupnz on Tuesday December 04, 2018 @01:21PM (#18602099)
And now, Flutter is at 1.0 as of today.
Re:Boden cross-platform framework: Native C++11, native widg... by nitwit005 on Monday December 03, 2018 @12:49AM (#18586632)
It's often necessary to make all the native accessibility stuff work.

Sometimes new features come out which will immediately work well with native components, but which require a lot of reworking to work well with something custom. High DPI support is often an example of this.