We have made good progress on bringing new renderers into the iOS app. Upcoming are the new timeline, calender and message renderers. We also added the first sensor tracking for GPS data, that can be used to plot your travels on a map.
This week we've been mostly focussed on a major refactor that adds threading to the IOS/MacOS apps. This will improve performance greatly and allow for much of heavy lifting to be done in the background while not blocking the UI. This is important as the next step will be to add support for images and files, which will take more processing power.
We've also rearchitected how sessions and views work, by decoupling them from the database. This has improved speed a lot and also enables background serialization of the state so that when the app restarts it opens at the exact place you left off!
This week for the backend we improved the Continuous Integration (CI) process by introducing cargo-audit to scan for vulnerabilities in dependencies, and investigated the feasibility of statically compiling sqlcipher (the sql engine used for the backend). Besides that, we implemented strict type checks for all incoming data.
Additional to the Evernote and iCloud importers that we already have, this week the downloader/importer team started to explore the possibility of integrating the data from instant messaging services such as WhatsApp. This integration is supposed to be more challenging than the existing ones, as messenger services would require near real-time synchronization of the changes in data.
To create a first prototype of the importer we have chosen the following open-source tools: Matrix Synapse homeserver which provides a network for decentralized communication across various chat services, and WhatsApp bridge to securely establish the connection to send and receive messages to WhatsApp network. For now the authentication part still requires to use a desktop client (e.g. NovaChat, an open-source client for Synapse homeserver), which would be changed in the future by handling it directly at the importer itself. The current prototype is able to import data such as contact/chat/message stored in the bridge database to our backend storage by polling in every 2 seconds.
The format in which we define the schema has changed to make it easier to add new items, edges and properties. This is important because we are adding new downloaders, importers and indexers at a fast pace. Coming week we will extend the schema to support the data types we want to include in the near future. Furthermore, we added some tests and updated the code that exports the schema to the pod and the iOS and browser applications to make sure everything works together nicely.
This week was about preparing ourselves for a meeting with the notary. This meant, dotting some more I's, and filling in as much of the details as we could think of. For now that's probably all we can do until we have the meeting and learn about any specific requirements! To be continued....