SlideShare a Scribd company logo
1 of 10
How to Contribute to OSS
서상현
2015-04-17
2
오픈 소스 프로젝트에 참여하기
• 정말로 좋은 자료가 있습니다
• Python 프로젝트에 참여한 장혜식님이 만든 자료
• 오픈소스 프로젝트에 참여하기
• 오픈소스 프로젝트 생존 가이드
• 구글 Summer of Code 필승전략
3
전략
오픈소스는 기술이 아니라 설득이다.
그 당위성을 설득할 수 없다면 패치는 받아들여지지 않는
다.
-- Redis 프로젝트에 참여한 강대명님 말씀
4
무엇을 설득해야 할까요
• 이걸 왜 해야 하는지
– 이미 알려진 버그를 수정하거나 구현하기로 합의한 기능을 구현
한 거라면 넘어가도 괜찮습니다
– 버그라면 올바른 동작, 현재 동작, 차이점, 차이를 볼 수 있는 재
현 방법을 적도록 합시다
• 왜 이렇게 했는지
– 여러 가지 방법이 있다면 왜 이 방법으로 했는지 말할 수 있어야
하겠습니다
• 앞으로는 어떻게 할 것인지
– 코드를 고쳤다면 자동화된 테스트를 추가해 주세요
– 기능을 추가했다면 문서화를 하는 것이 좋습니다
5
신뢰를 쌓아야 합니다
• 처음에는 작게 시작합시다
• 코드는 유지보수가 필요합니다
– 작은 코드는 기존 프로젝트에 있던 사람이 맡아줄 수 있습니다
– 유지보수를 해야 하는 사람은 상대편이므로, 상대편이 요구하는
사항이 있으면 받아주도록 합시다
– 큰 코드를 공헌하려면 유지보수의 책임을 져야 합니다
– 문제가 생겼을 때 나몰라라 하지 않을 거라고 처음 보는 사람을
믿기는 어렵습니다
6
전술
• 받는 사람이 편하도록
• 매뉴얼을 읽읍시다
– 참여 방법에 대한 매뉴얼이 있다면 한 줄도 빠짐없이 읽도록 합
시다
• 선례를 따릅니다
– 다른 사람은 어떻게 하나 살펴보세요
7
패치 만들기
• 최신 소스를 받아서
– 예전 버전에 패치하면 받는 쪽이 불편합니다
– 다른 곳으로 개발이 옮겨갔는데 이전 소스를 받는 실수 등을 주
의
– 최근 활동을 확인하고 검색을 해봅니다
• 수정하고
– 수정은 최소한도로 하는 것이 받기 편합니다
– 자기 스타일대로 포맷을 바꾼다거나 하지 맙시다
– 수정 사항이 여럿이라면 커밋을 분리
– 리팩토링을 한다면 리팩토링 커밋은 기능 변경이 없어야 합니다
• 확인
– 자동화된 테스트가 있다면 통과되는 것을 확인하세요
8
패치 보내기
• 보내라는 데로 보냅시다
– 풀 리퀘스트 (GitHub, Bitbucket, …)
– 코드 리뷰 (Gerrit, Phabricator, Review Board, …)
– 이슈 트래커 (Bugzilla, Trac, …)
– 메일링 리스트
– 개인 메일
• 제목을 잘 붙이세요
• 설명도 정성껏
• 패치 보내기의 목표는 여러분이 패치를 만들며 거쳤던
수정/확인 과정을 받는 쪽에서 재현할 수 있도록 하는 것
입니다
9
패치 집어넣기
• 리뷰 코멘트는 모두 답변
• 최신 소스가 변경되어 충돌이 나면 rebase
• 반응은 빠르게
– 당장 고칠 수 없더라도, 고치겠다고 말이라도 먼저 합시다
– 언제까지 하겠다고 쓰는 것도 좋습니다 (지키도록 합니다)
• 실시간으로 논의할 수 있으면 가장 좋습니다
– 시간대를 확인
– IRC 등 실시간 채팅을 활용
• 반응이 없을 때는 어떻게?
10
맺는말
• 고마움을 표현합시다
– 멋진 프로젝트라면 멋지다고 메일에 쓰고
– 하는 일에 도움이 되었다면 어떻게 도움이 되었는지 씁시다
– 받는 쪽에서는 큰 힘이 됩니다
• 패치가 아니라도 좋습니다
– 문제를 만났다면 직접 고치지 못하더라도 버그 보고를 합시다
– 인터페이스나 문서를 한국어로 번역하는 것도 좋습니다
– 블로그에 어떻게 잘 썼다는 글을 쓰는 것도 도움이 됩니다
• 모두에게 도움이 됩니다
– 코드로 세상을 이롭게
– 논술 실력과 영작 실력이 쑥쑥
– 고수 개발자들에게 개인 과외를 받을 수 있는 기회

