Live data from Hacker News

Revery – Native, high-performance, cross-platform desktop apps

github.com

81–90 of 129 posts

Re: Revery – Native, high-performance, cross-platform desktop apps

#81

> As a consequence, Revery is like flutter in that it does not use native widgets. This puts a step above Electron, but one below wxWidgets in my hierarchy of cross-platform desktop frameworks. It really annoys me when frameworks pretend they are "native" (to separate themselves from Electron) but don't actually use native widgets. Sure, you might be getting a performance gain, but you're still losing on platform-spe…

I think it's a matter of taste.

If you like native widgets more, you can look into briskml

https://github.com/briskml/brisk

Re: Revery – Native, high-performance, cross-platform desktop apps

#82
I doubt that it's feasible to reimplement GUI widgets. They require tons of micro behaviors. Revery will need to implement not just the looks, but also input, with a bunch of different devices in various configurations―which means lots of possible combinations and interactions between the elements.

Since Revery doesn't use native widgets, it will lose all advanced native features―e.g. nuances of input handling, and automation―or will have to reimplement them one by one on the low level, polluting the code with native paradigms from each platform.

Browsers and GUI toolkits spent decades on this, and still they lag behind, as evidenced by QT's non-support of keyboard remapping on MacOS (i.e. sane “home” and “end”).

Re: Revery – Native, high-performance, cross-platform desktop apps

#83
did all of this spawn from Phonegap? I remember when Phonegap first came out, it was a clever thing but rough around the edges. I used it when chasing the cross-platform mobile app dream with some success.

Then Apache picked it up as Cordova and the Ionic framework really helped to show what could be done with it. Ionic has come a long way and I'm, today, finishing up a client mobile project using that framework.

