오픈 플랫폼 타이젠과 컨트리부션하기(연세대 오픈소스 미니콘서트)
-
Upload
yoonsoo-kim -
Category
Software
-
view
580 -
download
1
description
Transcript of 오픈 플랫폼 타이젠과 컨트리부션하기(연세대 오픈소스 미니콘서트)
김윤수Tizen Platform Architect
오픈 플랫폼 타이젠과컨트리뷰션 하기
발표자• 김윤수
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( 저작자 표시 ) 하에 배포됩니다
목차1. 타이젠 플랫폼 소개2. 타이젠 Contribution3. 질의 응답
3
1. 타이젠 플랫폼 소개
4
타이젠은• 리눅스 기반 오픈소스 플랫폼• 리눅스 재단 산하 프로젝트• 2.2.1 버전까지 배포
5
모습 (1)
• 테스트 폰– RD-210– RD-PQ
6
모습 (2)
• 에뮬레이터
7
모습 (3)
• 카메라– NX300M
8
모습 (4)
• 기어 2 ( 네오 )– SM-R380– SM-R381
9
타이젠 아키텍처
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
역사 (1)
• 전신– 리모 (LiMo) : 리눅스 기반 모바일 플랫폼 ,
삼성리눅스플랫폼 (SLP)
• 타이젠– 2011 년 9 월 : 인텔 합류와 함께 타이젠 명칭
11
역사 (2)
• 타이젠– 2012 년 4 월 : 1.0 배포 (Larkspur)
• 웹 애플리케이션 개발 지원– 2013 년 2 월 : 2.0 배포 (Magnolia)
• 네이티브 애플리케이션 개발 지원– 2013 년 11 월 : 2.2.1 배포
12
특징 - 크로스 카테고리 (1)
• 스마트폰 , 넷북 , 태블릿 , 웨어러블 디바이스 ,
자동차 인포테인먼트 , TV 등 다양한 기기에 탑재 가능
– 단일 소프트웨어가 다양한 기기에서 동작– 다양한 기기가 손쉽게 연결
13
특징 - 크로스 카테고리 (2)
TV
모바일
IVI
프린터
PC
카메라
세탁기
14
특징 – 다양한 종류 애플리케이션
• HTML5 기반 웹 애플리케이션• C++ 기반 네이티브 애플리케이션• 하이브리드 애플리케이션• 코어 애플리케이션
15
특징 – 높은 HTML5 호환성• HTML5 호환성 테스트 결과
– html5test.com
16
특징 – 개방형 (1)
• 누구나 개발에 참여 가능• 제조사가 원하는 데로 수정 가능
17
특징 – 개방형 (2)
• 소스코드 공개• Git : http://review.tizen.org/git/• Gerrit : http://review.tizen.org/gerrit
18
특징 – 개방형 (3)
• 메일링 리스트– http://www.tizen.org/community/mailing-lists
19
특징 – 개방형 (4)
• 메일링 리스트
20
특징 – 개방형 (5)
• IRC– irc.freenode.net/6667, #tizen
21
특징 – 개방형 (6)
• 포럼– https://developer.tizen.org/forums
22
특징 – 개방형 (7)
• 위키– http://wiki.tizen.org/
23
특징 – 개방형 (8)
• Jira– http://bugs.tizen.org
24
특징 - 기타• WebGL• 크로스 아키텍처 – arm, i586, …• 라이선스• 보안 - SMACK• 등등
25
오픈소스 (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
오픈소스 (2)
• 타이젠에서 수정한 패치가 해당 오픈소스에도 반영 됨
– Linux, WebKit2, EFL, GStreamer, U-Boot,
FFMPEG, GTK+, WebCL, Cairo, Bluez, QEMU, GCC 등
27
오픈소스 (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
컨퍼런스 (1)
• 타이젠 개발자 컨퍼런스 (Tizen Developer Conference)– 1 회 : 2012 년 5 월– 2 회 : 2013 년 5 월– 3 회 : 2013 년 6 월– 4 회 : 2014 년 6 월 2 일 ~ 4 일
29
[ 미국 샌프란시스코 ]
컨퍼런스 (2)
• 타이젠 개발자 서밋 코리아– 2013 년 11 월
30
타이젠 앱 개발 대회• 2013 년 7 월 ~ 12 월
– 총 상금 404 만 달러 ( 약 41 억원 )– HTML5 앱의 경우 상위 10 위 앱에 별도로
5 만 달러 지급
31
• 2014 년 5 월 ~ 7 월 [ 타이젠 기어 앱 챌린지 ]– 총 상금 125 만 달러 ( 약 13 억원 )
2. 타이젠 Contribution
32
System Infra
• Git : 소스 코드 관리• Gerrit : 웹 기반 코드 리뷰• OBS (Open Build Service) - 빌드 시스템 배포판 생성 플랫폼 - 변경사항을 제출하고 빌드할 수 있는 협업 플랫폼 - Tizen: 리눅스 배포판
33
Roles & Responsibilities
• Developers• Maintainers• Reviewers• Release Engineers• QA Engineers
34
Development Flow
35
Becoming a Developer(1/4)
• Registering an Account - https://www.tizen.org/user/register
36
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
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
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
Configuring Git
$ git config --global user.name <First_Name Last_Name>
$ git config --global user.email "<E-mail_Address>"
43
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
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
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
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
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
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
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
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
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
3. 질의 응답
53
질의 응답• 무엇이든 물어보세요 .• 대답할 수 있는 것만 답변해드립니다 ^_^
54
웹사이트 및 문서• http://www.tizen.org• http://developer.tizen.org/sdk• http://source.tizen.org/• https://developer.tizen.org/documentation
55