More Related Content

What's hot

Visual studio 2013 github 연동하기
Visual studio 2013 github 연동하기Visual studio 2013 github 연동하기
Visual studio 2013 github 연동하기Park JaiChang
 
오픈소스 소프트웨어 개발, 어디서부터 시작하는게 좋을까요? @ CNU(충남대)
오픈소스 소프트웨어 개발, 어디서부터 시작하는게 좋을까요? @ CNU(충남대)오픈소스 소프트웨어 개발, 어디서부터 시작하는게 좋을까요? @ CNU(충남대)
오픈소스 소프트웨어 개발, 어디서부터 시작하는게 좋을까요? @ CNU(충남대)Jaewon Choi
 
Github 으로 학교 팀 프로젝트 하기
Github 으로 학교 팀 프로젝트 하기Github 으로 학교 팀 프로젝트 하기
Github 으로 학교 팀 프로젝트 하기nexusz99
 
[네이버오픈소스세미나] egjs-view360 개발기 - 김희재
[네이버오픈소스세미나] egjs-view360 개발기 - 김희재[네이버오픈소스세미나] egjs-view360 개발기 - 김희재
[네이버오픈소스세미나] egjs-view360 개발기 - 김희재NAVER D2
 
Open Source 그리고 git과 github, code review
Open Source 그리고 git과 github, code reviewOpen Source 그리고 git과 github, code review
Open Source 그리고 git과 github, code reviewMinsuk Lee
 
Github 100% 활용하기 - XE Open seminar #3
Github 100% 활용하기 - XE Open seminar #3Github 100% 활용하기 - XE Open seminar #3
Github 100% 활용하기 - XE Open seminar #3XpressEngine
 
5.yobi를 활용한 개발자 협업 및 배포 프로세스
5.yobi를 활용한 개발자 협업 및 배포 프로세스5.yobi를 활용한 개발자 협업 및 배포 프로세스
5.yobi를 활용한 개발자 협업 및 배포 프로세스NAVER D2
 
Pinpoint 도입기 - 2016 신림프로그래머 오픈 세미나
Pinpoint 도입기 - 2016 신림프로그래머 오픈 세미나Pinpoint 도입기 - 2016 신림프로그래머 오픈 세미나
Pinpoint 도입기 - 2016 신림프로그래머 오픈 세미나none
 
GitHub Pull Request 간단 사용 설명서
GitHub Pull Request 간단 사용 설명서GitHub Pull Request 간단 사용 설명서
GitHub Pull Request 간단 사용 설명서jungseob shin
 
성장하는 스타트업의 프로세스 개척기
성장하는 스타트업의 프로세스 개척기성장하는 스타트업의 프로세스 개척기
성장하는 스타트업의 프로세스 개척기DomainDriven DomainDriven
 
[D2]pinpoint 개발기
[D2]pinpoint 개발기[D2]pinpoint 개발기
[D2]pinpoint 개발기NAVER D2
 
개알못의 오픈소스이야기 - 이상준님
개알못의 오픈소스이야기 - 이상준님개알못의 오픈소스이야기 - 이상준님
개알못의 오픈소스이야기 - 이상준님NAVER D2
 