A while back I recommended Electron to a colleague who was tasked with implementing an old java applet as a stand alone application (we're all web developers) and it really saved him a lot of grief (client was happy with the price tag too).

To me, Electron is Phonegap for the Desktop. Is that how this all came about?

Re: Revery – Native, high-performance, cross-platform desktop apps

#84

> Revery is the same - aside from platform-specific behavior, if your app looks or behaves differently on another platform, that's a bug! I want my applications to feel like they belong to the platform and not identical on every platform

The use case for Revery was to drive development of a text editor - and it turns out a lot of UI is custom in that case. And if you look at the landscape of Electron apps - Spotify, Discord, Code, Slack, etc - most of them are highly customized experiences that are mostly identical across platforms. It seems that style is "in fashion" these days.

I agree 100% that it isn't always the proper trade-off, though - there's another ReasonML project called Brisk [1] that is similar in spirit to Revery, but with platform widgets.

In fact, we're working together on several infrastructure pieces (the core 'reconciler' - the native React-like piece - is actually developed by the Brisk team). So if you're interested in ReasonML + native app development - that might be one to follow!

We see the potential too for some exciting hybrid approaches - perhaps you prototype a cross-platform app in Revery, but then switch to Brisk for platform-specific projects, etc. Or even embed Revery in Brisk.

[1] https://github.com/briskml/brisk

Re: Revery – Native, high-performance, cross-platform desktop apps

#85
post #82

I doubt that it's feasible to reimplement GUI widgets. They require tons of micro behaviors. Revery will need to implement not just the looks, but also input, with a bunch of different devices in various configurations―which means lots of possible combinations and interactions between the elements. Since Revery doesn't use native widgets, it will lose all advanced native features―e.g. nuances of input handling, and a…

Note that Revery was built to power a text editor - which involves custom controls and interactions. Even elements as simple as scrollbars get re-implemented in that space.

I've been continually amazed at the ingenuity of the React ecosystem - so many intricate, well-designed custom controls - I believe if you have the write set of primitives, that community can make amazing things happen. So I'm hopeful and optimistic that we can at least get a subset of decent controls. But agree it's a challenge!

There are some cases (like text input) that are just so hard to get right - and can even change between OS versions - so we're looking at native support for some of those pieces.

Also, there is another project, similar in spirit to Revery, called Brisk [1] that uses platform-native widgets entirely. We're actually working closely together with them.

[1] https://github.com/briskml/brisk

Re: Revery – Native, high-performance, cross-platform desktop apps

#86
post #82

I doubt that it's feasible to reimplement GUI widgets. They require tons of micro behaviors. Revery will need to implement not just the looks, but also input, with a bunch of different devices in various configurations―which means lots of possible combinations and interactions between the elements. Since Revery doesn't use native widgets, it will lose all advanced native features―e.g. nuances of input handling, and a…

I share your skepticism, but this is exactly how Flutter works, hand reimplementing all the ui components for both platforms. Granted it is backed by a resource rich company, but it's not the most unheard of approach.

Re: Revery – Native, high-performance, cross-platform desktop apps

#87

> Revery is the same - aside from platform-specific behavior, if your app looks or behaves differently on another platform, that's a bug! I want my applications to feel like they belong to the platform and not identical on every platform

As a counterpoint, I really do not care about this at all. I routinely use Linux, Mac and Windows systems and I would much prefer software that looked/behaved consistently across them rather than trying to make sure the buttons look the same as the OS-provided apps.

Re: Revery – Native, high-performance, cross-platform desktop apps

#88

Earlier quoted context omitted.

> Of course that's a choice for everyone to make, but I feel like in general the benefit of fitting in the platform is overrated. I disagree; the benefit isn't overrated, it's underrated because it's not realized, thanks to most apps doing their best to _not_ fit in the platform. What full platform fit enables is consistent UX and interoperability . Lack of the latter places an actual cap of what users can do (except…

> "...it's underrated because it's not realized, thanks to most apps doing their best to _not_ fit in the platform..." At first I did agree. But then my second thought was: this calls into question some very significant and very experienced brands. To think that many, that big, are doing it wrong naturally doesn't feel right.

It makes sense though: The bigger the brand, the more they want to control their brand experience instead of being tied to /associated with another brand, i.e. the native platform.

Businesses don't innately care about doing what's right, so optimizing for brand differentiation over a unified platform experience is what one would expect to happen in most cases.

Re: Revery – Native, high-performance, cross-platform desktop apps

#89

> Revery is the same - aside from platform-specific behavior, if your app looks or behaves differently on another platform, that's a bug! I want my applications to feel like they belong to the platform and not identical on every platform

I don't believe this is a truly valid concern for the most part.

The very few 'desktop' apps I use today don't really implement platform UI behaviour, rather, the apps seem fairly consistent across platforms.

Adobe products, Android Studio, Ableton, VS Code, Atlassian products - they seem more similar to me than otherwise across platforms.

Mobile platforms I think are quite different in this regard, whereupon they have considerably more 'specific' features.

But on the desktop - I think as long as the common keyboard binding/shortcuts are respected ... then this is ok.

Re: Revery – Native, high-performance, cross-platform desktop apps

#90
post #19

> Revery is the same - aside from platform-specific behavior, if your app looks or behaves differently on another platform, that's a bug! I want my applications to feel like they belong to the platform and not identical on every platform

Of course that's a choice for everyone to make, but I feel like in general the benefit of fitting in the platform is overrated. After all the whole webapp-everything somewhat shows that people don't care that much, they are happy to use GMail for example. Another family of examples would be the big software packages like the Adobe or Autodesk stuff, they tend to have a fairly custom look&feel. IMO it's probably suffi…

I don't know how good an example Adobe is. They don't visually appear to integrate with the system, but you do get some nice OS integration. I was pleasantly surprised to see that Audition/Premiere both use the force-touch trackpad on a Macbook to send haptic feedback when aligning markers, for example. Very subtle but a really nice touch.

You don't get that from your typical web app in an Electron shell.

Post reply on HN