Lastly, Discord has absolutely the worst software engineering behind it.
Lastly, Discord has absolutely the worst software engineering behind it.
This cannot be any serious part of the reason, since literally playing 3D video games fullscreen at full resolution can use less power than Discord.
[EDIT] For that matter, any streaming video platform. They're ~all extremely battery-efficient even when pushing 4k.
I don't think this excuse flies on anything made in the last 10 years, at least, except maybe trash-tier netbooks or something. Unless the software is so amateurish that it doesn't even try to negotiate a codec that suits the hardware it's running on, and just picks something evidently-poorly-supported no matter what.
I know that intel macbooks added hardware encoding from iphones into the T2 chip in part to solve this problem, but I also know that intel has quick sync, which should provide hardware encoding as well, and I didn't know what the pros/cons are. according to this article [1] the T2 chip seems to be much faster than intel quick sync, so that could be a factor, but it doesn't seem to cover power efficiency.
From a timeline perspective, Intel quick sync has been around on at least some Intel CPUs since 2011 and has been supported on osx since Mountain Lion (2012)[2], and the T2 chip first appeared in the Macbook pro in 2017 [3].
That would point to there being more at play than just absence of hardware video decoder. So I think you are right. At least _some_ hardware that can encode video efficiently has existed on macbooks for a while, and it seems like video conferencing applications should be taking advantage of it.
While it is always possible that the hardware could solve this problem, but the software doesn't make use of it, I have a feeling any software that did have correct use of encoding hardware would have gained a lot of marketshare, and people would be talking about it.
My next followup questions would be:
1) Were these computers in fact using hardware encoding, but the efficiency was not good enough for long battery life?
2) Is there some limitation to QuickSync and possibly other hardware solutions that makes them impractical for realtime use? Possibilities include:
- Maybe they are throughput optimized, and to work efficiently must take in large chunks of data at a time, which could increase latency beyond what would be acceptable for video calling
- Maybe they can't simultaneously do video decode and encode (it seems at least some generations of QuickSync couldn't do this)
- Maybe the hardware encoding isn't configurable enough to provide a low bandwidth typically used for video conferencing.
I was unable to find answers to these in ~1h of googling. Would love it if someone here knows.1: https://appleinsider.com/articles/19/04/09/apples-t2-chip-ma...
2: https://en.wikipedia.org/wiki/Intel_Quick_Sync_Video#Develop...
Discord is showing emojis, images that are 10MB+ each, and all kinds of user generated crap at high res that it doesn't have control over. Personally I'd prefer to go back to just text.
And if Discord is rendering a 10MB+ image then that's definitely a problem with discord. 1920x1080 at 8bpp isn't even 10MB.
The mobile app is sitting in my "notification jail" folder three pages deep too, where apps that abuse badge notifications are kept.
That being said I would love to have less memory allocation on my devices when effectively idle too.
If you want to do things properly, you hire separate teams who do native development for each platform, or you hire one Qt team for desktop and two teams for the two app platforms. Of course that's expensive, but again developer vs user side. That's what I mean by cutting corners.
And regarding electron there are different kinds of apps performance wise, like Atom vs VS Code. Discord is more on the Atom side of things, sadly.
Discord is also so big, that interested people develop lean third party clients for it. It's possible, but Discord rather bans them and forces users on the worse electron/web alternative.
Ripcord's very existence contradicts most of the claims you've made above.
The workflow that I've seen for frontend coding today is that a designer makes a mockup in something like Figma, and then a frontend programmer has to go remake it from scratch in typescript? It seems crazy that we have not made any progress (or even regressed) here in 15 years, but hopefully I'm just out of the loop on state of the art.
I like Qt for how much it enables us to do, but having worked with Qt Designer, it can get off the rails once things get too complex. Probably doesn't help when you enable/disable UI elements programmatically, but still lol
The usual explanation is that non-JavaScript devs (every programmer over the age of 40) was an amazing genius, and we need Electron/Flutter/Node/left-pad/etc now since there are so many new coders. I think you're on to something though. Somehow modern practices just result in wasting incredible amounts of time and effort tinkering with fiddly frameworks and boilerplate code
One might consider these as cutting corners - hiring web developers to build an app that really should be native