6 ms·
> Yes, we’re building on Electron I hope you'll reconsider as your team grows. Developers look at their own app and think the extra resource usage isn't too ba
by danellis 5y ago
> Yes, we’re building on Electron
I hope you'll reconsider as your team grows. Developers look at their own app and think the extra resource usage isn't too bad, but the more this happens, the more Electron apps I end up running at once. Because Pop includes presence, it's something that, if it were more lightweight, I'd keep running all the time. As it is, if someone wants to call me, they have to first contact me on another platform to ask me to load Pop.
- jsherwani 5y agoWhen you say Pop could be more lightweight, are you talking about CPU or memory usage? Also, do you keep Slack / Microsoft Teams / Dropbox / 1Password / VSCode always running, and do you have the same concern with those apps or is it something unique to Pop? Performance is definitely a priority for us, so understanding where you're feeling the bloat would be really helpful to us.
- tfsh 5y agoNot OP, but with the apps you've mentioned (and other Electron apps), I'd be less likely to keep them running (and would prevent them from opening at login) due to their outsized resource impact. Which in turn decreases user retention and my ability to recommend it to others. To add to that screen sharing and video calling is already resource intensive, so whilst the argument could be made - what's another 500mb of ram, I'd expect the client to be as optimised and light weight as possible, because a system under strain is no longer "blazing fast".
- nawgz 5y ago1Password and Dropbox being on Electron seems absurd. Regardless, you kind of hit on the point - Slack & VSCode are basically non-optional, maybe for other people it's some other combo. Pop, on the other hand, only has potential to be "non-optional" for collaborative work. Thus, given that real-time collaboration is not the standard way of working, being a resource hog on the level of "non-optional" apps means you will be shut off first for most users.
- jsherwani 5y agoThis is a good point. We definitely want it to be a no-brainer for people to keep Pop running. One idea may be for us to look into relinquishing resources while running in the background, which could be a best of both worlds solution.
- Cu3PO42 5y agoFor me personally, memory usage has been a big concern with the growing number of Electron apps. CPU usage on well-behaved Electron apps in idle seems mostly negligible or at least not significantly worse than on native apps. But memory is a different story. I don't always get to work with machines with "enough" memory, so I don't keep any apps with a larger memory footprint (let's say anything above 50MB) running longer than necessary. More often than not I will try to just use the web app, which will at least not load "yet another copy of Chrome". Where feasible I will also simply switch to an alternative. Not to backseat engineer too much, but maybe you could look into a smaller native component that can run in the background to listen for incoming "calls" and only loads up Electron (or maybe a native webview) when the user wants to actively use the app. All of that said, it looks like you have a solid product and I wish you success with it. EDIT: It appears that a year ago when your product was still named screen, I also provided some feedback which you acted upon swiftly, so I'm optimistic you'll figure this out as well :-)
- jsherwani 5y agoThis is a really fair point, and we will look into seeing what we can do to alleviate this resource usage when in the background.
- anotherevan 5y agoI wonder if you could write a small native app for the presence component that launches the main electron app when needed.
- danellis 5y ago> When you say Pop could be more lightweight, are you talking about CPU or memory usage? Memory usage. I haven't noticed an issue with CPU usage, because I usually only open it briefly and tend not to be doing anything else intensive during that time. If I kept it open for video chat while I was working, maybe it would be an issue, but I currently use Messenger (in the browser, not the app) or Discord. > Slack / Microsoft Teams / Dropbox / 1Password / VSCode Slack was definitely a big problem for memory usage, so I don't use that much anymore. VSCode I only open while I'm editing. I wish it worked better over an X connection for that. Dropbox I allow to keep running on my main Mac (although its memory usage is ridiculous for what it does), but only load it as needed on my Mac mini. I use Teams, but that's on a work laptop that only runs Teams and Outlook. Discord is the only Electron app that I keep open nearly all the time.
- jsherwani 5y agoThanks for the details! Based on the feedback today, we're going to look into how we can reduce memory usage overall (especially when idle), and CPU usage especially when screen sharing. We already modify Electron, so we may be able to work out a good middle ground that reduces the footprint significantly, while still giving us the advantages of a shared codebase across our 4 platforms (Mac, Windows, Linux, web).
- jshier 5y agoThis also explains why the screen sharing so much less efficient than Screenhero's. I had no idea. Hopefully they can add more control over video quality in the future, as the current implementation seems to go for maximum quality all the time, which interferes with system performance. It being Electron especially explains why it's so much more resource intensive than the other solutions.
- jsherwani 5y agoWe have tinkered with the idea of a native module solely responsible for screen scrape + encode + send, which would further improve performance. Also worth noting is that there's a setting to "reduce power when idle", which throttles screen scraping frame rate when relative CPU utilization is high. Additionally, you can disable "Use full resolution" to turn off Retina support, which should further improve performance for you. We'll work on surfacing these settings better, since it's not obvious that they're buried inside the settings page.
- jshier 5y agoRight, thanks. "Reduce Power When Idle" is always selected, but there's no explanation of what it actually does. I would've expected it to be based off the user being idle in regards to the shared screen (e.g. no input for x time), not based on relative CPU usage calculations. It's hard for the system to increase CPU usage if Pop is already consuming most of it, so I wonder how long it takes for this to actually kick in. "Use Full Resolution" also doesn't explain what it does, so it's unclear how bad the video would get if it was turned off. Even "turn[ing] off Retina support" is unclear, as it doesn't tell me what the alternative is. Does it scale down to the 1x version of the screen? Ideally we'd just have a resolution selector here, for both local and remote. I've also long had issues with the keyboard shortcuts and various settings, again because it's unclear how the settings actually effect anything. I've also encountered bugs where just typing certain characters (I think it was ".") to a remote share toggled my ability to control the remote at all, which was extremely irritating. I really need more explanation of local vs. remote short cuts and which go where and when.
- Wowfunhappy 5y agoThis is how I wish more companies used Electron. It makes complete sense to me as a stop-gap when you're starting out, need to grow fast, and are still experimenting with your product. Where I get a bit frustrated is when companies stay on Electron. Slack knows—or should know—what type of product it is at this point, and so the developers shouldn't be pushing transformative software updates with any kind of frequency. So, step back and take the time to build native versions for each platform. Users will appreciate that their computers are suddenly faster!
- jsherwani 5y agoRelated anecdote: Screenhero's UI was originally totally native on the two platforms we supported (Mac and Windows). It was a night-and-day improvement (it looked better, had fewer bugs, was easier to build and maintain) when we moved from native UI to HTML5 (using Awesomium on Windows, and WebView on Mac). However, we'd then have issues on Mac where a user's UI would have glitches because their version of OS X or Safari (often both) weren't up-to-date. So it was always a little awkward to tell people that the reason their screen sharing app looked funny was because they needed to update their web browser. Having said this, I think this discussion between Electron vs. Native is a false dichotomy. Performance and developer efficiency are both clearly important, and we don't have to maximize one dimension alone. I am confident we'll find a way to make Electron far more performant by switching off unnecessary features, such that it provides us just the surface area we need to be able to build great products that are indistinguishable from their native counterparts: except that they're quicker to build, easier to debug, are of higher quality (with fewer bugs), and cost less. I know this sounds optimistic, but given the popularity of Electron, coupled with the issue of performance, this is an issue that is certainly going to improve over the coming months and years. Who knows, since ours is one of the more performance-hungry products, we may end up finding a solution that others can leverage as well.
- O_H_E 5y agoAs much as I hate to say it, but VScode is a testimony of how performante election can be
- Hadriel 5y agowhat do you mean by presence?
- jsherwani 5y agoIn Pop, if you add people to your contact list (or connect with Slack), you can see your contacts and team members' online presence, and can call them from within Pop.
- quickthrower2 5y agoSlack runs like shit on my pc. I’ve not been able to answer a call this week: seems to freeze up for the length most people want to dial when there is an incoming call. I hope OP will optimise for performance when using electron. OP: Until you are in the position where your software is forced on people by the pointy-haired managers (like Slack or Jira for example) you’ll need a better performing app or people will give up. Coders especially; we don’t like waiting and emptying our L1 cache to context switch to troubleshooting a comms tool.
- jsherwani 5y agoPop’s performance is something we have spent significant time improving, and we’ll continue to do so. My only ask is for folks to try the product and judge its performance (or lack thereof) on its own merits, regardless of presumptions based on our use of Electron. We have thousands of daily active users that continue to use the product happily.
- quickthrower2 5y agoYep, I’m not saying electron means slow but I think it takes skill to keep any app fast especially on the web stack. Glad this is a focus for you! With the work from home boom you may be often running on lower spec machines than the developers work pc that they are remotely connecting to.
- jsherwani 5y agoYou’re absolutely right, and we do need to do a better job for lower spec machines. Lots of work left to be done, for sure!
- habibur 5y agoIt's not about lower spec machines. It's more about using far less resources on very much capable machines, and leave the other resources for other processes, as long as there is a way of doing so.
- jen20 5y agoIndeed - a key competitor, Tuple, does not use Electron, and as a result I won’t even be taking a second look at Pop.