qbittorrent / qBittorrent

qBittorrent BitTorrent client
https://www.qbittorrent.org
Other
25.89k stars 3.82k forks source link

Download in sequential order for new torrents by default option #164

Open defHLT opened 11 years ago

defHLT commented 11 years ago

It would be fantastic if bittorent had 'Download in sequential order' checkbox in Adding Torrent dialog and so we could turn this checkbox on by default in Options.

Thank you

arvidn commented 6 years ago

I apologize if I'm missing some relevant context, I just got pinged into this thread.

I'll say it again, IF this behavior is "bad" then that is a problem with the PROTOCOL. Not clients. And certainly not end users of the clients.

The bittorrent protocol specifies that pieces should be downloaded in random order.

Downloaders generally download pieces in random order, which does a reasonably good job of keeping them from having a strict subset or superset of the pieces of any of their peers.

If I understand you correctly, you're suggesting violating the protocol in this regard. I don't understand how you conclude that it must be a problem with the protocol.

Frankly no one cares what you think is good for the "health of swarm" or the "good of society."

Generally the way open source software works is that programmers build software to solve their own problems, and share their code so other people can use it. If you have a problem and you're not a programmer, you can (1) convince one to help you, (2) learn how to program or (3) hire a contractor.

Learning how to program (2) is the best option, not just because there's a severe shortage of programmers in the world, but you'll also find that most open source contributors are more than happy to mentor, teach and review your code, as long as you put in the work to learn and actually contribute to the project.

With this model in mind, programmer's opinions is essentially the only thing that matter.

Go get the torrent protocol changed if it's such a big deal. Change society, not the library.

I didn't quite follow your analogy with the books in a library. How would you suggest the bittorrent protocol be changed?

I think the issue @FranciscoPombal brings up is an inherent problem of imbalanced piece distribution, sometimes, causing severe inefficiencies in the network. I say sometimes because I believe it's quite common for swarms to have the vast majority of peers be seeds most of the time, in which case download order doesn't matter.

There's another subtle point I would encourage you to take note of. "sequential download" in all bittorrent contexts I'm aware of, means "requesting pieces in order". i.e. it's a simple mode the piece picker can be put in. This is different from the order pieces are received in. Most likely, receiving the pieces in order is really what people are looking for. Either because of streaming media or to minimise fragmentation on disk by making writes as sequential as possible. This is what "streaming" refers to. I captured some details of how this works here, if you're interested.

Innomen commented 6 years ago

The bittorrent protocol specifies that pieces should be downloaded in random order.

"Specifies," but does not force apparently. Or else we wouldn't be having this discussion. So if doing otherwise is the end of the world, then they should go make it impossible to do otherwise at the protocol level. Not at the user/client/scolding level.

Learning how to program (2) is the best option

Ironic that so many coders do not understand why that's an absurd ask.

See, the whole reason specialization exists in the first place is because society compensates for the opportunity cost of being an expert. The heart surgeon does not need to be a farmer, because we have farmers farming for everyone.

Stop demanding a homogeneous society of coders. No one is asking you to grow your own food, weave your own cloth, etc etc.

The whole reason specialists exist is because agriculture freed us from all having to either hunt or gather as a profession. So stop asking society to revert to a mono-culture.

The whole reason we are even speaking is because all the technology gets easier and easier to use every day. The only reason it has value at all is because it's accessible to non-experts.

(3) hire a contractor

Paying for code would be fine as a solution if the culture didn't have this absurd patent/copyright religion going where coders literally never stop charging. If I could easily bounty this change, I would. I have no problem personally bankrolling an improvement for everyone. That's exactly why I donate to the EFF.

programmer's opinions is essentially the only thing that matter.

O.O

Well that was kinda on the nose.

How would you suggest the bittorrent protocol be changed?

