files icon indicating copy to clipboard operation
files copied to clipboard

Share files in LAN and Internet

Open davidak opened this issue 4 years ago • 4 comments
trafficstars

Problem

I want to send a file to a friend.

I might visit him currently (so my notebook is in his LAN) or more likely in the pandemic, we are in 2 different houses, so the internet has to be used.

This sounds like a problem simple to solve, but the popular solutions are horrible!

https://lifehacker.com/what-s-the-best-way-to-share-large-files-with-friends-1486810038 https://www.makeuseof.com/tag/5-super-easy-tools-share-files-friends-devices/

file_transfer

xkcd 949

Proposal

Apple has a very user friendly design here with AirDrop. The problem is, it works only on Apple products.

It would be great to add such a feature to elementary Files, but it should also be compatible with other possible implementation. Maybe you can collaborate with GNOME here, so they have it too in their files app.

ShareDrop has implemented such a tool in the browser using WebRTC. It could be used as fallback.

So i expect to be able to right-click a file, select "Send to" -> select either a person in LAN or "Share with Link", which gives a ShareDrop link the other person can use do receive the files.

There should also be a stand-alone desktop program, that might adds itself to the status bar. Someone else could implement it. It would be great to be platform independent, so Mac, Windows and *BSD users can also participate in this.

That program could be developed with GNOMEs libhandy, so it can be also used and integrate itself into mobile Linux (smartphones, tablets, smartwatches, ...).

It should really be a user friendly, platform independent solution to share files.


Such a P2P solution works great as long as both devices stay on and don't get shut down or in sleep mode.

So the program should tell sender and receiver "leave the device on until transfer is finished"! There could be an option to shut it down when it's finished, like encoding apps often have (if transfer will take hours).

For the use case that i want to send a file now and the other person might want to download it some days later, a cloud storage is needed. That's why something like WeTransfer and Dropbox is very popular.

We could offer an optional, temporary, zero-knowledge storage (for 5 GB files max) and the community could host the backend software with other limits. A server could be chosen by ping (nearest). This backend can also configure a max for used storage, so i might donate 20 GB of my VPS (and 4 TB storage) to this and when this is used up, the backend should not accept new requests.

I think we need a standard for this, probably based on WebRTC, so different implementations can work together. This could be an independent project, maybe a collaboration between linux distros, maybe Purism is interested too for their Phone, maybe system76 is interested too. Let's see if something can be organized.

Prior Art

  • AirDrop by Apple
  • ShareDrop (Free Software, works in Browser, using WebRTC)
  • Snapdrop (Free Software, works in Browser, using WebRTC)
  • Blaze (Free Software, works in browser, uses WebTorrent and WebSockets protocol (as a fallback))
  • blymp.io (Free Software, works in Browser)
  • WebWormhole (Free Software, works in Browser and CLI)
  • instant.io (Free Software, works in Browser, using WebTorrent)
  • croc and magic-wormhole (Free Software, CLI tools)
  • Transporter (Free Software, GUI for Magic Wormhole, designed for elementary OS)
  • OpenDrop (Free Software, CLI tool, compatible with Apple AirDrop)
  • Sharik (Free Software, CLI and Android)
  • Warpinator (Free Software, seem to be a Desktop tool, Developed by Linux Mint)
  • NitroShare (Free Software, Desktop app for Linux, Windows, Mac)
  • Dukto (Free Software, Desktop and Android, unmaintained, last release 6 years old)
  • LanXchange (Free Software, Desktop and Android, last activity 2017)
  • teleport (Free Software, GNOME, GTK)

davidak avatar Mar 27 '21 22:03 davidak

Probably best to limit the issue initially to sharing files on the same network? Sharing over the internet securely without a third party is more demanding. Presumably all the above solutions require both devices to have the same software solution installed? So are we talking about sharing to other elementaryos devices or other Linux devices or to other OSes?

jeremypw avatar Jul 17 '21 18:07 jeremypw

Presumably all the above solutions require both devices to have the same software solution installed?

different software solutions can use the same protocol, so no. like there are different bittorrent or e-mail clients

So are we talking about sharing to other elementaryos devices or other Linux devices or to other OSes?

the end goal would be to share files between every device where you have files. computers, smartphones, smartwatches, toasters

the free software developer community should create a standard protocol that is so popular android will include it by default. and elementary OS can lead with a good integration directly in the files program (that has to happen at a late stage where the protocol and a robust library already exist)

it's a big goal, i know. but we can start small. i currently don't have the resources to initiate such effort, so for now i just shared the idea

it's crazy that we still don't have an easy option to share files between two devices

davidak avatar Jul 17 '21 19:07 davidak

different software solutions can use the same protocol, so no.

You are right of course, my language was too loose. But is there a suitable common protocol to target? Until there is I am not sure how to progress this.

jeremypw avatar Jul 18 '21 09:07 jeremypw