[네이버오픈소스세미나] 개발자의 흔한 취미 - 권민재
[네이버오픈소스세미나] 개발자의 흔한 취미 - 권민재[네이버오픈소스세미나] 개발자의 흔한 취미 - 권민재
[네이버오픈소스세미나] 개발자의 흔한 취미 - 권민재NAVER D2
 
도도와 파이썬: 좋은 선택과 나쁜 선택
도도와 파이썬: 좋은 선택과 나쁜 선택도도와 파이썬: 좋은 선택과 나쁜 선택
도도와 파이썬: 좋은 선택과 나쁜 선택Jc Kim
 
파이썬 TDD 101
파이썬 TDD 101파이썬 TDD 101
파이썬 TDD 101정주 김
 
[111]open, share, enjoy 네이버의 오픈소스 활동
[111]open, share, enjoy 네이버의 오픈소스 활동[111]open, share, enjoy 네이버의 오픈소스 활동
[111]open, share, enjoy 네이버의 오픈소스 활동NAVER D2
 

What's hot (19)

Opensource sw day
Opensource sw dayOpensource sw day
Opensource sw day
 
Visual studio 2013 github 연동하기
Visual studio 2013 github 연동하기Visual studio 2013 github 연동하기
Visual studio 2013 github 연동하기
 
오픈소스 소프트웨어 개발, 어디서부터 시작하는게 좋을까요? @ CNU(충남대)
오픈소스 소프트웨어 개발, 어디서부터 시작하는게 좋을까요? @ CNU(충남대)오픈소스 소프트웨어 개발, 어디서부터 시작하는게 좋을까요? @ CNU(충남대)
오픈소스 소프트웨어 개발, 어디서부터 시작하는게 좋을까요? @ CNU(충남대)
 
Soscon lt 1
Soscon lt 1Soscon lt 1
Soscon lt 1
 
Github 으로 학교 팀 프로젝트 하기
Github 으로 학교 팀 프로젝트 하기Github 으로 학교 팀 프로젝트 하기
Github 으로 학교 팀 프로젝트 하기
 
[네이버오픈소스세미나] egjs-view360 개발기 - 김희재
[네이버오픈소스세미나] egjs-view360 개발기 - 김희재[네이버오픈소스세미나] egjs-view360 개발기 - 김희재
[네이버오픈소스세미나] egjs-view360 개발기 - 김희재
 
Open Source 그리고 git과 github, code review
Open Source 그리고 git과 github, code reviewOpen Source 그리고 git과 github, code review
Open Source 그리고 git과 github, code review
 
Github 100% 활용하기 - XE Open seminar #3
Github 100% 활용하기 - XE Open seminar #3Github 100% 활용하기 - XE Open seminar #3
Github 100% 활용하기 - XE Open seminar #3
 
5.yobi를 활용한 개발자 협업 및 배포 프로세스
5.yobi를 활용한 개발자 협업 및 배포 프로세스5.yobi를 활용한 개발자 협업 및 배포 프로세스
5.yobi를 활용한 개발자 협업 및 배포 프로세스
 
Pinpoint 도입기 - 2016 신림프로그래머 오픈 세미나
Pinpoint 도입기 - 2016 신림프로그래머 오픈 세미나Pinpoint 도입기 - 2016 신림프로그래머 오픈 세미나
Pinpoint 도입기 - 2016 신림프로그래머 오픈 세미나
 
GitHub Pull Request 간단 사용 설명서
GitHub Pull Request 간단 사용 설명서GitHub Pull Request 간단 사용 설명서
GitHub Pull Request 간단 사용 설명서
 
성장하는 스타트업의 프로세스 개척기
성장하는 스타트업의 프로세스 개척기성장하는 스타트업의 프로세스 개척기
성장하는 스타트업의 프로세스 개척기
 
[D2]pinpoint 개발기
[D2]pinpoint 개발기[D2]pinpoint 개발기
[D2]pinpoint 개발기
 
[PandoraCube] 오픈 소스와 깃허브
[PandoraCube] 오픈 소스와 깃허브[PandoraCube] 오픈 소스와 깃허브
[PandoraCube] 오픈 소스와 깃허브
 
