SlideShare una empresa de Scribd logo
1 de 34
AOSP에 컨트리뷰션 하기
SeongJae Park
반갑습니다!
<name>
SeongJae Park
</name>
<email>
sj38.park@gmail.com
</email>
컨트리뷰션?
【명사】
1.[불] (또는 a contribution) […에의] 기부, 출자, 기여, 공
헌, 조력, 기고, 투고[to, toward ‥]; 발언(하는 것)
a contribution of $50,000 to the project
계획에 대한 5만 달러의 출자
America's contribution to the peaceful development of
Asia
아시아의 평화적 개발에 대한 미국의 공헌
make a small[a large] contribution toward revising the
law
법률 개정에 약간[크게] 기여하다.
AOSP?
Android Open Source Project
From
community
Google internal
source treeAOSP
From
Googler
Release
Android is an OSS stack
* OSS : Open Source Software
AOSP 관리에 사용되는 도구
● git : Android를 구성하는 각 프로젝트의 VCS
● repo : 프로젝트들의 repository를 통합 관리
● gerrit : web 기반 소스코드 리뷰 시스템
컨트리뷰션 프로세스
소스 다운로드gerrit 설정
목표 설정
패치 작성
패치 업로드 Merged / Abandoned
Commented
리뷰
gerrit 설정
구글 계정으로 로그인
https://android-review.googlesource.com/#/
Contributor agreement에 동의
HTTP password 획득, ~/.netrc 설정
gerrit 설정 - contributor agreement
gerrit 설정 - contributor agreement
gerrit 설정 - contributor agreement
gerrit 설정 - contributor agreement
Gerrit 설정 - HTTP password
Gerrit 설정 - HTTP password
Gerrit 설정 - HTTP password
소스 다운로드
$ repo init -u 
https://android.googlesource.com/platform/manifest
$ repo sync
repo init
● .repo 디렉토리 구성
● 최신 repo 다운로드
● 전체 프로젝트 작업디렉토리 구성 매니페스
트 다운로드/설정
repo init
.repo/manifest.xml
repo sync
● 각 project 를 clone, 작업 directory 구성
● manifest 설정대로 remote.aosp 설정
● git hook 설치
목표 설정
버그 레포트 페이지
http://code.google.com/p/android/issues/list
토론의 장
https://groups.google.com/forum/?fromgroups#!
forum/android-contrib
수정사항 만들기
Topic branch
$ repo start <branch_name> <project path>
코드 스타일 가이드라인
http://s.android.com/source/code-style.html
수정사항 만들기
소스 수정은 각자 편한대로.
(취향입니다. 존중해 주시죠?)
패치 업로드
push 대신 repo upload
$ git add -A
$ git commit -s
$ repo upload
Review process
Review process
Need Verification, approval
Add reviewer
리뷰어를 잘 골라야 진행이 편합니다.
git log 또는 gerrit 기록을 참고, 리뷰어 선택
패치 내용 수정하기
패치에 실수가 있었거나, 수정을 권고받으면?
$ git commit --amend
$ repo upload
패치 내용 수정하기
요점은 Change-ID
패치 내용 수정하기
repo가 설치한 commit-msg hook이 생성
패치 내용 수정하기
결국, Change-ID는,
"""tree 8bc51ccbccd3f90c131b1acd747bf869c2d569d4
parent f26d9d5884339dc450831dd453bbb77b4e77d9e5
author SeongJae Park <sj38.park@gmail.com> 1336637344 +0900
committer SeongJae Park <sj38.park@gmail.com> 1336637344 +0900
Test for devFestX"""
의 SHA-1
Summary
소스 다운로드
repo init -u ...
repo sync
목표 설정
패치 작성
repo start
패치 업로드
git add -A
git commit [--amend]
repo upload
Merged / Abandoned
Commented
리뷰
gerrit 설정
Thank you
References
http://s.android.com/
https://android-review.googlesource.
com/Documentation/index.html
http://code.google.com/p/gerrit/
http://code.google.com/p/gource/
AOSP에 컨트리뷰션 하기   dev festx korea 2012 presentation

Más contenido relacionado

Similar a AOSP에 컨트리뷰션 하기 dev festx korea 2012 presentation

