Hi I'm the original author. Sorry to see that you got downvoted because it's a good question and a real limitation of my project. I might get around to building a follow-up some day with upload/sharing since that's where the actual interesting stuff happens (and not just shuffling bits around, with a shitty download algorithm tacked on like in my post). No real plans though. If I do that then I might have to rewrite some of the code and edit parts of the blog post, since I've grown as an engineer and writer since I made this two years ago.
As for your question of "Is that tolerated?" the question is a social one. As the sibling commenter pointed out, if you use a private tracker, you're part of a community that often has a social contract (implicit or explicit) that participation means you need to contribute back and have a good seeding ratio. In that case, only downloading -- like my client does -- is not tolerated and might get you banned. That's why I chose to demo with torrenting a Linux ISO, since those tend to be public, have a lot of seeders anyway, and don't really care how much you upload or download.
You may be thinking of private trackers, where "ratio" is the currency of participation in that community. Debian, Libre Office, and even Humble Bundle care more about the community of seeders sharing the bandwidth load than whether anyone seeds their ratio
I believe they are trying to clarify if this code is only for the 'downloading' portion of a BitTorrent client. It does not seem have any code for handling requests for pieces coming from other peers.
No. I'm thinking that a BitTorrent client, in my naive understanding, should share the file while it downloads it. Otherwise it's just a client/server system, isn't it?
That code is only downloading, as far as I can tell. Never sharing the file. I was just asking if that's tolerated in BitTorrent. My guess was that it is not.
It is a client/server system, but pulling from $n hosts instead of just 1, spreading out the load and also downtime risk across all $n hosts. And the reason I mentioned the "ratio currency" is your use of the word "tolerated" here: BitTorrent isn't the mafia, it's just a protocol that offers the ability to share pieces back to the Internet. As another concrete example, aria2c (https://github.com/aria2/aria2#readme) behaves similarly: using BT to download, but then exiting without attempting to seed anything
> It is a client/server system, but pulling from $n hosts instead of just 1, spreading out the load and also downtime risk across all $n hosts.
Well the point of peer to peer is that peers share while they download. Otherwise, if everyone only downloads, then it doesn't really get distributed. Also I meant client/server in opposition to p2p. Many non-p2p systems "on the cloud" spread the load and downtime risk across machines, that is independent from the p2p part.
> using BT to download, but then exiting without attempting to seed anything
I am not saying that you should keep sharing after it is downloaded. But typically BT clients "force" you to share while downloading.
> And the reason I mentioned the "ratio currency" is your use of the word "tolerated" here: BitTorrent isn't the mafia, it's just a protocol that offers the ability to share pieces back to the Internet.
Sure, sorry for my english, not my mothertongue :-). I know it is not the mafia, and I know it is a protocol. I used the word "tolerated" to ask whether or not, in practice, that gets you banned.
Was that worth a downvote? At least, if my question was that stupid, could you point me to the part of the blog post where it shows how pieces are sent to other peers?
Anyway it's a cool post! Would be nice to see a follow-up for the upload/sharing part!