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

Maintaining Open Source Projects

Maintaining Open Source Projects

Benjamin Fleischer

November 06, 2014
Tweet

More Decks by Benjamin Fleischer

Other Decks in Programming

Transcript

  1. M A I N TA I N I N G O P E N
    S O U R C E P R O J E C T S
    D E V @ B E N J A M I N F L E I S C H E R . C O M
    T W I T T E R . C O M / H A Z U L A
    G I T H U B . C O M / B F 4
    Ruby
    ^

    View full-size slide

  2. A L L Y O U R C O D E A R E
    B E L O N G T O U S
    A . K . A .

    View full-size slide

  3. http://www.commitstrip.com/en/2014/05/07/the-truth-behind-open-source-apps/
    Our Theme

    View full-size slide

  4. echo `whoami`

    View full-size slide

  5. echo `whoami`

    View full-size slide

  6. echo `whoami`

    View full-size slide

  7. echo `whoami`

    View full-size slide

  8. echo `whoami`

    View full-size slide

  9. echo `whoami`

    View full-size slide

  10. echo `whoami`

    View full-size slide

  11. I really enjoy working in open source.

    View full-size slide

  12. http://www.commitstrip.com/en/2014/05/07/the-truth-behind-open-source-apps/
    The Code Citizen

    View full-size slide

  13. L E T ’ S TA L K A B O U T
    • Being a good code citizen
    • Being a good code curator
    • Managing problems in the Ruby
    ecosystem
    • Ways you can get involved

    View full-size slide

  14. W H E N I T D O E S N ’ T W O R K
    B E I N G A G O O D C O D E C I T I Z E N
    • “It crashes”
    • “It’s missing a feature”
    • “There is no/missing documentation”

    View full-size slide

  15. W H E N I T D O E S N ’ T W O R K
    B E I N G A G O O D C O D E C I T I Z E N
    • Give up
    • Complain ( or ‘’ an issue)
    • Write ugly hack
    • Blog about it

    View full-size slide

  16. G I V E B A C K !
    B E I N G A G O O D C O D E C I T I Z E N
    • Report an issue or ask on the mailing list
    • Submit a Pull Request
    • Add documentation or helpful information
    to the wiki
    • Email / bug ‘maintainers’

    View full-size slide

  17. P R O F I T !
    B E I N G A G O O D C O D E C I T I Z E N
    • Learn to write a good bug report
    • Read a lot of source code
    • Meet people
    • Get feedback
    • Feel good
    • Feel connected

    View full-size slide

  18. A P P E N D I X : J A R G O N
    B E I N G A G O O D C O D E C I T I Z E N
    • Semantic Versioning:
    • Major / Minor / Patch
    • Breaking changes, new functionality,
    bug fix.
    • Pessimistic versioning
    • ~> 1.1 is a contract to not have breaking
    changes for all 1.x, but all bets off at 2.x.

    View full-size slide

  19. A P P E N D I X : I N T E R A C T I N G
    B E I N G A G O O D C O D E C I T I Z E N
    Taking Over Someone Else’s Open Source Projects
    Daniel Doubrovkine
    http://www.confreaks.com/videos/4166-gogaruco2014-taking-over-someone-else-
    s-open-source-projects

    View full-size slide

  20. A P P E N D I X : G I T H U B
    B E I N G A G O O D C O D E C I T I Z E N
    Just go to http://help.exercism.io/git-workflow.html
    It is awesome!
    Also, see
    http://blog.quickpeople.co.uk/2013/07/10/useful-
    github-patterns/

    View full-size slide

  21. # R U B Y F R I E N D S
    A N E C D O T E

    View full-size slide

  22. # R U B Y F R I E N D S
    A N E C D O T E

    View full-size slide

  23. # C O N F T W E E T S ?
    A N E C D O T E

    View full-size slide

  24. # F R I D AY H U G
    A N E C D O T E

    View full-size slide

  25. http://www.commitstrip.com/en/2014/05/07/the-truth-behind-open-source-apps/
    The Code Curator

    View full-size slide

  26. H A P P Y PAT H
    C O D E C U R A T I N G
    • Be responsive
    • Be nice
    • Be helpful
    • Invite others

    View full-size slide

  27. Oh, and curate contributors

    View full-size slide

  28. http://www.commitstrip.com/en/2014/05/07/the-truth-behind-open-source-apps/
    Systemic Problems

    View full-size slide

  29. Where do the gems
    we use come from?

    View full-size slide

  30. People.
    Like me and you.

    View full-size slide

  31. We depend on altruism
    • http://www.confreaks.com/videos/2901-
    rubyconf2013-maintaining-sanity

    View full-size slide

  32. Important code maintained
    by only a few

    View full-size slide

  33. So many ways to
    leave a gem behind

    View full-size slide

  34. There’s no gem
    maintainer hotline
    nor gem clearinghouse

    View full-size slide

  35. A tweet for help

    View full-size slide

  36. Maintainer Classifieds
    http://stillmaintained.com/sferik/merb-admin

    View full-size slide

  37. Abandonment notice in README

    View full-size slide

  38. Users ask about maintenance

    View full-size slide

  39. Posting on a list

    View full-size slide

  40. Leaving behind the abandoned

    View full-size slide

  41. Trusting a contributor

    View full-size slide

  42. Accidental ownership

    View full-size slide

  43. Github commit isn’t enough

    View full-size slide

  44. http://www.commitstrip.com/en/2014/05/07/the-truth-behind-open-source-apps/
    Getting Involved: As a curator

    View full-size slide

  45. R E S P O N S I B L E C U R A T I O N
    Taking Over Someone Else’s Open Source Projects
    Daniel Doubrovkine
    http://www.confreaks.com/videos/4166-gogaruco2014-taking-over-someone-else-
    s-open-source-projects

    View full-size slide

  46. M A I N TA I N I N G G E M S : R U B Y C O N F 2 0 1 3

    View full-size slide

  47. M A I N TA I N I N G G E M S : G O G A R U C O 2 0 1 4

    View full-size slide

  48. M A I N TA I N I N G G E M S : R U B Y C O N F 2 0 1 5

    View full-size slide

  49. Taking Ownership
    • 1) Get repository (GitHub) commit / ownership
    • Need GitHub username. Add to access group.
    • 2) Get rubygems.org push access
    • Need email for rubygems.org account
    • gem owner -a dev@benjaminfleischer.com
    • 3) Mailing List? Twitter account? IRC?

    View full-size slide

  50. Transferring ownership

    View full-size slide

  51. RubyGems.org can
    only do so much.
    It’s a lot of work.
    http://help.rubygems.org/discussions/questions/122-abandoned-gem-requesting-maintainership

    View full-size slide

  52. How do I
    complain help out?

    View full-size slide

  53. Bless a fork
    Otherwise there’s no place for people to
    contribute back to

    View full-size slide

  54. CodeTriage.com

    View full-size slide

  55. The Twitter Gem and Ruby
    Hero Erik Michaels-Ober
    Further Reading:
    http://rubyrogues.com/127-rr-erik-michaels-ober/ grep for maintain
    ERIK: It was basically just a giant yak shave. I think I just
    started working on it and then I said… So I … and then
    just so I just became the de facto
    maintainer of that.
    KATRINA: What’s the most challenging aspect of
    maintaining a big popular project like the twitter gem?
    ERIK: I don’t know. To me, I love it.

    View full-size slide

  56. R U B Y G E M A D O P T I O N

    View full-size slide

  57. http://www.commitstrip.com/en/2014/05/07/the-truth-behind-open-source-apps/
    Getting Involved: As a citizen

    View full-size slide

  58. P L E A S E B E PAT I E N T, W E A R E H U M A N
    B E I N G A G O O D C O D E C I T I Z E N
    Taking Over Someone Else’s Open Source Projects
    Daniel Doubrovkine
    http://www.confreaks.com/videos/4166-gogaruco2014-taking-over-someone-else-
    s-open-source-projects

    View full-size slide

  59. A D D A L I C E N S E
    G E T T I N G I N V O LV E D

    View full-size slide

  60. F I X A D E P E N D E N C Y S P E C I F I C AT I O N
    G E T T I N G I N V O LV E D

    View full-size slide

  61. F I X A T Y P O
    G E T T I N G I N V O LV E D

    View full-size slide

  62. I M P R O V E D O C U M E N TAT I O N
    G E T T I N G I N V O LV E D

    View full-size slide

  63. D O A S I M P L E C H O R E
    G E T T I N G I N V O LV E D

    View full-size slide

  64. C R E AT E A C H A N G E L O G
    G E T T I N G I N V O LV E D

    View full-size slide

  65. W O R K W I T H M E !

    View full-size slide

  66. W O R K W I T H M E !

    View full-size slide

  67. G E T T I N G I N V O LV E D
    W O R K W I T H M E !
    • RubyFriends.com #RubyFriends Twitter scraper
    • https://github.com/rubyrogues/rubyfriends
    • PairProgramming #PairWithMe
    • https://github.com/avdi/ppwm and
    • https://github.com/rubyrogues/ppwm-matcher
    • Command-line metrics tool
    • https://github.com/metricfu/metric_fu
    • https://github.com/colszowka/simplecov
    • Documenting RubyGems
    • https://github.com/rubygems/guides

    View full-size slide

  68. http://www.commitstrip.com/en/2014/05/07/the-truth-behind-open-source-apps/
    The More You Know

    View full-size slide

  69. R E F E R E N C E S
    L I N K S
    Basic Tools and Workflows:
    GitHub
    • https://help.github.com/articles/using-pull-requests/
    • http://help.exercism.io/git-workflow.html
    • http://blog.quickpeople.co.uk/2013/07/10/useful-github-patterns/
    • https://github.com/Kikobeats/awesome-github
    • https://github.com/rafalchmiel/friction A tool to get rid of common
    sources of contributor friction
    Git
    • https://sandofsky.com/blog/git-workflow.html
    • http://nuclearsquid.com/writings/git-tricks-tips-workflows/
    • http://help.exercism.io/git-workflow.html
    • https://www.mediawiki.org/wiki/Gerrit/Advanced_usage

    View full-size slide

  70. R E F E R E N C E S
    L I N K S
    Something simple to do:
    • Gemspec http://www.benjaminfleischer.com/2013/08/21/psa-gem-versions/
    • Look in the gemspec for a gem you’re using for “~> X.Y.Z”
    • Licenses http://www.benjaminfleischer.com/2013/07/12/make-the-world-a-
    better-place-put-a-license-in-your-gemspec/
    • Gems missing a license in their gemspec: https://github.com/search?
    o=asc&q=commenter%3Abf4+author%3Abf4+type%3Aissue+state
    %3Aopen+%22License+missing+from+gemspec%22+in
    %3Atitle&ref=searchresults&s=updated&type=Issues

    View full-size slide

  71. R E F E R E N C E S
    L I N K S
    Something simple to do:
    • Document
    • Rails: https://github.com/rails/rails/issues/16576
    • Fixing ruby docs https://www.youtube.com/watch?v=0UkZVN7EL1k
    • http://madhatted.com/2014/11/5/contribute-to-ember-js-2-0-no-coding-
    required
    • Document: http://www.docsdoctor.org/
    • Fix Ruby warnings you see when running code
    • `export RUBYOPT=-w` OR run with `ruby -w file.rb` OR `ruby -w -S bundle`

    View full-size slide

  72. R E F E R E N C E S
    L I N K S
    Contributing to open source
    • http://code.dblock.org/i-want-to-contribute-to-open-
    source-where-do-i-begin
    • http://www.softwarequalityconnection.com/2012/03/14-
    ways-to-contribute-to-open-source-without-being-a-
    programming-genius-or-a-rock-star/
    • https://guides.github.com/overviews/os-contributing/
    • https://guides.github.com/activities/contributing-to-
    open-source/index.html
    • http://jumpstartlab.com/news/archives/2013/04/15/your-
    first-pull-request
    • http://www.justinweiss.com/emails/2014-10-31-the-
    easiest-way-to-get-into-open-source.html
    • http://felixge.de/2013/03/11/the-pull-request-hack.html
    • http://rubyrogues.com/051-rr-getting-started-with-open-
    source/

    View full-size slide

  73. R E F E R E N C E S
    L I N K S
    Contributing to Rails
    • http://blog.steveklabnik.com/posts/2012-07-05-how-can-i-
    contribute-to-ruby-on-rails-
    • http://edgeguides.rubyonrails.org/
    contributing_to_ruby_on_rails.html
    • http://www.confreaks.com/videos/2477-railsconf2013-
    your-first-rails-pull-request
    • https://speakerdeck.com/markmcspadden/
    railsconf-2013-your-first-rails-pull-request?slide=31

    View full-size slide

  74. R E F E R E N C E S
    L I N K S
    Contributing guidelines
    • http://www.chiark.greenend.org.uk/~sgtatham/bugs.html
    “How to Report Bugs Effectively”
    • https://github.com/thoughtbot/guides/blob/master/
    protocol/open-source/README.md
    • https://github.com/metricfu/metric_fu/blob/master/
    CONTRIBUTING.md
    • https://github.com/dkubb/descendants_tracker/blob/
    master/CONTRIBUTING.md
    • https://github.com/contribute-md/contribute-md-
    template
    • http://rubini.us/2011/10/18/contributing-to-rubinius/

    View full-size slide

  75. R E F E R E N C E S
    L I N K S
    Curation talks
    • http://confreaks.com/videos/2901-rubyconf2013-
    maintaining-sanity
    • http://www.confreaks.com/videos/4166-gogaruco2014-
    taking-over-someone-else-s-open-source-projects
    • https://speakerdeck.com/searls/the-social-coding-
    contract Justin Searls
    • https://gist.github.com/searls/
    eaf8dcdd4b3a10a97694
    • https://speakerdeck.com/bf4/maintaining-open-
    source-projects-1

    View full-size slide

  76. R E F E R E N C E S
    L I N K S
    Curating projects
    • https://github.com/rubygems/rubygems.org/issues/
    725 RFC: Add a Gem adoption status and ownership
    request approve/reject workflow
    • http://www.benjaminfleischer.com/2014/08/17/
    rubygems-adoption-center/
    • http://erniemiller.org/2013/11/17/anyone-interested-
    in-activerecord-hackery/
    • http://stillmaintained.com/
    • http://nikcodes.com/2013/05/10/new-contributor-
    jump-in/
    • http://rubyrogues.com/127-rr-erik-michaels-ober/ grep
    for maintain

    View full-size slide

  77. R E F E R E N C E S
    L I N K S
    Licensing
    • https://aprescott.com/posts/open-source-copyright
    • Protect Your Code: Key Legal Considerations for the
    Software Developer by Daliah Saper http://
    vimeo.com/106758941
    • Changing license on unmaintained gem https://
    github.com/ffi/ffi/issues/288 http://www.catb.org/esr/
    Licensing-HOWTO.html#changing
    • https://github.com/bf4/gemproject/blob/master/
    licenses.md
    • See when common licenses can be combined http://
    www.dwheeler.com/essays/floss-license-slide.html

    View full-size slide

  78. R E F E R E N C E S
    L I N K S
    Misc
    • http://techblog.netflix.com/2010/12/why-we-use-and-contribute-to-
    open.html
    • http://www.commitstrip.com/en/2014/05/07/the-truth-behind-open-source-
    apps/
    • Open Source Report Card: Fun GitHub statshttps://osrc.dfm.io/bf4/
    • Pair with Me!! http://www.benjaminfleischer.com/pair
    • Be a Mentor! http://mentoring.devbootcamp.com/

    View full-size slide

  79. M A I N TA I N I N G O P E N
    S O U R C E P R O J E C T S
    D E V @ B E N J A M I N F L E I S C H E R . C O M
    T W I T T E R . C O M / H A Z U L A
    G I T H U B . C O M / B F 4
    Ruby
    ^
    https://speakerdeck.com/bf4/
    maintaining-open-source-projects-1
    Q U E S T I O N S ?

    View full-size slide