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

Tending Your Open Source Garden

Tending Your Open Source Garden

Brandon Keepers

June 26, 2014
Tweet

More Decks by Brandon Keepers

Other Decks in Technology

Transcript

  1. http://commons.wikimedia.org/wiki/File:Cress_keyboard-3_sprouting_other_side.jpg
    Garden
    @BKEEPERS
    TENDING YOUR OPEN SOURCE
    !

    View full-size slide

  2. http://en.wikipedia.org/wiki/Garden_gnome_liberationists
    "bkeepers

    View full-size slide

  3. I like writing software because I like gardening.
    https://www.flickr.com/photos/91663396@N00/7080354723/

    View full-size slide

  4. Open Source is like community gardening.
    https://www.flickr.com/photos/antoinettevanderieth/8753016923

    View full-size slide

  5. P L A N
    C U L T I V A T E
    S O W
    W A T E R
    M U L C H
    P R U N E
    H A R V E S T

    View full-size slide

  6. M Y G A R D E N S

    View full-size slide

  7. M Y G A R D E N S
    dotenv

    View full-size slide

  8. M Y G A R D E N S
    dotenv
    delayed_job

    View full-size slide

  9. M Y G A R D E N S
    dotenv
    delayed_job
    qu

    View full-size slide

  10. M Y G A R D E N S
    dotenv
    delayed_job
    qu
    tinder

    View full-size slide

  11. M Y G A R D E N S
    dotenv
    delayed_job
    qu
    tinder
    rosie

    View full-size slide

  12. M Y G A R D E N S
    dotenv
    delayed_job
    qu
    tinder
    rosie
    github-notifications

    View full-size slide

  13. Large open source projects are like farming…
    https://www.flickr.com/photos/messycupcakes/7722551044/

    View full-size slide

  14. …or land management.
    https://www.flickr.com/photos/47096398@N08/7462466876

    View full-size slide

  15. Steve Klabnik
    http://words.steveklabnik.com/how-to-be-an-open-source-gardener

    View full-size slide

  16. I’m talking about gardening

    View full-size slide

  17. Plan
    https://www.flickr.com/photos/btobin/4456582998

    View full-size slide

  18. What are your motivations?

    View full-size slide

  19. The ultimate goal is to
    produce a harvest.

    View full-size slide

  20. How much time can you dedicate?
    https://www.flickr.com/photos/ugardener/3553160869

    View full-size slide

  21. Open source is hard work, but it
    often leads to better software.
    https://www.flickr.com/photos/ugardener/3553160869

    View full-size slide

  22. Cultivate
    https://www.flickr.com/photos/librariesrock/3760104913

    View full-size slide

  23. Pick a good name.

    View full-size slide

  24. What makes a name “good”?
    1. Searchable
    2. Memorable
    3. Suggestive

    4. Not too boring
    5. Not too weird
    6. Not too trendy

    View full-size slide

  25. Q U
    OMG, a Better Background Queue!

    View full-size slide

  26. O M G B B Q
    OMG, a Better Background Queue!

    View full-size slide

  27. Write documentation.

    View full-size slide

  28. one-line description
    longer explanation
    What makes a
    good README?

    View full-size slide

  29. one-line description
    longer explanation
    how to install it

    View full-size slide

  30. one-line description
    longer explanation
    how to install it
    how to use it

    View full-size slide

  31. how to contribute

    View full-size slide

  32. See github.com/trending for examples

    View full-size slide

  33. Choose a license.
    https://www.flickr.com/photos/andrewprickett/6649056779/

    View full-size slide

  34. ChooseALicense.com

    View full-size slide

  35. Follow conventions.
    https://www.flickr.com/photos/cccpxokkeu/8580600558/

    View full-size slide

  36. Sow
    https://www.flickr.com/photos/nateswartphoto/5623220460

    View full-size slide

  37. This is the easiest part.

    View full-size slide

  38. Tell the world about it.

    View full-size slide

  39. Blog about it.

    View full-size slide

  40. Now, ready to work?

    View full-size slide

  41. Water
    http://en.wikipedia.org/?title=Talk:Rainbow/Archive_1#mediaviewer/File:Self_Made_Rainbow.JPG

    View full-size slide

  42. Consistency and
    diligence are crucial.

    View full-size slide

  43. Follow your own contribution guidelines.

    View full-size slide

  44. Invite people in.

    View full-size slide

  45. Always be hospitable.

    View full-size slide

  46. Give it time.
    https://www.flickr.com/photos/onegiantleap/4124211492

    View full-size slide

  47. Mulch
    https://www.flickr.com/photos/chiotsrun/3247946933

    View full-size slide

  48. Only add features that
    you want to maintain.
    https://www.flickr.com/photos/ajbatac/7179488176

    View full-size slide

  49. Tests guard against erosion.

    View full-size slide

  50. Continuous integration gives contributors confidence.

    View full-size slide

  51. D O N ’ T F E E D
    T H E T R O L L S
    https://www.flickr.com/photos/eldave/3332622539

    View full-size slide

  52. Prune
    https://www.flickr.com/photos/jeremyhiebert/5454990146

    View full-size slide

  53. Remove features that you
    don’t want to maintain.

    View full-size slide

  54. Split them into separate
    repositories.

    View full-size slide

  55. dotenv-deployment

    View full-size slide

  56. Use semantic versioning
    https://www.flickr.com/photos/jimfischer/8384524415
    1.2.6
    minor patch
    major
    semver.org

    View full-size slide

  57. Use semantic versioning
    https://www.flickr.com/photos/jimfischer/8384524415
    1.2.6
    minor patch
    major
    }
    backwards-compatibile bug fixes
    semver.org

    View full-size slide

  58. Use semantic versioning
    https://www.flickr.com/photos/jimfischer/8384524415
    1.2.6
    minor patch
    major
    }
    backwards-compatible functionality
    semver.org

    View full-size slide

  59. Use semantic versioning
    https://www.flickr.com/photos/jimfischer/8384524415
    1.2.6
    minor patch
    major
    }
    incompatible API changes
    semver.org

    View full-size slide

  60. Deprecate features in
    minor versions, remove
    them in major versions
    https://www.flickr.com/photos/jimfischer/8384524415

    View full-size slide

  61. 1.x.x
    https://www.flickr.com/photos/jimfischer/8384524415
    if using_deprecated_feature?
    warn "[DEPRECATION] This feature has been " +
    "deprecated and will be removed in 2.0.",
    caller[0]
    # deprecated functionality here
    end

    View full-size slide

  62. Keep a changelog.
    http://bit.ly/1mfVB3d

    View full-size slide

  63. Changelog.md
    http://bit.ly/1mfVB3d

    View full-size slide

  64. Give it away when it
    stops being fun.

    View full-size slide

  65. …unless you still
    depend on it.

    View full-size slide

  66. Clearly state the project’s status.

    View full-size slide

  67. Learn from your mistakes.

    View full-size slide

  68. “For the record, I am a terrible
    open source maintainer.
    — @bkeepers - 7 Jan 2014

    View full-size slide

  69. Thank You
    " bkeepers

    View full-size slide