Hi everyone,

tl;dr: The Mobile Apps iOS Engineering Team is doing some refactoring of network operations and data storage in the iOS app. Track our progress using the red and purple filters on our Trello board.

The iOS team has been working on the "Update all for saved pages" story this sprint. The work is taking much longer than expected due to some antiquated code in the app that handles network operations and data storage. The code is fragile, which creates peculiar crashes that are difficult to diagnose, it's hard to maintain, and it's difficult to develop on. "Update all for offline reading" in particular involves one synchronous process (the downloading of the data) talking to another (the saving of the data) in the background while there are other tasks going on in the main thread, which is a difficult enough problem to deal with without also dealing with antiquated code.

This problem needs to be dealt with. Rather than delaying dealing with it, we decided to tackle it head on.

Our two high-level objectives for the refactor are:
This translated into a list of 11 action items, which are recorded on on our Trello board using the purple (networking refactor) and red (storage refactor) filters.

In terms of priorities, this refactoring effectively blocks the "Update all for offline reading" story. That said, a sprint represents a commitment to completing the stories in said sprint, so we are going to complete everything in our current sprint that is not dependent on the refactoring before we begin the refactoring itself.

If you have any questions, please do ask!

Thanks,
Dan

--
Dan Garry
Associate Product Manager, Mobile Apps
Wikimedia Foundation