개알못의 오픈소스이야기 - 이상준님
개알못의 오픈소스이야기 - 이상준님개알못의 오픈소스이야기 - 이상준님
개알못의 오픈소스이야기 - 이상준님
 
[네이버오픈소스세미나] 개발자의 흔한 취미 - 권민재
[네이버오픈소스세미나] 개발자의 흔한 취미 - 권민재[네이버오픈소스세미나] 개발자의 흔한 취미 - 권민재
[네이버오픈소스세미나] 개발자의 흔한 취미 - 권민재
 
도도와 파이썬: 좋은 선택과 나쁜 선택
도도와 파이썬: 좋은 선택과 나쁜 선택도도와 파이썬: 좋은 선택과 나쁜 선택
도도와 파이썬: 좋은 선택과 나쁜 선택
 
파이썬 TDD 101
파이썬 TDD 101파이썬 TDD 101
파이썬 TDD 101
 
[111]open, share, enjoy 네이버의 오픈소스 활동
[111]open, share, enjoy 네이버의 오픈소스 활동[111]open, share, enjoy 네이버의 오픈소스 활동
[111]open, share, enjoy 네이버의 오픈소스 활동
 

Viewers also liked

SOSCON2015 SI이노베이션
SOSCON2015 SI이노베이션SOSCON2015 SI이노베이션
SOSCON2015 SI이노베이션DoHyun Jung
 
[133] 브라우저는 vsync를 어떻게 활용하고 있을까
[133] 브라우저는 vsync를 어떻게 활용하고 있을까[133] 브라우저는 vsync를 어떻게 활용하고 있을까
[133] 브라우저는 vsync를 어떻게 활용하고 있을까NAVER D2
 
개발을잘하고싶어요-네이버랩스 송기선님
개발을잘하고싶어요-네이버랩스 송기선님개발을잘하고싶어요-네이버랩스 송기선님
개발을잘하고싶어요-네이버랩스 송기선님NAVER D2
 
AWS와 Open Source - 윤석찬 (OSS개발자 그룹)
AWS와 Open Source - 윤석찬 (OSS개발자 그룹)AWS와 Open Source - 윤석찬 (OSS개발자 그룹)
AWS와 Open Source - 윤석찬 (OSS개발자 그룹)Amazon Web Services Korea
 
2016 Future of Open Source Study
2016 Future of Open Source Study2016 Future of Open Source Study
2016 Future of Open Source StudyNorth Bridge
 
[오픈소스컨설팅]Atlassian JIRA Deep Dive
[오픈소스컨설팅]Atlassian JIRA Deep Dive[오픈소스컨설팅]Atlassian JIRA Deep Dive
[오픈소스컨설팅]Atlassian JIRA Deep DiveJi-Woong Choi
 

Viewers also liked (6)

SOSCON2015 SI이노베이션
SOSCON2015 SI이노베이션SOSCON2015 SI이노베이션
SOSCON2015 SI이노베이션
 
[133] 브라우저는 vsync를 어떻게 활용하고 있을까
[133] 브라우저는 vsync를 어떻게 활용하고 있을까[133] 브라우저는 vsync를 어떻게 활용하고 있을까
[133] 브라우저는 vsync를 어떻게 활용하고 있을까
 
개발을잘하고싶어요-네이버랩스 송기선님
개발을잘하고싶어요-네이버랩스 송기선님개발을잘하고싶어요-네이버랩스 송기선님
개발을잘하고싶어요-네이버랩스 송기선님
 
AWS와 Open Source - 윤석찬 (OSS개발자 그룹)
AWS와 Open Source - 윤석찬 (OSS개발자 그룹)AWS와 Open Source - 윤석찬 (OSS개발자 그룹)
AWS와 Open Source - 윤석찬 (OSS개발자 그룹)
 
2016 Future of Open Source Study
2016 Future of Open Source Study2016 Future of Open Source Study
2016 Future of Open Source Study
 
[오픈소스컨설팅]Atlassian JIRA Deep Dive
[오픈소스컨설팅]Atlassian JIRA Deep Dive[오픈소스컨설팅]Atlassian JIRA Deep Dive
[오픈소스컨설팅]Atlassian JIRA Deep Dive
 

