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

'ProTalking' Your Way Into Open Source

'ProTalking' Your Way Into Open Source

If you want to get involved in open source but keep talking yourself out of it, let me show you how to take that first step. I'll cover the mechanics of contributing, from saying hello and installing the project to selecting a bug, your first pull request and code review. If you're already a contributor, contribute to my talk and share your valuable ideas.

Michelle Sanver

February 21, 2014

More Decks by Michelle Sanver

Other Decks in Programming


  1. ‘ProTalking’ Your Way Into ! Open Source @michellesanver #CommunityWorks

  2. @michellesanver #CommunityWorks Who are you?

  3. Contribute to *this* talk @michellesanver #CommunityWorks

  4. “The promise of open source is better quality, higher reliability,

    more flexibility, lower cost, and an end to predatory vendor lock-in.” - opensource.org @michellesanver #CommunityWorks
  5. Better Quality @michellesanver #CommunityWorks

  6. Higher Reliability @michellesanver #CommunityWorks

  7. More Flexibility @michellesanver #CommunityWorks

  8. Lower Cost @michellesanver #CommunityWorks

  9. End to predatory vendor lock-in @michellesanver #CommunityWorks

  10. @michellesanver #CommunityWorks Convinced Yet?

  11. Who I was @michellesanver #CommunityWorks Storytime

  12. None
  13. If I got enough nutritional value from code… ! I

    would eat that and nothing else. @michellesanver #CommunityWorks Who I was
  14. But I would never share my food. @michellesanver #CommunityWorks Who

    I was
  15. Because if I would… @michellesanver #CommunityWorks Who I was

  16. @michellesanver #CommunityWorks

  17. Made websites under a nickname… @michellesanver #CommunityWorks Who I was

  18. No portfolio: Unemployable @michellesanver #CommunityWorks Who I was

  19. So… I started my own company! (Unsuccessfully) @michellesanver #CommunityWorks Who

    I was
  20. I had *NO* code confidence @michellesanver #CommunityWorks Who I was

  21. @michellesanver #CommunityWorks Why I wanted to contribute

  22. @michellesanver #CommunityWorks I felt ashamed for *not* doing it Why

    I wanted to contribute
  23. @michellesanver #CommunityWorks I found a cool project, I wanted to

    help them improve. Why I wanted to contribute
  24. @michellesanver #CommunityWorks The Cool Project

  25. ProTalk.ME @michellesanver #CommunityWorks End to predatory vendor lock-in

  26. Videos about PHP!! In fact.... If you want to see

    an earlier version of this talk @michellesanver #CommunityWorks End to predatory vendor lock-in
  27. What are your friends doing? @michellesanver #CommunityWorks Choosing a project

  28. @michellesanver #CommunityWorks

  29. Lineke’s

  30. @michellesanver #CommunityWorks Found a bug? Fix it! Choosing a project

  31. @michellesanver #CommunityWorks Improve what you already use Choosing a project

  32. Ready to change the world? https://www.codemontage.com {code} montage empowers coders

    to improve their impact on the world. @michellesanver #CommunityWorks Choosing a project
  33. @michellesanver #CommunityWorks

  34. @michellesanver #CommunityWorks We all had them… Obstacles

  35. Obstacles It was a tie. ! 1) Fear, that I

    really had no clue what I was doing and people were going to make fun of me.
 2) Finding something to do! 
 And the first one never really went away… I still worry when I contribute to things in say, python, or javascript, or something other than PHP where people know me. @michellesanver #CommunityWorks Obstacles Davey Shafik
  36. Obstacles Honestly, I just didn't realise my efforts would be

    useful or welcome. ! It was only because I was deeply into a tool (joind.in of course!) that I eventually got told to fix some things myself, as a speaker and a conference organiser, I was just nagging Chris far too much. I was a project lead I think before I contributed at all to any other project, so I was a pretty slow starter! ! Now I just assume everyone appreciates the effort even if I'm doing it wrong, and I get in! @michellesanver #CommunityWorks Lorna Mitchell
  37. I'm not 100% sure when my first (open source) contribution

    took place.I think it was around 1997-1998, and it probably was either some small things inside the Linux kernel. ! The biggest issue for (starting) contributors I think is they are overwhelmed by the code and current userbase. It's hard to find a place in such a group, and even though most of them would be perfectly capable of contributing, they won't because of fear of rejection, mockery etc. @michellesanver #CommunityWorks Obstacles Joshua Thijssen
  38. My FIRST hurdle was having too many hobbies and not

    wanting to just do it. As a hobby. ! SECOND hurdle. Was trying to convince NASA, who I worked for. To allow me to open source some projects I'd created there. And failed. ! THIRD hurdle, was trying to contribute to OSS projects. While already now a senior programmer with a decade+ of experience. Yet because I had no OSS-karma. No one wanted my code, or to trust me. " @michellesanver #CommunityWorks Obstacles Eli White
  39. When I contributed to an open source project for the

    first time, the biggest obstacle for me was getting over my fear of doing something wrong and being publicly shamed. " ! Actually, that's not true. That was the biggest obstacle when I wanted to contribute to an open source project for the second time. When I first tried to contribute to an open source project, I was full of excitement and jumped right in. My submission was not accepted, which I fully expected because I was new to the project. ! What I did not expect was that instead of constructive criticism or a "thanks anyway, but no", the response I received was rude and insulting. I did not contribute to another project for a year and a half after that for fear of being ridiculed again. Thanks to a very supportive network of friends in the PHP community, though, I was able to overcome my fear and am back to contributing where I can." @michellesanver #CommunityWorks Obstacles Beth Tucker Long
  40. Technology & Fear of public ridicule @michellesanver #CommunityWorks Obstacles

  41. @michellesanver #CommunityWorks Obstacle: New Technology

  42. A new framework @michellesanver #CommunityWorks Obstacle: Symfony2

  43. @michellesanver #CommunityWorks Technology: Twig

  44. @michellesanver #CommunityWorks Can *not* live without it, seriously! Technology: Composer

  45. @michellesanver #CommunityWorks When someone else does the setup… It makes

    my life easier. Technology: Vagrant
  46. @michellesanver #CommunityWorks omnomhub.dev Add the host to your hosts

    file Technology: Vagrant
  47. @michellesanver #CommunityWorks $ vagrant up Technology: Vagrant

  48. @michellesanver #CommunityWorks Technology: Vagrant! Watch the magic happen

  49. @michellesanver #CommunityWorks GitHub GUI client GitHub

  50. @michellesanver #CommunityWorks

  51. BOO!! :D @michellesanver #CommunityWorks

  52. Don’t worry and start doing git! :) @michellesanver #CommunityWorks Git

  53. I had some obstacles… @michellesanver #CommunityWorks Git

  54. But… They don’t have to know. @michellesanver #CommunityWorks Git

  55. Amending @michellesanver #CommunityWorks $ git commit -m 'initial commit' $

    git add forgotten.php $ git commit --amend Git
  56. @michellesanver #CommunityWorks $ git remote add upstream https://github.com/protalk/protalk $ git

    fetch upstream $ git merge upstream/master Keep yourself updated Git
  57. You *can* change anything.! Don’t worry, just keep doin’ git!

    @michellesanver #CommunityWorks Git
  58. git help, config, and init.! remote, fetch, pull, let’s edit.!

    diff, add, status, commit. you’re doin’ git.! ! log, branch, checkout, that’s it!! checkout, merge, rebase, don’t quit.! clean, reset, tag, push those bits! you’re doin’ git!! ! fork and clone all the repos you know,! patches and pull requests, you’ll steal the git show.! you’re doin’ git. you’re doing it!! check git blame and see your username.! hope you ran the tests before your commit,! or other devs will think you’re an idiot.! you’re doin’ git. (x4)! ! Exit. @michellesanver #CommunityWorks You're Doin' Git" (c) 2013 Jeremy C. Lindblom <jeremy@webjeremy.com>
  59. A very cool interactive tutorial! @michellesanver #CommunityWorks try.github.io

  60. A very cool interactive tutorial! @michellesanver #CommunityWorks

  61. http://try.github.io! http://gitimmersion.com! http://book.git-scm.com @michellesanver #CommunityWorks Git: Resources

  62. @michellesanver #CommunityWorks https://github.com/github/hub Git + Hub = Love

  63. @michellesanver #CommunityWorks https://github.com/github/hub Git + Hub = Love Git with

    Github superpowers!
  64. @michellesanver #CommunityWorks $ git remote add protalk Git + Hub

    = Love
  65. @michellesanver #CommunityWorks $ git pull-request Git + Hub = Love

  66. @michellesanver #CommunityWorks $ git browse Git + Hub = Love

  67. @michellesanver #CommunityWorks From clone to code review The Github Workflow

  68. @michellesanver #CommunityWorks Fork It The Github Workflow

  69. @michellesanver

  70. @michellesanver

  71. @michellesanver #CommunityWorks Clone It The Github Workflow

  72. @michellesanver

  73. @michellesanver

  74. @michellesanver #CommunityWorks Do you really want to do this… ?!

    The Codebase
  75. @michellesanver #CommunityWorks Follow them! Coding Guidelines

  76. @michellesanver #CommunityWorks Usually tells you how to contribute The Contribute

  77. @michellesanver #CommunityWorks *Actually* read the readme Readme

  78. @michellesanver #CommunityWorks Run Them! Tests?

  79. @michellesanver #CommunityWorks Communicate Before You Code Hiiiiiiiii!!!!

  80. @michellesanver #CommunityWorks Pick it or make it. The GitHub Issuetracker

  81. @michellesanver

  82. @michellesanver #CommunityWorks Pick an issue The GitHub Issuetracker

  83. @michellesanver

  84. @michellesanver #CommunityWorks Create an issue The GitHub Issuetracker

  85. @michellesanver

  86. @michellesanver

  87. @michellesanver #CommunityWorks You know how to code, right!?! If not

    learn it, it’s not that hard ;) Make Your Changes
  88. @michellesanver #CommunityWorks Push it! (Just push it, push it)

  89. @michellesanver #CommunityWorks $ git push (Or just commit it in

    the GitHub gui client) Push it! (Push it real good)
  90. @michellesanver #CommunityWorks Time to show the world! (Except those poor

    sods without Internet) The Pull Request
  91. @michellesanver #CommunityWorks Don’t worry! (Be happy) The Pull Request

  92. @michellesanver #CommunityWorks It’s just a button! (And a form…) The

    Pull Request
  93. @michellesanver

  94. @michellesanver

  95. @michellesanver #CommunityWorks Linking to the issuetracker! #1337 ! close, closes,

    closed, fix, fixes, fixed, resolve, resolves, resolved The Pull Request
  96. @michellesanver #CommunityWorks It’s constructive criticism Code Review

  97. @michellesanver #CommunityWorks Correct or discuss Code Review

  98. @michellesanver #CommunityWorks You learn so much! Code Review

  99. @michellesanver #CommunityWorks And if there are trolls... Code Review

  100. @michellesanver #CommunityWorks Trolls can be cute too! Code Review

  101. Getting rid of my fear… @michellesanver #CommunityWorks Obstacles: The Fear

  102. Obstacles: The Fear ! Conferences @michellesanver #CommunityWorks http://joind.in http://callingallpapers.com http://php.net/conferences

  103. @michellesanver #CommunityWorks Obstacles: The Fear ! User Groups

  104. @michellesanver #CommunityWorks IRC #phpc #phpmentoring #phpwomen http://freenode.net Obstacles: The Fear

  105. @michellesanver #CommunityWorks http://phpmentoring.org Matthew Turland @elazar Mentoring

  106. @michellesanver #CommunityWorks Rafael Dohms @rdohms & Davey Shafik @dshafik Mentoring

  107. @michellesanver #CommunityWorks Lineke Kerckhoffs @the_linie Mentoring

  108. @michellesanver #CommunityWorks Igor Wiedler @igorwhiletrue Mentoring

  109. @michellesanver #CommunityWorks http://phpmentoring.org Get a mentor… Or 5 Obstacles: The

  110. @michellesanver #CommunityWorks Friends

  111. None
  112. None
  113. Still code passionate @michellesanver #CommunityWorks Who I am now

  114. None
  115. Now… A conference addict @michellesanver #CommunityWorks Who I am now

  116. A speaker @michellesanver #CommunityWorks Who I am now

  117. Not afraid to contribute @michellesanver #CommunityWorks Who I am now

  118. @michellesanver #CommunityWorks Who I am now

  119. All thanks to *YOU* @michellesanver #CommunityWorks Who I am now

  120. @michellesanver #CommunityWorks #CommunityWorks

  121. Questions… Contributions? @michellesanver #CommunityWorks

  122. @michellesanver #CommunityWorks PLZ RATE MY TALK!! ;-)" (Or contribute to

    joind.in …) ! https://joind.in/10700 Thank you!
  123. Share *Your* Experiences