Slide 1

Slide 1 text

Starting Open Source! How to make your first contribution @michellesanver #CommunityWorks

Slide 2

Slide 2 text

@michellesanver #CommunityWorks Who are you?

Slide 3

Slide 3 text

Contribute to *this* talk @michellesanver #CommunityWorks

Slide 4

Slide 4 text

“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

Slide 5

Slide 5 text

Better Quality @michellesanver #CommunityWorks

Slide 6

Slide 6 text

Higher Reliability @michellesanver #CommunityWorks

Slide 7

Slide 7 text

More Flexibility @michellesanver #CommunityWorks

Slide 8

Slide 8 text

Lower Cost @michellesanver #CommunityWorks

Slide 9

Slide 9 text

End to predatory vendor lock-in @michellesanver #CommunityWorks

Slide 10

Slide 10 text

Convinced Yet? @michellesanver #CommunityWorks

Slide 11

Slide 11 text

Before we get started! Top 3: Lineke and Kim @michellesanver #CommunityWorks

Slide 12

Slide 12 text

It’s ok to get it wrong Before we get started! Top 3: Kim @michellesanver #CommunityWorks

Slide 13

Slide 13 text

You might not get an immediate response Before we get started! Top 3: Kim @michellesanver #CommunityWorks

Slide 14

Slide 14 text

Don't be afraid to ask for a task to be assigned to you Before we get started! Top 3: Kim @michellesanver #CommunityWorks

Slide 15

Slide 15 text

Git Before we get started! Top 3: Lineke @michellesanver #CommunityWorks

Slide 16

Slide 16 text

Passion & Usability Before we get started! Top 3: Lineke @michellesanver #CommunityWorks

Slide 17

Slide 17 text

The development process Before we get started! Top 3: Lineke @michellesanver #CommunityWorks

Slide 18

Slide 18 text

Storytime @michellesanver #CommunityWorks

Slide 19

Slide 19 text

No content

Slide 20

Slide 20 text

Who I was If I got enough nutritional value from code… ! I would eat that and nothing else. @michellesanver #CommunityWorks

Slide 21

Slide 21 text

Who I was But I would never share my food. @michellesanver #CommunityWorks

Slide 22

Slide 22 text

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

Slide 23

Slide 23 text

@michellesanver #CommunityWorks

Slide 24

Slide 24 text

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

Slide 25

Slide 25 text

Who I was No portfolio: Unemployable @michellesanver #CommunityWorks

Slide 26

Slide 26 text

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

Slide 27

Slide 27 text

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

Slide 28

Slide 28 text

Why I wanted to contribute @michellesanver #CommunityWorks

Slide 29

Slide 29 text

@michellesanver #CommunityWorks I felt ashamed for *not* doing it Why I wanted to contribute

Slide 30

Slide 30 text

@michellesanver #CommunityWorks I found a cool project, I wanted to help them improve. Why I wanted to contribute

Slide 31

Slide 31 text

The cool project @michellesanver #CommunityWorks

Slide 32

Slide 32 text

ProTalk.ME The cool project @michellesanver #CommunityWorks

Slide 33

Slide 33 text

Videos about PHP!! In fact.... If you want to see an earlier version of this talk The cool project @michellesanver #CommunityWorks

Slide 34

Slide 34 text

Obstacles @michellesanver #CommunityWorks

Slide 35

Slide 35 text

Obstacles Davey Shafik 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

Slide 36

Slide 36 text

Obstacles Lorna Mitchell 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

Slide 37

Slide 37 text

Obstacles Joshua Thijssen 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

Slide 38

Slide 38 text

Obstacles Eli White 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

Slide 39

Slide 39 text

Obstacles Beth Tucker Long 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

Slide 40

Slide 40 text

My Obstacles Technology & Fear of public ridicule @michellesanver #CommunityWorks

Slide 41

Slide 41 text

Contributing to Open Source! ! In 10 steps @michellesanver #CommunityWorks

Slide 42

Slide 42 text

Step 1: Choose The Project @michellesanver #CommunityWorks

Slide 43

Slide 43 text