Similar to How to Contribute to OSS

오픈소스 프로젝트 따라잡기_공개
오픈소스 프로젝트 따라잡기_공개오픈소스 프로젝트 따라잡기_공개
오픈소스 프로젝트 따라잡기_공개Hyoungjun Kim
 
스마일게이트 서버개발캠프 - HGHSS - 합격하소서
스마일게이트 서버개발캠프 - HGHSS - 합격하소서스마일게이트 서버개발캠프 - HGHSS - 합격하소서
스마일게이트 서버개발캠프 - HGHSS - 합격하소서ServerDevCamp
 
경희대 해커 기술 세미나 - Git hub으로 학교 팀프로젝트 하기(조성수)
경희대 해커 기술 세미나 - Git hub으로 학교 팀프로젝트 하기(조성수)경희대 해커 기술 세미나 - Git hub으로 학교 팀프로젝트 하기(조성수)
경희대 해커 기술 세미나 - Git hub으로 학교 팀프로젝트 하기(조성수)NAVER D2
 
[17.02.09] Github introduction (Korean Version)
[17.02.09] Github introduction (Korean Version)[17.02.09] Github introduction (Korean Version)
[17.02.09] Github introduction (Korean Version)Ildoo Kim
 
프로젝트 관리 및 지켜야 할 사항들
프로젝트 관리 및 지켜야 할 사항들프로젝트 관리 및 지켜야 할 사항들
프로젝트 관리 및 지켜야 할 사항들Lee Geonhee
 
리펙토링 4장 테스트만들기
리펙토링 4장 테스트만들기리펙토링 4장 테스트만들기
리펙토링 4장 테스트만들기Heo Seungwook
 
청강대 특강 - 프로젝트 제대로 해보기
청강대 특강 - 프로젝트 제대로 해보기청강대 특강 - 프로젝트 제대로 해보기
청강대 특강 - 프로젝트 제대로 해보기Chris Ohk
 
devops 2년차 이직 성공기.pptx
devops 2년차 이직 성공기.pptxdevops 2년차 이직 성공기.pptx
devops 2년차 이직 성공기.pptxByungho Lee
 
버그 트래킹 시스템 Mantis의 사용 그리고 예제
버그 트래킹 시스템 Mantis의 사용 그리고 예제버그 트래킹 시스템 Mantis의 사용 그리고 예제
버그 트래킹 시스템 Mantis의 사용 그리고 예제Kiyoung Moon
 
smell like sin spirits(codereview mindset)
smell like sin spirits(codereview mindset)smell like sin spirits(codereview mindset)
smell like sin spirits(codereview mindset)영주 박
 
DevOps 2년차 이직 성공기
DevOps 2년차 이직 성공기DevOps 2년차 이직 성공기
DevOps 2년차 이직 성공기Byungho Lee
 
200820 NAVER TECH CONCERT 12_상반기 네이버 인턴을 돌아보며
200820 NAVER TECH CONCERT 12_상반기 네이버 인턴을 돌아보며200820 NAVER TECH CONCERT 12_상반기 네이버 인턴을 돌아보며
200820 NAVER TECH CONCERT 12_상반기 네이버 인턴을 돌아보며NAVER Engineering
 
코프링 프로젝트 투입 일주일 전: 주니어 개발자의 코틀린 도입 이야기
코프링 프로젝트 투입 일주일 전: 주니어 개발자의 코틀린 도입 이야기코프링 프로젝트 투입 일주일 전: 주니어 개발자의 코틀린 도입 이야기
코프링 프로젝트 투입 일주일 전: 주니어 개발자의 코틀린 도입 이야기Seokjae Lee
 
[201808] GitHub 사용하기 - GIt & 협업 활용
[201808] GitHub 사용하기 - GIt & 협업 활용[201808] GitHub 사용하기 - GIt & 협업 활용
[201808] GitHub 사용하기 - GIt & 협업 활용Ian Choi
 
