What the hell is taking up all that RAM? Slack is using over 800MB of RAM on my computer right now, and it's completely idle. I've got a C# process on my computer right now handling thousands of messages per second and consuming 1/20th the RAM. If you rebuild Slack in Xamarin you'd probably drop your RAM consumption to under 50MB, just a guess. JS fiends are gonna tell me C# ain't JS, and I agree. TypeScript ain't JS either, and it's a hell of a lot closer to C# than it is JS.
I'm a big JS guy, believe me, but I wouldn't call a chat app using "only" 800MB of RAM a "win." Sorry to the guys who worked hard on this.
Slack is using 282 MB on my system currently [0]. I am only connected to two servers though. I don't consider 282 MB to be awful although it is a lot more than Discord which is only using 100 MB while connected to six servers.
and that's exactly what the new version is perhaps going to solve as per the article with regard to inactive groups being unloaded to a minimal version which deals with only notifications.
I think, that he was trying to say, Typescript feels like C#, so why not use the more performant option, if you use something similar but slower anyway.
I didn't look into the JS TypeScript compiles to, but I saw some output from Reason/OCaml and it looked much more streamlined for performance than what I would write in JavaScript myself. Much more use of integers than strings etc.
So I could imagine that compile-to-javascript languages could get you much faster apps than traditional JS.
How many platforms does C# run on, with runtimes available under which licenses, again?
EDIT: Not defending Slack's choice of JS, or the consequences of that choice on its memory footprint, CPU utilization, or excess consumption of my battery in any way, but it's not purely a matter of "which one is the most efficient/performant/whatever?".
.NET Framework | Proprietary | Windows 98 or later
.NET Micro Framework | Apache 2.0 | Win+Bare Metal
.NET Core | MIT License | Win+macOS+Linux(x64+armhf)
Xamarin | Proprietary | Android, iOS, and Windows
mono | MIT License |
Linux
Mac OS X, iOS, tvOS, watchOS
Sun Solaris
BSD - OpenBSD, FreeBSD, NetBSD
Microsoft Windows
Nintendo Wii
Sony PlayStation 3
Sony PlayStation 4
Of course "having a runtime" is not the same thing as "having a good way to write cross-platform applications".
Are those runtimes all bytecode compatible? Or is that another layer of developer cognitive burden that the more efficient/performant/whatever choice entails, atop the whole "having a good way to write cross-platform applications" tangle?
Why slack desktop use electron? Slack mobile app using xamarin. Why they not porting from mobile app to desktop? U must learn electron, and also not running on native
This is what I don't want, I want it to look like every other desktop app, I want to be able to set the theme of my OS and have every app adopt it, I don't want every piece of software thinking it's special and looking different.
> Harder to work with than CSS.
What native technologies have you used? Many are easier than css+html and look native by default.
Many mobile apps do rely on web views. Think about it, it's already difficult to make Android and iOS apps look similar. You need devs for both platforms. Teams are already squeezed supporting web (4 browsers with their own quirks), mobile web (screen size matters), mobile native (android and iOS) without also having to spread their talent thinner across completely native desktop experiences in Mac, Windows, and Linux. It's too bad Java never did live up to that write once, run anywhere promise...but that's the world we live in.
But we are talking about Slack and they can get this talent. New Skype for macOS is also made with Electron despite Microsoft having a ton of resources and even the old native Skype client for Mac (v7.x and earlier).
Meanwhile, Doist is a smaller company but they made Twist[0] clients native because they care about their customers.
I understand that 800MB for a chat client is a lot, but don't devs have lots of RAM to spare? I run about 20 apps at any given time + background process which I haven't counted, and I never run out of RAM (8GB).
I'm a big JS guy, believe me, but I wouldn't call a chat app using "only" 800MB of RAM a "win." Sorry to the guys who worked hard on this.