Step 1: Choose The Project Be phpassionate about it Lineke’s

Slide 44

Slide 44 text

Step 1: Choose The Project (ab)use github! @michellesanver #CommunityWorks

Slide 45

Slide 45 text

Step 1: Choose The Project Search! :) @michellesanver #CommunityWorks

Slide 46

Slide 46 text

Step 1: Choose The Project What are your ‘friends’ doing? @michellesanver #CommunityWorks

Slide 47

Slide 47 text

@michellesanver #CommunityWorks

Slide 48

Slide 48 text

Step 1: Choose The Project Activity @michellesanver #CommunityWorks

Slide 49

Slide 49 text

Step 1: Choose The Project Check the commit history @michellesanver #CommunityWorks

Slide 50

Slide 50 text

Your Skills Step 1: Choose The Project @michellesanver #CommunityWorks

Slide 51

Slide 51 text

@michellesanver #CommunityWorks

Slide 52

Slide 52 text

Ready to change the world? https://www.codemontage.com {code} montage empowers coders to improve their impact on the world. Step 1: Choose The Project @michellesanver #CommunityWorks

Slide 53

Slide 53 text

Step 1: Choose The Project @michellesanver #CommunityWorks

Slide 54

Slide 54 text

Erm... License? Step 1: Choose The Project @michellesanver #CommunityWorks

Slide 55

Slide 55 text

Questions and Pointers Step 1: Choose The Project @michellesanver #CommunityWorks

Slide 56

Slide 56 text

Step 2: Install The Project @michellesanver #CommunityWorks

Slide 57

Slide 57 text

Fork It Step 2: Install The Project @michellesanver #CommunityWorks

Slide 58

Slide 58 text

@michellesanver #CommunityWorks

Slide 59

Slide 59 text

@michellesanver #CommunityWorks

Slide 60

Slide 60 text

Clone It Step 2: Install The Project @michellesanver #CommunityWorks

Slide 61

Slide 61 text

@michellesanver #CommunityWorks

Slide 62

Slide 62 text

@michellesanver #CommunityWorks

Slide 63

Slide 63 text

Using vagrant Step 2: Install The Project @michellesanver #CommunityWorks

Slide 64

Slide 64 text

Ruby, Vagrant, Oracle VirtualBox Step 2: Install The Project @michellesanver #CommunityWorks

Slide 65

Slide 65 text

$ vagrant up Step 2: Install The Project @michellesanver #CommunityWorks

Slide 66

Slide 66 text

Step 2: Install The Project @michellesanver #CommunityWorks

Slide 67

Slide 67 text

Manually Step 2: Install The Project @michellesanver #CommunityWorks

Slide 68

Slide 68 text

• Fork the protalk repository! • Use git clone to get your fork on your local machine! • Run ant - this will install all dependencies, clear the cache and run tests Step 2: Install The Project @michellesanver #CommunityWorks

Slide 69

Slide 69 text

• Make sure the app/cache and app/logs directories are writable by the webserver! • Create the database and change the parameters.ini in app/config to set the database connection details! • Run the command "app/console doctrine:schema:create" to create the database tables Step 2: Install The Project @michellesanver #CommunityWorks

Slide 70

Slide 70 text

• Import the doc/db/seed_data.sql in your database for initial data! • Creating a admin user for the backend can be done by running this command: "app/ console fos:user:create [email protected] password -- super-admin Step 2: Install The Project @michellesanver #CommunityWorks

Slide 71

Slide 71 text

Do you like vagrant now? @michellesanver #CommunityWorks

Slide 72

Slide 72 text

Step 2: Install The Project Questions and Pointers @michellesanver #CommunityWorks

Slide 73

Slide 73 text

Step 3: Investigation @michellesanver #CommunityWorks

Slide 74

Slide 74 text

Step 3: Investigation Codebase @michellesanver #CommunityWorks

Slide 75

Slide 75 text

Coding guidelines Step 3: Investigation @michellesanver #CommunityWorks

Slide 76

Slide 76 text

Tests? Step 3: Investigation @michellesanver #CommunityWorks

Slide 77

Slide 77 text

