Lightning Talk: What I Learned From WebTorrent

Lightning Talk: What I Learned From WebTorrent

Come hear the lessons that Feross has learned from starting and running a P2P open source project. He will try to condense as many lessons into the time slot as possible. This will be a whirlwind!

# What will You learn?

Listeners will learn valuable takeaways for running DWeb projects in a way that prioritizes helping as many users as possible. Learn what WebTorrent did right and wrong!

Presented at the DWeb Camp (https://dwebcamp.org/) in 5 minutes as a lightning talk.

Links:
- https://webtorrent.io
- https://feross.org

B498d33041627b07726dc29c28f02df7?s=128

Feross Aboukhadijeh

July 19, 2019
Tweet

Transcript

  1. 2.
  2. 3.
  3. 4.
  4. 5.
  5. 7.

    WORSE IS BETTER "It is often undesirable to go for

    the right thing first. It is better to get half of the right thing available so that it spreads like a virus. Once people are hooked on it, take the time to improve it to 90% of the right thing."
  6. 8.

    $ webtorrent --help Usage: webtorrent [command] <torrent-id> <options> Example: webtorrent

    download "magnet:..." --vlc Commands: download <torrent-id> Download a torrent seed <file/folder> Seed a file or folder create <file> Create a .torrent file info <torrent-id> Show info for a .torrent file or magnet uri Specify <torrent-id> as one of: * magnet uri * http url to .torrent file * filesystem path to .torrent file * info hash (hex string) Options: --airplay Apple TV --chromecast Chromecast
  7. 9.
  8. 12.
  9. 15.

    js_bet = .95 electron_bet = .80 webrtc_bet = .50 webtorrent_success

    = nodejs_bet * electron_bet * webrtc_bet console.log(webtorrent_success) // 0.38
  10. 17.

    Thanks for the feature request! WebTorrent Desktop values simplicity more

    than most torrent apps. This sometimes means saying 'No' to good ideas. We try to implement only the most important features that a torrent app needs and make those features as good as possible. We don't want the app to get overloaded with knobs and dials that may only benefit a small percentage of users. That's not to say we won't ever add large new features. We support powerful features like instant streaming, dynamic piece prioritization, web peers (WebRTC), etc. but only when they have a clear benefit to a vast majority of users. See the 80-20 rule. I don't think it makes sense to implement this feature right now. I hope this makes sense!
  11. 18.
  12. 19.
  13. 20.
  14. 22.

    // App version telemetry.version = config.APP_VERSION // Screen resolution telemetry.screens

    = getScreenInfo() // OS version and amount of RAM telemetry.system = getSystemInfo() // # of torrents currently active, # in list, total size telemetry.torrentStats = getTorrentStats(state)
  15. 23.
  16. 24.
  17. 26.

    !