I did try a bunch of these peer-peer file sharing, the best ones the worked well are localsend and LANdrop, as I have a screen (basically a custom android tablet) in my car and I needed to send files without the car accessing any wifi, those two worked well. The others I tried that didn’t work well were: Arc, Sharedrop, pairdrop, and snapdrop.
SnapDrop was so buggy that the transfer speed was very slow, sometimes hitting the send button did nothing, and need to open browser on the target machine first and recently somehow it stopped working completely, I figured installing NextCloud client on my Android phone solved it easily to have the file arrive instantly without complications.
Having to download an app for each platform to use it is a huge drawback for me. LANdrop seems to require this (unless I am not understanding it well).
Maybe a drawback for your case, but it’s the feature I was looking for, one of the devices (my car screen) has no internet access at all, so I loaded the APK file there, and used it to transfer the files from my iPhone to it without internet, it wouldn’t be possible with the likes of snapdrop, and it didn’t even work properly in other two devices that had internet access.
Been running a selfhosted PairDrop instance for about a year now and it's amazingly useful. No apps to install, just web based "AirDrop" that works across macOS, Windows, iOS, Linux...
I've seen probably four or five different brilliant file transfer solutions that totally solved the person to person file transfer problem posted to HN and every dang one of them was shut down or abandoned.
Because the problem doesn’t exist. Non tech folk use stuff like imessage to send things and rarely deal with large files at all beyond images or video. That works fine for them. Tech people use proven existing tooling like rsync or ftp. The only market that exist for this I’d guess is resumeware which explains why these projects are all built then abandoned.
Tech people don't use rsync or FTP because those are terrible solutions. FTP is insecure and requires setting up a server. Rsync requires an account on both machines.
In my experience companies usually end up paying for a service that solves this problem for their employees. Yes really.
or RustDesk. RustDesk has a nice GUI and file transfer has a really nice two pane file explorer view but that is obviously not great for transferring files to people you don't fully trust.
> Non tech folk use stuff like [messengers] to send things
Yes, and tech folks too, but what about if you're not already connected friends? You don't want to invite your entire audience at a conference to send them slides.
You either need to already have a website and say "click on News and find the entry for today", have them type over some long URL with perfect accuracy, or use a link shortener to the same effect. It always requires having hosting, unless there exists file sharing services. That's the problem these things solve.
Also mind that there are size limits in most messengers on the order of a few hundred megabytes. You don't run into them that often, but whatcha gonna do when you do? A dedicated file sharing service that supports in the gigabytes range solves that situation as well.
I can recommend PicoShare which I've been self-hosting for a while.
It's a couple of years old now and still maintained. Also, it's very simple and allows for guests too.
For a Linux user, you can already build such a system yourself quite trivially by getting an FTP account, mounting it locally with curlftpfs, and then using SVN or CVS on the mounted filesystem. From Windows or Mac, this FTP account could be accessed through built-in software.
I was unaware there was copypasta on HN. I know this might be generally the sort of post that the site wants to avoid, but the phenomenon of copypasta within a given community still makes my heart smile a little bit.
Now that we’ve shifted our company’s focus to https://socket.dev, I’d love to open source Wormhole. I’m quite proud of the code - I’ve worked on P2P and file transfer systems for so so long that I think this might be some of the best code I’ve worked on.
It’s just a matter of finding the time, but I expect this will be open source eventually.
I use `python -m http.server` on the sender side, and https://github.com/Densaugeo/uploadserver on the receiver side if Python or the network is problematic to setup on the sender. This is simple and works well for my use cases, since I don't have a need for those features you mention. The only feature I miss is encryption, which could be done via an SSH tunnel with a bit more work, but I usually don't bother if I'm on my home LAN.
I recently started using SyncThing, it seems just perfect to share between two people. Maybe I'll put it on a server as well so we can sync without being online.
It's definitely pretty nice, but the ergonomics of it for someone that's not that good with computers can be a little hard. I've gotten synced folders into bad states before that took a long time to fix. It's also kinda awkward having to send over a nominally private and very long ID string to set up the share in the first place.
That device ID you have to send to someone is not nominally private; it is in fact explicitly the public key of a key pair. If you use the public discovery servers (which is the default), that key is sent there so people who'd want to connect to you can look up your IP address with it.
> No. The IDs are not sensitive. Given a device ID it’s possible to find the IP address for that device, if global discovery is enabled on it. Knowing the device ID doesn’t help you actually establish a connection to that device or get a list of files, etc.
> For a connection to be established, both devices need to know about the other’s device ID. It’s not possible (in practice) to forge a device ID. (To forge a device ID you need to create a TLS certificate with that specific SHA-256 hash. If you can do that, you can spoof any TLS certificate. The world is your oyster!)
Ah, thanks for the clarification. I guess I just saw a key larger than an IPv6 address and assumed it was something I couldn't share openly. It does seem weird that it's that big then. 50+ characters that can be A-Z0-9 feels like an insane amount of entropy for something that's essentially a proxy for a 12 digit number. It's longer than Windows product keys or the SSH public key I use for Github!
Additionally, I don't necessarily want a key sitting out there that will let any random person who finds it a dynamic way to look up my current IP address. It's not the worst thing in the world, but it's definitely not something I'd publish publicly.
> 50+ characters that can be A-Z0-9 feels like an insane amount of entropy for something that's essentially a proxy for a 12 digit number.
That's not all it is. It's your cryptographic public key.
> Additionally, I don't necessarily want a key sitting out there that will let any random person who finds it a dynamic way to look up my current IP address.
Sure, that makes sense. How else would you propose that it work?
Just to mention, you can use a private, self-hosted discovery server.
> The introducer feature lets a device automatically add new devices. When two devices connect they exchange a list of mutually shared folders and the devices connected to those shares. In the following example:
> Local device L sets remote device R as an introducer. They share the folder “Pictures.” Device R is also sharing the folder with A and B, but L only shares with R.
> Once L and R connect, L will add A and B automatically, as if R “introduced” A and B to L.
> Remote device R also shares “Videos” with device C, but not with our local L. Device C will not be added to L as it is not connected to any folders that L and R share.
Thats not the same. It means to designate one device as 'primus inter pares', and what I like about Resilio and p2p that there isn't a 'server'. I don't have one!
So then I could make all my devices introducers, which is really the same amount of work, plus adviced against because then no device can ever leave your network (remove it from one then all others will re-introduce).
Dealing with devices is really not what I want. I understand that Resilio is a bit too basic on security, because the share key is the deencryption key (in most cases), but Syncthing isnt quite it either. I think it's suited for few devices and a knowledgeable person, but not my use cases.
This is mostly where I am. Syncthing is a great replacement for something like Dropbox for me to share things between my own computers and not have to care about file size or the like. It's not really a reasonable P2P file sharing option unless the other person already uses Syncthing for their own use case, or you can just get it set up for them and then hope it never breaks. Even then, it's only really reasonable if it's someone you plan to regularly need to send larger files to. For smaller files or one-time sends, there's better options.
Resilio was there first actually, created by the Bittorrent company of old. The main con is it is closed source and less secure, depending on your threat model. Pro is it works really well, and is compatible with less skilled users.
I also came here to put in a word for Resilio. It's the fastest and most hassle-free thing I've found that doesn't require a server. SyncThing was always very slow to reconnect and update for me.
Let's say I want to share a file with a friend internationally. First off, while there are some reasonable UXes for Syncthing, a lot of them are pretty basic, or rely on running a daemon and then connecting a web browser to Localhost to see what's up. Once they get it set up, then I have to actually set up the share with them. To get them hooked up to my share, I have to send them a 50+ character ID string somehow, which they then have to input into a UI that's far from easy to use. The key is much too long for me to want to read over the phone, and putting it in a chat somewhere means that if that chat ever leaks, my private key for my shared folder is out there. They offer a way to send a QR code, but that has the same leak risk, and scanning a QR code on the computer you're already on is awkward.
In short, it's a great tool, it works well in general, but the initial setup is pretty cumbersome if all I want to do is send a couple files to someone.
Additionally, I've had a couple time where even just syncing between my own devices broke. I think it was something where files were changed on both sides and the reconciliation algorithm got confused, but it was hard enough to debug for me, with direct access to both devices, and decades of experience running and programming computers, that I'd never want to try to debug that over the phone with a friend.
One convenient feature if you run a third instance on a server is that you can "distrust" the server by encrypting the files you sync (this is done at share level), then only entering the decryption password on the trusted end devices. That way plaintext file content doesn't sit on the server.
It's worth checking exactly what is encrypted as I don't think folder and file structure and names were encrypted.
I use syncthing between three different systems and it’s great for keeping multiple systems in sync. One of them takes daily backups of the shares, so I have time-machine like backups too.
The age of piracy has dawned upon us yet again! WHO wants to be paying $100+ every month to Disney+ Netflix Hulu etc. just to watch 1 or 2 shows on each service?? Who the hell wants to pay for a game that works worse and hurts the customers more than a deDRM'd, cracked version?
People who don't want to faff about with VPNs, BitTorrent, malware scanning, and the anxiety of never knowing if your gaming machine has been compromised or not.
Before trying it in my lab, could the author elaborate on what's its killer feature?
The README mentions that it's an alternative to both Dropbox and WeTransfer. My current alternative to Dropbox is Nextcloud, and my current alternative to WeTransfer is (formerly Mozilla) Send. What's the added value of YouTransfer compared to this solution?
I'm also put off by the fact that the README has a big "looking for a new maintainer" disclaimer on top, and the demo page doesn't even work. Sure, I could put enough effort into maintaining a project if I see its added value, but in this case it seems to be a product trying to sneak into a market where there are already viable and well-maintained open alternatives.
I really like Send, I'm not sure it's still maintained, but it works well, so I don't know what there is to maintain. It comes with a cli utility as well.
Because there are many unknown, probably worth of being picked by some volunteers.
I think it'd be worth creating some place (HN subsection?) where a list of dead or unmaintained, still worth of attention, projects could be kept so that potential maintainers could be made aware of their existence.
Just a simple list, all text, one line per project with a bunch of fields: YYYYMMDD formatted date of last update | Name (resolving to link to the project page) | Short description | clickable short list of say max 5 tags so that users can find similar ones just by refining the search to the desired tag(s).
It takes so much time and effort though. It would really be a labor of love to take up someones abandoned piece of work thats probably got deep structural issues if the author decided to pack up and leave already.
taildrop (https://tailscale.com/kb/1106/taildrop) is also nice to have if you already have a tailscale network set up for your devices. helps with the networking bit also.
For non sensitive data, ufile.io is the most decent drop app I could find. Been around for a while and am surprised they haven't yet spoiled it with dark patterns, removal of free tier, sold out.
For sensitive data, Google drive. Share.
For very sensitive data, encrypt, ufile.io, or Google drive. decrypt on the other end. Quite a pipeline but note that it paradoxally doesn't require a self hosted drop app.
Ipfs? Still not nearly as simple as via google drive, needs native app app running. Drains phone batteries, requires manual encryption for anything sensitive as file access can't be gated.
Blockchain? Except for tiny blobs, impossible.
a p2p app that use some open KPI for encryption would be great.
https://github.com/localsend/localsend