elementary / elementary/files

Share files in LAN and Internet

Open
#1,640 5 comments 3 reactions 0 assignees View on GitHub
Priority: Wishlist
Dominant language
Vala
Stars
365
Forks
82
Avg merge
4d 2h
Merged PRs (30d)
3

Description

## 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](https://user-images.githubusercontent.com/91113/112771998-bb49bf80-902e-11eb-96cf-306a274d0ec5.png)

[xkcd 949](https://xkcd.com/949/)

## Proposal
Apple has a very user friendly design here with [AirDrop](https://support.apple.com/en-us/HT203106). 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](https://www.sharedrop.io/) 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](https://support.apple.com/en-us/HT203106) by Apple
- [ShareDrop](https://www.sharedrop.io) (Free Software, works in Browser, using WebRTC)
- [Snapdrop](https://snapdrop.net/) (Free Software, works in Browser, using WebRTC)
- [Blaze](https://blaze.now.sh/) (Free Software, works in browser, uses WebTorrent and WebSockets protocol (as a fallback))
- [blymp.io](https://blymp.io/#/) (Free Software, works in Browser)
- [WebWormhole](https://webwormhole.io/) (Free Software, works in Browser and CLI)
- [instant.io](https://instant.io/) (Free Software, works in Browser, using WebTorrent)
- [croc](https://github.com/schollz/croc) and [magic-wormhole](https://github.com/magic-wormhole/magic-wormhole) (Free Software, CLI tools)
- [Transporter](https://github.com/cassidyjames/Transporter) (Free Software, GUI for Magic Wormhole, designed for elementary OS)
- [OpenDrop](https://github.com/seemoo-lab/opendrop) (Free Software, CLI tool, compatible with Apple AirDrop)
- [Sharik](https://github.com/marchellodev/sharik) (Free Software, CLI and Android)
- [Warpinator](https://github.com/linuxmint/warpinator) (Free Software, seem to be a Desktop tool, Developed by Linux Mint)
- [NitroShare](https://nitroshare.net/) (Free Software, Desktop app for Linux, Windows, Mac)
- [Dukto](https://sourceforge.net/projects/dukto/) (Free Software, Desktop and Android, unmaintained, last release 6 years old)
- [LanXchange](https://lanxchange.com/) (Free Software, Desktop and Android, last activity 2017)
- [teleport](https://gitlab.gnome.org/jsparber/teleport) (Free Software, GNOME, GTK)

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.