launchpad 활용 사례 in openstack: 다루어본 bug & blueprint를 중심으로

36
20175, “우분투 한국 커뮤니티 5월 정기 세미나 - 오픈소스 프로젝트에 기여하기세미나 발표 최영락, 오픈스택 한국 커뮤니티 대표 & Microsoft MVP (Cloud & Datacenter Management)

Upload: ubuntu-korea-community

Post on 28-Jan-2018

68 views

Category:

Software


3 download

TRANSCRIPT

Page 1: Launchpad 활용 사례 in OpenStack: 다루어본 Bug & Blueprint를 중심으로

2017년 5월, “우분투 한국 커뮤니티 5월 정기 세미나 - 오픈소스 프로젝트에 기여하기”세미나 발표

최영락, 오픈스택 한국 커뮤니티 대표 &Microsoft MVP (Cloud & Datacenter Management)

Page 2: Launchpad 활용 사례 in OpenStack: 다루어본 Bug & Blueprint를 중심으로

2

목차• Part 1: Launchpad에 대하여

• Part 2: Launchpad와 오픈스택

• Part 3: Case – 다루어본 OpenStack 관련 Launchpad 활용 사례

• Conclusion

Page 3: Launchpad 활용 사례 in OpenStack: 다루어본 Bug & Blueprint를 중심으로

Launchpad에 대하여

Page 4: Launchpad 활용 사례 in OpenStack: 다루어본 Bug & Blueprint를 중심으로

4

Launchpad란?!

Page 5: Launchpad 활용 사례 in OpenStack: 다루어본 Bug & Blueprint를 중심으로

5