I wouldn't at all, clearly this is a non-problem in reality at both ends. I'm simply telling the people scolding users where that sort of energy would be better spent on principal. Coders these days are like politicians who have forgotten who they serve. They seem to honestly believe users exist to feed and cloth them. Which is complicated because it's half true because culture does indeed exist to allow us to feed and cloth each other. But it's not true in the Ayn Rand way most coders seem to believe.

All the people pearl clutching about clients/users having a default toggle because reasons need to go obviate this supposedly catastrophic option by making it so the protocol itself does not allow it.

Restricting users/clients on THIS level is absurd at best for all the reasons I've already stated.

Most likely, receiving the pieces in order is really what people are looking for.

Obviously.

And if you are saying there's a solution that doesn't trigger this "debate" about health and users and clients, then that's all the more reason just to fix it, get the best of both worlds, and make that the default/only behavior, so that all torrents are stream capable in all cases, which is what users want anyway.

arvidn commented 6 years ago

Ironic that so many coders do not understand why that's an absurd ask.

Is it more absurd than demanding that other people work for free for you?

I didn't mean to include any moral judgement in my description of (my understanding of) how open source software development work. I was simply describing a model which may help you understand other people's motives and may help you more effectively influence directions of projects or forks.

Whether you like it or not, it won't change by being upset on the internet.

Stop demanding a homogeneous society of coders. No one is asking you to grow your own food, weave your own cloth, etc etc.

I guess we're getting a bit off topic. We need fewer heart surgeons, farmers, drivers etc. because their productivity keep increasing. We need more programmers so that we can accelerate everyone else's productivity increase. That's why I would argue you're doing the world a favour by learning how to program. Of course nobody is making you (just incentivising you with a job anywhere in the world you'd like).

Paying for code would be fine as a solution if the culture didn't have this absurd patent/copyright religion going where coders literally never stop charging. If I could easily bounty this change, I would. I have no problem personally bankrolling an improvement for everyone.

I don't see why you couldn't, nor do I see what copyright has to do with it. It's quite common that employer's (and clients) hold the copyright of what their employees produce. That would be you in this case.

I'm simply telling the people scolding users where that sort of energy would be better spent on principal.

I agree that scolding users is a poor use of time and not very polite.

Coders these days are like politicians who have forgotten who they serve. They seem to honestly believe users exist to feed and cloth them. Which is complicated because it's half true because culture does indeed exist to allow us to feed and cloth each other. But it's not true in the Ayn Rand way most coders seem to believe.

I'm not sure what your assumptions are here, but they don't sounds quite right. I have a day-job that clothe and feed me. Users of my open source project don't (in fact, it's a cost-center).

And if you are saying there's a solution that doesn't trigger this "debate" about health and users and clients, then that's all the more reason just to fix it

Unfortunately it isn't. However, I don't think this problem is particularly common, not many swarms are affected by it. But the ones that are, can be more or less broken by it. I'm also not aware of any survey actually measuring this effect, so a lot could be argued is fear, uncertainty and doubt. But without actual measurements it's hard to do much else.

Innomen commented 6 years ago

But without actual measurements it's hard to do much else.

That's a very good point, and thank you for bringing it up. I hereby officially demand as per burden of proof that the people complaining about users on this issue prove this problem is substantial enough to justify a totalitarian position.

Everything beyond this point is off topic and I'd make it collapsible/spoiler tagged if I could XD

-

-

-

Is it more absurd than demanding that other people work for free for you?

Exactly no one is ever actually saying that. The persistence of the soundbite is like a reusable super popular strawman X)

In reality it's exactly like building a house for yourself, or improving some part of one, with the help of the community and then having the magic option (because numbers) of giving that house away.

I personally do indeed see a moral obligation to do good when it costs you next to nothing.

But in any case, stopping coders from patenting the vowels and charging arbitrary rent on them with binding arbitration EULAs attached etc etc is hardly enslavement.

For the record, imo, there should only be property law, and the extent to which we as a society agree that combinations of numbers and ideas can be property, then fine.

But that's not what we're doing. We've invented a completely separate thing that has evolved into a cult and con. We label this new religion and grift "intellectual" property.

