Hi folks! As some of you already know, if a Firefox OS device gets out of free space in its data partition it becomes unusable and might not even boot again. We tried to fix this issue for v1.0.1 introducing a disk space watcher component [1] based on fanotify [2] that notifies about a low storage situation and makes indexedDB [3], localStorage [4] and offlineCache [5] to switch to a read only mode while the device has between 5Mb and 10Mb of free space. Even if this solved the more urgent issue avoiding that a Firefox OS could run out of space (in normal conditions), we still have some work left to do. The resulting UX is far from being acceptable as the user is notified about the low storage condition but no other pointers are provided about how can she free space or why the device and apps are behaving unexpectedly wrong (i.e., changes in settings won't work [6], incoming messages won't be stored, etc.). My intention opening this thread is to start a debate about how can we improve the UX and which are the potential technical solutions (with special interest in the notifications part).
A few quick thoughts about this: (0). Application manager. We definitely need a way for users to check how much device storage an app is consuming and a way to clear this busy space. I am aware of some work already happening around this and a related discussion about the kind of API required for this feature at [7], so I would not comment about this feature on this thread and I will focus on the notifications part. 1. System notifications. Currently, we show and pin a system notification in the toolbar as soon as we notice that the device is running out of space, but that's all. As I mentioned above, if the user keeps using her phone, every app trying to write in indexedDB, localStorage or offlineCache will fail in unknown ways, and the user will probably not get an appropriate explanation about the failure. I think that we need to show a system notification (I'll let UX decide how the notification should look like) every time an user attempts to perform an action associated with a write in the data partition during a low storage situation (that is a write in indexedDB, localStorage and offlineCache). That means that we will probably need to trigger this notifications from each API implementation. 2. App notifications. We currently have a way for apps to get a notification as soon as we notice a low storage situation. Basically, apps can listen for apps deviceStorage 'onchange' events with a 'low-disk-space' reason. Check [8] and [9]. IMHO, at least all Gaia apps that depends on indexedDB, localStorage or offlineCache should be listening for this notification and react accordingly. I'm thinking about a "low storage mode" for Gaia apps where writes via these APIs should be avoided and a proper UI should be presented to the user. This would certainly require quite a significant work depending on the specifics of each app. Unfortunately, we cannot relay on 3rd party apps doing the same, that's why I suggested the system notification above. Any thoughts? Cheers, / Fernando [1] https://bugzilla.mozilla.org/show_bug.cgi?id=853350 [2] http://www.xypron.de/projects/fanotify-manpages/man7/fanotify.7.html [3] https://bugzilla.mozilla.org/show_bug.cgi?id=861903 [4] https://bugzilla.mozilla.org/show_bug.cgi?id=861920 [5] https://bugzilla.mozilla.org/show_bug.cgi?id=861894 [6] https://bugzilla.mozilla.org/show_bug.cgi?id=903903 [7] https://groups.google.com/forum/#!topic/mozilla.dev.webapi/UMu7nqWoQZM [8] https://github.com/mozilla-b2g/gaia/blob/master/apps/system/js/storage_watcher.js [9] https://bugzilla.mozilla.org/show_bug.cgi?id=861921 _______________________________________________ dev-b2g mailing list [email protected] https://lists.mozilla.org/listinfo/dev-b2g