Launchpad (https://launchpad.net)?

• Canonical에서 (직접) 개발한 웹 사이트

• 오픈 소스 개발 내 많은 부분을 추적하기 위해 사용하는 시스템• 코드 호스팅• 버그 트래킹• 번역• 블루프린트• 커뮤니티 답변 (추적)

Page 6: Launchpad 활용 사례 in OpenStack: 다루어본 Bug & Blueprint를 중심으로

6

Launchpad 를 사용하는 오픈 소스(2017. 5. 27. 기준)

• 프로젝트: 40391

• 버그 리포팅 활용: 12281

• 번역 기능 활용: 2457

• (코드) Bazzar 브랜치 사용: 25344

• 블루프린트 사용: 5602

• 커뮤니티 답변 (추적) 사용: 4423

Page 7: Launchpad 활용 사례 in OpenStack: 다루어본 Bug & Blueprint를 중심으로

7

Launchpad: 블루프린트• 완료할 작업에 대한 구체적인 사항을 목록화하고 계획을 확인하는 공간

• 솔루션에 대한 (상세한) 설명

• 포함 항목• 제목• 설명• (추적에 관한) 관련 정보• Whiteboard

• Work Items

• 예시• https://blueprints.launchpad.net/openstack-i18n/+spec/python35-support

Page 8: Launchpad 활용 사례 in OpenStack: 다루어본 Bug & Blueprint를 중심으로

8

Launchpad: 버그• 특정 프로젝트 내 구체적인 버그를 보고 & 관리

• 예시: https://bugs.launchpad.net/ubuntu/+source/linphone/+bug/566075

• 버그 상태• New, Incomplete, Confirmed, Triaged, In Progress, Fix

Committed, Fix Released, Invalid, Opinion, Won’t fix

Page 9: Launchpad 활용 사례 in OpenStack: 다루어본 Bug & Blueprint를 중심으로

9

Launchpad 사용 장점• 오픈 플랫폼 & 오픈 소스

• 누구나 Launchpad에 프로젝트를 생성하여 사용 가능합니다.

• 오픈 소스로 직접 설치하여 사용 가능하다고 합니다 (전 안해봄)

• 오픈 소스 프로젝트 개발에 대한 “추적성” 확보• 어떤 버그가 있었고, 누구에게 할당이 이루어져 수정이 이루어진 후 배포에 반영되었는가?

• 새로 제안된 기능이 특정 마일스톤 기간 내 개발 진행에 문제가 없는가?

• 프로젝트 그룹 & 구성원 관리 용이• 여러 프로젝트를 묶어 그룹화하여 표현 가능• 관리자 그룹 지정 등에 따른 Launchpad 프로젝트 권한 관리

• 카르마(업보?!)

Page 10: Launchpad 활용 사례 in OpenStack: 다루어본 Bug & Blueprint를 중심으로

10

Launchpad 계정 만드세요 • Ubuntu One 계정 만들기

• Launchpad ID가 생기며 프로필 공간도 생김• 예시: https://launchpad.net/~ianychoi

• 일종의 OpenID 개념으로 다른 로그인 활용 가능• 예시: https://review.openstack.org 로그인

• 참고: 이메일 주소 나중에 추가/변경도 가능

• 그 다음 할 일은?

• 관심있는 프로젝트에 참가• 번역, 버그 리포팅 등등

Page 11: Launchpad 활용 사례 in OpenStack: 다루어본 Bug & Blueprint를 중심으로

Launchpad와 오픈스택

Page 12: Launchpad 활용 사례 in OpenStack: 다루어본 Bug & Blueprint를 중심으로

12

OpenStack이란?

• 클라우드 환경에서 컴퓨팅 자원과 스토리지 인프라를 셋업하고 구동하기위해 사용하는 오픈 소스 소프트웨어 프로젝트의 집합

Page 13: Launchpad 활용 사례 in OpenStack: 다루어본 Bug & Blueprint를 중심으로

13

OpenStack에 대한 다른 정의들• OpenStack은 공용 (Public) 클라우드와 사설 (Private) 클라우드 구축을가능하게 하는 오픈 소스 소프트웨어

• OpenStack은 서버, 스토리지, 네트워크들과 같은 자원들을 모두 모아, 이들을 제어하고 운영하기 위한 클라우드 Operating System

• OpenStack은 오픈 소스를 기반으로 클라우드를 구축하고 운용하고자 하는오픈 소스 개발자, 회사, 사용자들이 주축이 되어 발전하는 커뮤니티

• IaaS 형태의 클라우드 컴퓨팅 오픈 소스 프로젝트로 컴퓨팅, 스토리지, 네트워킹 자원을 관리하는 여러 개의 하위 프로젝트들로 이루어짐

• …

Page 14: Launchpad 활용 사례 in OpenStack: 다루어본 Bug & Blueprint를 중심으로

14

OpenStack 역사• OpenStack 핵심 컨트리뷰터

• 초기: Rackspace & NASA

• Rackspace: OpenStack의 Object Storage라고 하는 “Cloud Files” 부분 플랫폼을 개발하는데 기여하기 시작

• NASA: 기존 "Nebula" 플랫폼을 발전시켜 컴퓨팅 자원 플랫폼을 개발하는 데 기여

• 2012년 5월: NASA와 OpenStack 관계 종료• 2012년 9월: VMWare社가

OpenStack foundation에 가입• 그리고, 많은 회원사 & 참여자들이 참여하고 있음!

[1] http://www.wired.com/wiredenterprise/2012/04/openstack/

The library of the Rainbow Mansion

Page 15: Launchpad 활용 사례 in OpenStack: 다루어본 Bug & Blueprint를 중심으로

15

Launchpad & OpenStack과 인연 – (1)

• https://launchpad.net/openstack 프로젝트 그룹

Page 16: Launchpad 활용 사례 in OpenStack: 다루어본 Bug & Blueprint를 중심으로

16

Launchpad & OpenStack과 인연 – (2)

• 초창기 개발부터 함께 한 nova & swift

• https://launchpad.net/swift

• https://launchpad.net/nova

Page 17: Launchpad 활용 사례 in OpenStack: 다루어본 Bug & Blueprint를 중심으로

17

OpenStack: Gerrit 사용• https://review.openstack.org/

• 2011년 7월부터 (지금도 여전히) 사용

• Git 기반 코드 관리 + 코드 리뷰 및 의견 교환을 위해 사용

• 다른 프로젝트도 많이 사용• Opendaylight, ONOS, …

Page 18: Launchpad 활용 사례 in OpenStack: 다루어본 Bug & Blueprint를 중심으로

18

OpenStack: Gerrit & Launchpad

• Gerrit 로그인: Launchpad와 동일한 인증 (Ubuntu One)

• Gerrit <-> Launchpad 버그 / 블루프린트 Hook

• Launchpad 버그: 링크 & Comment 연동• https://review.openstack.org/#/c/466529/

• https://bugs.launchpad.net/openstack-i18n/+bug/1691900

• Launchpad 블루프린트: 링크 & Whiteboard 연동• https://blueprints.launchpad.net/openstack-manuals/+spec/build-pdf-from-rst-guides

• https://review.openstack.org/#/c/404341/

Page 19: Launchpad 활용 사례 in OpenStack: 다루어본 Bug & Blueprint를 중심으로

19

OpenStack: Blueprint & Spec

• Blueprint 기능 정의 명세서에 대한 리뷰 & 의견 교환 & 추적 필요성

• OpenStack 프로젝트마다 선호도가 다름• Blueprint만으로도 충분 vs. Blueprint & Spec 동시 사용 vs. …

• 예시• https://blueprints.launchpad.net/openstack-manuals/+spec/archiving

• https://review.openstack.org/#/c/426047/

• http://specs.openstack.org/openstack/docs-specs/specs/pike/archiving.html

Page 20: Launchpad 활용 사례 in OpenStack: 다루어본 Bug & Blueprint를 중심으로

Case – 다루어본 OpenStack 관련Launchpad 활용 사례

Page 21: Launchpad 활용 사례 in OpenStack: 다루어본 Bug & Blueprint를 중심으로

21

첫 Launchpad 버그 보고• OpenStack 문서 페이지에 “한국어”가 아닌 “한국의”로 되어 있었음

• 리포팅: https://bugs.launchpad.net/openstack-manuals/+bug/1474452

• OpenStack Gerrit에서 수정: https://review.openstack.org/#/c/201647/

Page 22: Launchpad 활용 사례 in OpenStack: 다루어본 Bug & Blueprint를 중심으로

22

Tokyo 서밋: Upstream Training때• Upstream Training (현재 Upstream Institute)이란?

• OpenStack 개발자를 위해 OpenStack 프로젝트 technical tool 및 social interaction이 어떻게 이루어지는지를 이틀 동안 학습

• 실제 OpenStack 프로젝트 내에서 bug (문서 오류도 okay)를 선택하여 OpenStack upstream 소스 저장소에 반영하는 것을 목표로 함

• 보통 OpenStack Summit 행사 이전에 열린다고 함• 공식 자료 (한글): https://docs.openstack.org/ko_KR/upstream-training/

• 실제 버그를 수정해보자!

• (초보자인 경우) 간단한 문서 버그부터 시작을 권장• “low-langing-fruit” 태그를 지정하여 링크를 공유함

• https://bugs.launchpad.net/openstack/+bugs?field.tag=low-hanging-fruit

Page 23: Launchpad 활용 사례 in OpenStack: 다루어본 Bug & Blueprint를 중심으로

23

Tokyo 서밋: Upstream Training때 경험• 특정 Project 내 프로그래밍 소스로부터의 버그 선택은 어려울 것 같아…

• low-hanging-fruit 버그 목록 중 하나 선택• https://launchpad.net/openstack-manuals/+bug/1492253

Page 24: Launchpad 활용 사례 in OpenStack: 다루어본 Bug & Blueprint를 중심으로

24

버그 내용 자세히 살펴보기• 버그: Kilo – Ubuntu 설치 가이드에서 LVM에 대한 Tooltip Text

Page 25: Launchpad 활용 사례 in OpenStack: 다루어본 Bug & Blueprint를 중심으로

25

버그 상태 및 이력 살펴보기• 버그 수정을 다른 사람이 기존에 제안하였음 상태가 abandoned 으로 변경 assignee: nobody로 변경

• 버그 수정을 위해 Upstream Training 기간 중 본인이 assign 선택

Page 26: Launchpad 활용 사례 in OpenStack: 다루어본 Bug & Blueprint를 중심으로

26

(소스 수정: 생략) & 버그 fix 결과!

Page 27: Launchpad 활용 사례 in OpenStack: 다루어본 Bug & Blueprint를 중심으로

27

Tokyo 업스트림 트레이닝에서 배운 사항• 버그 태깅 중요성

• 버그 “Triaging”, “Assign”, “Importance”

• OpenStack에서는 core reviewer쪽에서 버그 적합성 검토• 버그 상태 및 중요도를 변경하는 작업을 “Triaging”이라고 함• OpenStack에서 버그 상태는 누구나 변경 가능하나,버그 중요도는 core reviewer만 가능하였음

• 버그 수정을 원하는 사람이 수정을 하고 싶은 경우: self-assign

• 다른 사람에게 이미 assign되어 있는 버그를 그냥 가져오면 안됨• Social norm

• …

Page 28: Launchpad 활용 사례 in OpenStack: 다루어본 Bug & Blueprint를 중심으로

28

(Long-term goal after Tokyo upstream training)

• OpenStack 프로젝트에 더 많이 참여• 번역팀• Upstream training 번역 및 직접 기여

• Blueprint 등록• OpenStack – Design Summit에서 5분 스피치 필요

• 나중에 알게 된 사항: 프로젝트마다 성격이 다름,Design Summit PTG 변경 이후 심도있는 논의 이루어짐

• (당시: 나도 과연 할 수 있을까?)

• Launchpad 프로젝트 생성 & 관리

Page 29: Launchpad 활용 사례 in OpenStack: 다루어본 Bug & Blueprint를 중심으로

29

Blueprint 등록• OpenStack 문서에 PDF 지원하기

• 링크: https://blueprints.launchpad.net/openstack-manuals/+spec/build-pdf-from-rst-guides

• 배경• OpenStack에서 이전에 PDF 구현이 있었는데 rst 기반 문서로 바뀌면서 PDF 다운로드 사라짐• 2014년 ryu-book 번역 작업하면서 rst 기반 sphinx에서 PDF 생성하는 기능을 사용했었음• (2016년, 오픈스택 컨트리뷰션 스터디 주제로 하고자 생각하고 있었음)

• 2016년 7월, 누군가가 메일링리스트에 PDF 지원 기능을 물어보았으며, 필요로 하는 기능임을알 수 있었음

• 시작• 2016년 8월, blueprint 등록• Comment: spec 작성 필요하다고 하여 작성, 피드백 받아 최종 spec 완성 후 작업 시작• 목표: Ocata 개발 기간

• (31 October 2016 - 24 February 2017)

Page 30: Launchpad 활용 사례 in OpenStack: 다루어본 Bug & Blueprint를 중심으로

30

Blueprint 완료!

• 원래 rst2pdf 플러그인 사용하려 했으나, 여러 문제로 latex 기반 PDF 변환작업으로 변경하여 완료• 예상 작업량 보다 많았음• 부대표 “조성수” help 덕택에 구현 완료

Page 31: Launchpad 활용 사례 in OpenStack: 다루어본 Bug & Blueprint를 중심으로

31

Upstream Institute을 위한 Sandbox

• Gerrit <-> Launchpad 연동 학습을 위한 학습용 Launchpad 프로젝트• https://launchpad.net/openstack-dev-sandbox

• 연습 Tutorial 데모• https://docs.openstack.org/ko_KR/upstream-training/workflow-using-

sandbox.html

Page 32: Launchpad 활용 사례 in OpenStack: 다루어본 Bug & Blueprint를 중심으로

결론 & 못다한 이야기…

Page 33: Launchpad 활용 사례 in OpenStack: 다루어본 Bug & Blueprint를 중심으로

33

Launchpad와 오픈스택• 오픈스택 초창기부터 Launchpad 적극 활용

• 다양한 오픈스택 프로젝트 등장 및 점차 복잡해지는 관리를 위해 Gerrit등을 사용하나, Launchpad 기능과의 연결을 통해 적극 활용하였음

• 최근에는 Launchpad를 대신하기 위한 스토리보드 활용 검토 중• https://storyboard.openstack.org

• 다양한 프로젝트마다 다른 성격 등을수용하기 위한 방향으로 고려 중

• 찬성/반대 다양한 의견 수렴 중

Page 34: Launchpad 활용 사례 in OpenStack: 다루어본 Bug & Blueprint를 중심으로

Finished!

Page 35: Launchpad 활용 사례 in OpenStack: 다루어본 Bug & Blueprint를 중심으로

35

참고: Jira in zanata.atlassian.net

Page 36: Launchpad 활용 사례 in OpenStack: 다루어본 Bug & Blueprint를 중심으로

36

참고: Jira in jira.onosproject.org