[2020 컨트리뷰톤] 대구에서 리브레오피스(LibreOffice)의 소스코드 개발, 빌드, 제출, 검토(리뷰)하기 등을 소개
[2020 컨트리뷰톤] 대구에서 리브레오피스(LibreOffice)의 소스코드 개발, 빌드, 제출, 검토(리뷰)하기 등을 소개[2020 컨트리뷰톤] 대구에서 리브레오피스(LibreOffice)의 소스코드 개발, 빌드, 제출, 검토(리뷰)하기 등을 소개
[2020 컨트리뷰톤] 대구에서 리브레오피스(LibreOffice)의 소스코드 개발, 빌드, 제출, 검토(리뷰)하기 등을 소개DaeHyun Sung
 
[컨트리뷰톤 2020] 리브레오피스(LibreOffice)의 QA 및 소스 코드 리뷰
[컨트리뷰톤 2020] 리브레오피스(LibreOffice)의 QA 및 소스 코드 리뷰[컨트리뷰톤 2020] 리브레오피스(LibreOffice)의 QA 및 소스 코드 리뷰
[컨트리뷰톤 2020] 리브레오피스(LibreOffice)의 QA 및 소스 코드 리뷰DaeHyun Sung
 
JBoss EAP on Azure
JBoss EAP on Azure JBoss EAP on Azure
JBoss EAP on Azure rockplace
 
공간정보아카데미 - Day1 오픈소스개발 일반
공간정보아카데미 - Day1 오픈소스개발 일반공간정보아카데미 - Day1 오픈소스개발 일반
공간정보아카데미 - Day1 오픈소스개발 일반BJ Jang
 
Red Hat Openshift Container Platform
Red Hat Openshift Container Platform Red Hat Openshift Container Platform
Red Hat Openshift Container Platform rockplace
 
[2020 컨트리뷰톤] 리브레오피스(LibreOffice)의 소스코드 개발, 빌드, 제출, 검토(리뷰)하기 등을 소개
[2020 컨트리뷰톤] 리브레오피스(LibreOffice)의 소스코드 개발, 빌드, 제출, 검토(리뷰)하기 등을 소개[2020 컨트리뷰톤] 리브레오피스(LibreOffice)의 소스코드 개발, 빌드, 제출, 검토(리뷰)하기 등을 소개
[2020 컨트리뷰톤] 리브레오피스(LibreOffice)의 소스코드 개발, 빌드, 제출, 검토(리뷰)하기 등을 소개DaeHyun Sung
 
개알못의 오픈소스이야기 - 이상준님
개알못의 오픈소스이야기 - 이상준님개알못의 오픈소스이야기 - 이상준님
개알못의 오픈소스이야기 - 이상준님NAVER D2
 
오픈소스 개발참여한 이야기 (NIPA 오픈프론티어 3기 송태웅)
오픈소스 개발참여한 이야기 (NIPA 오픈프론티어 3기 송태웅)오픈소스 개발참여한 이야기 (NIPA 오픈프론티어 3기 송태웅)
오픈소스 개발참여한 이야기 (NIPA 오픈프론티어 3기 송태웅)Taeung Song
 
N02 app engineseminar
N02 app engineseminarN02 app engineseminar
N02 app engineseminarSun-Jin Jang
 
Yobi-hands-on-lab-at-d2fest
Yobi-hands-on-lab-at-d2festYobi-hands-on-lab-at-d2fest
Yobi-hands-on-lab-at-d2festinsanehong Kim
 
[D2 fest 2014]yobi hands on lab
[D2 fest 2014]yobi hands on lab[D2 fest 2014]yobi hands on lab
[D2 fest 2014]yobi hands on labNAVER D2
 
Open source engineering - 0.1
Open source engineering - 0.1Open source engineering - 0.1
Open source engineering - 0.1YoungSu Son
 
137 deview
137 deview137 deview
137 deviewNAVER D2
 
Popular Convention 개발기
Popular Convention 개발기Popular Convention 개발기
Popular Convention 개발기JeongHun Byeon
 
