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

Post on 28-Jan-2018

68 Views

Category:

Software

3 Downloads

Preview:

Click to see full reader

TRANSCRIPT

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

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

2

목차• Part 1: Launchpad에 대하여

• Part 2: Launchpad와 오픈스택

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

• Conclusion

Launchpad에 대하여

4

Launchpad란?!

5

Launchpad (https://launchpad.net)?

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

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

6

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

• 프로젝트: 40391

• 버그 리포팅 활용: 12281

• 번역 기능 활용: 2457

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

• 블루프린트 사용: 5602

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

7

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

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

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

• Work Items

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

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

9

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

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

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

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

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

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

• 카르마(업보?!)

10

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

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

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

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

• 그 다음 할 일은?

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

Launchpad와 오픈스택

12

OpenStack이란?

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

13

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

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

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

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

• …

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

15

Launchpad & OpenStack과 인연 – (1)

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

16

Launchpad & OpenStack과 인연 – (2)

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

• https://launchpad.net/swift

• https://launchpad.net/nova

17

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

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

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

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

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/

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

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

21

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

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

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

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

23

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

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

24

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

25

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

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

26

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

27

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

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

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

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

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

• …

28

(Long-term goal after Tokyo upstream training)

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

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

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

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

• Launchpad 프로젝트 생성 & 관리

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)

30

Blueprint 완료!

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

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

결론 & 못다한 이야기…

33

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

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

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

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

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

Finished!

35

참고: Jira in zanata.atlassian.net

36

참고: Jira in jira.onosproject.org

top related