Collaborating on open source software

정원덕
selenium-korea
Published in
6 min readMay 8, 2019

Marit은 2년이 넘는 기간동안 Cucumber 오픈소스 프로젝트에 참여해 왔습니다. 그리고 이 경험들로 실무에서 많은 도움을 받았습니다. 그리고 새로운 친구들을 만나고 커뮤니티의 일원이 될 수 있었습니다. 그렇다면 오픈소스에는 어떻게 참여할 수 있을까요? Marit은 자신이 겪었던 어려움과 실패들을 공유해서 여러분의 도전이 더 쉽고 즐겁게 이루어 지길 바랍니다.

Speaker: Marit van Dijik

15년 이상을 소프트웨어 개발로 다양한 직군과 회사에서 경력을 쌓았습니다. 소프트웨어 개발과 Cucumber의 오픈소스 contributor 활동을 하고 있습니다. Medium에서도글을 쓰고 있습니다. 2019년 현재 bol.com에서 근무하고 있습니다.

What to contribute: Not code

“프로그래머가 아니더라도 오픈소스에 참여할 수 있습니다”. Forge your future with Open source의 인용구입니다. 실제로 Cucumber 오픈소스 프로젝트에 참여하면서 Marit은 다음과 같은 역할을 맡았습니다.

  1. 오픈소스 커뮤니티 돕기(Help the community)
  2. 문서화(Documentation)
  3. 이슈 발견
  4. 테스팅
  5. 디자인, Product owner 역할, 기타등등
  6. 언제든지 궁금한 점은 물어보기

오픈소스 커뮤니티 돕기(Help the community)

버그리포팅이 아닌 질문에 답변하는 것도 도움이 됩니다

Slack, Gitter, Mailing list, IRC를 통한 질문에 대답을 해주는 것은 큰 도움이 됩니다. 그리고 이런 질문과 답변을 문서화에 포함시키는 것도 고려해볼 가치가 있습니다.

문서화(Documentation)

문서화 작업을 통해 많은 것들을 배울 수 있었습니다
  1. 문서내의 문법 오류를 고칩니다
  2. 문서내의 유효하지 않은 링크를 찾아냅니다. 유효한 링크로 바꾸거나 삭제합니다.
  3. 문서의 내용에 대해 피드백을 줍니다
  4. 명확하지 않은 내용은 의미를 확실하게 전달할 수 있도록 바꿉니다
  5. 빠진 정보를 추가합니다
  6. PR을 리뷰합니다

문제찾기(Issues)

  1. 문제를 찾아 알립니다.

문제인 것 같은데 확실하지 않다면 물어보세요. 그리고 문제가 이미 등록된 것(duplicated)이 아닌지 확인하세요. 템플릿을 사용해서 관련된 정보를 공유해주세요.만약 템플릿이 없다면, 새로 만들어주세요. 그리고 작고 완전하고 검증가능한 예제(MCVE)를 만드세요.

2. 문제를 재현하고 관련 정보를 추가합니다. 테스트라면 더 좋겠네요!

3.이슈의 우선순위(Triage)를 정하고 이슈를 구분할 수 있는 라벨(label)을 추가합니다

기능 테스트하기(Testing)

  1. 버그가 수정된 기능을 테스트합니다
  2. 새로운 기능을 테스트합니다
  3. 새로운 릴리스를 테스트합니다
  4. 문서 또는 튜토리얼을 검사합니다

왜 오픈소스에 참여하기 힘들까요?

  1. 무서워요
  2. 프로젝트에 참여하기에 자신이 부족하다고 생각해서
  3. 커뮤니케이션/피드백이 없어서
  4. 관련 참여자들이 별로여서
  5. 제한 사항들: 법적인 문제, 시간 기타등등

어떻게 시작할까요?

  1. 프로젝트를 찾습니다
  2. 프로젝트에 어떻게 참여할지 확인해봅니다
  3. 할 일을 정합니다
  4. 필요하다면 작업 환경을 구성합니다
  5. 협업을 시작합니다!

지금 사용하고 있는 프로젝트가 있다면 그 프로젝트에 참여하세요! 이미 여러분은 그 프로젝트에 관심이 있고, 친숙하니까요!

나의 프로젝트는 어디에 있을까?

다음 목록에서 여러분이 원하는 프로젝트를 찾아볼 수 있습니다.

  1. How to choose (and contribute to) your first open source project
  2. Hacktoberfest
  3. CodeTriage
  4. UP-FOR-GRABS
  5. FIRST TIMERS ONLY
  6. Open source guides
  7. Your First PR

그리고 여기서 선별한 프로젝트들 중에서 여러분을 따뜻하게 대해주는 커뮤니티의 프로젝트에 집중하세요. 그리고 커뮤니티 안에서 서로 피드백이 자주 오가는지, 처음 가입하는 사람들에게 신경을 쓰는지, 지원을 충실히 하고 있는지 확인하세요.

프로젝트에서 무엇을 해야할까요?

축하합니다! 여러분은 멋진 프로젝트를 찾았습니다. 이제 무엇을 해볼 수 있을까요? 이런 문서 작업부터 시작해보면 어떨까요?

  1. README — 프로젝트 안내 문서
  2. CONTRIBUTING (a.k.a. HACKING ) — 프로젝트 참여 방법과 관련 정보
  3. LICENSE (a.k.a. COPYING) — 저작권관련
  4. Code of Conduct — 제품관련 규칙 및 강령
  5. 여러분이 스스로 찾아낸 문제들
  6. 이슈 라벨중에 “good first issue”, “help wanted”, “E-easy”등이 달려있는 문제들

문제 해결을 위한 개발환경 만들기

  1. Git 등의 버전 관리 Repository
  2. 프로그래밍 작업 환경 ex) JDK
  3. 패키지 매니저 ex) Maven, npm, etc
  4. 프로젝트를 Fork 혹은 Clone
  5. 구성된 환경 안에서 프로젝트 빌드가 가능한지 확인합니다
  6. 실패한다면, 물어보세요. 그리고 이 과정을 문서화하세요.

여러분의 첫번째 PR(Pull request)을 만들어봅시다!

프로젝트에 참여해서 작업을 진행합니다. 그리고 작업물을 제출합니다. 피드백을 받고 다시 수정을 합니다. 피드백을 다시 받고 다시 수정이 진행되는 주기가 반복됩니다. 그리고 축하합니다! 드디어 여러분의 작업이 정식으로 Merge됩니다.

멋지네요! 여러분의 작업이 프로젝트에 머지되었습니다!

여기에 도움이 되는 링크들을 추가해둘께요.

  1. Understanding the Github flow
  2. Github Learning Lab

맺음말

오픈소스에 참여하는 일은 많은 시간을 들여야 하거나 높은 프로그래밍 수준을 요구하는 것이 아닙니다. 오픈소스에 참여하고 싶은데, 어떻게 하는지를 모르겠다면, 커뮤니티에 물어보세요! 그리고 여러분의 첫번째 PR을 만들어 보세요.

소감

Selenium 역시 Open source이다보니 이 생태계를 잘 가꿀 수 있도록 많은 사람들을 참여시키는 문제가 중요한 주제로 다루어졌다. 막연하게 생각했었던 Open source에 대해 친절한 안내를 받고나니 용기와 자신감을 얻어 도전하고 싶은 욕구를 불러일으키는 시간이었다. 그리고 커뮤니티에서 많은 사람들을 만나 성장할 수 있는 구체적인 비전을배운 것도 의미가 컸다.

--

--

정원덕
selenium-korea

자비스앤빌런즈 프론트엔드 챕터장