Flow 1.7: Rethinking Transfer Decisions

The Context

Historically, working on Flow has largely meant working on Flow’s connection engine — the heart that powers Flow’s connections.

2011 was the year I got really serious about a lot of things, but chief among them was Flow’s connection engine. Namely, I tore it out, lit it on fire, and had a bonfire as I decided to build a beautiful, modern replacement. That bet paid off, big time. A couple months of polish later — as 2012 rolled around — it was time to start the next phase of Flow’s development.

It was time to start working on Flow itself. Not the connections, which are now stable, robust, and the fastest in the world — but the app itself. So began a journey of polishing and rolling, as John Gruber calls it.

Meet Flow 1.7

This update isn’t just an ordinary update; changes of this magnitude are ordinarily reserved for major (paid) upgrades. Here’s the crucial change (from the release notes):

Completely re-engineered transfer decision logic. Transfers are now incredibly resilient, using the first available connection rather than depending on one in particular. This resiliency dramatically lowers transfer latency, noticeably speeding up transfers.

With this new transfer decision logic, Flow breaks away from the pack, and really starts doing things differently. Most file-transfer clients have an preference that look something like this:

The trouble was, if you let too many transfers happen at once (each transfer requiring its own connection), at some point you’d exceed the server’s limit, and the transfer would fail. What’s worse: the server’s limit was variable, so it depended on the available resources and bandwidth in both directions. This was a real mess, and if you’ve ever had a transfer fail, that was probably why.

Screw that. We can do better. With Flow 1.7, no such trouble exists anymore. Go ahead and push that concurrency limit. You won’t see a single error.

And that’s cool, but it has an even more awesome consequence: resiliency breeds speed. Tranfser latency, or the time between one transfer finishing and another beginning, is dramatically reduced.


Flow 1.7 is available immediately. If you’re a direct-download user, select “Check for Updates…” from the “Flow” menu. If you’re a Mac App Store user, click here to update to Flow 1.7.

Of course, if you’re new to Flow, you can grab the Mac’s best FTP+SFTP client on the Mac App Store: