Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/webtorrent/webtorrent.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/docs
diff options
context:
space:
mode:
authorFeross Aboukhadijeh <feross@feross.org>2016-09-30 01:04:26 +0300
committerFeross Aboukhadijeh <feross@feross.org>2016-09-30 01:04:26 +0300
commit24588a10df16bd04ffffd9de137d47ef908b8dd1 (patch)
tree1a4162cf9af79c13c777df9799593901dc20d09a /docs
parent9fe008f7308e5c8fc2f4d3ce52f4fb54eb285744 (diff)
Add two FAQ questions
WebTorrent supports sequential streaming. How does this affect the network? Why wasn't WebTorrent designed as an entirely-new, modern protocol?
Diffstat (limited to 'docs')
-rw-r--r--docs/faq.md88
1 files changed, 71 insertions, 17 deletions
diff --git a/docs/faq.md b/docs/faq.md
index 5b93d08..5e0cef9 100644
--- a/docs/faq.md
+++ b/docs/faq.md
@@ -19,8 +19,8 @@ content**. The more people that use a WebTorrent-powered website, the faster and
more resilient it becomes.
Browser-to-browser communication **cuts out the middle-man** and lets people
-communicate on their own terms. No more client/server – just a network of peers, all
-equal. WebTorrent is the first step in the journey to
+communicate on their own terms. No more client/server – just a network of peers,
+all equal. WebTorrent is the first step in the journey to
[redecentralize][redecentralize] the Web.
> The way we code the Web will determine the way we live online. So we need to bake
@@ -41,9 +41,10 @@ Rarely-accessed content is served reliably over HTTP from the origin server.
There are also exciting **business use cases**, from CDNs to app delivery.
> WebTorrent has significant business potential to radically change the traditional
-> notion of client-server, with applications for internal infrastructure and external
-> closed user communications. WebTorrent has moved from an “idea” to a science
-> experiment to now on the edge of being viable. This is like really, seriously cool.
+> notion of client-server, with applications for internal infrastructure and
+> external closed user communications. WebTorrent has moved from an “idea” to a
+> science experiment to now on the edge of being viable. This is like really,
+> seriously cool.
>
> <cite>— Chris Kranky (from ["WebTorrent: Rethinking Delivery"][kranky-article])</cite>
@@ -57,7 +58,7 @@ There are also exciting **business use cases**, from CDNs to app delivery.
WebTorrent is still pretty new, but it's already being used in cool ways:
-- **[WebTorrent Desktop][webtorrent-desktop]** - Open source streaming torrent client. For Mac, Windows, and Linux. ([source code][webtorrent-desktop-source])
+- **[WebTorrent Desktop][webtorrent-desktop]** - Streaming torrent app. For Mac, Windows, and Linux. ([source code][webtorrent-desktop-source])
- **[Instant.io][instant.io]** – Streaming file transfer over WebTorrent ([source code][instant.io-source])
- **[GitTorrent][gittorrent]** - Decentralized GitHub using BitTorrent and Bitcoin ([source code][gittorrent-source])
- **[PeerCloud][peercloud]** - Serverless websites via WebTorrent ([source code][peercloud-source])
@@ -248,8 +249,8 @@ npm install webtorrent-hybrid -g
```
Note: If you just need to use WebTorrent in the browser (where WebRTC is available
-natively) then use [`webtorrent`][webtorrent] instead, which is faster to install because
-it won't need to install a WebRTC implementation.
+natively) then use [`webtorrent`][webtorrent] instead, which is faster to install
+because it won't need to install a WebRTC implementation.
## Can WebTorrent clients on different websites connect to each other?
@@ -263,16 +264,16 @@ websites (i.e. the WebTorrent script must be present on both sites).
## Who builds WebTorrent?
WebTorrent is built by [Feross Aboukhadijeh][feross] and hundreds of open source
-contributors. The non-profit WebTorrent project is managed by
-[WebTorrent, LLC][webtorrent-io].
+contributors. The WebTorrent project is managed by
+[WebTorrent, LLC][webtorrent-io], as a non-profit project.
Feross's other projects include [JavaScript Standard Style][standard],
[PeerCDN][peercdn] (sold to Yahoo), [Study Notes][studynotes], and
[YouTube Instant][ytinstant].
In the past, Feross attended [Stanford University][stanford], did research in the
-[Stanford Human-Computer Interaction][hci] and [Computer Security][seclab] labs, and worked
-at [Quora][quora], [Facebook][facebook], and [Intel][intel].
+[Stanford Human-Computer Interaction][hci] and [Computer Security][seclab] labs,
+and worked at [Quora][quora], [Facebook][facebook], and [Intel][intel].
[standard]: http://standardjs.com/
[studynotes]: https://www.apstudynotes.org/
@@ -293,14 +294,14 @@ There are no plans to make a profit from WebTorrent.
## How is WebTorrent different from PeerCDN?
-[PeerCDN][peercdn] is a next-generation CDN powered by WebRTC for efficient
+[PeerCDN][peercdn] was a next-generation CDN powered by WebRTC for efficient
peer-to-peer delivery of website content. PeerCDN was founded by
[Feross Aboukhadijeh][feross], [Abi Raja][abi], and [John Hiesey][jhiesey] in
March 2013 and was sold to [Yahoo][yahoo] in December 2013.
WebTorrent is an independent project started by [Feross Aboukhadijeh][feross] in
-October 2013. Unlike PeerCDN, **WebTorrent is free software**, licensed under the [MIT
-License][license]. You're free to use it however you like!
+October 2013. Unlike PeerCDN, **WebTorrent is free software**, licensed under the
+[MIT License][license]. You're free to use it however you like!
> "Free software" is a matter of liberty, not price. To understand the concept, you
> should think of "free" as in "free speech," not as in "free beer."
@@ -351,6 +352,59 @@ There are many talks online about WebTorrent. Here are a few:
<script async class="speakerdeck-embed" data-id="cb08869f2ac2445c99e8b73a4ac65d2b" data-ratio="1.77777777777778" src="//speakerdeck.com/assets/embed.js"></script>
+## WebTorrent supports sequential streaming. How does this affect the network?
+
+BitTorrent clients select which file pieces to download using an algorithm called
+"rarest-first". With every peer in the system trying to download the rarest pieces
+first, on average most pieces will have approximately the same availability in the
+network.
+
+In practice, the rarest-first algorithm is most important on poorly-seeded
+torrents, or in the first few hours of a torrent being published (when the ratio of
+seeders to leechers is bad).
+
+Most torrent clients support features that cause it to deviate from a pure rarest-
+first selection algorithm. For example, the ability to select/deselect or
+prioritize/deprioritize certain files in the torrent.
+
+WebTorrent supports streaming a torrent file "in order", which is useful for
+playing back media files. We’re working on improving the algorithm to switch back
+to a rarest-first strategy when there is not a high-priority need for specific
+pieces. In other words, when sufficient media is buffered, we can use the normal
+"rarest-first" piece selection algorithm.
+
+But the fact is that with the speed of today’s internet connections, the user is
+going to finish fully downloading the torrent in a fraction of the time it takes to
+consume it, so they will still spend more time seeding than downloading.
+
+Also note: BitTorrent Inc.'s official torrent client, uTorrent, offers sequential
+downloading, as well as selective file downloading, and the BitTorrent network
+remains very healthy.
+
+## Why wasn't WebTorrent designed as an entirely-new, modern protocol?
+
+BitTorrent is the most successful, most widely-deployed P2P protocol in existence.
+It works really well. Our goal with WebTorrent was to bring BitTorrent to the web
+in a way that interoperates with the existing torrent network.
+
+Re-inventing the protocol would have made WebTorrent fundamentally incompatible
+with existing clients and prevented adoption. The way we've done it is better. The
+wire protocol is exactly the same, but there's now a new way to connect to peers:
+WebRTC, in addition to the existing TCP and uTP.
+
+Also, re-inventing the protocol is a huge rabbit hole. There was already a lot of
+risk when we started the project -- will WebRTC get adopted by all the browser
+vendors? Will the Data Channel implementation stabilize and be performant? Is
+JavaScript fast enough to re-package MP4 videos on-the-fly for streaming playback
+with the MediaSource API? Our thinking was: Why add inventing a new wire protocol
+and several algorithms to the table?
+
+It's true that the BitTorrent protocol is dated in some ways. For example, it uses
+it's own strange data encoding called "bencoding". If it were invented today, it
+would probably just use JSON or MessagePack. But, this doesn't matter -- BitTorrent
+works really well, and we care more about building robust and useful software than
+conceptual purity or the latest software fashions.
+
## Is it possible to do live streaming with WebTorrent?
WebTorrent cannot do live streaming out-of-the-box, however you can build a live
@@ -404,8 +458,8 @@ for yourself.
It does work! But you can't just use any random magnet uri or `.torrent` file. The
torrent must be seeded by a WebRTC-capable client, i.e.
[WebTorrent Desktop][webtorrent-desktop], [Vuze][vuze-support],
-[webtorrent-hybrid][webtorrent-hybrid], [Playback][playback], [instant.io][instant.io], or
-[βTorrent][btorrent].
+[webtorrent-hybrid][webtorrent-hybrid], [Playback][playback],
+[instant.io][instant.io], or [βTorrent][btorrent].
In the browser, WebTorrent can only download torrents that are explicitly seeded to
web peers via a WebRTC-capable client. Desktop torrent clients need to support