Direct File Transfer Between Android & Apple Devices: Apple Announces Support For WebRTC

The Tide Is Turning Toward Decentralised Web: Apple Announces Support For WebRTC

The WebKit team working on Apple's version of WebRTC have just announced WebRTC and Media Capture for Webkit. This means, sending files directly between Apple & Android devices with no app or account needed is finally possible! It is available on Safari on macOS High Sierra, iOS 11, and Safari Technology Preview 32. These are 'pre-release' beta versions.

Open Cloud Storage as a Commodity

This is incredibly exciting for free & open file transfer services which seek interoperability between devices. It has the potential to shake up the cloud market significantly in the same sense that Uber is making Traditional Taxi Services irrelevant (real world) and (Geek) Joyent's abstraction of Docker by implementing its API.

Thought experiment: In England, we have a saying "Don't put all your eggs in one basket". It simply means: If you put all your eggs into many baskets instead of one, then you'll break less of them if you drop one basket with all the eggs in. This analogy works for cloud storage providers. Read on....

WebRTC is exciting because it helps to commoditise the use of file transfer, and related technologies (like Indexeddb) to support data storage between devices without the need for a central cloud storage provider or installation of any apps. Seshi is an example direct file transfer service built using WebRTC. See How WebRTC works in theory & practice if you're interested in learning how it works.

When I first started writing Seshi (and learning Javascript), it wasn't really possible to transfer files direct between any device easily without an app. You could easily transfer files directly from your Android phone to laptop without an app, but not Apple devices...incompatibility with Apple devices was always an embarrassment, not to mention frustrating.

Why not just use the cloud?

There are many serious considerations to balance out when using cloud storage: Amazon Block Store outage, Dropbox hack leads to leaking of 68m user passwords on the internet to name a few and some not so serious. But note, it's all too easy (and quite ignorant) to point out examples of when these systems fail- everyone coding/maintaining these systems is doing their best, it's the construct that's insecure not the people. Bruce Schneier perhaps puts it best:

"The upshot of this is that the marketplace doesn't reward real security. Real security is harder, slower and more expensive, both to design and to implement. Since the buying public has no way to differentiate real security from bad security, the way to win in this marketplace is to design software that is as insecure as you can possibly get away with." - Bruce Schneier

WebRTC Datachannel for file transfer

WebRTC allows the arbitrary connecting of devices together, you can, for example create a mesh network of many directly connected devices. This is the ultimate goal of Seshi, combine multiple connections over WebRTC combined with storage using IndexedDB which Seshi uses to store files.

A self-imposed design goal was to make Seshi as lightweight as possible using plain old js (but honestly, so I could learn js and understand what the heck was going on) and make it as decentralised as possible.

These "rules", along with WebRTC meant refusing to build any centralised component into Seshi wherever possible. Now with WebRTC support coming as standard on Safari & IOS devices this makes the sending of files directly without an app (or cloud) now possible. This is pretty awesome.

Sending Files Direct No Install Needed- Why?

Of-course it sounds silly to get so excited about file transfer- we've been doing it for years (see a brief history of file sharing). Yet, as more and more people come online (Google refers to this as "The next billion") it's become increasingly popular to throw our data into the cloud, even when there's potentially better, more private ways of achieving the same end.

WebRTC can mean commoditized distributed storage

In England, we have a saying "Don't put all your eggs in one basket". It simply means, if you put your eggs into many little baskets then you'll break less of them than if you drop one basket containing all the eggs! This analogy works for cloud storage providers.

What if you could safely store your files all over the web, and among all the devices you own? You can.

Imagine if you took your files and safely split them into tiny little pieces (let's call them chunks). Encrypt (put a "password") on each chunk whilst you're at it- remember this part.

Now, take those chunks and make many copies of them in case you loose some of them. Think for a moment how you might store them across the internet instead of putting all your eggs in one basket one place like Dropbox.

Where might you put them?
Hint: There's billions of people, many small businesses connected to the internet wanting to protect their data, but also their privacy. Paradox? Not really...

Commodity distributed file storage

With billions online, that's billions of potential places to backup, store files. What's needed is a system to manage this.

Where we're headed: Distributed Compute?

This is not just about storage. Inspiring projects like MaidSafe are making privacy vs cloud computing on the internet possible. It's a big project to question the validity and need to perform all your daily computing tasks via central provides (whom aren't necessarily the best value for money, nor privacy)

Also take a look at Tim Berners-Lee's next project from MIT "Solid" which is "a proposed set of conventions and tools for building decentralized social applications" and no doubt you'll love if you've read this far.