We preserve it because the American economy has now boiled down to two cons. The "financial services" sector, which is basically a gargantuan casino, and the intellectual property market, which is just another massive global scam. It's basically imperialism and monopolies extended into the information space. We're colonizing concepts the same way we used to colonize land masses.

How people can actually think it's ok to own stuff in someone else's mind will never fail to shock me a little. Eventually culture I hope is going to recognize this pathology and react accordingly. Assuming machine learning doesn't make coding as easy as searching in the mean time.

Hell, 99% of code already is just finding code/tools someone else already made and adapting it, or asking the forum hivemind.

Whether you like it or not, it won't change by being upset on the internet.

Don't trivialize protest and speech, we're lucky to have it. Yeah I get it that I'm personally powerless, but that's no good reason to kick me while I'm down.

I am contributing to the cultural debate. Sure it may be ultimately meaningless, but it's all I can do in my context.

If solid logic, good ethics, and facts aren't relevant, then we live in a random chaotic dystopia and it doesn't matter either way.

We need more programmers so that we can accelerate everyone else's productivity increase.

You do realize that those productivity increases enable firms to hire fewer and fewer people including coders right? With respect it seems like you know nothing about the job market. If it were that easy to get a coding job the whole world would look different. There's a reason outsourcing is massively profitable and didn't end developing world poverty.

https://www.youtube.com/watch?v=7Pq-S557XQU

My dad recently retired from 30 years in that industry and they aren't even replacing his position. His department shrunk like 70% from when he joined it 10 years ago. ALL job sectors are threatened by automation.

Seriously, it's gonna be basic income or global nuclear war and the reason is the same. Automation. (Pray this isn't the Great Filter answering the Fermi paradox.)

just incentivising you with a job anywhere in the world you'd like

With a line around the block offering to do it better cheaper and faster. And a working environment completely devoid of security. There's a reason "support" is the way that it is. And it's in large part thanks to IPL "incentivising" a daffy duck level of "mine mine mine" attached to every line of code written for profit.

(Tons of OSS code is resume building ultimately and always stops short of threatening existing monopolies and cartels.)

Everyone wants to patent the vowels and charge a fee every time we use one thanks to people like Steve Jobs.

Once we A, pull poverty's teeth with a basic income and B, annihilate this entire graft sector of the economy, open source will mushroom into a second Renaissance to the benefit of all mankind the likes of which we are only seeing the most emaciated shadowy hint of today.

Elimination of the duplication of effort alone is gonna shoot utility of all software up by ~3 orders of mag.

Imagine how bullet proof any given app would be if all the coding effort aimed at the problem it solves was funneled to a handful of projects instead of sometimes hundreds of competing coders trying to work up something they can sell privately.

Like imagine how epic video would be if there wasn't 90,000 different video converter and editor and encoder apps because everyone wants to own the next version of flash. Etc. That space is a cluster cuss. X)

That would be you in this case.

But there's no real mechanism for it expressly because all the people that can code, either do it for a megacorp or want to patent it themselves. Like I can price compete with literally infinite potential profit that comes from the church of intellectual property.

Honestly how much do you think it would cost me to get a fork made of qbt or a plugin that does what we're asking by default? I imagine it would be prohibitively expensive.

In the general context pay code isn't a real options because you'd need lawyers and money to make sure the outcome was in service of the goals. The option you advocate is generally disproportionally expensive regardless of what the coder charges, and gets exponentially more expensive the more profitable it might be if patented. This is why defensive patenting became a thing.

And all that's assuming a completely receptive project target that never changes its mind. If the dev team arbitrarily rejects your code, or writes an update breaking it, there's nothing that can be done except start a fork which thanks to defaulting is an uphill battle to say the least and then I have to bounty replacement code for everything or bend over for the previous license holders.

It's just not viable so long as IPL exists in its current form.

I have a day-job that clothe and feed me.