LetsSwift(강민규스피커,안정민서포터).pptx
LetsSwift(강민규스피커,안정민서포터).pptxLetsSwift(강민규스피커,안정민서포터).pptx
LetsSwift(강민규스피커,안정민서포터).pptxssuser2601f7
 
20221131_레츠스위프트_2022_iOS개발에서_알아두면_좋은것들.pdf
20221131_레츠스위프트_2022_iOS개발에서_알아두면_좋은것들.pdf20221131_레츠스위프트_2022_iOS개발에서_알아두면_좋은것들.pdf
20221131_레츠스위프트_2022_iOS개발에서_알아두면_좋은것들.pdf정민 안
 
Envoy 를 이용한 코드 배포 자동화
Envoy 를 이용한 코드 배포 자동화Envoy 를 이용한 코드 배포 자동화
Envoy 를 이용한 코드 배포 자동화Juwon Kim
 

Similar a AOSP에 컨트리뷰션 하기 dev festx korea 2012 presentation (20)

Portfolio
PortfolioPortfolio
Portfolio
 
[2020 컨트리뷰톤] 대구에서 리브레오피스(LibreOffice)의 소스코드 개발, 빌드, 제출, 검토(리뷰)하기 등을 소개
[2020 컨트리뷰톤] 대구에서 리브레오피스(LibreOffice)의 소스코드 개발, 빌드, 제출, 검토(리뷰)하기 등을 소개[2020 컨트리뷰톤] 대구에서 리브레오피스(LibreOffice)의 소스코드 개발, 빌드, 제출, 검토(리뷰)하기 등을 소개
[2020 컨트리뷰톤] 대구에서 리브레오피스(LibreOffice)의 소스코드 개발, 빌드, 제출, 검토(리뷰)하기 등을 소개
 
[컨트리뷰톤 2020] 리브레오피스(LibreOffice)의 QA 및 소스 코드 리뷰
[컨트리뷰톤 2020] 리브레오피스(LibreOffice)의 QA 및 소스 코드 리뷰[컨트리뷰톤 2020] 리브레오피스(LibreOffice)의 QA 및 소스 코드 리뷰
[컨트리뷰톤 2020] 리브레오피스(LibreOffice)의 QA 및 소스 코드 리뷰
 
JBoss EAP on Azure
JBoss EAP on Azure JBoss EAP on Azure
JBoss EAP on Azure
 
공간정보아카데미 - Day1 오픈소스개발 일반
공간정보아카데미 - Day1 오픈소스개발 일반공간정보아카데미 - Day1 오픈소스개발 일반
공간정보아카데미 - Day1 오픈소스개발 일반
 
Red Hat Openshift Container Platform
Red Hat Openshift Container Platform Red Hat Openshift Container Platform
Red Hat Openshift Container Platform
 
[2020 컨트리뷰톤] 리브레오피스(LibreOffice)의 소스코드 개발, 빌드, 제출, 검토(리뷰)하기 등을 소개
[2020 컨트리뷰톤] 리브레오피스(LibreOffice)의 소스코드 개발, 빌드, 제출, 검토(리뷰)하기 등을 소개[2020 컨트리뷰톤] 리브레오피스(LibreOffice)의 소스코드 개발, 빌드, 제출, 검토(리뷰)하기 등을 소개
[2020 컨트리뷰톤] 리브레오피스(LibreOffice)의 소스코드 개발, 빌드, 제출, 검토(리뷰)하기 등을 소개
 
개알못의 오픈소스이야기 - 이상준님
개알못의 오픈소스이야기 - 이상준님개알못의 오픈소스이야기 - 이상준님
개알못의 오픈소스이야기 - 이상준님
 
오픈소스 개발참여한 이야기 (NIPA 오픈프론티어 3기 송태웅)
오픈소스 개발참여한 이야기 (NIPA 오픈프론티어 3기 송태웅)오픈소스 개발참여한 이야기 (NIPA 오픈프론티어 3기 송태웅)
오픈소스 개발참여한 이야기 (NIPA 오픈프론티어 3기 송태웅)
 
11. git basic
11. git basic11. git basic
11. git basic
 
N02 app engineseminar
N02 app engineseminarN02 app engineseminar
N02 app engineseminar
 
