Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Native desktop version with NodeGUI? #1682

Closed
poVoq opened this issue Aug 16, 2019 · 9 comments
Closed

Native desktop version with NodeGUI? #1682

poVoq opened this issue Aug 16, 2019 · 9 comments
Labels
Feature UX User experience

Comments

@poVoq
Copy link
Contributor

poVoq commented Aug 16, 2019

https://github.com/nodegui/nodegui

A bit like react-native, but should work also with Converse.

Would be a cool additional way to run Converse and probably much better than the Electron version someone was working on.

@poVoq poVoq changed the title Native desktop version version with NodeGUI? Native desktop version with NodeGUI? Aug 16, 2019
@deleolajide
Copy link
Member

Dos that mean all the HTML templates have to be ported to QT5?

@Nyco
Copy link
Member

Nyco commented Aug 29, 2019

@poVoq you know it, but there is also https://github.com/nick-denry/Chimeverse which is based on Electron, and only for macOS. It would be nice to port it to Linux and Windows as well.

@Nyco Nyco added the Feature label Aug 29, 2019
@deleolajide
Copy link
Member

I still think using a browser extension to implement Converse as a Native desktop client is more efficient than Electron and even NodeGUI for the following reasons.

  1. Browser engine is already installed and running on desktop. No need to reload browser from bloated code. Startup is faster as there is less code to load.
  2. All users install the same single native application from the browser vendor web store for all platforms (OSX, Windows, Linux) with automatic updating on all deployed desktops.
  3. Converse runs in a privilege mode with access to desktop features like system tray, USB ports, co-operative binary code, unlimited storage, native windows, full desktop notifications with separation of front-end and background processing without incurring the overhead of running node in memory.

@Nyco
Copy link
Member

Nyco commented Aug 29, 2019

Not sure I get it: a browser extension still runs in a browser, right?

The users' needs we address here is the need for a "fat client/app", that has its own lifecycle (launch, stop/kill, update, notifications, etc.) independant from a browser.

Anyway, both solutions offer more variety of choice for the users.

The question also needs answers regarding the mobile.

@deleolajide
Copy link
Member

Not sure I get it: a browser extension still runs in a browser, right?

image

Not really. It runs in its own native O/S window and is auto-started at O/S user login if preferred.

@deleolajide
Copy link
Member

The users' needs we address here is the need for a "fat client/app", that has its own lifecycle (launch, stop/kill, update, notifications, etc.) independant from a browser.

The use case for background browser extensions was designed for this. They run as independent processes from the main browser window and have no cause to show the main browser window.

The multi-platform support and easy deployment/update cycle directly via the browser vendor makes them more compelling than manually building multi-platform packages with chromium/node embedded as required with Electron.

@Nyco
Copy link
Member

Nyco commented Aug 29, 2019

Browser extension

At OS restart, having a browser extension automatically launched is a big problem. First, it launches the browser and thus consumes RAM and CPU. Second, the browser is in the OS task list, even though to browser window is launched. Third, there is no entry in OS apps menus. The list can go long, I am not exhaustive here.

I am telling you this as a user, many of us just don't like this type of extensions running in a third party window, badly emulating an app. Of course you can find extension lovers to balance this.

Independant app (from browser)

The goal AND user need is also for some users to have two (or more) totally independant types of desktop apps: web browsers and chat clients.

Examples based on Electron:

These are all available on the pure web as well, (and on mobile, but that's another story).
And yes: Slack, Discord, MS Teams, Riot as well (and WhatsApp).

Plus these can be packaged in the OS level (deb, rpm, AppStore), which is the default "go to" place when a user wants to install anything.

So NodeGUI/Electron-type of web app packaging is cool. Maybe add NW.js (node-webkit) to this list. This said we all keep in mind that Electron is known to consume lots of resources. And NodeGui is quite young.

Still users' preferences count first.

User choice

These solutions just address different problems, needs and constraints for the users. Also a matter of who's going to do and maintain it.

As a user, I'd be happy to use and contribute to both, whichever comes first. For example, I'm quite happy with the above-mentioned Chimeverse.

@Nyco Nyco added the UX User experience label Aug 29, 2019
@deleolajide
Copy link
Member

I am telling you this as a user, many of us just don't like this type of extensions running in a third party window, badly emulating an app. Of course you can find extension lovers to balance this.

I use Converse everyday as a browser extension and I have happy users of Converse running as a browser extension. I disagree that a browser extension runs in a third party window and badly emulates an app any more than Electron which is an embedded Chromium browser does exactly the same thing.

Everything has pros and cons. I was only giving my two-pence opinion from my experience of professionally developing browser extensions for paying customers.

@poVoq
Copy link
Contributor Author

poVoq commented Jun 6, 2020

Chimeverse with Electron does the job.

@poVoq poVoq closed this as completed Jun 6, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Feature UX User experience
Projects
None yet
Development

No branches or pull requests

3 participants