홍성우, 게임 프로그래머는 어떻게 가르치나요?, NDC2018
홍성우, 게임 프로그래머는 어떻게 가르치나요?, NDC2018홍성우, 게임 프로그래머는 어떻게 가르치나요?, NDC2018
홍성우, 게임 프로그래머는 어떻게 가르치나요?, NDC2018devCAT Studio, NEXON
 
애자일 프랙티스
애자일 프랙티스애자일 프랙티스
애자일 프랙티스한 경만
 
커뮤니티와 함께한 예비개발자 성장기- 조성수님
커뮤니티와 함께한 예비개발자 성장기- 조성수님커뮤니티와 함께한 예비개발자 성장기- 조성수님
커뮤니티와 함께한 예비개발자 성장기- 조성수님NAVER D2
 
소스트리(SourceTree)로 배우는 Git 사용법
소스트리(SourceTree)로 배우는 Git 사용법소스트리(SourceTree)로 배우는 Git 사용법
소스트리(SourceTree)로 배우는 Git 사용법주형 고
 
[오픈소스컨설팅]Session 6. scrum과 jira 기반의 소프트웨어 개발 프로세스
[오픈소스컨설팅]Session 6. scrum과 jira 기반의 소프트웨어 개발 프로세스[오픈소스컨설팅]Session 6. scrum과 jira 기반의 소프트웨어 개발 프로세스
[오픈소스컨설팅]Session 6. scrum과 jira 기반의 소프트웨어 개발 프로세스Hee Jae Lee
 

Similar to How to Contribute to OSS (20)

오픈소스 프로젝트 따라잡기_공개
오픈소스 프로젝트 따라잡기_공개오픈소스 프로젝트 따라잡기_공개
오픈소스 프로젝트 따라잡기_공개
 
스마일게이트 서버개발캠프 - HGHSS - 합격하소서
스마일게이트 서버개발캠프 - HGHSS - 합격하소서스마일게이트 서버개발캠프 - HGHSS - 합격하소서
스마일게이트 서버개발캠프 - HGHSS - 합격하소서
 
경희대 해커 기술 세미나 - Git hub으로 학교 팀프로젝트 하기(조성수)
경희대 해커 기술 세미나 - Git hub으로 학교 팀프로젝트 하기(조성수)경희대 해커 기술 세미나 - Git hub으로 학교 팀프로젝트 하기(조성수)
경희대 해커 기술 세미나 - Git hub으로 학교 팀프로젝트 하기(조성수)
 
2019 11-code review
2019 11-code review2019 11-code review
2019 11-code review
 
[17.02.09] Github introduction (Korean Version)
[17.02.09] Github introduction (Korean Version)[17.02.09] Github introduction (Korean Version)
[17.02.09] Github introduction (Korean Version)
 
프로젝트 관리 및 지켜야 할 사항들
프로젝트 관리 및 지켜야 할 사항들프로젝트 관리 및 지켜야 할 사항들
프로젝트 관리 및 지켜야 할 사항들
 
리펙토링 4장 테스트만들기
리펙토링 4장 테스트만들기리펙토링 4장 테스트만들기
리펙토링 4장 테스트만들기
 
청강대 특강 - 프로젝트 제대로 해보기
청강대 특강 - 프로젝트 제대로 해보기청강대 특강 - 프로젝트 제대로 해보기
청강대 특강 - 프로젝트 제대로 해보기
 
devops 2년차 이직 성공기.pptx
devops 2년차 이직 성공기.pptxdevops 2년차 이직 성공기.pptx
devops 2년차 이직 성공기.pptx
 
버그 트래킹 시스템 Mantis의 사용 그리고 예제
버그 트래킹 시스템 Mantis의 사용 그리고 예제버그 트래킹 시스템 Mantis의 사용 그리고 예제
버그 트래킹 시스템 Mantis의 사용 그리고 예제
 
smell like sin spirits(codereview mindset)
smell like sin spirits(codereview mindset)smell like sin spirits(codereview mindset)
smell like sin spirits(codereview mindset)
 
DevOps 2년차 이직 성공기
DevOps 2년차 이직 성공기DevOps 2년차 이직 성공기
DevOps 2년차 이직 성공기
 