Modern PHP
Modern PHPModern PHP
Modern PHP
 
Yobi-hands-on-lab-at-d2fest
Yobi-hands-on-lab-at-d2festYobi-hands-on-lab-at-d2fest
Yobi-hands-on-lab-at-d2fest
 
[D2 fest 2014]yobi hands on lab
[D2 fest 2014]yobi hands on lab[D2 fest 2014]yobi hands on lab
[D2 fest 2014]yobi hands on lab
 
Open source engineering - 0.1
Open source engineering - 0.1Open source engineering - 0.1
Open source engineering - 0.1
 
137 deview
137 deview137 deview
137 deview
 
Popular Convention 개발기
Popular Convention 개발기Popular Convention 개발기
Popular Convention 개발기
 
LetsSwift(강민규스피커,안정민서포터).pptx
LetsSwift(강민규스피커,안정민서포터).pptxLetsSwift(강민규스피커,안정민서포터).pptx
LetsSwift(강민규스피커,안정민서포터).pptx
 
20221131_레츠스위프트_2022_iOS개발에서_알아두면_좋은것들.pdf
20221131_레츠스위프트_2022_iOS개발에서_알아두면_좋은것들.pdf20221131_레츠스위프트_2022_iOS개발에서_알아두면_좋은것들.pdf
20221131_레츠스위프트_2022_iOS개발에서_알아두면_좋은것들.pdf
 
Envoy 를 이용한 코드 배포 자동화
Envoy 를 이용한 코드 배포 자동화Envoy 를 이용한 코드 배포 자동화
Envoy 를 이용한 코드 배포 자동화
 

Más de SeongJae Park

Biscuit: an operating system written in go
Biscuit:  an operating system written in goBiscuit:  an operating system written in go
Biscuit: an operating system written in goSeongJae Park
 
GCMA: Guaranteed Contiguous Memory Allocator
GCMA: Guaranteed Contiguous Memory AllocatorGCMA: Guaranteed Contiguous Memory Allocator
GCMA: Guaranteed Contiguous Memory AllocatorSeongJae Park
 
Linux Kernel Memory Model
Linux Kernel Memory ModelLinux Kernel Memory Model
Linux Kernel Memory ModelSeongJae Park
 
An Introduction to the Formalised Memory Model for Linux Kernel
An Introduction to the Formalised Memory Model for Linux KernelAn Introduction to the Formalised Memory Model for Linux Kernel
An Introduction to the Formalised Memory Model for Linux KernelSeongJae Park
 
Design choices of golang for high scalability
Design choices of golang for high scalabilityDesign choices of golang for high scalability
Design choices of golang for high scalabilitySeongJae Park
 
Brief introduction to kselftest
Brief introduction to kselftestBrief introduction to kselftest
Brief introduction to kselftestSeongJae Park
 
Understanding of linux kernel memory model
Understanding of linux kernel memory modelUnderstanding of linux kernel memory model
Understanding of linux kernel memory modelSeongJae Park
 
Let the contribution begin (EST futures)
Let the contribution begin  (EST futures)Let the contribution begin  (EST futures)
Let the contribution begin (EST futures)SeongJae Park
 
Porting golang development environment developed with golang
Porting golang development environment developed with golangPorting golang development environment developed with golang
Porting golang development environment developed with golangSeongJae Park
 
gcma: guaranteed contiguous memory allocator
gcma:  guaranteed contiguous memory allocatorgcma:  guaranteed contiguous memory allocator
gcma: guaranteed contiguous memory allocatorSeongJae Park
 
An introduction to_golang.avi
An introduction to_golang.aviAn introduction to_golang.avi
An introduction to_golang.aviSeongJae Park
 
Develop Android/iOS app using golang
Develop Android/iOS app using golangDevelop Android/iOS app using golang
Develop Android/iOS app using golangSeongJae Park
 
Develop Android app using Golang
Develop Android app using GolangDevelop Android app using Golang
Develop Android app using GolangSeongJae Park
 
Sw install with_without_docker
Sw install with_without_dockerSw install with_without_docker
Sw install with_without_dockerSeongJae Park
 
Git inter-snapshot public
Git  inter-snapshot publicGit  inter-snapshot public
Git inter-snapshot publicSeongJae Park
 
