At one point in his demo, he uploads a file but terminates the upload more or less halfway. Then he begins downloading the file - which only progresses to the point it had been uploaded, and subsequently stalls indefinitely. And, finally, he finishes uploading the file (which gracefully resumes) and the file download (which is still running) seamlessly completes.
I found that particularly impressive.
That’s really cool. I’ve never seen that work before.
IIRC webtorrent /can/ do streaming though....
This is underselling it by at least three orders of magnitude. This is astonishing tool, you have to watch the demo video: https://www.youtube.com/watch?v=15_-hgsX2V0
If the author is lurking here, are you doing all by yourself? Do you use any LLM/agent?
It really is impressive.
Yup, this is 97% just me hacking away in vscode -- I use pylance and the debugger but have everything else disabled, easier to focus that way. The only time I use any sort of AI/LLM is for translating new strings into Chinese, since it seems decently capable at that :-)
The remaining 2% is friends coming up with new usecases/features, and sometimes finding bugs.
But now that the project got way more attention than I'd anticipated, pullrequests have started appearing, so it doesn't look like those statistics will stay true for much longer! Really cool having more eyes on it spotting the things I overlooked, really enjoying that.
I noticed this which brought a SMB question to mind:
>login doesn't work on winxp, but anonymous access is ok -- remove all accounts from copyparty config for that to work
>win10 onwards does not allow connecting anonymously / without accounts
Is this an intentional limitation in copyparty itself, or maybe just the progressive difference in Windows versions?
The only thing I'd like is some way to run it behind a cgnat. I was on starlink and I'm on an 5g device now.
If there was a way to integrate with Google drive mega Dropbox, githubs etc where I could drop a file list request document one of those services, and your server is pinging that (intermediate) storage service, detects the file listing request or file push request, or file upload request doc, and then does it.
I know each of those is an integration headache but man that would be useful.
Ok so GitHub has a built in markdown editor, so the request docs could be markdown templates. Or maybe static html/js files that generate markdown request docs, and file listing responses can be markdown or more static html docs.
Were you a part of the efnet ansi/ascii scene?
There's still some of us floating around!
Great project btw, nice work!
> seafile … and nextcloud … their license is problematic
There’s nothing problematic about the AGPL, really. It protects users. It protects developers against someone taking over their projects. The only people it bothers are those who wish to take a free software project and integrate with an unfree one. That seems like a feature to me!
I even emailed Stallman about it. The only way to make a proprietary version of an AGPLv3 project is to pay the original copyright holders for a special proprietary licensing deal, thereby supporting its development. Forks don't have the same privilege.
Amazing.
Now I am wondering, would it be technically possible to build a similar app but based on the syncthing protocol?
I really like syncthing but it would be cool to have a version where you could just easily share specific files with peers.
I've also seen quite a few semi-technical youtubers make videos about it but not mentioning that it uses public relay and discovery servers usually by default (but maybe that depends on the distro). It's not a bad thing but something one should know before using it.
Never mine, it's back now.
[keeps watching video] what the fuck
By the way, the youtube video showcases this project really well.
(You know, like the neighbourhood "take-a-book, leave-a-book" little libraries, except for... digital content... It would fly an appropriate "skull + crossbones" flag...)
I created a PirateBox on a little GliNet router a while back with the intention of sharing public domain content but didn't do so beyond having a quick play around with it myself.
*It already has no deps
Great job there. A nice tool you've made.
Edit: already adressed: https://github.com/9001/copyparty?tab=readme-ov-file#copypar...
Yes when I heard it was python I immediately checked the dependencies expecting a ginormous list and found basically nothing. Incredibly impressive, just a few "stolen" libs here: https://github.com/9001/copyparty/tree/hovudstraum/copyparty...
Worth scrolling through util.py to see lots of hand-implemented code: MultipartParser, read_header(), read_socket_chunked(), html_escape(), atomic_move(), killtree ("still racy but i tried"), termsize(), etc
https://github.com/9001/copyparty/blob/hovudstraum/copyparty...
6k loc for http server/client handling transferring files, rss feed, etc. See `def run(self)` for main request parsing.
https://github.com/9001/copyparty/blob/hovudstraum/copyparty...
> inverse linux philosophy -- do all the things, and do an okay job
Seriously considering replacing my navidrome/subsonic service and try my music library trough this. I used to play music straight from the directory tree a long time ago anyway, this might feel right at home.
> NOTE: full bidirectional sync, like what nextcloud and syncthing does, will never be supported! Only single-direction sync (server-to-client, or client-to-server) is possible with copyparty
Worth noting that if you're considering using Nextcloud this may be a dealbreaker... But if it's not, I would also recommend not using Nextcloud!
You'll likely need to root the phone to get the OS not to kill the termux process due to idleness though.
> inverse linux philosophy -- do all the things, and do an okay job > - quick drop-in service to get a lot of features in a pinch > - some of the alternatives might be a better fit for you
This includes a link to this doco in the repo which is an incredible source of info: https://github.com/9001/copyparty/blob/hovudstraum/docs/vers...
I took a glance at the code and it's... not great. It's absolutely full of short, meaningless 1-2 letter variable and function names that make it very hard to read and understand if you're not the original author. Wouldn't be surprised if it's full of security holes that will never be found.
> i want to learn python and/or programming and am considering looking at the copyparty source code in that occasion
> do not
I don’t think I’ve ever used a piece of software in my life that had no bugs. At least with no deps (vs say a nodejs project with 500 of them) then the bugs will only be in one place, the main software so ideally they can be fixed quickly.
(For others, it’s a method to follow people across multiple services without being a normal feed. A person who updates only shows up once.)
> i want to learn python and/or programming and am considering looking at the copyparty source code
> do not
For example, access over OPDS, which one could then configure as the store backend on Kobo eReaders (yes, that's possible).
I had been using serverultimate on my phone for a few years, and recently limitations made the port binding not work anymore. Copyparty using termux on Android worked amazing!
Thanks!
Now I feel like crap seeing how amazing this project is.