Questions and Pointers Step 3: Investigation @michellesanver #CommunityWorks

Slide 78

Slide 78 text

Step 4: Hiiiiiii!!! :-) @michellesanver #CommunityWorks

Slide 79

Slide 79 text

Step 4: Hiiiiiii!!! :-) Where art thou? @michellesanver #CommunityWorks

Slide 80

Slide 80 text

IRC! I’m geekie Step 4: Hiiiiiii!!! :-) @michellesanver #CommunityWorks

Slide 81

Slide 81 text

Contact them Step 4: Hiiiiiii!!! :-) @michellesanver #CommunityWorks

Slide 82

Slide 82 text

Observe the responses (Should I stay, or should I go?) Step 4: Hiiiiiii!!! :-) @michellesanver #CommunityWorks

Slide 83

Slide 83 text

Questions and Pointers Step 4: Hiiiiiii!!! :-) @michellesanver #CommunityWorks

Slide 84

Slide 84 text

Step 5: What can I do? @michellesanver #CommunityWorks

Slide 85

Slide 85 text

Step 5: What can I do? It’s not your project. (But nothing stops you from branching...) @michellesanver #CommunityWorks

Slide 86

Slide 86 text

The github issuetracker Step 5: What can I do? @michellesanver #CommunityWorks

Slide 87

Slide 87 text

@michellesanver #CommunityWorks

Slide 88

Slide 88 text

Pick an issue Step 5: What can I do? @michellesanver #CommunityWorks

Slide 89

Slide 89 text

@michellesanver #CommunityWorks

Slide 90

Slide 90 text

Create an issue Step 5: What can I do? @michellesanver #CommunityWorks

Slide 91

Slide 91 text

@michellesanver #CommunityWorks

Slide 92

Slide 92 text

@michellesanver #CommunityWorks

Slide 93

Slide 93 text

Communicate!! In open source - Communication is key Step 5: What can I do? @michellesanver #CommunityWorks

Slide 94

Slide 94 text

Questions and Pointers Step 5: What can I do? @michellesanver #CommunityWorks

Slide 95

Slide 95 text

Step 6: How... ? @michellesanver #CommunityWorks

Slide 96

Slide 96 text

Step 6: How... ? Read The Guidelines @michellesanver #CommunityWorks

Slide 97

Slide 97 text

It’s “just” code. Step 6: How... ? @michellesanver #CommunityWorks

Slide 98

Slide 98 text

If that scares you... Step 6: How... ? @michellesanver #CommunityWorks

Slide 99

Slide 99 text

It’s private, for now. (If you want it to be) Step 6: How... ? @michellesanver #CommunityWorks

Slide 100

Slide 100 text

Ask questions... Step 6: How... ? @michellesanver #CommunityWorks

Slide 101

Slide 101 text

Questions and Pointers Step 6: How... ? @michellesanver #CommunityWorks

Slide 102

Slide 102 text

Step 7: Just do it @michellesanver #CommunityWorks

Slide 103

Slide 103 text

Step 7: Just do it Keep yourself updated @michellesanver #CommunityWorks

Slide 104

Slide 104 text

$ git remote add upstream https://github.com/protalk/pro $ git fetch upstream $ git merge upstream/master ! Step 7: Just do it @michellesanver #CommunityWorks

Slide 105

Slide 105 text

Step 7: Just do it Branch… @michellesanver #CommunityWorks

Slide 106

Slide 106 text

$ git branch $ git checkout ! Step 7: Just do it @michellesanver #CommunityWorks

Slide 107

Slide 107 text

Make your changes! (You know how to code, right?) Step 7: Just do it @michellesanver #CommunityWorks

Slide 108

Slide 108 text

Commit often! $ git commit -m 'Michelle will be pleased <3' Step 7: Just do it @michellesanver #CommunityWorks

Slide 109

Slide 109 text

Learn Git Step 7: Just do it @michellesanver #CommunityWorks

Slide 110

Slide 110 text

You *can* change anything.! Don’t worry, just keep doin’ git! @michellesanver #CommunityWorks Git

Slide 111

Slide 111 text

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

