Good bittorrent daemons are hard to find. rTorrent is common but it tacks on this difficult curses interface you have to deal with. Transmission is okay but it tends to get buggy and break down at scale. Deluge is buggy as hell. btpd is too bare bones, a lot of important features are missing. All of these options also have really poor RPC protocols that use a lot of network, are annoying to write clients for, and don’t scale.
synapse focuses only on being a good daemon and delivers only that. The UIs are offloaded to separate projects. If that doesn’t seem like much, that’s because it’s not - but surprisingly this is not easy to find. We made it because there were no good options.
Transmission is okay but it tends to get buggy and break down at scale.
I must not have used it at scale before, it always seems to work for me. What sort of failure modes do you observe? Corrupted downloads? Halted downloads w/peers available? Other?
Transmission crawls to a halt if you have several hundred torrents. The RPC protocol also becomes unweildy, because it polls for updates and has to resend large amounts of data every time it refreshes. Synapse is more performant with large torrents or a large number of torrents and the RPC is push based, with subscriptions and differential updates.
Everything I’ve tried has been horrible at scale except rTorrent, and most of the non-rTorrent choices can be pretty horrible even when at a modest amount of torrents (qBittorrent at a certain point ‘invisibly’ adds torrents etc.). With rutorrent as the frontend, I’ve been pretty happy with rTorrent.
Synapse looks interesting, though I’m not terribly enthuasiastic about the node.js webclient (the node.js Flood client uses significantly more resources on my system than does the php rutorrent).
Receptor is 100% frontend, pure static content. Node is just used for compiling and packaging it. You don’t even have to install it yourself - a hosted version is available at web.synapse-bt.org.
I’ve done load testing (though not particularly realistic) and it appears that both synapse and receptor perform reasonably at the order of 1000 torrents. One of the goals of the project is to perform well at scale and there’s been a fair amount of ongoing work to achieve that.
I wonder if this could be used as the basis for a new and better desktop torrent client?
For sure. I also wrote a tool that translates Synapse RPC into Transmission RPC, too, so any Transmission desktop clients will work with Synapse:
https://broca.synapse-bt.org/
This is awesome. I’m thinking of writing a docker-compose file to integrate these into an easily usable desktop setup
Why this over something else?
Good bittorrent daemons are hard to find. rTorrent is common but it tacks on this difficult curses interface you have to deal with. Transmission is okay but it tends to get buggy and break down at scale. Deluge is buggy as hell. btpd is too bare bones, a lot of important features are missing. All of these options also have really poor RPC protocols that use a lot of network, are annoying to write clients for, and don’t scale.
synapse focuses only on being a good daemon and delivers only that. The UIs are offloaded to separate projects. If that doesn’t seem like much, that’s because it’s not - but surprisingly this is not easy to find. We made it because there were no good options.
I must not have used it at scale before, it always seems to work for me. What sort of failure modes do you observe? Corrupted downloads? Halted downloads w/peers available? Other?
Transmission crawls to a halt if you have several hundred torrents. The RPC protocol also becomes unweildy, because it polls for updates and has to resend large amounts of data every time it refreshes. Synapse is more performant with large torrents or a large number of torrents and the RPC is push based, with subscriptions and differential updates.
Has synapse been tested at scale then?
Everything I’ve tried has been horrible at scale except rTorrent, and most of the non-rTorrent choices can be pretty horrible even when at a modest amount of torrents (qBittorrent at a certain point ‘invisibly’ adds torrents etc.). With rutorrent as the frontend, I’ve been pretty happy with rTorrent.
Synapse looks interesting, though I’m not terribly enthuasiastic about the node.js webclient (the node.js Flood client uses significantly more resources on my system than does the php rutorrent).
Receptor is 100% frontend, pure static content. Node is just used for compiling and packaging it. You don’t even have to install it yourself - a hosted version is available at web.synapse-bt.org.
I’ve done load testing (though not particularly realistic) and it appears that both synapse and receptor perform reasonably at the order of 1000 torrents. One of the goals of the project is to perform well at scale and there’s been a fair amount of ongoing work to achieve that.
[Comment removed by author]
Sequential downloading and file priority are both implemented.
I love that approach!