Goodbye Dropbox, Hello BitTorrent Sync

Just last week, all of us here at Rocket Lift HQ started using BitTorrent Sync to replace our Dropbox subscription. If you aren’t familiar, BitTorrent Sync is software that allows us to share files among all our computers so that the most current version of a file is available to everyone whenever they need it. No email attachments, no thumb drives, no messenger pigeons. And this is really important to us because, as a 100% distributed company where “Rocket Lift HQ” is any place with internet access, we don’t have a hard-wired network to store files on at a big fancy office building.

“To err is human. To really screw things up, you need a computer.”

Now that we have had computers around long enough to have something like computer folklore, this is probably among the most repeated maxims. Eventually all grandparents will have always had computers, and they’ll be telling all their grandkids about how they used to walk 10 miles in the snow just to drop off a thumb drive full of TPS reports to the Assistant Regional Manager. Uphill both ways, of course.

So here’s the thing — when I set up BitTorrent Sync on my computer, I screwed it up. I’ll spare you the details, but I will say that I got through the first steps, but because I misunderstood one critical thing about how the software works, I broke the sync and caused some files to become inaccessible to my co-workers. I re-read the instructions a few times, but it really took a video chat session with my (very smart) co-workers to help me fix it.

High drama for a Wednesday

The thing about grandpa’s advice is that it’s usually a little bit more dramatic than necessary. When grandpa says he “walked uphill both ways in the snow,” this is what I’m talking about. He does it because its a lot more fun, but also because it helps make his point. So, just like Grandpa, I made this all bit more dramatic than it really was. I’m happy to say that my breaking of the company’s file sharing system wasn’t permanent. We got our system fixed in less than half an hour, and that is actually the very reason that we made the switch to BitTorrent Sync in the first place.

We try to do everything we can to be responsible stewards of all our clients data. To that end, we have been looking for a way to end our dependency on Dropbox for a few reasons:

  • Dropbox is very convenient, but if something goes wrong with Dropbox’s centralized servers, then we lose access to the canonical copy of our files, and everyone’s local copies risk entering a split-brain state.
  • We can’t access our files on Dropbox when we’re offline.
  • Dropbox’s has access to our files, and can (and does) open them.
  • Dropbox doesn’t have as much flexibility for each individual to organize the data in his or her own way; you’re stuck

Once you stop breaking it, BitTorrent Sync works well

Let it be known that I am a Typical Computer User. I didn’t care much about the internet issues that my fellow Rocketeers talk about — security, privacy, peer-to-peer, open source, net neutrality and so forth. I had no idea what this stuff meant before I started working here, but now that I do, I’m proud to say that we’re taking steps to direct our use of the potential of the internet in a really positive direction. Even though it has been a very steep learning curve for me personally, I’m happy to report that our clients’ data is far more secure than it would have been before, and we have a much more robust and flexible data sharing system.

This post isn’t a shining endorsement of BitTorrent Sync. The software has been difficult to learn, especially for the members of our staff who aren’t as technically adept as the others. (Ahem.) Also, BitTorrent Sync’s software is not open source or open protocol, and it does not have a key revocation mechanism. These are all things that make this good software into great software, or at least that’s what the Computer People here tell me. For now, we’ll stick with BitTorrent Sync even as we continue looking for better solutions.

