Page MenuHomePhabricator

Improve mobile experience in Conpherence
Closed, ResolvedPublic

Description

Currently Phabricator on mobile has a few noticable problems:

  • On low-end phones, performance is not that great. This is mostly a problem with how fast mobile browsers can render the content, but it's noticeable to the point where it can take a second or more to load an individual page.
  • On mobile or regional networks (particularly apparent in Australia where mobile connectivity is reasonably poor and may not be continuous) pages can fail to load while navigating.
  • On mobile devices, Aphlict won't work at all because Flash is not available.

Even if real-time notifications can be worked by some mechanism other than Aphlict, the first two issues still pose a problem in terms of responsiveness and offline support for Conpherence, which for a messaging system are reasonably important on mobile.

Now in this case we aren't talking about implementing anything other than Conpherence. A viable option might to be to ship a stripped down, local HTML file and CSS that ships the required styles, and use the native application to drive behaviour, offline storage and real-time connectivity and notifications. This way we can re-use the existing styles from Phabricator, without requiring the mobile device to load and reload the styles or HTML from the internet.

Revisions and Commits

Event Timeline

hach-que raised the priority of this task from to Needs Triage.
hach-que updated the task description. (Show Details)
hach-que added projects: Mobile, Phabricator.
hach-que added subscribers: hach-que, epriestley.

I'd generally like to see how far we can get without shipping anything special before we commit to anything. In particular:

  • Resource packaging isn't configured well, I download 9 stylesheets (should be ~2) and 6 script files (should be ~3). This is likely a pretty easy fix, for the most part (the Differential packages are getting pulled in, though, and I'm not immediately sure why offhand, which might make this fix a little trickier).
  • Some of the packaging decisions (like thresholds for inlining data in data: URLs) might be wrong for mobile.
  • On my iPhone 4, there's a big difference between viewing threads with a few replies (fairly snappy) and threads with a lot of replies (fairly sluggish). Loading a smaller amount of history on mobile by default (say, the last 5-10 messages instead of the last 100) might help this a lot.

My guess is that Apple devices are reasonably immune from this issue; I'd expect they have far high specifications. For reference, I have this phone: http://wiki.cyanogenmod.org/w/P700_Info

It's got a single core, 1Ghz CPU and only 512MB of RAM. While simple applications like "Reddit is fun" are responsive, Google Chrome and a few other resource intensive applications do lag.

Now it might just be my phone being terrible, but since most native applications run fine, I think it's probably that full web browsers consume too many resources.

My iPhone 4 is a year older than that (purchased early 2011), and apparently also has a 1Ghz CPU and 512MB of RAM (by Silicon Valley standards, I'm carrying around a wooden brick with some numbers painted on it).

How bad is it for you? It takes maybe ~1-2 seconds for me to load a Conpherence thread with a small number of messages, from the time I tap the thread in the dropdown to the time the thing is fully loaded. This isn't blazing fast, but it feels fairly reasonable to me.

It's more like 7 seconds to load a long thread (with 100 replies). Some of the content pops in sooner than that, but this case is over my threshold for things feeling "fast enough".

(This is over Wifi, though.)

The redesign removed about 1mb of images/CSS as well. Still more work to do there, but not as dramatic.

chad triaged this task as Low priority.Jun 18 2014, 4:14 AM
epriestley renamed this task from Implement native mobile application for Conpherence to Improve mobile experience in Conpherence.Jan 6 2015, 2:59 AM
chad claimed this task.

pasted_file (36×544 px, 12 KB)

I'll probably build a conpherence package, but overall this is likely as good as it gets. I don't think there will be any additional benefit without building a full separate mobile app.