It's a shame that it's not voluntary yet. Let's hope a basic income soon guts the "but mah jerbs" Nuremberg defense 99% of shady coders use to justify making megacorps richer.

My assumption was based on ideologies implied by your statements, if they are incorrect in your case, so be it, and accept my apologies. However the comments still stand, just no longer applicable to you personally.

arvidn commented 6 years ago

That's a very good point, and thank you for bringing it up. I hereby officially demand as per burden of proof that the people complaining about users on this issue prove this problem is substantial enough to justify a totalitarian position

Again, you can demand all you like, and you can claim that it's totalitarian that nobody wants to implement them. I don't think it's a very effective way of getting what you want though. Obviously the burden of proof lies with whoever want to invest labour in a feature (specifically other people's labour).

Is it more absurd than demanding that other people work for free for you?

Exactly no one is ever actually saying that. The persistence of the soundbite is like a reusable super popular strawman X)

So who are you directing your demands at, to provide measurements and to program features? from where I'm sitting it sounds like you're directing them at me, but more so to the core contributors of qbt.

If that isn't the case, there are probably better forums, where the core qbt contributors aren't hanging out for instance.

You do realize that those productivity increases enable firms to hire fewer and fewer people including coders right? With respect it seems like you know nothing about the job market. If it were that easy to get a coding job the whole world would look different.

Yes, and I'm very happy that today's development tools has made me so much more productive than 15 years ago. My (mostly anecdotal) experience is that everywhere in the world it's hard to find developers. It's certainly my personal experience hiring in San Francisco and New York, and also what people from other companies tell me. I'm not suggesting it's easy to become a (good) developer, but once you are, it's trivial to get a job. And I haven't seen anything suggesting we're about to saturate that need anytime soon.

My dad recently retired from 30 years in that industry and they aren't even replacing his position. His department shrunk like 70% from when he joined it 10 years ago. ALL job sectors are threatened by automation.

This is not the first time the world has gone through technological shifts where certain kinds of jobs (virtually) disappear and other kinds of jobs appear. If you're worried about it, that's just another reason to learn how to program :) Someone has to maintain and develop all those robots, right?

This is also why kindergarten kids take programming classes nowadays.

It's a shame that it's not voluntary yet. Let's hope a basic income soon guts the "but mah jerbs" Nuremberg defense 99% of shady coders use to justify making megacorps richer.

Well, in your star-trek communism it still wouldn't really be voluntary, would it? I would have to work on the majority-vote feature.

sledgehammer999 commented 6 years ago

I think this has gone offtopic too much.

  1. The desire for a permanent "sequential mode" option is noted.
  2. The desire for a streaming option is also noted.
  3. We're almost ~3 volunteers working in a somewhat stable fashion on this project. There are also quite few other volunteers contributing in a more relaxed fashion. All of us code the things we care about and those we find incentive to fix or implement. It is our free time and we choose on how to spend it.
  4. Anyone wanting to implement point 1 or 2 or both, should come up with a PR. We will discuss there about implementation details.

Because this topic has been discussed to death I am locking this thread. Members with write access should have the ability to comment and unlock.

sledgehammer999 commented 6 years ago

Another nice compromising idea from @evsh in https://github.com/qbittorrent/qBittorrent/issues/7448#issuecomment-329465207:

But, perhaps, we can add options to automatically enable them when a torrent is super-healthy?

eg check torrent availability and if it's above X enable sequential mode

zeule commented 6 years ago

eg check torrent availability and if it's above X enable sequential mode

@sledgehammer999, libtorrent does exactly that by default, as far as I remember, albeit it uses quite a high threshold value. Sorry, I can't find this logic in the libtorrent sources now, but I remember it was there.

zeule commented 6 years ago

Found it. It is in torrent::update_auto_sequential().

FranciscoPombal commented 4 years ago

In recent releases, doesn't libtorrent already do this by default? At least I have observed for a long time that's qBittorrent's behaviour if a torrent is seeded by a sufficiently large number o peers at a sufficiently high speed.