Upgrade to Pro — share decks privately, control downloads, hide ads and more …

How to make your open-source project thrive, with Andrey Petrov

How to make your open-source project thrive, with Andrey Petrov

Sourcegraph

March 11, 2015
Tweet

More Decks by Sourcegraph

Other Decks in Programming

Transcript

  1. Bit about me... • Open Sourcing things since ~2007 •

    Mildly popular on Github… • I like doing startuppy things ◦ Y-Combinator ◦ Google Acquihiree ◦ Bootstrapping Briefmetrics and other things
  2. First Why and how to get started with open source

    Second What to do once you already have a project and want it to thrive
  3. Why open source your code? • Mechanism for reducing sunk

    cost • Free replicated backups • Easy to link to and ask for help
  4. Why open source your code? • Mechanism for reducing sunk

    cost • Free replicated backups • Easy to link to and ask for help • Even more emails from recruiters
  5. Why open source your code? • Mechanism for reducing sunk

    cost • Free replicated backups • Easy to link to and ask for help • Even more emails from recruiters • That smug feeling of being better than other people
  6. Bad reasons for not open sourcing • “Somebody might see

    my terrible code!” • “It’s not ready yet.”
  7. Bad reasons for not open sourcing • “Somebody might see

    my terrible code!” • “It’s not ready yet.” • “It’s just one file.”
  8. Bad reasons for not open sourcing • “Somebody might see

    my terrible code!” • “It’s not ready yet.” • “It’s just one file.” • “I don’t want to write docs for it.”
  9. What is success? • github.com/shazow/urllib3 ◦ Published in 2008 ◦

    Used by millions today ◦ 785 stars on Github ◦ Slow, steady, calculated growth
  10. What is success? • github.com/shazow/ssh-chat ◦ Fun weekend project a

    few months ago ◦ Used by like 15 people today ◦ 1560 stars on Github ◦ Huge burst of early growth, but mostly abandoned
  11. What is success? • github.com/shazow/dotfiles ◦ Lovingly maintained for years

    ◦ Used by me, often linked to others ◦ 7 stars on Github
  12. What is success? • github.com/shazow/dotfiles ◦ Lovingly maintained for years

    ◦ Used by me, often linked to others ◦ 7 stars on Github ◦ Intrinsically motivated, never going away
  13. Step 1. What do you really want? • Users? •

    Contributors? • Praise? • Talk opportunities?
  14. Step 1. What do you really want? • Users? •

    Contributors? • Praise? • Talk opportunities? • Dolla dolla billz?
  15. Step 1. What do you really want? • Users? •

    Contributors? • Praise? • Talk opportunities? • Dolla dolla billz? • More recruiter emails?
  16. Step 2. Figure out what to build • Contribute to

    an existing project? ◦ A noble endeavour ◦ Fix what you’re already using
  17. Step 2. Figure out what to build • Contribute to

    an existing project? ◦ A noble endeavour ◦ Fix what you’re already using • Start a new project?
  18. Step 2. Figure out what to build • Contribute to

    an existing project? ◦ A noble endeavour ◦ Fix what you’re already using • Start a new project? ◦ More glory ◦ Need to figure out what’s valuable...
  19. Problem: Upload billions of images to S3 in 2008. Problem:

    It’s going to take +3 weeks because there is no concurrency. The story of urllib3
  20. Problem: It’s going to take +3 weeks because there is

    no concurrency. Solution: s3funnel, multithreaded S3 client The story of urllib3
  21. Solution: s3funnel, multithreaded S3 client Problem: Managing threads is painful.

    >.< Solution: workerpool (used in s3funnel) The story of urllib3
  22. Solution: s3funnel, multithreaded S3 client Solution: workerpool (used in s3funnel)

    Problem: HTTP libraries don’t re-use connections, most solutions aren’t threadsafe, and no multipart (filepost) encoding. The story of urllib3
  23. Solution: s3funnel, multithreaded S3 client Solution: workerpool (used in s3funnel)

    Solution: urllib3 (used in s3funnel) The story of urllib3
  24. Maybe it was all timing? • Python in 2008 was

    not as mature, easier to make a popular http library?
  25. Maybe it was all timing? • Python in 2008 was

    not as mature, easier to make a popular http library? ◦ urllib3 didn’t get “big” until ~2012
  26. Maybe it was all timing? • Python in 2008 was

    not as mature, easier to make a popular http library? ◦ urllib3 didn’t get “big” until ~2012 • Find any 7-yearold language and write http clients for it?
  27. Maybe it was all timing? • Python in 2008 was

    not as mature, easier to make a popular http library? ◦ urllib3 didn’t get “big” until ~2012 • Find any 7-yearold language and write http clients for it? ◦ Not that simple, Go launched with a comparatively great HTTP client right out of the gate.
  28. Step 3. Minimum Viable OSS • Open source it, put

    it on Github. • README ◦ What is it? Can I use it? • Really good README ◦ What's the license? What can I do with it? How to contribute?
  29. Step 3. Minimum Viable OSS • Open source it, put

    it on Github. • README ◦ What is it? Can I use it? • Really good README ◦ What's the license? What can I do with it? How to contribute? • Even better README
  30. Making it thrive • If you build it, that doesn’t

    mean they’ll come. • github.com/shazow: ◦ 44 source projects ◦ 16 with more than 5 stars ◦ Arguably 3 “popular” projects
  31. ASK FOR HELP • Get people to send pull requests

    • Ask specific people to help review
  32. ASK FOR HELP—AND ACCEPT IT!!! • Get people to send

    pull requests • Ask specific people to help review • Accept pull requests very generously, especially in the beginning
  33. ASK FOR HELP—AND ACCEPT IT!!! • Get people to send

    pull requests • Ask specific people to help review • Accept pull requests very generously, especially in the beginning • Get people involved!
  34. ASK FOR HELP—AND ACCEPT IT!!! • Get people to send

    pull requests • Ask specific people to help review • Accept pull requests very generously, especially in the beginning • Get people involved! • Please be nice
  35. “If anyone is up for improving our documentation to this

    effect, that would be greatly appreciated. :) …”
  36. “I would be +1 to adding something like this if

    you’re interested in making a PR. :) (Opened an issue here…)”
  37. Promote your project • Write interesting blog posts • Answer

    StackOverflow questions • Participate in discussions (HN, Reddit, etc)
  38. … Would you rather click Lorem ipsum dolor sit amet

    (ipsum.org) 8 points by batman 3 hours ago | flag | 1 comments Lorem ipsum dolor sit amet (ipsum.org) 8 points by batman 3 hours ago | flag | 7 comments
  39. Promote your project • Write interesting blog posts • Answer

    StackOverflow questions • Participate in discussions (HN, Reddit, etc) • Sell to other projects and establish partnerships.
  40. “We want to be like Docker…” • Why is Docker

    doing so well? ◦ Very well funded. ◦ Thousands of contributors helping for FREE!
  41. “We want to be like Docker…” • Why is Docker

    doing so well? • Kinda like having your cake and eating it too (you’ll need two cakes).
  42. “We want to be like Docker…” • Why is Docker

    doing so well? • Kinda like having your cake and eating it too (you’ll need two cakes). • This is actually somewhat common...
  43. Corp’en Source business models • Open Core (Docker) • Dogfooding

    (Gratipay) • Consulting & Support (Nginx) • Advertising (Mozilla)
  44. Corp’en Source business models • Open Core (Docker) • Dogfooding

    (Gratipay) • Consulting & Support (Nginx) • Advertising (Mozilla) • Charity & Grants (GnuPG)
  45. Corp’en Source business models • Open Core (Docker) • Dogfooding

    (Gratipay) • Consulting & Support (Nginx) • Advertising (Mozilla) • Charity & Grants (GnuPG)
  46. Corp’en Source business models • Open Core (Docker) • Dogfooding

    (Gratipay) • Consulting & Support (Nginx) • Advertising (Mozilla) • Charity & Grants (GnuPG, urllib3?)
  47. Results: HUGE SUCCESS* • One $5 donation via Donorbox (via

    Stripe!) • One $5 Bitcoin donation via Coinbase. • Gittip grew by 50% ($1/wk → $1.50/wk, lol) • … Lessons were learned. * ‘success’ is a lie.
  48. Funding Open Source • Significant time chunks required for meaningful

    progress (at least half-day slots). • Peer-funded is not practical for most cases.
  49. Funding Open Source • Significant time chunks required for meaningful

    progress (at least half-day slots). • Peer-funded is not practical for most cases. • Need to hack accounting for corporate funding.
  50. Funding Open Source • Significant time chunks required for meaningful

    progress (at least half-day slots). • Peer-funded is not practical for most cases. • Need to hack accounting for corporate funding. • Fantasy: Government-funded open source.
  51. Dear Stripe, Your contributions had a big impact on open

    source. I hope more companies will follow your lead. Thank you. Love, Andrey
  52. Corp’en Source business models • Open Core (Docker) • Dogfooding

    (Gratipay) • Consulting & Support (Nginx) • Advertising (Mozilla) • Charity & Grants (GnuPG, urllib3?) • … More???
  53. Corp’en Source business models • Open Core (Docker) • Dogfooding

    (Gratipay) • Consulting & Support (Nginx) • Advertising (Mozilla) • Charity & Grants (GnuPG, urllib3?) • Kickstarter (Neovim)
  54. Corp’en Source business models • Open Core (Docker) • Dogfooding

    (Gratipay) • Consulting & Support (Nginx) • Advertising (Mozilla) • Charity & Grants (GnuPG, urllib3?) • Kickstarter (Neovim) • Speculation (Bitcoin)
  55. Corp’en Source business models • Open Core (Docker) • Dogfooding

    (Gratipay) • Consulting & Support (Nginx) • Advertising (Mozilla) • Charity & Grants (GnuPG) • Kickstarter (Neovim) • Speculation (Bitcoin)
  56. Great README • What is it? Is it what I’m

    looking for? • Demo? What else can I do with it?
  57. Great README • What is it? Is it what I’m

    looking for? • Demo? What else can I do with it? • Link to more docs?
  58. Great README • What is it? Is it what I’m

    looking for? • Demo? What else can I do with it? • Link to more docs? • License?
  59. Great README • What is it? Is it what I’m

    looking for? • Demo? What else can I do with it? • Link to more docs? • License? • How do I contribute? Run Tests?
  60. Great README • What is it? Is it what I’m

    looking for? • Demo? What else can I do with it? • Link to more docs? • License? • How do I contribute? Run Tests? • Goals? Future milestones?
  61. Making your OSS thrive • Make an awesome README. •

    Push to Github. • Maybe even write some code!
  62. Making your OSS thrive • Make an awesome README. •

    Push to Github. • Maybe even write some code! (And push it) • Get people involved, be generous and nice.
  63. Get people involved • Ask for help. • Call specific

    people out. • Please be nice. • Accept generously.
  64. Making your OSS thrive • Make an awesome README. •

    Push to Github. • Maybe even write some code! (And push it) • Get people involved, be generous and nice. • Promote your work.
  65. Promote your work • Write interesting blog posts. • Share

    it with your friends, multiple times. • Find people with the problem you solved. • Give talks about it. • Find projects which benefit from your solution.
  66. Making your OSS thrive • Make an awesome README. •

    Push to Github. • Maybe even write some code! (And push it) • Get people involved, be generous and nice. • Promote your work. • Do it a bunch of times.
  67. You don’t need to wait for my next talk to

    read my tweets! twitter.com/shazow
  68. You don’t need to wait for my next talk to

    read my tweets! twitter.com/shazow