Slide 112

Slide 112 text

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

Slide 113

Slide 113 text

Questions and Pointers Step 7: Just do it @michellesanver #CommunityWorks

Slide 114

Slide 114 text

Step 8: Push it (Just push it push it) @michellesanver #CommunityWorks

Slide 115

Slide 115 text

Step 8: Push it (Just push it push it) $ git push @michellesanver #CommunityWorks

Slide 116

Slide 116 text

Questions and Pointers Step 8: Push it (Push it real good) @michellesanver #CommunityWorks

Slide 117

Slide 117 text

Step 9: The pull request @michellesanver #CommunityWorks

Slide 118

Slide 118 text

Step 9: The pull request Time to show the world! (Except those poor sods without Internet) @michellesanver #CommunityWorks

Slide 119

Slide 119 text

Don’t worry! (Be happy) Step 9: The pull request @michellesanver #CommunityWorks

Slide 120

Slide 120 text

It’s just a button! (And a form...) Step 9: The pull request @michellesanver #CommunityWorks

Slide 121

Slide 121 text

@michellesanver #CommunityWorks

Slide 122

Slide 122 text

@michellesanver #CommunityWorks

Slide 123

Slide 123 text

Step 9: The pull request @michellesanver #CommunityWorks Linking to the issuetracker! #1337 ! close, closes, closed, fix, fixes, fixed, resolve, resolves, resolved

Slide 124

Slide 124 text

Questions and Pointers Step 9: The pull request @michellesanver #CommunityWorks

Slide 125

Slide 125 text

Step 10: Code Review @michellesanver #CommunityWorks

Slide 126

Slide 126 text

Step 10: Code Review It’s constructive criticism @michellesanver #CommunityWorks

Slide 127

Slide 127 text

Correct or discuss @michellesanver #CommunityWorks Step 10: Code Review

Slide 128

Slide 128 text

You learn so much! @michellesanver #CommunityWorks Step 10: Code Review

Slide 129

Slide 129 text

And if there’s trolls... @michellesanver #CommunityWorks Step 10: Code Review

Slide 130

Slide 130 text

Trolls can be cute too! @michellesanver #CommunityWorks Step 10: Code Review

Slide 131

Slide 131 text

Questions and Pointers @michellesanver #CommunityWorks Step 10: Code Review

Slide 132

Slide 132 text

You did it... @michellesanver #CommunityWorks

Slide 133

Slide 133 text

@michellesanver #CommunityWorks Obstacles: The Fear

Slide 134

Slide 134 text

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

Slide 135

Slide 135 text

Obstacles: The Fear ! User Groups @michellesanver #CommunityWorks

Slide 136

Slide 136 text

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

Slide 137

Slide 137 text

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

Slide 138

Slide 138 text

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

Slide 139

Slide 139 text

@michellesanver #CommunityWorks Mentoring Lineke Kerckhoffs @the_linie

Slide 140

Slide 140 text

@michellesanver #CommunityWorks Mentoring Igor Wiedler @igorwhiletrue

Slide 141

Slide 141 text

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

Slide 142

Slide 142 text

No content

Slide 143

Slide 143 text

No content

Slide 144

Slide 144 text

Still code passionate @michellesanver #CommunityWorks Who I Am Now

Slide 145

Slide 145 text

No content

Slide 146

Slide 146 text

Now… A conference addict @michellesanver #CommunityWorks Who I Am Now

Slide 147

Slide 147 text

A speaker @michellesanver #CommunityWorks Who I Am Now

Slide 148

Slide 148 text

Not afraid to contribute @michellesanver #CommunityWorks Who I Am Now

Slide 149

Slide 149 text

@michellesanver #CommunityWorks Who I Am Now

Slide 150

Slide 150 text

All thanks to *YOU* @michellesanver #CommunityWorks Who I Am Now

Slide 151

Slide 151 text

@michellesanver #CommunityWorks #CommunityWorks

Slide 152

Slide 152 text

@michellesanver #CommunityWorks Questions… Contributions?

Slide 153

Slide 153 text

Thank You. @michellesanver #CommunityWorks