(Live) build and run golang web server on android.avi
(Live) build and run golang web server on android.avi(Live) build and run golang web server on android.avi
(Live) build and run golang web server on android.aviSeongJae Park
 
Deep dark-side of git: How git works internally
Deep dark-side of git: How git works internallyDeep dark-side of git: How git works internally
Deep dark-side of git: How git works internallySeongJae Park
 
Deep dark side of git - prologue
Deep dark side of git - prologueDeep dark side of git - prologue
Deep dark side of git - prologueSeongJae Park
 
DO YOU WANT TO USE A VCS
DO YOU WANT TO USE A VCSDO YOU WANT TO USE A VCS
DO YOU WANT TO USE A VCSSeongJae Park
 
Experimental android hacking using reflection
Experimental android hacking using reflectionExperimental android hacking using reflection
Experimental android hacking using reflectionSeongJae Park
 

Más de SeongJae Park (20)

Biscuit: an operating system written in go
Biscuit:  an operating system written in goBiscuit:  an operating system written in go
Biscuit: an operating system written in go
 
GCMA: Guaranteed Contiguous Memory Allocator
GCMA: Guaranteed Contiguous Memory AllocatorGCMA: Guaranteed Contiguous Memory Allocator
GCMA: Guaranteed Contiguous Memory Allocator
 
Linux Kernel Memory Model
Linux Kernel Memory ModelLinux Kernel Memory Model
Linux Kernel Memory Model
 
An Introduction to the Formalised Memory Model for Linux Kernel
An Introduction to the Formalised Memory Model for Linux KernelAn Introduction to the Formalised Memory Model for Linux Kernel
An Introduction to the Formalised Memory Model for Linux Kernel
 
Design choices of golang for high scalability
Design choices of golang for high scalabilityDesign choices of golang for high scalability
Design choices of golang for high scalability
 
Brief introduction to kselftest
Brief introduction to kselftestBrief introduction to kselftest
Brief introduction to kselftest
 
Understanding of linux kernel memory model
Understanding of linux kernel memory modelUnderstanding of linux kernel memory model
Understanding of linux kernel memory model
 
Let the contribution begin (EST futures)
Let the contribution begin  (EST futures)Let the contribution begin  (EST futures)
Let the contribution begin (EST futures)
 
Porting golang development environment developed with golang
Porting golang development environment developed with golangPorting golang development environment developed with golang
Porting golang development environment developed with golang
 
gcma: guaranteed contiguous memory allocator
gcma:  guaranteed contiguous memory allocatorgcma:  guaranteed contiguous memory allocator
gcma: guaranteed contiguous memory allocator
 
An introduction to_golang.avi
An introduction to_golang.aviAn introduction to_golang.avi
An introduction to_golang.avi
 
Develop Android/iOS app using golang
Develop Android/iOS app using golangDevelop Android/iOS app using golang
Develop Android/iOS app using golang
 
Develop Android app using Golang
Develop Android app using GolangDevelop Android app using Golang
Develop Android app using Golang
 
Sw install with_without_docker
Sw install with_without_dockerSw install with_without_docker
Sw install with_without_docker
 
Git inter-snapshot public
Git  inter-snapshot publicGit  inter-snapshot public
Git inter-snapshot public
 
(Live) build and run golang web server on android.avi
(Live) build and run golang web server on android.avi(Live) build and run golang web server on android.avi
(Live) build and run golang web server on android.avi
 
Deep dark-side of git: How git works internally
Deep dark-side of git: How git works internallyDeep dark-side of git: How git works internally
Deep dark-side of git: How git works internally
 
Deep dark side of git - prologue
Deep dark side of git - prologueDeep dark side of git - prologue
Deep dark side of git - prologue
 
DO YOU WANT TO USE A VCS
DO YOU WANT TO USE A VCSDO YOU WANT TO USE A VCS
DO YOU WANT TO USE A VCS
 
Experimental android hacking using reflection
Experimental android hacking using reflectionExperimental android hacking using reflection
Experimental android hacking using reflection
 

AOSP에 컨트리뷰션 하기 dev festx korea 2012 presentation