Hacker Newsnew | past | comments | ask | show | jobs | submitlogin
Picotorrent: a tiny, hackable BitTorrent client (github.com/picotorrent)
113 points by seddin on March 17, 2019 | hide | past | favorite | 38 comments


They decided to call it "pico torrent" even tho the client is several times larger than uTorrent?


Well, not several times.

uTorrent for Windows: 2.84 MB https://www.utorrent.com/downloads/win

picotorrent.exe: 3.98 MB https://github.com/picotorrent/picotorrent/releases

picotorrent also seems to come with a language pack while you download uTorrent's separately at 1.3 MB. Not that I think it matters.

Also, don't forget to include any ads or malware that might download with your next version of uTorrent: https://en.wikipedia.org/wiki/%CE%9CTorrent#Ads_and_malware


macOS Transmission : 10.6 MB macOS Slack : 185.8 MB

But it must be noted that Transmission doesn't support animated emojis.


uTorrent from the actual uTorrent era, e.g. 2.2.1, is 394KB, so, yeah, it is in fact "several times."


I am using Flud on Android, wonder what library it uses.

I've found it to be best, not tried transmission on Android tho.


Hi! Author here. The name has been with us since the beginning, and the first few versions were actually quite small. Since then, features and other things have made things grow (mostly in file size). Since I'm a lone developer, the hardships of working with the Win32 API has made me base PicoTorrent on wxWidgets, which is why the file size is what it is.

I still try to keep it slim, fast and clean in overall usage :)


If you can elaborate on the nature of hardships, I can try and help working around them, without resorting to wxWidgets.


Sure! Two examples where the Win32 API and/or my knowledge of it falls short,

  * Layout management. There's no "easy" way of managing dialog layouts (letting controls expand/shrink on resize etc).
  * Custom controls (e.g a tree-list-view) are clunky to write.
I'd much rather write PicoTorrent on top of the pure Win32 APIs, which I did in the beginning. It then evolved and when I valued time against frameworks, frameworks won, and saved me time :)

You can hit me up at the email in my profile if you want to discuss further!


Yeah, that's peanuts to be honest.

We wrote a layout manager and it's under 400 lines with very liberal vertical spacing. There's really not much to it - just hook the container window and reshuffle the contents in response to WM_SIZING, WM_SIZE. Handle WM_GETMINMAXINFO too if needed.

Custom controls aren't that much harder, but they do require some work indeed. TreeView and ListView are _really_ well designed in terms of customization support. The documentation is a bit heavy, granted, but once you get a gist of NMCUSTOMDRAW phases it's all pretty trivial from there.


Thanks for the information! It's given me a positive outlook on a second trial for the Win32 API stuff :)


No worries - would have done the same. Just found the naming a bit ironic :)


> PicoTorrent depends only on what Rasterbar-libtorrent needs

The UI appears to be based on wxWidgets, so that would be another dependency.


Author here - the readme is a bit outdated, sorry about that :) wxWidgets is a hard dependency since a few versions back.



I'm still waiting for WebTorrent to be implemented in more clients (including libtorrent, which AFAIK underlies Picotorrent). I'd love to be able to quickly deploy headless WebTorrent video seeds, especially if they were sequence-aware (sending chunks in order, possibly incl. MPEG DASH format, though that is patented somehow); and maybe commodity BitTorrent + WebTorrent CDNs could become commonplace.


I'm a huge fan of the WebTorrent protocol too, and think it has potential to completely transform the content distribution paradigm on the web.

However, the JS implementation leaves much to be desired. It's a huge resource hog compared to native libraries like libtorrent and torrents often freeze for no apparent reason on faster connections. Development seems to have also stalled quite a bit in recent times.

At this point I'd be more confident betting on something like IPFS in the long term.


I'm not too sure about the underlying technologies, but something like BitChute: https://www.bitchute.com ?

From what I understand it uses torrents to serve videos, where each viewer help seed the content for other viewers. There are limitations but it seems progress is being made.


For years I've actually been looking for a client that can handle seeding 500+ files and not just completely crap itself all the time. uTorrent seems to be a bit 'unsafe' and full of ads, deluge's web interface regularly falls over. What options are there out there right now?


I've been a happy Transmission user for a while now.

  - nice variety of clients/platforms

  - webui isn't completely terrible

  - works well in daemon mode

  - haven't encountered perf issues seeding 2k+ torrents/~5TB data

  - supports modern features (DHT, PEX, magnets)


Yes, Transmission is the most stable client I've ever used (Win or Linux), but like so may others, don't run out of disk space, or you're in for a major hassle rebuilding your index.


Only problem is Transmission uses its own core, and as a whole, core + UI it doesn't seems to be getting anymore development.

Which libtorrent just had its 1.2 released that has lots of changes.


I only use qbittorrent for years. Open source, free, crossplatform. There's not a single thing I miss about uTorrent.


I'm running rutorrent on a shitty shared server at its at 700 torrents right now. Its slow but its working. The JS ui is actually quite snappy but it takes a long time to get a reply from the backend so if you add a new torrent it takes about 30 seconds to show up.


Is it the only BitTorrent client with regex file filters?

Is there any client able to perform scripts to interact with the client API and downloaded files?


What makes this any better than Transmission?


Maybe it doesn't have any legacy cruft?

It's worse than Transmission because it has no mention of any good modern-ish features such as DHT, PEX, LSD(LPD) and it lacks both Linux, OSX and BSD support. Oh and it's banned (not-whitelisted) from all the private trackers.


(Author here) I haven't listed the specific features from Rasterbar-libtorrent but I'll make sure to do that in an upcoming update, to make it clearer. It supports DHT, PeX and LSD as well as various proxies (SOCKS4, SOCKS5, HTTP).

The first few versions actually had the vanilla Rasterbar-libtorrent peer ID and user agent, and in v0.5 users could opt-in to use PicoTorrent peer ID and user agent, and a few versions after that I made that the default.

I've been in contact with as many private trackers I could find and it's an ongoing effort to discuss with them what they require for whitelisting.


It’s a basic UI on top of libtorrent. So it has those features.

It’s very simple and that makes it effective enough for me. All I’ve got is some arch iso files. A fedora and a CentOS file. It starts instantly and connects to 800 DHT nodes, as opposed to Qbittorrent 2-3 seconds and 350 nodes.

I don’t know about private trackers. I don’t have anything I want to pirate.

I don’t see cross platform as a plus for mini sized, simple graphical applications. I see it as an advanced curl.


In my experience most private trackers allow clients that use libtorrent in general rather than specific clients that use it (e.g rTorrent).


The readme for this project specifies the user agent of the client as Picotorrent/x.y.z, which makes me think that most private trackers would block it.


Spoof it.


FYI, rTorrent use the other libtorrent by rakshasa


The screenshot in the README mentions DHT in the status bar.


I wonder why is not not Bittorrent built into browsers ?


I initially wrote a reply about usage pattern being different because uploading tends to be slower and requires the browser to be always on. But then there is no reason why it can't resume uploading to at least 1:1 Ratio next time it is opened.

Yes, why not? BT have many legitimate use-case.


If I remember correctly, the Opera browser used to have a BitTorrent client.

Then again, back then pretty much all browsers used to have an RSS reader as well.


Look up zeronet they do something like that.


Windows-only?




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: