This ticket is a request to implement automated testing of this app under conditions with intentionally poor network connections into your pipeline.
I understand this "wire-android-reloaded" app is still under development, which is exactly when such testing should be implemented. As I'm sure you're aware it's important to make sure your architecture and infrastructure is sound at an early stage, because it's much more difficult to change down the road.
Why?
Unfortunately, consumers and regulators focus more-and-more on bandwidth and provide no legal requirements for packet loss, I've encountered numerous ISPs whoose packet loss is never zero and usually floats between 3-10% and whoose packet loss spikes above 70% a few hundred times per day. Unfortunately, this is normal for a lot of people around the world, and us developers need to design our apps to tolerate a high amount of latency, jitter (packets arriving in the wrong order), and packet loss.
It really doesn't take much to send a photo, but at 70% packet loss, the existing Wire android app fails miserably while Whatsapp does this exceedingly well.
The first step to solving a problem is generating baseline data so you can tweak, track, and optimize it. If Wire currently doesn't do any automated testing of the app under intentionally poor network conditions, please consider implementing this. Here are some tools to consider. I recommend at least testing sending a 3 MB photo at 0%, 5%, 20%, and 90% packet loss. Your goal should be to get all of them to send in as few milliseconds as possible.
This is not magically solved by using a library like okhttp and washing your hands of it. You need to test your implementation, wrap your network library, and alter your backend network infrastructure as-needed as a result of the tests.
TCP Congestion Control Tweaks
You can do a lot by modifying your server's congestion control algorithm. What TCP congestion control algorithm does Wire's servers currently use?
This ticket is a request to implement automated testing of this app under conditions with intentionally poor network connections into your pipeline.
I understand this "wire-android-reloaded" app is still under development, which is exactly when such testing should be implemented. As I'm sure you're aware it's important to make sure your architecture and infrastructure is sound at an early stage, because it's much more difficult to change down the road.
Why?
Unfortunately, consumers and regulators focus more-and-more on bandwidth and provide no legal requirements for packet loss, I've encountered numerous ISPs whoose packet loss is never zero and usually floats between 3-10% and whoose packet loss spikes above 70% a few hundred times per day. Unfortunately, this is normal for a lot of people around the world, and us developers need to design our apps to tolerate a high amount of latency, jitter (packets arriving in the wrong order), and packet loss.
It really doesn't take much to send a photo, but at 70% packet loss, the existing Wire android app fails miserably while Whatsapp does this exceedingly well.
The first step to solving a problem is generating baseline data so you can tweak, track, and optimize it. If Wire currently doesn't do any automated testing of the app under intentionally poor network conditions, please consider implementing this. Here are some tools to consider. I recommend at least testing sending a 3 MB photo at 0%, 5%, 20%, and 90% packet loss. Your goal should be to get all of them to send in as few milliseconds as possible.
This is not magically solved by using a library like okhttp and washing your hands of it. You need to test your implementation, wrap your network library, and alter your backend network infrastructure as-needed as a result of the tests.
TCP Congestion Control Tweaks
You can do a lot by modifying your server's congestion control algorithm. What TCP congestion control algorithm does Wire's servers currently use?