Slide 1

Slide 1 text

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

Slide 2

Slide 2 text

No content

Slide 3

Slide 3 text

No content

Slide 4

Slide 4 text

No content

Slide 5

Slide 5 text

No content

Slide 6

Slide 6 text

LESSON 1 SHARE YOUR WORK EARLY AND OFTEN

Slide 7

Slide 7 text

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

Slide 8

Slide 8 text

$ 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

Slide 9

Slide 9 text

No content

Slide 10

Slide 10 text

LESSON 2 PROVIDE VALUE ALONG THE WAY

Slide 11

Slide 11 text

WHO IS YOUR IDEAL USER?

Slide 12

Slide 12 text

No content

Slide 13

Slide 13 text

LESSON 3 SOLVE ONE USE CASE PERFECTLY

Slide 14

Slide 14 text

webtorrent_success = js_bet * electron_bet * webrtc_bet

Slide 15

Slide 15 text

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

Slide 16

Slide 16 text

LESSON 4 TECHNICAL BETS ARE MULTIPLICATIVE

Slide 17

Slide 17 text

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!

Slide 18

Slide 18 text

No content

Slide 19

Slide 19 text

No content

Slide 20

Slide 20 text

No content

Slide 21

Slide 21 text

LESSON 5 IGNORE THE NERDS

Slide 22

Slide 22 text

// 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)

Slide 23

Slide 23 text

No content

Slide 24

Slide 24 text

No content

Slide 25

Slide 25 text

LESSON 6 GROWTH MATTERS

Slide 26

Slide 26 text

!

Slide 27

Slide 27 text

THE OPPORTUNITY IS HUGE

Slide 28

Slide 28 text

HAPPY HACKING! @FEROSS • FEROSS.ORG