There's this situation that comes up again and again: It's 2019 and I want to send a (potentially large) file from my phone to my computer, or from my computer to my wife's computer. How do I do it?
- USB connection? I don't want to dig out my cable and climb under the desk to plugin the USB cable.
- Samba share? Forget it.
- FTP server app? Works, but usually quite slow and painful.
- Start a HTTP server to serve the directory? That works, but seriously?
- Sending via E-Mail or Dropbox? Oh FFS, both devices are connected to the same WiFi access point, how can it be that uploading the file to a cloud hosted across the world and downloading it again from my other device is the simplest approach?
So far, Sharedrop is the simplest solution I know that works across any device that has a modern browser and that allows me to send the file directly from one computer to the other, without the need for logins or accounts or external software or arcane command-line incantations.
(The WebRTC Datachannel stack is horrible and mostly neglected by browser vendors, especially Google, but that's another story...)
Windows now has "Nearby Sharing"[1], which should at least solve this problem between Windows computers. I think the idea was that it would eventually also be available on Android, but I haven't yet seen an implementation of it.
Of course of you're using the Apple ecosystem, there's AirDrop...
The main issue with file transfer is that it's a context where security and usability are nearly mutually exclusive features. To me we still have to address point #1 which is how to get data in a transparent way from A to B (and C, D, etc.), whether none, one or more of them are on a PAN, LAN, WAN etc. Once the specifications are set, one can think of security and where to implement it in a way that doesn't affect usability. If I had to share a file on all my machines, I'd expect the software to let me drop/copy it into a directory knowing that anything put there will replicate on all my machines no matter where they are, that is, managing fixed/dynamic IPs, VPNs, machines momentarily off, etc. Same for less or more restricted transfers such ass for example passwords files or public documents. Everything should be transparent so that if I set up a similar system on granma PC I know that once she puts something into a public folder it's being shared with everyone (with her being warned about it beforehand) while a family only folder would have the content automatically shared (sent, replicated, backed up, etc) only to family members. To me it is very important that the software shows an abstraction of how would we operate in real life: public documents here and private others there, which would be very easy to understand: passwords, keys etc should be used only once to set up the system, unless they're revoked.
But before all that, we must solve the #1 issue (see above). IPv6 should help to solve that, but it seems to me that implementing it as it should be would impact too many businesses currently profiting from simply being the cable that connects A, B, C, D etc.
I have found btsync (now Resilio Sync) the best available p2p solution, albeit requiring sync app installation, still you need some app anyway, being it the browser, file manager etc..
It uses local network when available and of course internet when not. It also does iOS.. if only more apps were supporting FileProvider functionalities, so you don't have to import-duplicate all the synced data first.
It requires installing proprietary software on all devices though, while your browser already brings along an open source and mostly standardized P2P stack.
There are open source alternatives like syncthing, which is still not as user friendly.
Also single file sharing seems interesting, but this is not what you usually do on daily basis... You just want to drop some file to shared folder most of the time, or to have a ton of different files synced automatically.
I've tried syncthing as well as btsync (now called resilio); it's not just less user-friendly. It tends to be _much_ slower and eat tons of CPU due to a different algorithm. Resilio has a free tier that works fine for me, and I don't have an inherent issue with a proprietary program that works well. It's a very convenient solution, I haven't had issues, and highly recommend it.
I did this all the time between my computer and my brother's computer as a kid. They were on the same network (dad had the whole house wired for ethernet when they gut rehabbed it) and we just used Windows file explorer to drag and drop files from one computer to the other.
- USB connection? I don't want to dig out my cable and climb under the desk to plugin the USB cable.
- Samba share? Forget it.
- FTP server app? Works, but usually quite slow and painful.
- Start a HTTP server to serve the directory? That works, but seriously?
- Sending via E-Mail or Dropbox? Oh FFS, both devices are connected to the same WiFi access point, how can it be that uploading the file to a cloud hosted across the world and downloading it again from my other device is the simplest approach?
So far, Sharedrop is the simplest solution I know that works across any device that has a modern browser and that allows me to send the file directly from one computer to the other, without the need for logins or accounts or external software or arcane command-line incantations.
(The WebRTC Datachannel stack is horrible and mostly neglected by browser vendors, especially Google, but that's another story...)