오픈 플랫폼 타이젠과 컨트리부션하기(연세대 오픈소스 미니콘서트)

55
김김김 Tizen Platform Architect 오오 오오오 오오오오 오오오오오 오오

description

오픈 소스 플랫폼인 타이젠에 대한 소개와 기여 방법을 설명하고 있습니다.

Transcript of 오픈 플랫폼 타이젠과 컨트리부션하기(연세대 오픈소스 미니콘서트)

Page 1: 오픈 플랫폼 타이젠과 컨트리부션하기(연세대 오픈소스 미니콘서트)

김윤수Tizen Platform Architect

오픈 플랫폼 타이젠과컨트리뷰션 하기

Page 2: 오픈 플랫폼 타이젠과 컨트리부션하기(연세대 오픈소스 미니콘서트)

발표자• 김윤수

Tizen Platform Architect전 삼성전자 무선사업부 수석 연구원Professional Tizen Application Development 저자 중 한 명“ 김윤수의 이상계를 꿈꾸며” 블로거

http://yesarang.tistory.com/

• Credit서주영 , 김현중님의 “오픈 플랫폼 타이젠과 웹”의 전반부 인용

http://www.slideshare.net/seojuyung/fa-linux-tizenfinalpresent

Tizen Getting Started Guide 인용https://source.tizen.org/documentation/developer-guide/

getting-started-guide

2이 자료는 CC-BY 3.0( 저작자 표시 ) 하에 배포됩니다

Page 3: 오픈 플랫폼 타이젠과 컨트리부션하기(연세대 오픈소스 미니콘서트)

목차1. 타이젠 플랫폼 소개2. 타이젠 Contribution3. 질의 응답

3

Page 4: 오픈 플랫폼 타이젠과 컨트리부션하기(연세대 오픈소스 미니콘서트)

1. 타이젠 플랫폼 소개

4

Page 5: 오픈 플랫폼 타이젠과 컨트리부션하기(연세대 오픈소스 미니콘서트)

타이젠은• 리눅스 기반 오픈소스 플랫폼• 리눅스 재단 산하 프로젝트• 2.2.1 버전까지 배포

5

Page 6: 오픈 플랫폼 타이젠과 컨트리부션하기(연세대 오픈소스 미니콘서트)

모습 (1)

• 테스트 폰– RD-210– RD-PQ

6

Page 7: 오픈 플랫폼 타이젠과 컨트리부션하기(연세대 오픈소스 미니콘서트)

모습 (2)

• 에뮬레이터

7

Page 8: 오픈 플랫폼 타이젠과 컨트리부션하기(연세대 오픈소스 미니콘서트)

모습 (3)

• 카메라– NX300M

8

Page 9: 오픈 플랫폼 타이젠과 컨트리부션하기(연세대 오픈소스 미니콘서트)

모습 (4)

• 기어 2 ( 네오 )– SM-R380– SM-R381

9

Page 10: 오픈 플랫폼 타이젠과 컨트리부션하기(연세대 오픈소스 미니콘서트)

타이젠 아키텍처

Base/IO/Text/Locales

Graphics/UINet/Telephony/Messaging

UixLocationsSocial/Content Web/XmlMedia

App/Security/System Services

W3C/HTML5 Device APIs

Web Runtime

Video TouchCSS3 WebGL

Worker

BT CallLBS NFCMsg… …

애플리케이션

웹 프레임워크

커널

코어 프레임워크

네이티브 프레임워크

ApplicationFramework

Graphics & UI Multimedia Web Messaging Location

Security System Base Connectivity Telephony PIM

Linux Kernel & device drivers

웹 애플리케이션 네이티브 애플리케이션

Public API

코어 애플리케이션

10

Page 11: 오픈 플랫폼 타이젠과 컨트리부션하기(연세대 오픈소스 미니콘서트)

역사 (1)

• 전신– 리모 (LiMo) : 리눅스 기반 모바일 플랫폼 ,

삼성리눅스플랫폼 (SLP)

• 타이젠– 2011 년 9 월 : 인텔 합류와 함께 타이젠 명칭

11

