32
20161216, ONOS/CORD 워킹 그룹 2차 세미나 최영락, 오픈스택 한국 커뮤니티 운영진

오픈소스 개발 Upstream - ONOS/CORD 워킹 그룹 2차 세미나

Embed Size (px)

Citation preview

Page 1: 오픈소스 개발 Upstream - ONOS/CORD 워킹 그룹 2차 세미나

2016년 12월 16일, ONOS/CORD 워킹 그룹 2차 세미나

최영락, 오픈스택한국커뮤니티운영진

Page 2: 오픈소스 개발 Upstream - ONOS/CORD 워킹 그룹 2차 세미나

2

목차• Part 1: 오픈소스와 Upstream 개발개요

• Part 2: 주요 Upstream 개발워크플로우

• Part 3: Sandbox를활용한워크플로우살펴보기 (with Demo)

• Part 4: 결론

Page 3: 오픈소스 개발 Upstream - ONOS/CORD 워킹 그룹 2차 세미나

오픈소스와 Upstream 개발개요

Page 4: 오픈소스 개발 Upstream - ONOS/CORD 워킹 그룹 2차 세미나

4

Upstream 개발이지니는의미가무엇일까요?

http://docs.openstack.org/ko_KR/upstream-training/

Page 5: 오픈소스 개발 Upstream - ONOS/CORD 워킹 그룹 2차 세미나

5

참고: OpenStack에서바라보는 Openness

• Open Source• 재사용및확장가능한진정한의미에서의오픈소스를목표로함• No “Enterprise Edition”

• Open Design• 요구사항수집및로드맵승인등모든절차를대중에게공개• 개방형디자인의의미보다는모든설계과정을 open하겠다는의미에가까움

• Open Development• 모든소스코드공개를개방된코드리뷰과정을거치며, 모든과정은투명하게문서화됨

• Open Community• 커뮤니티를통해설계과정을결정• 모든프로젝트미팅은공개 IRC 채널을통해열리며기록

[1] 서주영, 오픈소스를통해개발근육강화하기, GDG DevFest Seoul 2016

(커뮤니티를통해함께)

Page 6: 오픈소스 개발 Upstream - ONOS/CORD 워킹 그룹 2차 세미나

6

오픈소스시작: from small to larger

• Github하나로시작할수있습니다!• 소스관리도되고 (git repository)

Page 7: 오픈소스 개발 Upstream - ONOS/CORD 워킹 그룹 2차 세미나

7

오픈소스시작: from small to larger

• Github하나로시작할수있습니다!• 다른사용자가소스를가져다가작업할수도있고 (fork & pull request)

Page 8: 오픈소스 개발 Upstream - ONOS/CORD 워킹 그룹 2차 세미나

8

오픈소스시작: from small to larger

• Github하나로시작할수있습니다!• 다른사용자가작업한소스를리뷰및코멘트를작성가능하고 (pull request review)

Page 9: 오픈소스 개발 Upstream - ONOS/CORD 워킹 그룹 2차 세미나

9

오픈소스시작: from small to larger

• Github하나로시작할수있습니다!• 리뷰를완료하면병합또한가능하며 (merge and/or rebase)

Page 10: 오픈소스 개발 Upstream - ONOS/CORD 워킹 그룹 2차 세미나

10

오픈소스시작: from small to larger

• Github하나로시작할수있습니다!• 버그등이있을때사용자피드백을받을수도있으며 (issues)

Page 11: 오픈소스 개발 Upstream - ONOS/CORD 워킹 그룹 2차 세미나

11

오픈소스시작: from small to larger

• Github하나로시작할수있습니다!• 문서화등을위한위키또한지원합니다 (wiki)

Page 12: 오픈소스 개발 Upstream - ONOS/CORD 워킹 그룹 2차 세미나

12

오픈소스규모가커지면…

• 코드리뷰의중요성: e.g.) Gerrit• Case example: https://review.openstack.org/#/c/396943/

Page 13: 오픈소스 개발 Upstream - ONOS/CORD 워킹 그룹 2차 세미나

13

오픈소스규모가커지면…

• 이슈및기능추적: e.g.) Launchpad, Jira• Case example 1: https://bugs.launchpad.net/pbr/+bug/1379998

Page 14: 오픈소스 개발 Upstream - ONOS/CORD 워킹 그룹 2차 세미나

14

오픈소스규모가커지면…

• 이슈및기능추적: e.g.) Launchpad, Jira• Case example 2: Jira 사용 (예시)

Page 15: 오픈소스 개발 Upstream - ONOS/CORD 워킹 그룹 2차 세미나

15

오픈소스규모가커지면…

• 자동빌드: Jenkins• Case example: https://review.openstack.org/#/c/410341/

Page 16: 오픈소스 개발 Upstream - ONOS/CORD 워킹 그룹 2차 세미나

16

오픈소스규모가커지면…

