Live data from Hacker News

Boden cross-platform framework: Native C++11, native widgets, no JavaScript

github.com

71–80 of 98 posts

Re: Boden cross-platform framework: Native C++11, native widgets, no JavaScript

#71

Earlier quoted context omitted.

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?

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…

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 widgets, no JavaScript

#72
post #52
post #2

> 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 (Tw…

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…

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 widgets, no JavaScript

#73

Earlier quoted context omitted.

I notice this most when playing games and I can't get context menus to show up with long presses.

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…

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 widgets, no JavaScript

#74
post #55

This does not appear to be idiomatic C++11. I mean: bdn::P button = bdn::newObj (); Idiomatic would be to use std::shared_ptr and std::make_shared, instead of yet-another-custom-smart-pointer.

Yes, I was also wondering why it's necessary to come up with yet another smart pointer, which you need to learn and which is probably not battle tested.

They also seem to have wrapped the STL, which I think is a big no-no. No real reason to relearn something new if there is an established standard. A modern C++ library shouldn't do that.

Re: Boden cross-platform framework: Native C++11, native widgets, no JavaScript

#75

Earlier quoted context omitted.

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…

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.

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 widgets, no JavaScript

#76
Why is it that nowadays all kinds of libraries go down the framework path by forcing/encouraging the user to adapt their workflows to use some kind of custom tooling?

I mean look at the readme: Getting Started? Just call "python boden.py new -n AwesomeApp"

Just provide examples in source form with minimal and standard instrumentation (like project files) and leave the rest to the user

Re: Boden cross-platform framework: Native C++11, native widgets, no JavaScript

#77

Earlier quoted context omitted.

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 exper…

Maybe you mean that "native widgets" has become just a byword for "following platform conventions"?

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 widgets, no JavaScript

#78
post #2

> 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 (Tw…

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 widgets, no JavaScript

#79

GPL means its pretty much unusable...

Author here. We’re still in the process of figuring out what the right open-source licensing model for Boden should be. In the long run, development must be financed by a viable business model as Boden is not a hobby project. We’re considering adding a commercial option later, ending up with a dual GPL/commercial license similar to other projects. We’re happy to hear your thoughts about other licensing options!

Re: Boden cross-platform framework: Native C++11, native widgets, no JavaScript

#80
post #55

This does not appear to be idiomatic C++11. I mean: bdn::P button = bdn::newObj (); Idiomatic would be to use std::shared_ptr and std::make_shared, instead of yet-another-custom-smart-pointer.

I am a member of the Boden dev team. The smart pointer system is actually still a topic of discussion in the Boden team as well. It has a couple of nice properties, like the fine grained control bdn::P gives us over the time when an object is actually destructed. For example, these pointers provide an easy way to ensure that destruction of our View objects happens only on the main thread, no matter which thread released the last reference.

But on the other hand, not using the standard constructs definitely has a cost associated with it. We are happy for your feedback on this issue.

Note that we also think about the idea of transforming P and making it a specialization of std::shared_ptr for objects derived from bdn::Base. That would give us the best of both worlds. Feel free to let us know what you think.

Post reply on HN