Slide 1

Slide 1 text

Contributing to Open Source as a Contributor and Maintainer Isabel Costa @isabelcmdcosta isabelcosta.github.io

Slide 2

Slide 2 text

→ Software Engineer at Globality → AnitaB.org Open Source Admin & contributor & maintainer → GSoC 2018, 2020; GCI 2019 → Mentor at Coding Black Females Isabel Costa @isabelcmdcosta @isabelcosta isabelcosta.github.io

Slide 3

Slide 3 text

What to expect? ● Becoming contributor... ● 7 lessons learned && tips as a contributor ● Becoming a maintainer... ● How I maintain ● 7 lessons learned && tips as a maintainer ● Final thoughts @isabelcmdcosta

Slide 4

Slide 4 text

Becoming a Contributor... @isabelcmdcosta

Slide 5

Slide 5 text

I want to … How to start? Open Source @isabelcmdcosta

Slide 6

Slide 6 text

REJECTED 2016 @isabelcmdcosta

Slide 7

Slide 7 text

Then one day ... @isabelcmdcosta

Slide 8

Slide 8 text

Dec 2017: First PR during 24 Pull Requests @isabelcmdcosta

Slide 9

Slide 9 text

Contributing steps were very simple! @isabelcmdcosta

Slide 10

Slide 10 text

Dec ‘17: My first Open Source PR merged! Pull Request: https://github.com/fvcproductions/hire-me/pull/9 @isabelcmdcosta

Slide 11

Slide 11 text

ACCEPTED 2018 @isabelcmdcosta

Slide 12

Slide 12 text

@isabelcmdcosta

Slide 13

Slide 13 text

3 intense months of working in Open Source! @isabelcmdcosta

Slide 14

Slide 14 text

What did I learn from being a contributor? Here’s 7 lessons @isabelcmdcosta

Slide 15

Slide 15 text

It helps caring about what you’re contributing to @isabelcmdcosta Lesson 1

Slide 16

Slide 16 text

Why I contribute ● Practise and learn new skills ● Build portfolio ● Give back to community (Volunteerism) ● I love the community aspect of OS @isabelcmdcosta

Slide 17

Slide 17 text

There’s a lot of resources and projects you can contribute to @isabelcmdcosta Lesson 2

Slide 18

Slide 18 text

Projects @isabelcmdcosta

Slide 19

Slide 19 text

Initiatives @isabelcmdcosta

Slide 20

Slide 20 text

You don’t have to code to contribute to Open Source @isabelcmdcosta Lesson 3

Slide 21

Slide 21 text

Design @isabelcmdcosta Source: https://github.com/genuinetools/pepper/pull/4

Slide 22

Slide 22 text

Quality Assurance @isabelcmdcosta

Slide 23

Slide 23 text

Content @isabelcmdcosta

Slide 24

Slide 24 text

Content Source: https://github.com/scala-exercises/exercises-fpinscala/pull/55 @isabelcmdcosta

Slide 25

Slide 25 text

Content @isabelcmdcosta

Slide 26

Slide 26 text

Bug fixes Source: https://github.com/getodk/collect/pull/1986

Slide 27

Slide 27 text

Feedback Credit: http://systers-opensource.blogspot.com/2018/02/the-importance-of-feedback.html @isabelcmdcosta

Slide 28

Slide 28 text

Other ways to contribute ● Review pull requests from other contributors ● Implement features and fix bugs ● Be a mentor for a OS program/initiative ● Help others contribute ● Write documentation ● Outreach / Research (e.g.: blog posts, promote a project, ...) ● Report bugs ● Manage issues and contributors ● … bring what you’re good at to the table! @isabelcmdcosta

Slide 29

Slide 29 text

Not all projects or communities behave the same way @isabelcmdcosta Lesson 4

Slide 30

Slide 30 text

Be honest and set expectations @isabelcmdcosta Lesson 5

Slide 31

Slide 31 text

Confidence comes with time @isabelcmdcosta Lesson 6

Slide 32

Slide 32 text

Contribution Workflow Fork Clone Work Commit & Push Submit PR Ask questions!