• 통합인증체계• Case example 1: openstackid (https://openstackid.org/accounts/user/profile)

• Case example 2: ONOS crowd (https://crowd.onlab.us/openidserver/)

Page 17: 오픈소스 개발 Upstream - ONOS/CORD 워킹 그룹 2차 세미나

주요 Upstream 개발워크플로우

Page 18: 오픈소스 개발 Upstream - ONOS/CORD 워킹 그룹 2차 세미나

18

Github기반워크플로우

Page 19: 오픈소스 개발 Upstream - ONOS/CORD 워킹 그룹 2차 세미나

19

OpenStack에서의워크플로우

http://docs.openstack.org/infra/manual/developers.html

Page 20: 오픈소스 개발 Upstream - ONOS/CORD 워킹 그룹 2차 세미나

20

OpenStack에서의워크플로우

Copyright by koain (김영우), OpenStack Korea Community –업스트림컨트리뷰션스터디

Page 21: 오픈소스 개발 Upstream - ONOS/CORD 워킹 그룹 2차 세미나

Sandbox를활용한워크플로우살펴보기

Page 22: 오픈소스 개발 Upstream - ONOS/CORD 워킹 그룹 2차 세미나

22

Sandbox 저장소공간• OpenStack Sandbox 저장소

• https://review.openstack.org/#/admin/projects/openstack-dev/sandbox

• Git커밋, 패치, 리뷰등연습공간

Page 23: 오픈소스 개발 Upstream - ONOS/CORD 워킹 그룹 2차 세미나

23

OpenStack: Sandbox 저장소• OpenStack은학습및테스트목적을위해 sandbox 저장소를보유하고있습니다

• OpenStack 학습을시작하기위한훌륭한저장소입니다• https://git.openstack.org/cgit/openstack-dev/sandbox

Page 24: 오픈소스 개발 Upstream - ONOS/CORD 워킹 그룹 2차 세미나

24

Sandbox Launchpad

• openstack-dev/sandbox 저장소와관련이있는보고된버그및이슈를추석및관리• https://launchpad.net/openstack-dev-sandbox

Page 25: 오픈소스 개발 Upstream - ONOS/CORD 워킹 그룹 2차 세미나

25

Gerrit을활용한워크플로우확인

• Gerrit• GitHub에서의 pull

request와비슷• 여러사람에의한

code review 가능

Page 26: 오픈소스 개발 Upstream - ONOS/CORD 워킹 그룹 2차 세미나

26

Gerrit리뷰과정 in OpenStack

• 점수부여• -2: 받아들일수없는수정• -1: 수정필요한사항• 0 : 중립또는자세한

comment 작성시• +1: 리뷰결과괜찮음• +2: 해당프로젝트의핵심개발자가괜찮음을표현

• 일반적인코드병합• 2명의핵심개발자가각각

+2를주었을때병함됨• Workflow를 +1로주었을때최종코드병합이루어짐

Page 27: 오픈소스 개발 Upstream - ONOS/CORD 워킹 그룹 2차 세미나

27

코드병합 (Merged) in OpenStack

• 업로드한코드는 patch set 단위로관리됨

• 모든업로드코드는Jenkins에의해업로드한코드에대해자동점검수행

• 일반적으로해당프로젝트내+2를 2번이상받았을때Workflow +1를주면해당코드에대한병합이이루어짐

Page 28: 오픈소스 개발 Upstream - ONOS/CORD 워킹 그룹 2차 세미나

28

Sandbox 저장소를활용한데모• 참고: http://docs.openstack.org/ko_KR/upstream-

training/workflow-using-sandbox.html

Page 29: 오픈소스 개발 Upstream - ONOS/CORD 워킹 그룹 2차 세미나

결론

Page 30: 오픈소스 개발 Upstream - ONOS/CORD 워킹 그룹 2차 세미나

30

OpenStack with Open Ecosystem

• OpenStack과업스트림컨트리뷰션• 변화하는 IT (예: Docker 등컨테이너) 및문제해결을좋아하는컨트리뷰터들이주축이되어활동

• 기술위원회의모든투표과정을공개할만큼 Openness를실천하고있음• 소스코드개발뿐만아니라, 문서화, 번역등도컨트리뷰션에간주함

• ONOS에서의업스트림컨트리뷰션• Jira를기반으로프로젝트버전및관련된기능개발, 이슈를통합적으로관리• 업스트림컨트리뷰션을위해서는해당분야지식뿐만아니라 Git, Jira, Gerrit 등오픈소스기반도구에익숙해질필요가있음

Page 31: 오픈소스 개발 Upstream - ONOS/CORD 워킹 그룹 2차 세미나

31

참고: OpenStack 번역업스트림컨트리뷰션• 오픈소스번역플랫폼인 Zanata를사용하여번역에컨트리뷰션

Page 32: 오픈소스 개발 Upstream - ONOS/CORD 워킹 그룹 2차 세미나

Finished!