200820 NAVER TECH CONCERT 12_상반기 네이버 인턴을 돌아보며
200820 NAVER TECH CONCERT 12_상반기 네이버 인턴을 돌아보며200820 NAVER TECH CONCERT 12_상반기 네이버 인턴을 돌아보며
200820 NAVER TECH CONCERT 12_상반기 네이버 인턴을 돌아보며
 
코프링 프로젝트 투입 일주일 전: 주니어 개발자의 코틀린 도입 이야기
코프링 프로젝트 투입 일주일 전: 주니어 개발자의 코틀린 도입 이야기코프링 프로젝트 투입 일주일 전: 주니어 개발자의 코틀린 도입 이야기
코프링 프로젝트 투입 일주일 전: 주니어 개발자의 코틀린 도입 이야기
 
[201808] GitHub 사용하기 - GIt & 협업 활용
[201808] GitHub 사용하기 - GIt & 협업 활용[201808] GitHub 사용하기 - GIt & 협업 활용
[201808] GitHub 사용하기 - GIt & 협업 활용
 
홍성우, 게임 프로그래머는 어떻게 가르치나요?, NDC2018
홍성우, 게임 프로그래머는 어떻게 가르치나요?, NDC2018홍성우, 게임 프로그래머는 어떻게 가르치나요?, NDC2018
홍성우, 게임 프로그래머는 어떻게 가르치나요?, NDC2018
 
애자일 프랙티스
애자일 프랙티스애자일 프랙티스
애자일 프랙티스
 
커뮤니티와 함께한 예비개발자 성장기- 조성수님
커뮤니티와 함께한 예비개발자 성장기- 조성수님커뮤니티와 함께한 예비개발자 성장기- 조성수님
커뮤니티와 함께한 예비개발자 성장기- 조성수님
 
소스트리(SourceTree)로 배우는 Git 사용법
소스트리(SourceTree)로 배우는 Git 사용법소스트리(SourceTree)로 배우는 Git 사용법
소스트리(SourceTree)로 배우는 Git 사용법
 
[오픈소스컨설팅]Session 6. scrum과 jira 기반의 소프트웨어 개발 프로세스
[오픈소스컨설팅]Session 6. scrum과 jira 기반의 소프트웨어 개발 프로세스[오픈소스컨설팅]Session 6. scrum과 jira 기반의 소프트웨어 개발 프로세스
[오픈소스컨설팅]Session 6. scrum과 jira 기반의 소프트웨어 개발 프로세스
 

More from Sanghyeon Seo

More from Sanghyeon Seo (6)

Probabilistic data structures
Probabilistic data structuresProbabilistic data structures
Probabilistic data structures
 
AI value engineering
AI value engineeringAI value engineering
AI value engineering
 
심천 I/O와 조인 알고리즘
심천 I/O와 조인 알고리즘심천 I/O와 조인 알고리즘
심천 I/O와 조인 알고리즘
 
Tour of Rust
Tour of RustTour of Rust
Tour of Rust
 
PyCon Korea 2015
PyCon Korea 2015PyCon Korea 2015
PyCon Korea 2015
 
PyPy
PyPyPyPy
PyPy
 