Slide 33

Slide 33 text

Getting the most out of Open Source requires effort Lesson 7

Slide 34

Slide 34 text

So pay attention to ... ● Is the community beginner friendly? ○ Code of Conduct & Reporting Guidelines? ● Is the community transparent? ● Is the community inclusive? ○ Look at community discussions ● Is it open for every type of contributions? ● Is the project active? ○ Last commit date? # Open issues and PRs @isabelcmdcosta

Slide 35

Slide 35 text

After 3 intense months of working in Open Source! @isabelcmdcosta

Slide 36

Slide 36 text

Becoming a Maintainer... @isabelcmdcosta

Slide 37

Slide 37 text

This can be fun … Open Source @isabelcmdcosta

Slide 38

Slide 38 text

How did I start maintaining projects? @isabelcmdcosta

Slide 39

Slide 39 text

@isabelcmdcosta

Slide 40

Slide 40 text

@isabelcmdcosta

Slide 41

Slide 41 text

How do I maintain projects? @isabelcmdcosta

Slide 42

Slide 42 text

Two contributors helped me reviewing a PR! @isabelcmdcosta

Slide 43

Slide 43 text

This can be fun … Open Source So is it all fun now? @isabelcmdcosta

Slide 44

Slide 44 text

I merged a PR that broke the Swagger Docs! @isabelcmdcosta

Slide 45

Slide 45 text

I managed to fix it! @isabelcmdcosta

Slide 46

Slide 46 text

A newcomer struggling, didn’t give up! (...) @isabelcmdcosta

Slide 47

Slide 47 text

What did I learn from being a maintainer, so far? Here’s 7 lessons @isabelcmdcosta

Slide 48

Slide 48 text

You don’t have to know everything @isabelcmdcosta Lesson 1

Slide 49

Slide 49 text

You can learn from contributors @isabelcmdcosta Lesson 2

Slide 50

Slide 50 text

Source: https://github.com/anitab-org/mentorship-backend/issues/464 @isabelcmdcosta

Slide 51

Slide 51 text

You can get people from a wide range of experience @isabelcmdcosta Lesson 3

Slide 52

Slide 52 text

It can be stressful to manage a demanding project @isabelcmdcosta Lesson 4

Slide 53

Slide 53 text

You can share work as a maintainer @isabelcmdcosta Lesson 5

Slide 54

Slide 54 text

Contributors don’t just come and find your project @isabelcmdcosta Lesson 6

Slide 55

Slide 55 text

Tips to attract contributors ● Promote project through outreach ○ Participate in OS initiatives ○ Write & Talk about it ● Easy development environment ● Have a Roadmap ● Beginner issues (“good first issue” or “first timer only”) ● Communication channels ● Good Documentation @isabelcmdcosta

Slide 56

Slide 56 text

Documentation Contributor Maintainer @isabelcmdcosta

Slide 57

Slide 57 text

@isabelcmdcosta

Slide 58

Slide 58 text

Resources License → https://choosealicense.com/ Code of Conduct → https://www.contributor-covenant.org/ Best practises for Maintainers & Contributors, etc → https://opensource.guide/ Automation tools: ● GitHub Actions, Codecov, Codacy, Code Climate, CircleCI, TravisCI, ... Bot highlight: all-contributors/all-contributors @isabelcmdcosta

Slide 59

Slide 59 text

Being a maintainer is being a leader @isabelcmdcosta Lesson 7

Slide 60

Slide 60 text

Final Thoughts... @isabelcmdcosta What can we do to help each other?

Slide 61

Slide 61 text

@isabelcmdcosta

Slide 62

Slide 62 text

This is a 2 way relation! @isabelcmdcosta

Slide 63

Slide 63 text

Be patient Be open Be kind @isabelcmdcosta

Slide 64

Slide 64 text

"(...) the world is a better place when everyone takes time to understand one another. (...)" from Special Books by Special Kids video: https://www.youtube.com/watch?v=5pWrZQZb4BM @isabelcmdcosta

Slide 65

Slide 65 text

Thank you! @isabelcmdcosta @isabelcosta isabelcosta.github.io