13. 왜 오픈소스 컨트리뷰션을 하는가
유지 보수를 더 편하게 하기 위해
컨트리뷰션하면 업데이트마다 패치해야하는 수고를 덜어줍니다
삽질을 줄이기 위해
같은 문제로 고생하는 일이 중복되는 것을 막을 수 있습니다
14. 언제 오픈소스 컨트리뷰션을 하는가
우리가 해결한 문제가 외부에서도 발생할 수 있는 경우
컨트리뷰션해서 같은 문제로 고통받을 개발자를 구원합니다
추가한 기능이 다른 개발자들에게도 도움이 되는 경우
컨트리뷰션해서 널리 개발자를 이롭게 합니다
15. 언제 오픈소스 컨트리뷰션을 하는가
우리가 해결한 문제가 외부에서도 발생할 수 있는 경우
컨트리뷰션해서 같은 문제로 고통받을 개발자를 구원합니다
추가한 기능이 다른 개발자들에게도 도움이 되는 경우
컨트리뷰션해서 널리 개발자를 이롭게 합니다
기회가 보이면 무조건 하는 것입니다
17. 어떤 소프트웨어를 오픈소스로 공개하는가
네이버가 잘 사용하고 있는
외부 개발자들에게 필요한
공개하면 더욱 발전할 수 있는
18. 오픈소스 프로젝트 공개 프로세스
Refactoring Documentation
배포 라이선스 결정 ETC
19. 왜 오픈소스 프로젝트로 공개하는가
오픈소스 생태계의 발전을 위해
네이버가 오픈소스로부터 받은 도움에 보답합니다
20. 왜 오픈소스 프로젝트로 공개하는가
더 좋은 소프트웨어로 발전하기 위해
네이버를 벗어난 다양한 환경과 요구사항에 대응하면서
공개 전보다 더 견고한 소프트웨어로 성장할 수 있습니다
21. 사용자로부터의 컨트리뷰션
“we are a small team working on
Pinpoint for last few months trying
to implement in our organization and
we have made some enhancements/
improvements according to our
needs.
… (중략)
we want to contribute all the above
back to Pinpoint.”
Pinpoint enhancments | 20170214 |
https://groups.google.com/forum/#!topic/pinpoint_user/miqxcXd31AQ
27. Quest 1.1 프로젝트의 목표를 정하자
우리는 왜 오픈소스 프로젝트로 공개하는가
오픈소스 프로젝트로 공개하는 것은 시작일 뿐,
회사 업무와 오픈소스 활동을 병행하는 고난의 길
다양한 사용자 요구사항을 받아들이는 기준점
프로젝트의 방향성이 없다면 사용자 의견을 받아들일 때마다 긴 논의가 필요
28. Quest 1.2 누가 운영할 것인가
Maintainer 역할에 대한 정의 필요
코드 저장소 (remote) 운영 - 이슈 대응, commit merge
Release - versioning, change log
프로젝트 운영에 대한 최종 결정권
빠르게 의사를 결정하는데 도움이 됩니다
29. Quest 1.3 어디까지 공개할 것인가
내부 사용 버전과 외부 공개 버전의 동시 운영 준비
최대한 두 버전을 동일하게 운영해야 고통의 중복 확률을 낮출 수 있습니다
공통적으로 모두 사용하게 되는 core를 공개 버전으로 관리하고,
내부 사용을 위한 feature를 plugin으로 구성하면 확장성에 도움이 됩니다
31. Quest 2.1 그런 README로 괜찮은가
프로젝트가 지향하는 방향을 명시
처음 방문한 사용자가 프로젝트를 이해하는데 도움이 됩니다
뛰어난 품질의 코드를 개발하더라도 README가 명확하지 않으면
사용자들의 관심을 끌기 어려울 수 있습니다
32. Quest 2.2 그런 LICENSE로 괜찮은가
프로젝트의 사용 조건을 명시
공개한 프로젝트를 어떤 조건에서 사용할 수 있는지 명시합니다
내부에 사용된 오픈소스 프로젝트의 라이선스 고려
다른 오픈소스 프로젝트를 포함하고 있는지 확인이 필요합니다
라이선스 충돌이 일어나지 않는 범위 내에서 배포 라이선스를 결정합니다
33. Quest 2.3 문서, 다다익선
때로는 코드보다 문서가 중요
프로젝트가 해결하고자 하는 문제가 무엇인지
어떤 결과를 기대할 수 있는지
사용자가 직관적으로 이해하기 쉬울수록 사용을 시도할 확률이 높아집니다
데모 사이트, 샘플 코드, 실행 동영상으로 보완
34. Bonus Quest 글로벌, 영어
세계 정복을 원하십니까?
글로벌 오픈소스로 진화하기 위한 시작점
이슈도 영어로 작성하겠다는 굳은 의지가 필요합니다
번역 작업을 이슈로 만들어서 컨트리뷰션을 유도하는 방법도 있습니다
37. Quest 3.1 프로젝트를 알려봅시다
How tough are you?
온라인 - 국내
기술 블로그
SNS
온라인 - 해외
Hacker News
Reddit
온라인 - Targeted
오픈소스 커뮤니티
기술 뉴스레터
오프라인
컨퍼런스 발표
밋업 참가
Images from Wolfenstein 3D saga
Copyright Id Software Inc. Production
http://superadventuresingaming.blogspot.kr/2015/03/wolfenstein-3d-ms-dos.html
38. 온라인 홍보 - JavaScript Weekly에 소개된 billboard.js
JavaScript Weekly #338 | 20170609 |
http://javascriptweekly.com/issues/338
720 stars (7 days)
39. 오프라인 홍보 - DEVIEW 2016에 참가한 egjs
134 stars (2 days)
40. Quest 3.2 사용자 커뮤니티를 만들어봅시다
사용자들도 서로 교류할 수 있도록
메일링 리스트
온라인 커뮤니티 - Google/Facebook group
셀프 검색의 생활화
프로젝트 초기에는 숨겨진 사용자들의 후기를 발굴하는 노력도 필요합니다
문서 컨트리뷰션으로 이어갈 수도 있습니다
41. Quest 3.3 사용자를 컨트리뷰터로
적절한 밀당 스킬 연성
첫 컨트리뷰션을 위한 개발팀의 적극적인 지원 - 빠르고 상세한 코드 리뷰
적절한 이슈 안배 -
버그를 신고해준 사용자에게 직접 수정을 제안해보는 것도 좋습니다