Human Friendly has stopped using Parse

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?

As described in the Privacy Policy we used it for several things:

  1. 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.
  2. 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.
  3. 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?

    Crash Reporting

    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.

    All data is now removed from Parse/Facebook

    5 responses
    I enjoyed this article as I am planning to make the same decision. I was hoping that you could elaborate on actually moving off of Parse. My client has a lot of cloud code functions. Any thing that you guys learned so I don't make the same mistake? Thanks, much appreciated
    I was in the fortunate position of having been cautious and was only using Parse pretty lightly as a data store. I had even taken the precaution of wrapping the Parse class in my own that passed all the calls on so that the code changes were all contained and I could rip out Parse and have my class just doing nothing (which was OK in my use case which was just for logging user behaviour and crash reporting). The user behaviour is currently still unlogged because I have been too busy and it was never a sufficient priority. But I had also always been too busy to process the data that I was logging when I was using Parse. If you are looking for an alternative full service platform Firebase might be worth a look but you never know who might buy them. Heroku is a level more flexible (and if you are slightly careful) can be completely portable to your own server but you will need to handle the data store aspects yourself.
    You made the right decision then! Parse is dead! It is being shutdown in January 2017.
    I was wondering if you could comment as to how long your migration off Parse took. Did you overrun your estimated time to migrate? If so, could you share by how much?
    Enabling notifications