Page 12: 오픈 플랫폼 타이젠과 컨트리부션하기(연세대 오픈소스 미니콘서트)

역사 (2)

• 타이젠– 2012 년 4 월 : 1.0 배포 (Larkspur)

• 웹 애플리케이션 개발 지원– 2013 년 2 월 : 2.0 배포 (Magnolia)

• 네이티브 애플리케이션 개발 지원– 2013 년 11 월 : 2.2.1 배포

12

Page 13: 오픈 플랫폼 타이젠과 컨트리부션하기(연세대 오픈소스 미니콘서트)

특징 - 크로스 카테고리 (1)

• 스마트폰 , 넷북 , 태블릿 , 웨어러블 디바이스 ,

자동차 인포테인먼트 , TV 등 다양한 기기에 탑재 가능

– 단일 소프트웨어가 다양한 기기에서 동작– 다양한 기기가 손쉽게 연결

13

Page 14: 오픈 플랫폼 타이젠과 컨트리부션하기(연세대 오픈소스 미니콘서트)

특징 - 크로스 카테고리 (2)

TV

모바일

IVI

프린터

PC

카메라

세탁기

14

Page 15: 오픈 플랫폼 타이젠과 컨트리부션하기(연세대 오픈소스 미니콘서트)

특징 – 다양한 종류 애플리케이션

• HTML5 기반 웹 애플리케이션• C++ 기반 네이티브 애플리케이션• 하이브리드 애플리케이션• 코어 애플리케이션

15

Page 16: 오픈 플랫폼 타이젠과 컨트리부션하기(연세대 오픈소스 미니콘서트)

특징 – 높은 HTML5 호환성• HTML5 호환성 테스트 결과

– html5test.com

16

Page 17: 오픈 플랫폼 타이젠과 컨트리부션하기(연세대 오픈소스 미니콘서트)

특징 – 개방형 (1)

• 누구나 개발에 참여 가능• 제조사가 원하는 데로 수정 가능

17

Page 18: 오픈 플랫폼 타이젠과 컨트리부션하기(연세대 오픈소스 미니콘서트)

특징 – 개방형 (2)

• 소스코드 공개• Git : http://review.tizen.org/git/• Gerrit : http://review.tizen.org/gerrit

18

Page 19: 오픈 플랫폼 타이젠과 컨트리부션하기(연세대 오픈소스 미니콘서트)

특징 – 개방형 (3)

• 메일링 리스트– http://www.tizen.org/community/mailing-lists

19

Page 20: 오픈 플랫폼 타이젠과 컨트리부션하기(연세대 오픈소스 미니콘서트)

특징 – 개방형 (4)

• 메일링 리스트

20

Page 21: 오픈 플랫폼 타이젠과 컨트리부션하기(연세대 오픈소스 미니콘서트)

특징 – 개방형 (5)

• IRC– irc.freenode.net/6667, #tizen

21

Page 22: 오픈 플랫폼 타이젠과 컨트리부션하기(연세대 오픈소스 미니콘서트)

특징 – 개방형 (6)

• 포럼– https://developer.tizen.org/forums

22

Page 23: 오픈 플랫폼 타이젠과 컨트리부션하기(연세대 오픈소스 미니콘서트)

특징 – 개방형 (7)

• 위키– http://wiki.tizen.org/

23

Page 24: 오픈 플랫폼 타이젠과 컨트리부션하기(연세대 오픈소스 미니콘서트)

특징 – 개방형 (8)

• Jira– http://bugs.tizen.org

24

Page 25: 오픈 플랫폼 타이젠과 컨트리부션하기(연세대 오픈소스 미니콘서트)

특징 - 기타• WebGL• 크로스 아키텍처 – arm, i586, …• 라이선스• 보안 - SMACK• 등등

25

Page 26: 오픈 플랫폼 타이젠과 컨트리부션하기(연세대 오픈소스 미니콘서트)

오픈소스 (1)