Comments

  1. Jon Jennings (@JonJennings)

    Very interesting… think I’d missed that becoming available.

    Not needing a central server sounds attractive – although I’m assuming there’s something central involved somewhere that enables clients to find each other (or maybe it uses that weird BitTorrent DHT stuff… I could never get my head around that)

    But, as you say, closed source and the current inability to revoke a client are major negatives.

    Have you checked out OwnCloud? It’s an open source Dropbox replacement and just released a new version this week… supposedly a lot of polish & bug fixes in the new release. Yes, it needs a server to run on but that server could be one of your own servers so you’ve got a lot more control than with Dropbox.

    Haven’t had a chance to run it myself yet (currently migrating servers & there’s a long todo list before I get to that) but I’ve heard good things about it.

  2. Douglas Detrick

    Hi Jon, thanks for reading! Its been good learning how to use BT sync, I’ll point out your comment to the team. I think we have looked at Own Cloud as well, but went with BTS for a few reasons. But, as we said, we’re always on the hunt for better options!

  3. Matt Pearson

    We definitely looked at OwnCloud when we first started hunting for a Dropbox alternative. Given some of the unwieldiness we experienced trying to make BitTorrent Sync work for our entire dataset, we’re already revisiting OwnCloud, which does indeed look much more solid than it used to. AeroFS is another centralized system that we looked at adopting.

    Despite the unwieldiness, we ran into setting up a massive pile of Shares (let alone managing them and having to change their Secrets later down the road), and the somewhat confusing language you have to wrap your head around in order to discuss the thing, the complete lack of any server made it really, really easy to get started with. You literally just install the client software, and make a Share… although that’d admittedly saying “just run `git init` and you’ve started using Git!”… you’ve still got to wire some other stuff up before it starts becoming truly useful. We had to figure out a way to safely distribute the Secrets for all our Shares, for example.

    But yes, there truly is no “server” involved. The clients negotiate connections and maintain a DHT directly with each other using the usual suite of tricks other bittorrent protocol flavors use. For a given Share, you can also tell it to search the global BitTorrent Sync network’s greater DHT as well, though I believe this setting is wisely disabled by default. In the case where a client can’t establish direct connections with its peers, BitTorrent (the company) does maintain a cluster of rendezvous servers that a client can tunnel its connections over if it can’t establish direct connections with its peers. But unlike centralized systems, any and every middleman is only passing buckets of encrypted bits, and is never guaranteed to see much, if any, traffic… and no middleman ever controls the data at rest. BitTorrent Sync is very much a “trust no-one” tool; if the security of the protocol holds, you’re fine, end-to-end. This may be our biggest reservation, actually. A publicly documented protocol with multiple implementations is inarguably more secure than the same protocol being undocumented with only a single closed-source implementation, and BitTorrent Sync hasn’t stepped up to the plate there yet.

    Continuing with the serverlessness, since every node in the network is an equal peer, all they need in order to propagate data is a network connection. If two peers are on a completely isolated LAN, but can still see each other, they will sync. Systems like Dropbox uniformly seem to require clients upload all changes to the mothership before the dataset’s state is allowed to update; the speed of your shared file system is thus limited to everyone’s respective Internet connections. Your BitTorrent Sync network is limited by the fast link between two peers; if your laptop can see your desktop, for example, your changes will upload there first, and you can then close your laptop while your desktop seeds to the rest of the swarm. This kind of network will beat the pants off of an OwnCloud instance’s performance, let alone Dropbox’s rate-limited speeds. The more data you’re dealing with, the more this matters; we’ve got several gigabytes floating around, with some files being easily a few hundred megabytes. And I’ve got about a half terabyte of photography data synced between my own machines.

    But yeah, there are plenty of trade-offs here. We’ll probably end up with something of a hybrid system; something more centralized and policy-enforceable to handle bootstrapping all our BitTorrent Sync connection info, and then BitTorrent Sync for handling the file system data itself. It’s also worth noting that BitTorrent Sync is basically just a distributed file system. Something like OwnCloud tries to be this too, but is really designed to do a lot of other stuff that BitTorrent Sync doesn’t even try to do. OwnCloud may very well end up being a good chunk of our email/contacts/calendar/docs PIM infrastructure, for example. There’s also the “hand a URL to someone so they can download a thing” use-case that BitTorrent Sync can’t solve (though maybe more widespread support for `magnet:` links might help), or “I just need to upload this one thing to the file system, but don’t want to download the entire file system first” use-case.

    I’m also working on figuring out ways maintain and push a single to multiple instances of the command-line `btsync` client. This would let me set up a few nodes on “real” servers with read-only Secrets for some subset of our Shares, which would mirror content and bolster the network capacity and availability. And since this thing is derived from BitTorrent’s protocol, it seems to fail on networks that are hostile to vanilla BitTorrent… so I’m hoping to find a way to help it either better tunnel out to the “mirror” servers in such cases, get it working over a VPN-like VLAN thing. So we’ll see.

  4. Dan Adams-Jacobson

    Pardon the necro-post, but since I just met you guys… :)

    Matt, that’s a helluva comment! Could be its own blog post. I’ve been flip-flopping between using Bittorrent Sync and Owncloud and haven’t found the time to try either, so hearing others’ experience is very helpful. Thanks for that.

    Also funny coincidence to see Jon’s face on here; he’s one of the first and finest local WP devs I’ve met!

    • Matt Pearson

      Thanks! No worries about reviving this zombie.

      We’ll probably do another post at some point, now that we’ve lived with the software for awhile. There are some definite pitfalls and disadvantages to the software’s way of doing things, as well as some interesting improvements to the software itself (nesting shared folders is now sort of possible, for example).

      The upshot is that BTSync is crazy-simple to try out. You install the client in two places, and just start using it. It’s as simple as (if not even more simple than) Dropbox et al. OwnCloud has the server component to set up, and many more nobs to twiddle.

Leave a Reply