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. WHAT I LEARNED FROM WEBTORRENT: LESSONS LEARNED FROM STARTING AND

    RUNNING A P2P OPEN SOURCE PROJECT
  2. None
  3. None
  4. None
  5. None
  6. LESSON 1 SHARE YOUR WORK EARLY AND OFTEN

  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."
  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
  9. None
  10. LESSON 2 PROVIDE VALUE ALONG THE WAY

  11. WHO IS YOUR IDEAL USER?

  12. None
  13. LESSON 3 SOLVE ONE USE CASE PERFECTLY

  14. webtorrent_success = js_bet * electron_bet * webrtc_bet

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

    = nodejs_bet * electron_bet * webrtc_bet console.log(webtorrent_success) // 0.38
  16. LESSON 4 TECHNICAL BETS ARE MULTIPLICATIVE

  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!
  18. None
  19. None
  20. None
  21. LESSON 5 IGNORE THE NERDS

  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)
  23. None
  24. None
  25. LESSON 6 GROWTH MATTERS

  26. !

  27. THE OPPORTUNITY IS HUGE

  28. HAPPY HACKING! @FEROSS • FEROSS.ORG