• 타이젠이 사용하는 수 많은 오픈소스– X Windows, Cairo, EFL for UI & Graphics– GStreamer, PulseAudio, OpenAL for Multimedia– Connman, Bluez, libsoup, wpa_supplicant for Connectivity– Webkit2 for Web– SMACK & OpenSSL for Security– Dbus, glibc for Base– Sqlite for Database & PIM– Linux for OS Kernel– Eclipse for Tizen SDK– QEMU, U-Boot for Target Emulator– GCC, LLVM, cmake, gbs for build– 기타 등등

26

Page 27: 오픈 플랫폼 타이젠과 컨트리부션하기(연세대 오픈소스 미니콘서트)

오픈소스 (2)

• 타이젠에서 수정한 패치가 해당 오픈소스에도 반영 됨

– Linux, WebKit2, EFL, GStreamer, U-Boot,

FFMPEG, GTK+, WebCL, Cairo, Bluez, QEMU, GCC 등

27

Page 28: 오픈 플랫폼 타이젠과 컨트리부션하기(연세대 오픈소스 미니콘서트)

오픈소스 (3)

• 타이젠을 위해 신규 구현한 모듈을 오픈소스로 공개

– app-core, app-service, slp-pkgmgr, WRT(Web RunTime), system-server, sensor-fw, libslp-pm, msg-service, email-service, telephony-daemon, audio-session-manager, contacts-service, slp-calendar, accounts-svc, sync-fw, cert-svc, secure-storage, nfc-manager 등

28

Page 29: 오픈 플랫폼 타이젠과 컨트리부션하기(연세대 오픈소스 미니콘서트)

컨퍼런스 (1)

• 타이젠 개발자 컨퍼런스 (Tizen Developer Conference)– 1 회 : 2012 년 5 월– 2 회 : 2013 년 5 월– 3 회 : 2013 년 6 월– 4 회 : 2014 년 6 월 2 일 ~ 4 일

29

[ 미국 샌프란시스코 ]

Page 30: 오픈 플랫폼 타이젠과 컨트리부션하기(연세대 오픈소스 미니콘서트)

컨퍼런스 (2)

• 타이젠 개발자 서밋 코리아– 2013 년 11 월

30

Page 31: 오픈 플랫폼 타이젠과 컨트리부션하기(연세대 오픈소스 미니콘서트)

타이젠 앱 개발 대회• 2013 년 7 월 ~ 12 월

– 총 상금 404 만 달러 ( 약 41 억원 )– HTML5 앱의 경우 상위 10 위 앱에 별도로

5 만 달러 지급

31

• 2014 년 5 월 ~ 7 월 [ 타이젠 기어 앱 챌린지 ]– 총 상금 125 만 달러 ( 약 13 억원 )

Page 32: 오픈 플랫폼 타이젠과 컨트리부션하기(연세대 오픈소스 미니콘서트)

2. 타이젠 Contribution

32

Page 33: 오픈 플랫폼 타이젠과 컨트리부션하기(연세대 오픈소스 미니콘서트)

System Infra

• Git : 소스 코드 관리• Gerrit : 웹 기반 코드 리뷰• OBS (Open Build Service) - 빌드 시스템 배포판 생성 플랫폼 - 변경사항을 제출하고 빌드할 수 있는 협업 플랫폼 - Tizen: 리눅스 배포판

33

Page 34: 오픈 플랫폼 타이젠과 컨트리부션하기(연세대 오픈소스 미니콘서트)

Roles & Responsibilities

• Developers• Maintainers• Reviewers• Release Engineers• QA Engineers

34

Page 35: 오픈 플랫폼 타이젠과 컨트리부션하기(연세대 오픈소스 미니콘서트)

Development Flow

35

Page 36: 오픈 플랫폼 타이젠과 컨트리부션하기(연세대 오픈소스 미니콘서트)

Becoming a Developer(1/4)

• Registering an Account - https://www.tizen.org/user/register

36

Page 37: 오픈 플랫폼 타이젠과 컨트리부션하기(연세대 오픈소스 미니콘서트)

Becoming a Developer(2/4)

• Configuring SSH for Gerrit Access$ ssh-keygenEnter file in which to save the key (/home/<User>/.ssh/id_rsa):

Enter passphrase (empty for no passphrase):Enter same passphrase again:--> ~/.ssh/id_rsa.pub(public key) 파일도 생성됨$ cat > ~/.ssh/config <<EOTHost tizen review.tizen.orgHostname review.tizen.orgIdentityFile ~/.ssh/id_rsaUser <The Above Account>Port 29418EOT

Page 38: 오픈 플랫폼 타이젠과 컨트리부션하기(연세대 오픈소스 미니콘서트)

Becoming a Developer(3/4)

• Login to https://review.tizen/org/gerritUsing the account in the previous page

• Your name on the upper right corner → Settings → SSH Public Keys → Add Key…Copy & Paste all content of ~/.ssh/id_rsa.pub

38

Page 39: 오픈 플랫폼 타이젠과 컨트리부션하기(연세대 오픈소스 미니콘서트)
Page 40: 오픈 플랫폼 타이젠과 컨트리부션하기(연세대 오픈소스 미니콘서트)
Page 41: 오픈 플랫폼 타이젠과 컨트리부션하기(연세대 오픈소스 미니콘서트)
Page 42: 오픈 플랫폼 타이젠과 컨트리부션하기(연세대 오픈소스 미니콘서트)

Becoming a Developer(4/4)

[ 여기까지 확인하는 방법 ]$ ssh tizenThe authenticity of host '[review.tizen.org]:29418 ([198.145.20.13]:29418)' can't be established.RSA key fingerprint is ca:5a:1d:6f:06:d4:ee:10:18:9f:b8:ef:ee:65:d5:fd.Are you sure you want to continue connecting (yes/no)? yesWarning: Permanently added '[review.tizen.org]:29418,[198.145.20.13]:29418' (RSA) to the list of known hosts. **** Welcome to Gerrit Code Review **** Hi Your Name, you have successfully connected over SSH. Unfortunately, interactive shells are disabled. To clone a hosted Git repository, use: git clone ssh://[email protected]:29418/REPOSIORY_NAME.gitConnection to review.tizen.org closed.

42

Page 43: 오픈 플랫폼 타이젠과 컨트리부션하기(연세대 오픈소스 미니콘서트)

Configuring Git

$ git config --global user.name <First_Name Last_Name>

$ git config --global user.email "<E-mail_Address>"

43

Page 44: 오픈 플랫폼 타이젠과 컨트리부션하기(연세대 오픈소스 미니콘서트)

Installing Tools

$ sudo vim /etc/apt/sources.list Add the following line

deb http://download.tizen.org/tools/latest-release/Ubuntu_14.04 /

$ sudo apt-get update$ sudo apt-get install gbs mic lthor

44

Page 45: 오픈 플랫폼 타이젠과 컨트리부션하기(연세대 오픈소스 미니콘서트)

Downloading Source(1/2)

Downloading one project$ ssh review.tizen.org gerrit ls-projects > tizen-projects$ git clone ssh://<Username>@review.tizen.org:29418/platform/framework/web/webkit-efl

45

Page 46: 오픈 플랫폼 타이젠과 컨트리부션하기(연세대 오픈소스 미니콘서트)

Downloading Source(2/2) Downloading all project for a specific profile$ mkdir ~/bin/$ PATH=~/bin:$PATH$ curl http://commondatastorage.googleapis.com/git-repo-downloads/repo > ~/bin/repo$ sudo chmod a+x ~/bin/repo$ mkdir tizen$ cd tizen$ repo init -u ssh://<Username>@review.tizen.org:29418/scm/manifest -b tizen -m mobile.xml$ repo sync

46

Page 47: 오픈 플랫폼 타이젠과 컨트리부션하기(연세대 오픈소스 미니콘서트)

Building Packages(1/2) Checking out build configuration: vim ~/tizen/.gbs.conf[general]tmpdir=/var/tmp/profile = profile.tizen3.0_mobilework_dir=.[repo.tizen3.0_x86]url=${work_dir}/pre-built/toolchain-x86/[repo.tizen3.0_arm]url=${work_dir}/pre-built/toolchain-arm/[profile.tizen3.0_mobile]repos=repo.tizen3.0_x86,repo.tizen3.0_armbuildconf=${work_dir}/scm/meta/build-config/build.conf

47

