I know there are a lot of people saying the breaking the rarest first rule will be really bad for swarm health but it seems to me that with the rise of faster connections it seems reasonable that you can stream a torrent, keeping a reasonable buffer of a few blocks and then with any spare bandwidth download the torrent with a standard rarest first strategy and seed whilst doing so. That said I think purely streaming…
Even for someone who's interested only in leeching a single streamed movie, if the number of sources for some blocks is only one, it's still in their rational best interest to request those single-source blocks first. Also, if there are multiple blocks with only one source, and they assume there may be another user using the same algorithm, it's in their rational self-interest to download earlier blocks, but not always the next one, under the assumption that another leecher may be grabbing the same block at the same time.
So, you end up with the probability of selecting rarest-first vs. earliest-first as a smooth function of the number of sources for the rarest block, and when picking amongst rarest blocks, using something close to an exponential distribution. The best solution for the health of the network would be selecting uniformly from the rarest chunks, but that discourages people from participating in the swarm. Rational self-interest can lead to a solution that's still better for the collective than a pure earliest-first chunk request strategy. (And yes, in LimeWire, I did implement chunk selection as a Strategy design pattern.)