How to Contribute to OSS

  • 1. How to Contribute to OSS 서상현 2015-04-17
  • 2. 2 오픈 소스 프로젝트에 참여하기 • 정말로 좋은 자료가 있습니다 • Python 프로젝트에 참여한 장혜식님이 만든 자료 • 오픈소스 프로젝트에 참여하기 • 오픈소스 프로젝트 생존 가이드 • 구글 Summer of Code 필승전략
  • 3. 3 전략 오픈소스는 기술이 아니라 설득이다. 그 당위성을 설득할 수 없다면 패치는 받아들여지지 않는 다. -- Redis 프로젝트에 참여한 강대명님 말씀
  • 4. 4 무엇을 설득해야 할까요 • 이걸 왜 해야 하는지 – 이미 알려진 버그를 수정하거나 구현하기로 합의한 기능을 구현 한 거라면 넘어가도 괜찮습니다 – 버그라면 올바른 동작, 현재 동작, 차이점, 차이를 볼 수 있는 재 현 방법을 적도록 합시다 • 왜 이렇게 했는지 – 여러 가지 방법이 있다면 왜 이 방법으로 했는지 말할 수 있어야 하겠습니다 • 앞으로는 어떻게 할 것인지 – 코드를 고쳤다면 자동화된 테스트를 추가해 주세요 – 기능을 추가했다면 문서화를 하는 것이 좋습니다
  • 5. 5 신뢰를 쌓아야 합니다 • 처음에는 작게 시작합시다 • 코드는 유지보수가 필요합니다 – 작은 코드는 기존 프로젝트에 있던 사람이 맡아줄 수 있습니다 – 유지보수를 해야 하는 사람은 상대편이므로, 상대편이 요구하는 사항이 있으면 받아주도록 합시다 – 큰 코드를 공헌하려면 유지보수의 책임을 져야 합니다 – 문제가 생겼을 때 나몰라라 하지 않을 거라고 처음 보는 사람을 믿기는 어렵습니다
  • 6. 6 전술 • 받는 사람이 편하도록 • 매뉴얼을 읽읍시다 – 참여 방법에 대한 매뉴얼이 있다면 한 줄도 빠짐없이 읽도록 합 시다 • 선례를 따릅니다 – 다른 사람은 어떻게 하나 살펴보세요
  • 7. 7 패치 만들기 • 최신 소스를 받아서 – 예전 버전에 패치하면 받는 쪽이 불편합니다 – 다른 곳으로 개발이 옮겨갔는데 이전 소스를 받는 실수 등을 주 의 – 최근 활동을 확인하고 검색을 해봅니다 • 수정하고 – 수정은 최소한도로 하는 것이 받기 편합니다 – 자기 스타일대로 포맷을 바꾼다거나 하지 맙시다 – 수정 사항이 여럿이라면 커밋을 분리 – 리팩토링을 한다면 리팩토링 커밋은 기능 변경이 없어야 합니다 • 확인 – 자동화된 테스트가 있다면 통과되는 것을 확인하세요
  • 8. 8 패치 보내기 • 보내라는 데로 보냅시다 – 풀 리퀘스트 (GitHub, Bitbucket, …) – 코드 리뷰 (Gerrit, Phabricator, Review Board, …) – 이슈 트래커 (Bugzilla, Trac, …) – 메일링 리스트 – 개인 메일 • 제목을 잘 붙이세요 • 설명도 정성껏 • 패치 보내기의 목표는 여러분이 패치를 만들며 거쳤던 수정/확인 과정을 받는 쪽에서 재현할 수 있도록 하는 것 입니다
  • 9. 9 패치 집어넣기 • 리뷰 코멘트는 모두 답변 • 최신 소스가 변경되어 충돌이 나면 rebase • 반응은 빠르게 – 당장 고칠 수 없더라도, 고치겠다고 말이라도 먼저 합시다 – 언제까지 하겠다고 쓰는 것도 좋습니다 (지키도록 합니다) • 실시간으로 논의할 수 있으면 가장 좋습니다 – 시간대를 확인 – IRC 등 실시간 채팅을 활용 • 반응이 없을 때는 어떻게?
  • 10. 10 맺는말 • 고마움을 표현합시다 – 멋진 프로젝트라면 멋지다고 메일에 쓰고 – 하는 일에 도움이 되었다면 어떻게 도움이 되었는지 씁시다 – 받는 쪽에서는 큰 힘이 됩니다 • 패치가 아니라도 좋습니다 – 문제를 만났다면 직접 고치지 못하더라도 버그 보고를 합시다 – 인터페이스나 문서를 한국어로 번역하는 것도 좋습니다 – 블로그에 어떻게 잘 썼다는 글을 쓰는 것도 도움이 됩니다 • 모두에게 도움이 됩니다 – 코드로 세상을 이롭게 – 논술 실력과 영작 실력이 쑥쑥 – 고수 개발자들에게 개인 과외를 받을 수 있는 기회