wireapp / wire

:wavy_dash: Overview of the open source code for Wire
https://wire.com
GNU General Public License v3.0
2.41k stars 174 forks source link

The web and desktop apps take extremely long time to load #108

Closed pkrakowiak closed 6 years ago

pkrakowiak commented 7 years ago

This happens on a few different computers, running different web browsers, different Windows versions and on different networks.

We have a group with some friends and use Wire to communicate. While the Android version works fine, the Windows desktop and web (tested on Firefox and Chrome) have issues. The worst one is loading times. Yesterday it took literally 1 hour and 40 minutes to load the app in Chrome, after which it crashed. I've been sitting here for 17 minutes now trying to open Wire in Firefox Beta (v57). You see the progress bar go to ~25% and then it stops there.

firefox_2017-10-17_10-21-03

Please note the errors are not due to any ad/tracking blockers - they did not block anything. The same error occurs constantly in Wire Desktop for Windows.

pkrakowiak commented 7 years ago

We also observed high CPU usage while loading Wire. On my PC, in newest Chrome it also takes a lot of RAM. I have only one tab open with app.wire.com (it's been loading for 30 minutes now).

taskmgr_2017-10-17_10-46-15

pkrakowiak commented 7 years ago

Our lead is it has to do with huge chat history. One friend says that clearing the chat history helped on his end. Even reinstalling the app (Windows) did not help. If that's the case, then, well, it sucks...

vimpunk commented 6 years ago

Can confirm. I tried opening Wire on a laptop that I rarely use and it took so long to decrypt all the messages (while the fans were spinning at full speed) that I had to eventually close it because it completely drained my battery in circa 30 minutes. Signal, for comparison, takes almost no time to start up.

Gregory-K commented 6 years ago

I don't think it is something that needs to be confirmed. It is a fact. It is the way Wire works right now, especially as a web-app/electron-app. Large volume of data (conversations history) need time to decrypted locally and browsers/javascript are not up to the task. one example issue https://github.com/wireapp/wire-desktop/issues/546 another example article https://medium.com/@wireapp/speeding-up-crypto-on-wire-desktop-apps-3ff37fc98c3f

Even if the desktop application was a C/python/rust/etc. software, I think a good universal "speed-up" would be to load only the latest messages on start and decrypt the rest slowly in the background afterwards. (RIOT/Matrix uses this technique but I haven't tested it extensively using encryption.)

Nevertheless, a good question for all of us is why private encrypted communication messages have to remain for ever on our "hard-drives". Well, important messages can be pasted and encrypted locally using other more sufficient methods. Whole conversations will be possible to be archived when https://github.com/wireapp/wire-webapp/issues/626 becomes a reality.
For the time being, I think the use-model is: open Conversation about a matter/topic, discuss, delete OR use a single client.

@pkrakowiak yes conversations have to be deleted from your main client (Android) to speed-up the start of a client that have a lot of messages to catch-up. Reinstalling helps only if you don't care a lot about re-verifying devices (the same effect also has the deletion of the Wire data folder).

@mandreyel Signal is keeping your logs on your phone and only there. "Desktop" application just connects to your phone and replicates. Try opening the "desktop" application having your phone out of your LAN (Wi-Fi off). I don't know what happens if you buy a tablet or a new phone. I guess the history cannot be transfered, but I am not sure, I don't use Signal.

pkrakowiak commented 6 years ago

Deleting them from the desktop client also helps - until next time. :)

It's interesting that an i7 w/ 16GB RAM is choking on decrypting the messages, but an Android phone loads them instantaneously. Are the messages always kept decrypted on Android (because the device itself is encrypted)?

Signal loads much faster on the same computer. WhatsApp with the same load of conversations and messages loads in a few seconds.

Gregory-K commented 6 years ago

It all comes down to the log/history/whatever synchronization.

WhatsApp uses the Signal encryption. Both apps tie you to a single device. You may use a desktop-like application (Electron) but it is not a "real" client. It is a relay to your phone application. Without your phone, no chat.

All the "fast" applications you mention have chosen the single device/client paradigm (hint: only on mobile devices — the only "native" app). Using Wire in that way is fast as well... Your Android phone is always running Wire in the background (through GCM). Keep in mind that the Android app is not just a web-view of the Wire web-app. I am not an expert on this, but it may (and should) use better and faster encryption/decryption methods.

I am not defending anything. I am just pointing out the differences that may explain the problem. I also have a laptop client out of sync that I don't dare to open. It would be better if all theese apps (not only Wire) used real desktop applications. It seems absurd to me having >150MB of RAM reserved for a single messenger but that's a reality I cannot change (Telegram made it, but that's another unencrypted story).

kristin-wire commented 6 years ago

Thanks all for your continued feedback on this issue. To streamline communications, please add any further comments here: https://github.com/wireapp/wire-desktop/issues/1105