September 16, 2010

Two-Way Mobile Clients & You

by with 11 comments

Hello everyone,

I’ve been taking a bunch of requests for two-way functionality from our mobile clients, and I would like to address that. Let me start by saying that I *fully* understand how much of a killer feature that would be for all of us. I use SpiderOak for my own personal file storage, sync, and share, as well as using it for work (Android beta testers know I use a ShareRoom to distribute the beta builds, for example). I use my SpiderOak iPhone app several times a day. For mobile users, your pain is my pain as well.

That said, traditional two-way interaction with SpiderOak would be nontrivial for a mobile phone. Our zero-knowledge system takes full advantage of the power available in modern computer systems to run the encryption/decryption and file de-dupe locally before uploading to our servers- see our engineering description page for more details on that. I think most of the latest generation of smartphones (1 GHz Android, A4-powered iOS, generally) are finally powerful enough to even think about doing this. That said, there are still a few obstacles to overcome:

  • Most of our application code is written in Python. Either this can be ported to both ObjC and Java, or I can figure out how to tie in some sort of framework to connect it across from Python. Either way, it won’t be pretty or quick.
  • Battery life is generally the biggest concern I have, once the above could be done. SpiderOak would be sucking down the device’s battery, as well as sucking down data usage (important for those of us on metered data plans). Running the CPU as hard as we can certainly do will run down the battery just as hard. CPU and memory usage of our desktop client is one of the most common complaints about our service, and moving that to a phone is only going to exaggerate this.

I have ideas ideas we’re working on to incorporate our very cool DIY storage system into our mobile platforms to offer secured backup to our storage. This would take advantage of built-in cryptography on the phone, and use a shared key between the desktop application and the phone to encrypt data and then upload that to our servers. That can then be tied in desktop clients to offer zero-knowledge backup from mobile widgets. I can’t guarantee this is going to happen overnight, but it’s where I want to take us until the ARM Cortex A15 gives us the power to do this efficiently.

By using our HTTP-based DIY system, we can bypass the most CPU and memory-intensive portions of SpiderOak interactions, and as I don’t anticipate typical mobile load being that much, it shouldn’t overwhelm the desktop client to ask for just a little bit more help.

  1. Re: battery life and data consumption

    Have settings checkboxes that say 'only back up when charging' and 'only back up when on wifi'. Then those of you worried about those things (individually or both together) can toggle them.

    I'm not worried about data consumption, but am worried about battery life, so I'll just turn on one. Someone with a giganto battery-pack (like ) might not care about battery life so much.
    To each their own.

  2. You could have a nightly backup that starts when the phone is plugged in (this is what wavesecure does) and manual backups (in case you do something important and need it backed up now.

  3. What about just setting up a separate silo for mobile syncing and just not dedupe, do the storage only, seems that most people would primarily want to backup and just sync stuff from our mobiles. You already nailed raw file access.

    If you do have a folder that you want to use the Sync feature with, maybe you can just push the fully non-deduped file up, then when any of the desktop apps download it into it's sister sync folder, let it do the dedupe crunching and replace the bits. That may not make any sense given your architecture though, flying blind here.

    At a glance, the DIY service seems to be a solid basis for just raw storage from the mobile as well.

    What I'm missing most from the mobile app is just synced access to pictures/videos I take so other phones and computers can get to them.

    Just throwing some ideas out! Great work so far! I'm a 1 hr old user and love what I'm seeing. Your value proposition beats all the other services I have researched.

  4. +1 for bitjuggler's suggestion.
    By default only sync on wifi when plugged in. This could be changed for users who need 'on the go' syncing (with a nice warning about battery life and data usage when enabling these options)

  5. A simple zero compression/de-dupe backup would be nice for the short term. Just hash the file, if it changes upload/download the whole thing (with a simple wifi only check box for those concerned with usage)- files on mobile devices are less likely to change as often (most people probably just want photo/video sync) or be very large. I think that would be a pretty good stop gap and satisfy most people for a while.

  6. Android already run's Python. Look for Kivy.

    I would personally not be so interested in scheduled backups from my phone. Most other Android clients for similar services that I have used don't even offer a continuous backup. The closest I've seen is apps that use other services like dropbox or drive to run scheduled backups.

    The MAJOR use uploads to SpiderOak for the phone, I would think, would be a push to a share. Most other android clients seem to present the upload option as a share option, so you can go share files with other users. That's not a scheduled backup. I think this would fit decently in to the shareroom model.

  7. seriously 1 year later and no change – we like spideroak but the mobile app is terrible. You need to fix this asap !!

  8. Hi guys

    Any news on this?

    I'm considering buying a low-powered ARM Cortex A15 based Linux box as NAS and of cause need to run SpierOak

    Best regards

  9. So, is this feature on the roadmap?
    In case of YES:
    – How is it coming
    In case of NO:
    – Why not? I could REALLY use it.

    • Oh well, I’ll just have to use Foldersync, Insync and Google Drive which has proved adequate with the free space provided by Google – no point in renewing with Spideroak if this feature is not going to be available. Maybe when 2 way sync on android is finally available I’ll come back.