Dropbox for Composer for iOS

I realize that there are many different file sync services now, and everybody probably has their own personal favorite. That said, I do have to make some decisions.

  1. I have limited time. I can't hand code sync algorithms for every provider out there.

  2. I've been doing this a long time. When I started, Dropbox was the only real option.

  3. Even then, Dropbox had a robust API and SDK for iOS.

  4. Dropbox is the service I use for my own personal data that doesn't need to be truly secured. (I use Resilio Sync for data I want to keep private.)

  5. Even today, by my brief research, Dropbox is still one of the largest market share services.

  6. The iOS Document Picker makes it easier than before to work with data on any sync service that provides an iOS app. See this for more information.

Because of this, Composer has its own sync interface directly with Dropbox. Which means that it automatically keeps a local folder in sync with the Dropbox servers and allows you to easily work online or offline and keep your work in sync across devices.

However, this does come with a limitation.

I take an app's responsibility for user data very seriously. One of the worst things I could do is to cause users to accidentally lose data. So I do everything I can to prevent that. (Yes, nobody is perfect, and sometimes things happen. Backups are important. Etc. )

Document synchronization represents a unique opportunity to truly screw up someone's data. Inadvertently deleting every file on a server is really bad.

So I've tried to be really careful with my Dropbox sync algorithm. I've tested it myself over and over again. I've rewritten it from scratch a handful of times over the last 5+ years or so. But even then there is the fear that something could go wrong in a way that wasn't predicted.

So I've taken two additional precautions:

  1. I limit this live sync to a single folder (and it's children). This is the MultiMarkdown Composer folder that lives inside "Apps" on your Dropbox account. If Composer goes haywire, it can only possibly delete files inside that folder.

  2. Dropbox makes it easy to restore accidentally deleted files.

During the initial coding, of course I lost files and had to make use of this backup feature. But since finishing the rewrite of the sync handler I have not had to do that. I have not heard of lost data from beta testers. But even with that, I still want to be cautious. Hence limiting Dropbox to that single folder.

I recognize that some of you want your "home folder" for Dropbox to be something else. Maybe you want to share files with another editor. I get it. Once even more people have been using the app so that it sees even more real world use to confirm that they sync handler is rock solid, then I can open up the option to allow the user to choose a different folder.

My concern is that the moment I do that, some cowboy is going to decide that they want to sync their entire dropbox account. In addition to that potentially being a ridiculous amount of data, if something were to go wrong the results could be catastrophic.

So I want to proceed cautiously.

Don't forget however, that just because you can't sync your entire Dropbox folder to Composer, you still have the recommended approach of using the Dropbox app and the iOS "Locations" function to allow you to read and write to any text file located anywhere inside your Dropbox folder.