What is Parse?
Parse is a convienient online database service with some additional useful features. It also has a software library that can be included in apps to enable easy use from inside apps for online storage. It also has additional features but we didn't use many of them deliberately so that we were not locked in too tightly and had the flexibility to move. These features that we didn't use included user accounts, Facebook integration, Push notifications and probably a good number more.
What Did Human Friendly Used Parse For?
- Anonymous usage logging. Essentially how many times different features were clicked on, how many lists and items you have. That sort of thing should enable a better understanding and improvement of the app to support the existing use better.
- Error recording. This was both for crashes (although it may not have covered all scenarios) and some unexpected conditions that may need attention even if they did not lead to an immediate crash. Again this is directly to enable Human Friendly to improve the Fast Lists app.
- Promotional codes. I could generate promotional codes that I could email to enable the in-app purchase features for no cost. The entitlements in terms of how many devices they could activate were stored in Parse and it counted down their use of them. This was a one time check when using the Promotional code and it did not track/monitor or control further use of the feature.
All this used the simple JSON object store features of Parse.
Why Did We Stop Using Parse?
Parse was recently acquired by Facebook. I don't trust Facebook with much of my data and I certainly didn't want to trust them with any of Human Friendly's customer's data. Facebook are an especially big risk as they are likely to be able to de-anonymise data if they wanted to by cross referencing the devices or IP addresses used to access the service with the users they know about accessing their website or the Facebook app. Now I want to be clear that I am not accusing Facebook or Parse of doing this or having current plans to do this but the fact that they could do it if they wanted to is a threat.
What Steps Did We Take?
The most critical part of the data is the crash reporting and that was sort of a hack anyway and I knew better solutions were available. I may do a further post on the issue but many of the services had privacy policies that I did not like including that they could gather anonymous usage logs for their purposes. The data from Fast Lists is not really personal but again when aggregated with other data (outside of Human Friendly's control) could have included personal information.
The crash reporting solution that I have chosen is Jira Mobile Connect combine with a JIRA server that is hosted at Human Friendly's headquarters. JIRA is a software issue tracking tool and when a crash occurs it creates a new issue and most importantly gives me access to the crash report which can be symbolicated in Xcode to see exactly what line was running at the time of the crash (although the bug is sometimes somewhere else). The traffic is low, often less than one crash per day although it has been higher with the 1.66 release of the software.
From version 1.60 the new crash reporting system was in place and use of Parse disabled. Now actually due to a set up error on my part the changes have actually triggered a number of crashes although those have been fixed in subsequent versions and the easier access to the better crash reporting that we now have has enabled us to do a better job of pinpointing other crashes which we have been fixing one by one through the 1.6x releases.
General Logging and Promocodes
These are currently disabled. We will probably host a replacement on a virtual/cloud host that we control and is probably going to be hosted on Digital Ocean although it may be hosted with our current webserver on Rackspace (No problems with Rackspace but Digital Ocean offer much more for similar prices).
Benefits of the Change
While some ease of use and convenience has been lost there has been some substantial benefits to the migration.
- Better crash reports that can be more easily acted upon to improve the software.
- Reduced application size. The current 1.67 release of Fast Lists is only 725KB in the app store but the 1.51 version with the Parse libraries was about 5MB or nearly seven times the size. This means faster updates, less wasted space on your devices and may enable the app to start faster and use less memory while running.
Turning Off Parse
Even though version 1.60 was released a little over three weeks ago (on 24th June) not everyone updates their apps immediately on release so there are still a number of users on version 1.51 or earlier. While we have done some brief testing of the stability of 1.51 when it is unable to contact the Parse server we haven't done long term testing so there is a possibility that disabling the server could cause issues for some users. Because of that we have waited until the number of accesses to Parse has fallen to much less than 100 per day (from well over a thousand) before downloading all data, deleting it from the Parse servers and deleting the app from their system.