Slide 1

Slide 1 text

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 ^

Slide 2

Slide 2 text

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 .

Slide 3

Slide 3 text

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

Slide 4

Slide 4 text

echo `whoami`

Slide 5

Slide 5 text

echo `whoami`

Slide 6

Slide 6 text

echo `whoami`

Slide 7

Slide 7 text

echo `whoami`

Slide 8

Slide 8 text

echo `whoami`

Slide 9

Slide 9 text

echo `whoami`

Slide 10

Slide 10 text

echo `whoami`

Slide 11

Slide 11 text

I really enjoy working in open source.

Slide 12

Slide 12 text

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

Slide 13

Slide 13 text

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

Slide 14

Slide 14 text

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”

Slide 15

Slide 15 text

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

Slide 16

Slide 16 text

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’

Slide 17

Slide 17 text

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

Slide 18

Slide 18 text

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.

Slide 19

Slide 19 text

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

Slide 20

Slide 20 text

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/

Slide 21

Slide 21 text

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

Slide 22

Slide 22 text

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

Slide 23

Slide 23 text

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

Slide 24

Slide 24 text

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

Slide 25

Slide 25 text

H U G S !

Slide 26

Slide 26 text

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

Slide 27

Slide 27 text

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

Slide 28

Slide 28 text

Oh, and curate contributors

Slide 29

Slide 29 text

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

Slide 30

Slide 30 text

Where do the gems we use come from?

Slide 31

Slide 31 text

No content

Slide 32

Slide 32 text

People. Like me and you.

Slide 33

Slide 33 text

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

Slide 34

Slide 34 text

Important code maintained by only a few

Slide 35

Slide 35 text

So many ways to leave a gem behind

Slide 36

Slide 36 text

There’s no gem maintainer hotline nor gem clearinghouse

Slide 37

Slide 37 text

A tweet for help

Slide 38

Slide 38 text

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

Slide 39

Slide 39 text

Abandonment notice in README

Slide 40

Slide 40 text

Users ask about maintenance

Slide 41

Slide 41 text

Posting on a list

Slide 42

Slide 42 text

Leaving behind the abandoned

Slide 43

Slide 43 text

Trusting a contributor

Slide 44

Slide 44 text

Accidental ownership

Slide 45

Slide 45 text

Github commit isn’t enough

Slide 46

Slide 46 text

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

Slide 47

Slide 47 text

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

Slide 48

Slide 48 text

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

Slide 49

Slide 49 text

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

Slide 50

Slide 50 text

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

Slide 51

Slide 51 text

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?

Slide 52

Slide 52 text

Transferring ownership

Slide 53

Slide 53 text

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

Slide 54

Slide 54 text

How do I complain help out?

Slide 55

Slide 55 text

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

Slide 56

Slide 56 text

CodeTriage.com

Slide 57

Slide 57 text

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.

Slide 58

Slide 58 text

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

Slide 59

Slide 59 text

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

Slide 60

Slide 60 text

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

Slide 61

Slide 61 text

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

Slide 62

Slide 62 text

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

Slide 63

Slide 63 text

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

Slide 64

Slide 64 text

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

Slide 65

Slide 65 text

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

Slide 66

Slide 66 text

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

Slide 67

Slide 67 text

W O R K W I T H M E !

Slide 68

Slide 68 text

W O R K W I T H M E !

Slide 69

Slide 69 text

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

Slide 70

Slide 70 text

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

Slide 71

Slide 71 text

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

Slide 72

Slide 72 text

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

Slide 73

Slide 73 text

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`

Slide 74

Slide 74 text

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/

Slide 75

Slide 75 text

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

Slide 76

Slide 76 text

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/

Slide 77

Slide 77 text

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

Slide 78

Slide 78 text

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

Slide 79

Slide 79 text

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

Slide 80

Slide 80 text

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/

Slide 81

Slide 81 text

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 ?