$30 off During Our Annual Pro Sale. View Details »

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

Feross Aboukhadijeh

July 19, 2019
Tweet

More Decks by Feross Aboukhadijeh

Other Decks in Technology

Transcript

  1. WHAT I LEARNED FROM WEBTORRENT:
    LESSONS LEARNED FROM STARTING AND RUNNING A P2P OPEN SOURCE PROJECT

    View Slide

  2. View Slide

  3. View Slide

  4. View Slide

  5. View Slide

  6. LESSON 1
    SHARE YOUR WORK EARLY AND OFTEN

    View Slide

  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."

    View Slide

  8. $ webtorrent --help
    Usage:
    webtorrent [command]
    Example:
    webtorrent download "magnet:..." --vlc
    Commands:
    download Download a torrent
    seed Seed a file or folder
    create Create a .torrent file
    info Show info for a .torrent file or magnet uri
    Specify 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

    View Slide

  9. View Slide

  10. LESSON 2
    PROVIDE VALUE ALONG THE WAY

    View Slide

  11. WHO IS YOUR IDEAL USER?

    View Slide

  12. View Slide

  13. LESSON 3
    SOLVE ONE USE CASE PERFECTLY

    View Slide

  14. webtorrent_success = js_bet * electron_bet * webrtc_bet

    View Slide

  15. js_bet = .95
    electron_bet = .80
    webrtc_bet = .50
    webtorrent_success = nodejs_bet * electron_bet * webrtc_bet
    console.log(webtorrent_success) // 0.38

    View Slide

  16. LESSON 4
    TECHNICAL BETS ARE MULTIPLICATIVE

    View Slide

  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!

    View Slide

  18. View Slide

  19. View Slide

  20. View Slide

  21. LESSON 5
    IGNORE THE NERDS

    View Slide

  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)

    View Slide

  23. View Slide

  24. View Slide

  25. LESSON 6
    GROWTH MATTERS

    View Slide

  26. !

    View Slide

  27. THE OPPORTUNITY IS
    HUGE

    View Slide

  28. HAPPY HACKING!
    @FEROSS • FEROSS.ORG

    View Slide