Page 48: 오픈 플랫폼 타이젠과 컨트리부션하기(연세대 오픈소스 미니콘서트)

Building Packages(2/2)l Building All Packages

l $ accel_pkgs="bash,bzip2-libs,c-ares,cmake,coreutils,diffutils,eglibc,elfutils-libelf,elfutils-libs,elfutils,fdupes,file,findutils,gawk,gmp,gzip,libacl,libattr,libcap,libcurl,libfile,libgcc,liblua,libstdc++,make,mpc,mpfr,ncurses-libs,nodejs,nspr,nss-softokn-freebl,nss,openssl,patch,popt,rpm-build,rpm-libs,rpm,sed,sqlite,tar,xz-libs,zlib,binutils,gcc“

l $ gbs build -A armv7l --threads=4 --clean-once --exclude=${accel_pkgs},filesystem,aul,libmm-sound,libtool 48

Page 49: 오픈 플랫폼 타이젠과 컨트리부션하기(연세대 오픈소스 미니콘서트)

Submitting a Patch

$ cd <your_working_directory>$ git add <your_change>$ git commit

l Good commit messages$ git push origin HEAD:refs/for/tizenl Code review on gerrit

l a patch will be merged on the following conditions:l The patch got at least one "+2" score and no "-

2" score in the Code Review category.l The patch got at least one "+1" score and no "-

1" score in the Verified category.

49

Page 50: 오픈 플랫폼 타이젠과 컨트리부션하기(연세대 오픈소스 미니콘서트)

Submitting a Package to the Building Farm

$ gbs submit -c <Commit_ID> -m "<Comments>"

l Tag: submit/$Tizen_Version/$(%Y%m%d.%H%M%S)

l If the code change has already been merged by the Gerrit, a merge request will be created and release engineers will be notifed to review.

l If the patch has not been merged in Gerrit, the backend services will abort the operations and send email to the patch owner, to notify that the patch needs to be re-submitted after it is merged.

50

Page 51: 오픈 플랫폼 타이젠과 컨트리부션하기(연세대 오픈소스 미니콘서트)

Creating a Tizen image

# kickstart file for armv7l$ wget http://download.tizen.org/releases/2.2.1/tizen-2.2.1/builddata/image-configs/RD-210.ksrepo --name=Tizen-main –baseurl=http://download.tizen.org/releases/2.2.1/tizen-2.2.1/repos/tizen-main/armv7l/packages/ --save --ssl_verify=no --priority=99repo --name=Tizen-base –baseurl=http://download.tizen.org/releases/2.2.1/tizen-2.2.1/repos/tizen-base/armv7l/packages/ --save --ssl_verify=no --priority=99repo --name=local --baseurl=file:///home/user_id/GBS-ROOT/local/repos/tizen2.1/armv7l/ --priority=1repo --name=local-toolchain –baseurl=file:///home/user_id/tizen/pre-built/toolchain-arm/ --priority=2$ gbs createimage --ks-file=RD-210.ks --tmpfs

51

Page 52: 오픈 플랫폼 타이젠과 컨트리부션하기(연세대 오픈소스 미니콘서트)

Flashing a Tizen image

$ sudo apt-get install lthorl 1 Boot the phone into download mode.

l Make sure the phone is powered-off.l Press <volume down> + <power> keys

simultaneously.l The phone will boot up and the download mode

image will be displayed on the phone.l 2 Connect the phone to the Linux PC with a USB

cable.l 3 Flashing image$ sudo lthor /path/to/tizen/image

52

Page 53: 오픈 플랫폼 타이젠과 컨트리부션하기(연세대 오픈소스 미니콘서트)

3. 질의 응답

53

Page 54: 오픈 플랫폼 타이젠과 컨트리부션하기(연세대 오픈소스 미니콘서트)

질의 응답• 무엇이든 물어보세요 .• 대답할 수 있는 것만 답변해드립니다 ^_^

54

Page 55: 오픈 플랫폼 타이젠과 컨트리부션하기(연세대 오픈소스 미니콘서트)

웹사이트 및 문서• http://www.tizen.org• http://developer.tizen.org/sdk• http://source.tizen.org/• https://developer.tizen.org/documentation

55