SlideShare une entreprise Scribd logo
1  sur  40
Télécharger pour lire hors ligne
Contributing
opensource developer
(오픈소스 개발 참여한 이야기)
d
Use Linux kernel as an example
NIPA Open Frontier Lab
Taeung Song
treeze.taeung@gmail.com
2016-03-17
Speaker
송태웅 (Taeung Song, https://github.com/taeung)
2016 NIPA Open Frontier Lab 3 기
2015 Linux kernel - perf 프로젝트 contributor 활동 중
2014 ( 주 ) XS 선임연구원 ( 네트워크 , 서버 , ARM, etc.)
2013 NIPA 창의도전형 R&D 2 기
2012 NIPA SW Maestro 3 기
2011 ( 주 ) MTOME 개발연구원 ( 임베디드 , WinAPI)
Open Frontier Lab
공개 SW 개발자 센터 (http://devlab.oss.kr/)
Purpose 발표의 취지
오픈소스의 중요성까지는 알겠지만 ..
오픈소스 개발 패러다임을 모르거나
시작하고싶은데 진입장벽에 봉착한 분들
오픈소스 컨트리뷰션을 왜하는지 ?
하면 어떤방식으로 하는지 ?
To conclude 결론 부터 말하자면
오픈소스 컨트리뷰션을 왜하는지 ?
하면 어떤방식으로 하는지 ?
새로운 개발방식을 익히기위해 ( 오픈소스 개발방식 )
새로운 개발방식으로 .. ( 오픈소스 개발방식 )
To conclude 결론 부터 말하자면
새로운 개발방식 이란 ? ( 오픈소스개발방식 )
오픈소스 개발 방식의 특징 ( 사견 )
뒤에 이어서 설명
✔ 갑으로 시작해서 을 , 병 , 정 , 무 , 기 .. 로 끝나지 않고
✔ 개발자로 시작해서 개발자로 끝난다
✔ 코드도 모르면서 말만하는 팀장 / 사장 없다
✔ 소스를 공개하면서 비가시성의 상당한 문제 극복
✔ 집단지성을 활용한 비대한 발전
✔ 자본주의 사회에서 돈도 안되는 오픈소스가 소프트웨어의 역사를 이끄는 이유
Contents
현재 참여하는
오픈소스 소개
오픈소스 참여 계기 오픈소스 활동 이력 여러가지
오픈소스
컨트리뷰션
작전
앞으로의 길
Linux kernel – perf 현재 참여하는 오픈소스 소개
현재 참여하는
오픈소스 소개
오픈소스 참여 계기 오픈소스 활동 이력 여러가지
오픈소스
컨트리뷰션
작전
앞으로의 길
Linux kernel – Perf 현재 참여하는 오픈소스 소개
1) Linux 기반 성능분석 도구 perf (2009)
2) 커널 또는 특정 프로그램 (perf 로 알 수 있는것들 )
“ 특정 프로그램 또는 시스템 전반적으로 성능분석”
Events(Cpu-cycles, system call, cache-misses, page-faults, context-switch) 가
언제 / 얼마나 / 어떻게 발생 되었는지를 살펴보는것이다
✔ 어느함수가 cpu 를 많이 잡아먹는지 ?
✔ 어느코드부분이 메모리할당을 얼마나 하는지 ?
✔ cache-misses 가 어떤 코드 부분 때문에 발생하는지 ?
✔ 특정 커널 함수가 불려지는지 혹은 얼마나 불려지는지 ?
Perf 도구 간단한 예제로 알아보기
예시 ) Taeung_Program 분석
# perf record Taeung_Program ^c ( 성능정보수집 )
# perf report ( 성능정보 통계출력 )
# ./Taeung_Program
# perf top (record+report)
< 그림 1> perf top ‘에서 Taeung_Program’ 선택시
Perf 도구 간단한 예제로 알아보기
예시 ) Taeung_Program 분석
특정 프로그램 함수 (main) 에 대한 assembly code 단위 분석
< 그림 2> perf top 에서 annotate 기능으로 어셈블리 코드
Perf 도구 perf 의 장점 및 특징
✔ 특징
✔ 장점
'Performance counters' 라는 HW registers 를 기반
커널 및 프로그램의 감속 없이
Profiling 을 위한 Target 프로그램 재컴파일 없이
프로그래밍 언어 종속적이지 않게
커널버전에 따른 각 버전이 존재 (kernel 코드와 함께 개발 )
C program (user space) (Linux kernel 소스의 tools/perf 경로 )
Command line tool
* 공식 Linux kernel – perf 저장소 : http://git.kernel.org/cgit/linux/kernel/git/tip/tip.git
현재 참여하는
오픈소스 소개
오픈소스 참여 계기 오픈소스 활동 이력 여러가지
오픈소스
컨트리뷰션
작전
앞으로의 길
Motivation 오픈소스개발에 참여한 계기
Motivation 오픈소스개발에 참여한 계기
개인적인 개발실력에 대한 의문 / 생각 ( 졸업 전 )
개발자 ? 이것저것 조합하는 유저 ?
Core 개발자 , 프로 개발자가 되고싶은 마음
내가만든 프로그램 , 제품이 내가만든것인가 ?
Motivation 가내 하고싶은 SW 찾기
졸업 후 첫 회사 다니면서 고민 / 생각
Low level, system 분야의 관심 → ( 주 ) XS
순수한 (?) 소프트웨어 vs 업무 및 제품 의존적인 소프트웨어
Web (frontend, backend), AngularJS, Django, Jquery, Bootstrap
ARM, Linux porting, L4/Fiacso, QT/C++, Ncurses
NAS(Network Attached Storage), bash, python
시스템 소프트웨어 개발에 관심 ( 커널모듈 , 데몬 , Utility, syscall)
Motivation 오픈소스 개발의 시작
회사내의 오픈소스 참여기회
회사업무로 인해 → L4/Fiasco → Mailing List 경험
Porting & Device Driver 관련 가이드 문서공유 ( 첫 오픈소스 기여 )
< 그림 3> l4-hackers 메일링리스트에 공유한 Device driver & Porting 가이드 문서
Motivation 오픈소스 개발의 시작
회사외의 오픈소스 참여시도
오픈소스 분석 목적 스터디 , 국내 kernel 커미터 contact
무산됨 , 더딘진행 , 진입장벽 난관에 봉착
소스 읽고 이해해보고 , perf 소개 강의도 듣고
스터디에서 perf 분석시작
C 문법은 알지만 Source Reading 의 어려움
현재 참여하는
오픈소스 소개
오픈소스 참여 계기 오픈소스 활동 이력 여러가지
오픈소스
컨트리뷰션
작전
앞으로의 길
Contribution 오픈소스 활동 이력
Contribution 첫 PATCH 작업 (perf)
 처음 적용된 Bug fix 기여 perf tools: Modify error code for when perf_session__new() fails
< 그림 4> 첫 commit 정보 스크린샷
Contribution 지속적인 기여활동 (perf)
perf-config 가관련 기능추 기여 (2 개 commit 적용 )
 perf-config subcommand 가기능추 완료
 perf-config Document 가추 완료
 perf-config 의 get, set 가기능추 중
 perf-config options (list, list-all, remove, skel, system, user 등 ) 가추 중
toggle zeroing of samples 가기능추 기여 (1 개 commit 적용 )
 perf top 실행 중 zeroing of samples 기능에 toggle 가버튼 추 작업 완료
Bug fix 기여 (6 개 commit 적용 )
 perf_session__new() 실패 시 에러처리 완료
 perf subcommands (mem, kvm, report, kmem, inject) 도중 에러처리 완료
 perf_session__delete() 수행안하는 부분 수정보완 완료
더디고 느리지만 계속해서
Contributor 로 활동 진행
Contribution 활동 이력 (perf)
 perf-config 가관련 기능추 기여 (2 개 commit 완료 / 22 개 patchset 계속진행중 )
< 그림 5> perf-config 의 usage message
Contribution 활동 이력
< 그림 6> perf-config 가관련 기능추 24 개 patchset cover letter
Contribution 활동 이력 (perf)
Contribution 활동 이력
< 그림 7> 최근 적용된 perf-config 명령 , doc 2 개의 커밋관련 메일
Contribution 활동 이력 (perf)
Contribution 활동 이력Contribution 활동 이력 (perf)
Linux kernel – perf 정식 git ‘저장소 tip’
Maintainer : Arnaldo, Ingo, Jiri, 김남형
https://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git
< 그림 8> 리눅스 커널 perf 정식 git 저장소에 적용된 commit 정보 (2014-2015)
Contribution 활동 이력Contribution 활동 이력 (perf)
< 그림 9> 최근 리눅스 커널 perf 정식 git 저장소에 적용된 commit 정보
현재 참여하는
오픈소스 소개
오픈소스 참여 계기 오픈소스 활동 이력 여러가지
오픈소스
컨트리뷰션
작전
앞으로의 길
Opensource Linux kernel 이외의 다른 오픈소스
Opensource Linux kernel 이외의 다른 오픈소스
< 그림 10> 전세계 각종 오픈소스 통계 사이트 (https://www.openhub.net/)
Opensource Linux kernel 이외의 다른 오픈소스
< 그림 11> 오픈소스 커미터 개인별 통계 뷰 (https://www.openhub.net/accounts/namhyung)
Opensource Github / Not Github
- Node.js (https://github.com/nodejs/node)
- Angular.js (https://github.com/angular/angular.js)
- Spring-boot (https://github.com/spring-projects/spring-boot)
- Rust (https://github.com/rust-lang/rust)
- Redis (https://github.com/antirez/redis)
- Flask (https://github.com/mitsuhiko/flask)
…
- Apache (http://git.apache.org)
- Linux kernel (http://git.kernel.org)
- GNU (http://git.savannah.gnu.org/cgit/)
- Webkit (git://git.webkit.org/WebKit.git)
…
Github
Not Github
Opensource 유망 오픈소스 정리자료
< 그림 11> 유망 오픈소스 정리 PDF (http://www.oss.kr/oss_repository12/103649)
OSS 에서 정리한 전세계 유망 오픈소스 정리 자료 (2013 기준 )
Opensource 가내 참여할 오픈소스 찾기 ? (IMHO)
졸업 이후 3~5 년 안에 한 분야 만큼은 전문성을 지녀야한다고봄 ( 준 전문가 ?)
하나의 분야에 대한 선택이 필요 ( 메타인지 필요 )
1) Big data
2) OS (memory, device driver, sched, network, FS etc.)
3) Embedded (RTOS, firmware, etc.)
4) Web (frontend, backend)
5) Web brower
6) Cloud, Paas, Baas, etc
7) Language, Compiler (Rust, Go, etc.)
8) AI
9) X-window system (Gnome, KDE, Unity, Xfce, etc.)
10) Tools (eclipse, IDE, git, etc.)
11) Application (mobile, PC, embedded, etc.)
...
Opensource 가내 참여할 오픈소스 찾기 ? (IMHO)
하나의 분야에 대한 선택작전 ( 진입장벽 부수기 )
✔ 구글링을 통한 주체적인 선택 ( 능력자들 )
✔ 오픈소스 분석 스터디 그룹활동 ( 분야선택 , source reading, etc)
✔ 해당 분야를 하는 회사에 실무경험 쌓기 ( 회사일과 오픈소스병행 )
Opensource 가내 참여할 오픈소스 찾기 ? (IMHO)
하나의 분야에 대한 선택작전 ( 진입장벽 부수기 )
✔ 구글링을 통한 주체적인 선택 ( 능력자들 )
✔ 오픈소스 분석 스터디 그룹활동 ( 분야선택 , source reading, etc)
✔ 해당 분야를 하는 회사에 실무경험 쌓기 ( 회사일과 오픈소스병행 )
< tip: 프로젝트 별 간단정리 공유 (5 분 ) >
- 사용언어
- 총라인수 , 소스폴더 구조 (2-3 depth)
- 대표기능 1 개 시나리오 설명
- 소스받기→ ( 컴파일 / 세팅 ) → 실행 방법 ( 간단한 사용법 )
현재 참여하는
오픈소스 소개
오픈소스 참여 계기 오픈소스 활동 이력 여러가지
오픈소스
컨트리뷰션
작전
앞으로의 길
How to contribute 오픈소스 컨트리뷰션 작전 (IMHO)
How to contribute 오픈소스 컨트리뷰션 작전 (IMHO)
메인테이너가 쉽게받아줄거라
예상되는 PATCH/Pull-request 는 ? ( 사견 )
1 위 – Refactoring ( 가장 부담 zero)
2 위 – Bugfix ( 명확한 버그라면 )
3 위 – Documentation ( 첫 접근성은 좋으나 기술적인 description 이 문제 )
4 위 – Minor features
그 이후 new feature 나 core 부분은 신뢰가 필요하다고봄 ( 다수의 commits 필요 )
How to contribute 오픈소스 컨트리뷰션 작전 (IMHO)
가보통 어떻게 짜는 ? ( 문법다 안다고 좋은영작못하듯 )
작전 1) 시나리오 기반 Source Reading
작전 2) 오픈소스의 설계구조
질 좋은 오픈소스를 통한 나만의 소스 데이터베이스 필요
명확한 feature 이해 → 구현방식이해
(by navigator (ctags, cscope, intelij, eclipse, etc))
소스구조 공유 (http://aosabook.org/en/index.html)
좋은구조 , 좋은 Name, 간결한코드
현재 참여하는
오픈소스 소개
오픈소스 참여 계기 오픈소스 활동 이력 여러가지
오픈소스
컨트리뷰션
작전
앞으로의 길
Future plan 오픈소스에서의 앞으로의 목표
Future plan 오픈소스에서의 앞으로의 목표
1. Linux kernel 에대한 PATCH 작업 ( 기본실력쌓기 )
- perf : Bugfix, minor features, new features, etc.
- frace 등 기타 서브시스템에 대한 Bugfix 작업
2. 알고리즘 코딩훈련
- Knapsack, Quick-sort, Cheese, etc.
3. 커널 및 CS 관련 이론학습
- Tracing, Network, Memory, File System, etc.
올해 1 년간의 목표
Future plan 오픈소스에서의 앞으로의 목표
향후 목표와 방향
✔ Linux kernel Committer (@kernel.org, @apache.org 등의 위엄 )
✔ 개발자로서의 성장 ( 프로개발자 되기 , 오픈소스 개발패러다임에서의 실력자 )
✔ 오픈소스로 다져진 실력으로 취업 목표
Thanks

Contenu connexe

Tendances

파이썬 튜토리얼 (Python tutorial)
파이썬 튜토리얼 (Python tutorial)파이썬 튜토리얼 (Python tutorial)
파이썬 튜토리얼 (Python tutorial)민지 김
 
[H3 2012] 오픈소스로 개발 실력 쌓기
[H3 2012] 오픈소스로 개발 실력 쌓기[H3 2012] 오픈소스로 개발 실력 쌓기
[H3 2012] 오픈소스로 개발 실력 쌓기KTH, 케이티하이텔
 
파이썬 플라스크로 배우는 웹프로그래밍 #1 (ABCD Foundation)
파이썬 플라스크로 배우는 웹프로그래밍 #1 (ABCD Foundation)파이썬 플라스크로 배우는 웹프로그래밍 #1 (ABCD Foundation)
파이썬 플라스크로 배우는 웹프로그래밍 #1 (ABCD Foundation)성일 한
 
D2 CAMPUS FEST 2015 오리엔테이션
D2 CAMPUS FEST 2015 오리엔테이션D2 CAMPUS FEST 2015 오리엔테이션
D2 CAMPUS FEST 2015 오리엔테이션NAVER D2
 
파이썬을 배워야하는 이유 발표자료 - 김연수
파이썬을 배워야하는 이유 발표자료 - 김연수파이썬을 배워야하는 이유 발표자료 - 김연수
파이썬을 배워야하는 이유 발표자료 - 김연수Yeon Soo Kim
 
쫄지마,글로벌! 평범한 개발자의 좌충우돌 글로벌 오픈소스 도전하기
쫄지마,글로벌! 평범한 개발자의 좌충우돌 글로벌 오픈소스 도전하기쫄지마,글로벌! 평범한 개발자의 좌충우돌 글로벌 오픈소스 도전하기
쫄지마,글로벌! 평범한 개발자의 좌충우돌 글로벌 오픈소스 도전하기Sangmin Shim
 
학교에선 알려주지 않는 오픈소스이야기 - 박치완님
학교에선 알려주지 않는 오픈소스이야기 - 박치완님학교에선 알려주지 않는 오픈소스이야기 - 박치완님
학교에선 알려주지 않는 오픈소스이야기 - 박치완님NAVER D2
 
Git는 머꼬? GitHub는 또 머지?
Git는 머꼬? GitHub는 또 머지?Git는 머꼬? GitHub는 또 머지?
Git는 머꼬? GitHub는 또 머지?Ian Choi
 
파이썬(Python) 소개
파이썬(Python) 소개파이썬(Python) 소개
파이썬(Python) 소개Jin wook
 
[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
 
[111]open, share, enjoy 네이버의 오픈소스 활동
[111]open, share, enjoy 네이버의 오픈소스 활동[111]open, share, enjoy 네이버의 오픈소스 활동
[111]open, share, enjoy 네이버의 오픈소스 활동NAVER D2
 
D2 CAMPUS FEST 2015 오리엔테이션 session1
D2 CAMPUS FEST 2015 오리엔테이션 session1D2 CAMPUS FEST 2015 오리엔테이션 session1
D2 CAMPUS FEST 2015 오리엔테이션 session1NAVER D2
 
[스프링 캠프 2014] 내가 파이썬을 선택한 이유
[스프링 캠프 2014] 내가 파이썬을 선택한 이유[스프링 캠프 2014] 내가 파이썬을 선택한 이유
[스프링 캠프 2014] 내가 파이썬을 선택한 이유Yunseok Choi
 
[D2 fest 2014]개발자와 오픈소스(git기반 협업모델 소개)
[D2 fest 2014]개발자와 오픈소스(git기반 협업모델 소개)[D2 fest 2014]개발자와 오픈소스(git기반 협업모델 소개)
[D2 fest 2014]개발자와 오픈소스(git기반 협업모델 소개)NAVER D2
 
Github 으로 학교 팀 프로젝트 하기
Github 으로 학교 팀 프로젝트 하기Github 으로 학교 팀 프로젝트 하기
Github 으로 학교 팀 프로젝트 하기nexusz99
 
devon2013: 사내Git저장소개발사례
devon2013: 사내Git저장소개발사례devon2013: 사내Git저장소개발사례
devon2013: 사내Git저장소개발사례Daehyun Kim
 
Django로 배우는 쉽고 빠른 웹개발 study 자료
Django로 배우는 쉽고 빠른 웹개발 study 자료Django로 배우는 쉽고 빠른 웹개발 study 자료
Django로 배우는 쉽고 빠른 웹개발 study 자료Han Sung Kim
 
GitHub Pull Request 간단 사용 설명서
GitHub Pull Request 간단 사용 설명서GitHub Pull Request 간단 사용 설명서
GitHub Pull Request 간단 사용 설명서jungseob shin
 
Go로 새 프로젝트 시작하기
Go로 새 프로젝트 시작하기Go로 새 프로젝트 시작하기
Go로 새 프로젝트 시작하기Joonsung Lee
 

Tendances (19)

파이썬 튜토리얼 (Python tutorial)
파이썬 튜토리얼 (Python tutorial)파이썬 튜토리얼 (Python tutorial)
파이썬 튜토리얼 (Python tutorial)
 
[H3 2012] 오픈소스로 개발 실력 쌓기
[H3 2012] 오픈소스로 개발 실력 쌓기[H3 2012] 오픈소스로 개발 실력 쌓기
[H3 2012] 오픈소스로 개발 실력 쌓기
 
파이썬 플라스크로 배우는 웹프로그래밍 #1 (ABCD Foundation)
파이썬 플라스크로 배우는 웹프로그래밍 #1 (ABCD Foundation)파이썬 플라스크로 배우는 웹프로그래밍 #1 (ABCD Foundation)
파이썬 플라스크로 배우는 웹프로그래밍 #1 (ABCD Foundation)
 
D2 CAMPUS FEST 2015 오리엔테이션
D2 CAMPUS FEST 2015 오리엔테이션D2 CAMPUS FEST 2015 오리엔테이션
D2 CAMPUS FEST 2015 오리엔테이션
 
파이썬을 배워야하는 이유 발표자료 - 김연수
파이썬을 배워야하는 이유 발표자료 - 김연수파이썬을 배워야하는 이유 발표자료 - 김연수
파이썬을 배워야하는 이유 발표자료 - 김연수
 
쫄지마,글로벌! 평범한 개발자의 좌충우돌 글로벌 오픈소스 도전하기
쫄지마,글로벌! 평범한 개발자의 좌충우돌 글로벌 오픈소스 도전하기쫄지마,글로벌! 평범한 개발자의 좌충우돌 글로벌 오픈소스 도전하기
쫄지마,글로벌! 평범한 개발자의 좌충우돌 글로벌 오픈소스 도전하기
 
학교에선 알려주지 않는 오픈소스이야기 - 박치완님
학교에선 알려주지 않는 오픈소스이야기 - 박치완님학교에선 알려주지 않는 오픈소스이야기 - 박치완님
학교에선 알려주지 않는 오픈소스이야기 - 박치완님
 
Git는 머꼬? GitHub는 또 머지?
Git는 머꼬? GitHub는 또 머지?Git는 머꼬? GitHub는 또 머지?
Git는 머꼬? GitHub는 또 머지?
 
파이썬(Python) 소개
파이썬(Python) 소개파이썬(Python) 소개
파이썬(Python) 소개
 
[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
 
[111]open, share, enjoy 네이버의 오픈소스 활동
[111]open, share, enjoy 네이버의 오픈소스 활동[111]open, share, enjoy 네이버의 오픈소스 활동
[111]open, share, enjoy 네이버의 오픈소스 활동
 
D2 CAMPUS FEST 2015 오리엔테이션 session1
D2 CAMPUS FEST 2015 오리엔테이션 session1D2 CAMPUS FEST 2015 오리엔테이션 session1
D2 CAMPUS FEST 2015 오리엔테이션 session1
 
[스프링 캠프 2014] 내가 파이썬을 선택한 이유
[스프링 캠프 2014] 내가 파이썬을 선택한 이유[스프링 캠프 2014] 내가 파이썬을 선택한 이유
[스프링 캠프 2014] 내가 파이썬을 선택한 이유
 
[D2 fest 2014]개발자와 오픈소스(git기반 협업모델 소개)
[D2 fest 2014]개발자와 오픈소스(git기반 협업모델 소개)[D2 fest 2014]개발자와 오픈소스(git기반 협업모델 소개)
[D2 fest 2014]개발자와 오픈소스(git기반 협업모델 소개)
 
Github 으로 학교 팀 프로젝트 하기
Github 으로 학교 팀 프로젝트 하기Github 으로 학교 팀 프로젝트 하기
Github 으로 학교 팀 프로젝트 하기
 
devon2013: 사내Git저장소개발사례
devon2013: 사내Git저장소개발사례devon2013: 사내Git저장소개발사례
devon2013: 사내Git저장소개발사례
 
Django로 배우는 쉽고 빠른 웹개발 study 자료
Django로 배우는 쉽고 빠른 웹개발 study 자료Django로 배우는 쉽고 빠른 웹개발 study 자료
Django로 배우는 쉽고 빠른 웹개발 study 자료
 
GitHub Pull Request 간단 사용 설명서
GitHub Pull Request 간단 사용 설명서GitHub Pull Request 간단 사용 설명서
GitHub Pull Request 간단 사용 설명서
 
Go로 새 프로젝트 시작하기
Go로 새 프로젝트 시작하기Go로 새 프로젝트 시작하기
Go로 새 프로젝트 시작하기
 

En vedette

초급 개발자 탈출
초급 개발자 탈출초급 개발자 탈출
초급 개발자 탈출JeongHun Byeon
 
손코딩뇌컴파일눈디버깅을 소개합니다.
손코딩뇌컴파일눈디버깅을 소개합니다.손코딩뇌컴파일눈디버깅을 소개합니다.
손코딩뇌컴파일눈디버깅을 소개합니다.Kwangsung Ha
 
게임 프로그래밍 기초 공부법
게임 프로그래밍 기초 공부법게임 프로그래밍 기초 공부법
게임 프로그래밍 기초 공부법Chris Ohk
 
[0119 박민근] 기술 면접시 자주 나오는 문제들(ver 2013)
[0119 박민근] 기술 면접시 자주 나오는 문제들(ver 2013)[0119 박민근] 기술 면접시 자주 나오는 문제들(ver 2013)
[0119 박민근] 기술 면접시 자주 나오는 문제들(ver 2013)MinGeun Park
 
소프트웨어 개발자 로드맵
소프트웨어 개발자 로드맵소프트웨어 개발자 로드맵
소프트웨어 개발자 로드맵중선 곽
 
이제 막 웹개발자 되고싶은 분들께
이제 막 웹개발자 되고싶은 분들께이제 막 웹개발자 되고싶은 분들께
이제 막 웹개발자 되고싶은 분들께지수 윤
 
Enlightenment Open Source Contribution (KOR) - 실전! Enlightenment 오픈소스 컨트리뷰션
Enlightenment Open Source Contribution (KOR) - 실전! Enlightenment 오픈소스 컨트리뷰션Enlightenment Open Source Contribution (KOR) - 실전! Enlightenment 오픈소스 컨트리뷰션
Enlightenment Open Source Contribution (KOR) - 실전! Enlightenment 오픈소스 컨트리뷰션Daniel Juyung Seo
 
오픈 소스로 취업하기: 나는 어떻게 오픈 소스를 하다 렘 개발자가 되었나?
오픈 소스로 취업하기: 나는 어떻게 오픈 소스를 하다 렘 개발자가 되었나?오픈 소스로 취업하기: 나는 어떻게 오픈 소스를 하다 렘 개발자가 되었나?
오픈 소스로 취업하기: 나는 어떻게 오픈 소스를 하다 렘 개발자가 되었나?Leonardo YongUk Kim
 
프로그래머가 되고 싶으세요
프로그래머가 되고 싶으세요프로그래머가 되고 싶으세요
프로그래머가 되고 싶으세요Chris Ohk
 
KeyValuePair 첫 모임 - XP와 Pair programming
KeyValuePair 첫 모임 - XP와 Pair programmingKeyValuePair 첫 모임 - XP와 Pair programming
KeyValuePair 첫 모임 - XP와 Pair programmingJaewon Choi
 
Rhea mmo node_for_share
Rhea mmo node_for_shareRhea mmo node_for_share
Rhea mmo node_for_shareRhea Strike
 
C++ 개요와 표준안
C++ 개요와 표준안C++ 개요와 표준안
C++ 개요와 표준안Jaewon Choi
 
오픈소스 소프트웨어 개발, 어디서부터 시작하는게 좋을까요? @ CNU(충남대)
오픈소스 소프트웨어 개발, 어디서부터 시작하는게 좋을까요? @ CNU(충남대)오픈소스 소프트웨어 개발, 어디서부터 시작하는게 좋을까요? @ CNU(충남대)
오픈소스 소프트웨어 개발, 어디서부터 시작하는게 좋을까요? @ CNU(충남대)Jaewon Choi
 
루비, REST, jQuery 그리고 agile 웹에 관한 이야기
루비, REST, jQuery 그리고 agile 웹에 관한 이야기루비, REST, jQuery 그리고 agile 웹에 관한 이야기
루비, REST, jQuery 그리고 agile 웹에 관한 이야기Sukjoon Kim
 
루비온레일즈_01_간단한 정적인 홈페이지 제작
루비온레일즈_01_간단한 정적인 홈페이지 제작루비온레일즈_01_간단한 정적인 홈페이지 제작
루비온레일즈_01_간단한 정적인 홈페이지 제작SangHun Lee
 
JavaScript on Rails 튜토리얼
JavaScript on Rails 튜토리얼JavaScript on Rails 튜토리얼
JavaScript on Rails 튜토리얼Sukjoon Kim
 
레일스를 이용한 애자일 웹 개발 가이드
레일스를 이용한 애자일 웹 개발 가이드레일스를 이용한 애자일 웹 개발 가이드
레일스를 이용한 애자일 웹 개발 가이드Sukjoon Kim
 
야생의 땅: 듀랑고의 시뮬레이션 MMO 샌드박스 설계
야생의 땅: 듀랑고의 시뮬레이션 MMO 샌드박스 설계야생의 땅: 듀랑고의 시뮬레이션 MMO 샌드박스 설계
야생의 땅: 듀랑고의 시뮬레이션 MMO 샌드박스 설계승명 양
 
JavaScript로 오픈소스를 해보자. bsJS
JavaScript로 오픈소스를 해보자. bsJSJavaScript로 오픈소스를 해보자. bsJS
JavaScript로 오픈소스를 해보자. bsJSNAVER D2
 
오픈소스 GIS 동향과 활용사례
오픈소스 GIS 동향과 활용사례오픈소스 GIS 동향과 활용사례
오픈소스 GIS 동향과 활용사례SANGHEE SHIN
 

En vedette (20)

초급 개발자 탈출
초급 개발자 탈출초급 개발자 탈출
초급 개발자 탈출
 
손코딩뇌컴파일눈디버깅을 소개합니다.
손코딩뇌컴파일눈디버깅을 소개합니다.손코딩뇌컴파일눈디버깅을 소개합니다.
손코딩뇌컴파일눈디버깅을 소개합니다.
 
게임 프로그래밍 기초 공부법
게임 프로그래밍 기초 공부법게임 프로그래밍 기초 공부법
게임 프로그래밍 기초 공부법
 
[0119 박민근] 기술 면접시 자주 나오는 문제들(ver 2013)
[0119 박민근] 기술 면접시 자주 나오는 문제들(ver 2013)[0119 박민근] 기술 면접시 자주 나오는 문제들(ver 2013)
[0119 박민근] 기술 면접시 자주 나오는 문제들(ver 2013)
 
소프트웨어 개발자 로드맵
소프트웨어 개발자 로드맵소프트웨어 개발자 로드맵
소프트웨어 개발자 로드맵
 
이제 막 웹개발자 되고싶은 분들께
이제 막 웹개발자 되고싶은 분들께이제 막 웹개발자 되고싶은 분들께
이제 막 웹개발자 되고싶은 분들께
 
Enlightenment Open Source Contribution (KOR) - 실전! Enlightenment 오픈소스 컨트리뷰션
Enlightenment Open Source Contribution (KOR) - 실전! Enlightenment 오픈소스 컨트리뷰션Enlightenment Open Source Contribution (KOR) - 실전! Enlightenment 오픈소스 컨트리뷰션
Enlightenment Open Source Contribution (KOR) - 실전! Enlightenment 오픈소스 컨트리뷰션
 
오픈 소스로 취업하기: 나는 어떻게 오픈 소스를 하다 렘 개발자가 되었나?
오픈 소스로 취업하기: 나는 어떻게 오픈 소스를 하다 렘 개발자가 되었나?오픈 소스로 취업하기: 나는 어떻게 오픈 소스를 하다 렘 개발자가 되었나?
오픈 소스로 취업하기: 나는 어떻게 오픈 소스를 하다 렘 개발자가 되었나?
 
프로그래머가 되고 싶으세요
프로그래머가 되고 싶으세요프로그래머가 되고 싶으세요
프로그래머가 되고 싶으세요
 
KeyValuePair 첫 모임 - XP와 Pair programming
KeyValuePair 첫 모임 - XP와 Pair programmingKeyValuePair 첫 모임 - XP와 Pair programming
KeyValuePair 첫 모임 - XP와 Pair programming
 
Rhea mmo node_for_share
Rhea mmo node_for_shareRhea mmo node_for_share
Rhea mmo node_for_share
 
C++ 개요와 표준안
C++ 개요와 표준안C++ 개요와 표준안
C++ 개요와 표준안
 
오픈소스 소프트웨어 개발, 어디서부터 시작하는게 좋을까요? @ CNU(충남대)
오픈소스 소프트웨어 개발, 어디서부터 시작하는게 좋을까요? @ CNU(충남대)오픈소스 소프트웨어 개발, 어디서부터 시작하는게 좋을까요? @ CNU(충남대)
오픈소스 소프트웨어 개발, 어디서부터 시작하는게 좋을까요? @ CNU(충남대)
 
루비, REST, jQuery 그리고 agile 웹에 관한 이야기
루비, REST, jQuery 그리고 agile 웹에 관한 이야기루비, REST, jQuery 그리고 agile 웹에 관한 이야기
루비, REST, jQuery 그리고 agile 웹에 관한 이야기
 
루비온레일즈_01_간단한 정적인 홈페이지 제작
루비온레일즈_01_간단한 정적인 홈페이지 제작루비온레일즈_01_간단한 정적인 홈페이지 제작
루비온레일즈_01_간단한 정적인 홈페이지 제작
 
JavaScript on Rails 튜토리얼
JavaScript on Rails 튜토리얼JavaScript on Rails 튜토리얼
JavaScript on Rails 튜토리얼
 
레일스를 이용한 애자일 웹 개발 가이드
레일스를 이용한 애자일 웹 개발 가이드레일스를 이용한 애자일 웹 개발 가이드
레일스를 이용한 애자일 웹 개발 가이드
 
야생의 땅: 듀랑고의 시뮬레이션 MMO 샌드박스 설계
야생의 땅: 듀랑고의 시뮬레이션 MMO 샌드박스 설계야생의 땅: 듀랑고의 시뮬레이션 MMO 샌드박스 설계
야생의 땅: 듀랑고의 시뮬레이션 MMO 샌드박스 설계
 
JavaScript로 오픈소스를 해보자. bsJS
JavaScript로 오픈소스를 해보자. bsJSJavaScript로 오픈소스를 해보자. bsJS
JavaScript로 오픈소스를 해보자. bsJS
 
오픈소스 GIS 동향과 활용사례
오픈소스 GIS 동향과 활용사례오픈소스 GIS 동향과 활용사례
오픈소스 GIS 동향과 활용사례
 

Similaire à 오픈소스 개발참여한 이야기 (NIPA 오픈프론티어 3기 송태웅)

Python study 1강 (오픈소스컨설팅 내부 강의)
Python study 1강 (오픈소스컨설팅 내부 강의)Python study 1강 (오픈소스컨설팅 내부 강의)
Python study 1강 (오픈소스컨설팅 내부 강의)정명훈 Jerry Jeong
 
강분도 - 공개SW개발과 우분투 (2010Y10M05D)
강분도 - 공개SW개발과 우분투 (2010Y10M05D)강분도 - 공개SW개발과 우분투 (2010Y10M05D)
강분도 - 공개SW개발과 우분투 (2010Y10M05D)Ubuntu Korea Community
 
오픈소스, 빡! 끝! - 제7회 삼성소프트웨어멤버십 기술전
오픈소스, 빡! 끝! - 제7회 삼성소프트웨어멤버십 기술전오픈소스, 빡! 끝! - 제7회 삼성소프트웨어멤버십 기술전
오픈소스, 빡! 끝! - 제7회 삼성소프트웨어멤버십 기술전Daniel Juyung Seo
 
개알못의 오픈소스이야기 - 이상준님
개알못의 오픈소스이야기 - 이상준님개알못의 오픈소스이야기 - 이상준님
개알못의 오픈소스이야기 - 이상준님NAVER D2
 
XECon + PHPFest 2014 XE 프로젝트 이야기
XECon + PHPFest 2014 XE 프로젝트 이야기XECon + PHPFest 2014 XE 프로젝트 이야기
XECon + PHPFest 2014 XE 프로젝트 이야기Sol Kim
 
2023 GDG Sondo DevFest - Flutter/ Flavor, PlatformChannel, Environment variab...
2023 GDG Sondo DevFest - Flutter/ Flavor, PlatformChannel, Environment variab...2023 GDG Sondo DevFest - Flutter/ Flavor, PlatformChannel, Environment variab...
2023 GDG Sondo DevFest - Flutter/ Flavor, PlatformChannel, Environment variab...MaRoKim4
 
[232] 성능어디까지쥐어짜봤니 송태웅
[232] 성능어디까지쥐어짜봤니 송태웅[232] 성능어디까지쥐어짜봤니 송태웅
[232] 성능어디까지쥐어짜봤니 송태웅NAVER D2
 
[오픈소스컨설팅]엔터프라이즈 오픈소스 도입전략
[오픈소스컨설팅]엔터프라이즈 오픈소스 도입전략[오픈소스컨설팅]엔터프라이즈 오픈소스 도입전략
[오픈소스컨설팅]엔터프라이즈 오픈소스 도입전략Ji-Woong Choi
 
Laravel로 스타트업 기술 스택 구성하기
Laravel로 스타트업 기술 스택 구성하기Laravel로 스타트업 기술 스택 구성하기
Laravel로 스타트업 기술 스택 구성하기KwangSeob Jeong
 
네이버 오픈소스세미나 - 오픈소스 바르게 시작하기 NAVER 강희숙
네이버 오픈소스세미나 - 오픈소스 바르게 시작하기 NAVER 강희숙네이버 오픈소스세미나 - 오픈소스 바르게 시작하기 NAVER 강희숙
네이버 오픈소스세미나 - 오픈소스 바르게 시작하기 NAVER 강희숙NAVER Engineering
 
Open source engineering - 0.1
Open source engineering - 0.1Open source engineering - 0.1
Open source engineering - 0.1YoungSu Son
 
System Infra와 Recovery 그리고 DevOps
System Infra와 Recovery 그리고 DevOpsSystem Infra와 Recovery 그리고 DevOps
System Infra와 Recovery 그리고 DevOpsJuseok Kim
 
Open source engineering
Open source engineeringOpen source engineering
Open source engineeringYoungSu Son
 
[Tf2017] day1 jwkang_pub
[Tf2017] day1 jwkang_pub[Tf2017] day1 jwkang_pub
[Tf2017] day1 jwkang_pubJaewook. Kang
 
How to use Python in Video streaming service - PyCon Korea 2020
How to use Python in Video streaming service - PyCon Korea 2020How to use Python in Video streaming service - PyCon Korea 2020
How to use Python in Video streaming service - PyCon Korea 2020AeYeong Kim
 
파이썬 생존 안내서 (자막)
파이썬 생존 안내서 (자막)파이썬 생존 안내서 (자막)
파이썬 생존 안내서 (자막)Heungsub Lee
 
[113]apache zeppelin 이문수
[113]apache zeppelin 이문수[113]apache zeppelin 이문수
[113]apache zeppelin 이문수NAVER D2
 

Similaire à 오픈소스 개발참여한 이야기 (NIPA 오픈프론티어 3기 송태웅) (20)

Python study 1강 (오픈소스컨설팅 내부 강의)
Python study 1강 (오픈소스컨설팅 내부 강의)Python study 1강 (오픈소스컨설팅 내부 강의)
Python study 1강 (오픈소스컨설팅 내부 강의)
 
강분도 - 공개SW개발과 우분투 (2010Y10M05D)
강분도 - 공개SW개발과 우분투 (2010Y10M05D)강분도 - 공개SW개발과 우분투 (2010Y10M05D)
강분도 - 공개SW개발과 우분투 (2010Y10M05D)
 
오픈소스, 빡! 끝! - 제7회 삼성소프트웨어멤버십 기술전
오픈소스, 빡! 끝! - 제7회 삼성소프트웨어멤버십 기술전오픈소스, 빡! 끝! - 제7회 삼성소프트웨어멤버십 기술전
오픈소스, 빡! 끝! - 제7회 삼성소프트웨어멤버십 기술전
 
개알못의 오픈소스이야기 - 이상준님
개알못의 오픈소스이야기 - 이상준님개알못의 오픈소스이야기 - 이상준님
개알못의 오픈소스이야기 - 이상준님
 
Opensource sw day
Opensource sw dayOpensource sw day
Opensource sw day
 
XECon + PHPFest 2014 XE 프로젝트 이야기
XECon + PHPFest 2014 XE 프로젝트 이야기XECon + PHPFest 2014 XE 프로젝트 이야기
XECon + PHPFest 2014 XE 프로젝트 이야기
 
Modern PHP
Modern PHPModern PHP
Modern PHP
 
2023 GDG Sondo DevFest - Flutter/ Flavor, PlatformChannel, Environment variab...
2023 GDG Sondo DevFest - Flutter/ Flavor, PlatformChannel, Environment variab...2023 GDG Sondo DevFest - Flutter/ Flavor, PlatformChannel, Environment variab...
2023 GDG Sondo DevFest - Flutter/ Flavor, PlatformChannel, Environment variab...
 
[232] 성능어디까지쥐어짜봤니 송태웅
[232] 성능어디까지쥐어짜봤니 송태웅[232] 성능어디까지쥐어짜봤니 송태웅
[232] 성능어디까지쥐어짜봤니 송태웅
 
[오픈소스컨설팅]엔터프라이즈 오픈소스 도입전략
[오픈소스컨설팅]엔터프라이즈 오픈소스 도입전략[오픈소스컨설팅]엔터프라이즈 오픈소스 도입전략
[오픈소스컨설팅]엔터프라이즈 오픈소스 도입전략
 
Laravel로 스타트업 기술 스택 구성하기
Laravel로 스타트업 기술 스택 구성하기Laravel로 스타트업 기술 스택 구성하기
Laravel로 스타트업 기술 스택 구성하기
 
Local Dev
Local DevLocal Dev
Local Dev
 
네이버 오픈소스세미나 - 오픈소스 바르게 시작하기 NAVER 강희숙
네이버 오픈소스세미나 - 오픈소스 바르게 시작하기 NAVER 강희숙네이버 오픈소스세미나 - 오픈소스 바르게 시작하기 NAVER 강희숙
네이버 오픈소스세미나 - 오픈소스 바르게 시작하기 NAVER 강희숙
 
Open source engineering - 0.1
Open source engineering - 0.1Open source engineering - 0.1
Open source engineering - 0.1
 
System Infra와 Recovery 그리고 DevOps
System Infra와 Recovery 그리고 DevOpsSystem Infra와 Recovery 그리고 DevOps
System Infra와 Recovery 그리고 DevOps
 
Open source engineering
Open source engineeringOpen source engineering
Open source engineering
 
[Tf2017] day1 jwkang_pub
[Tf2017] day1 jwkang_pub[Tf2017] day1 jwkang_pub
[Tf2017] day1 jwkang_pub
 
How to use Python in Video streaming service - PyCon Korea 2020
How to use Python in Video streaming service - PyCon Korea 2020How to use Python in Video streaming service - PyCon Korea 2020
How to use Python in Video streaming service - PyCon Korea 2020
 
파이썬 생존 안내서 (자막)
파이썬 생존 안내서 (자막)파이썬 생존 안내서 (자막)
파이썬 생존 안내서 (자막)
 
[113]apache zeppelin 이문수
[113]apache zeppelin 이문수[113]apache zeppelin 이문수
[113]apache zeppelin 이문수
 

오픈소스 개발참여한 이야기 (NIPA 오픈프론티어 3기 송태웅)

  • 1. Contributing opensource developer (오픈소스 개발 참여한 이야기) d Use Linux kernel as an example NIPA Open Frontier Lab Taeung Song treeze.taeung@gmail.com 2016-03-17
  • 2. Speaker 송태웅 (Taeung Song, https://github.com/taeung) 2016 NIPA Open Frontier Lab 3 기 2015 Linux kernel - perf 프로젝트 contributor 활동 중 2014 ( 주 ) XS 선임연구원 ( 네트워크 , 서버 , ARM, etc.) 2013 NIPA 창의도전형 R&D 2 기 2012 NIPA SW Maestro 3 기 2011 ( 주 ) MTOME 개발연구원 ( 임베디드 , WinAPI)
  • 3. Open Frontier Lab 공개 SW 개발자 센터 (http://devlab.oss.kr/)
  • 4. Purpose 발표의 취지 오픈소스의 중요성까지는 알겠지만 .. 오픈소스 개발 패러다임을 모르거나 시작하고싶은데 진입장벽에 봉착한 분들 오픈소스 컨트리뷰션을 왜하는지 ? 하면 어떤방식으로 하는지 ?
  • 5. To conclude 결론 부터 말하자면 오픈소스 컨트리뷰션을 왜하는지 ? 하면 어떤방식으로 하는지 ? 새로운 개발방식을 익히기위해 ( 오픈소스 개발방식 ) 새로운 개발방식으로 .. ( 오픈소스 개발방식 )
  • 6. To conclude 결론 부터 말하자면 새로운 개발방식 이란 ? ( 오픈소스개발방식 ) 오픈소스 개발 방식의 특징 ( 사견 ) 뒤에 이어서 설명 ✔ 갑으로 시작해서 을 , 병 , 정 , 무 , 기 .. 로 끝나지 않고 ✔ 개발자로 시작해서 개발자로 끝난다 ✔ 코드도 모르면서 말만하는 팀장 / 사장 없다 ✔ 소스를 공개하면서 비가시성의 상당한 문제 극복 ✔ 집단지성을 활용한 비대한 발전 ✔ 자본주의 사회에서 돈도 안되는 오픈소스가 소프트웨어의 역사를 이끄는 이유
  • 7. Contents 현재 참여하는 오픈소스 소개 오픈소스 참여 계기 오픈소스 활동 이력 여러가지 오픈소스 컨트리뷰션 작전 앞으로의 길
  • 8. Linux kernel – perf 현재 참여하는 오픈소스 소개 현재 참여하는 오픈소스 소개 오픈소스 참여 계기 오픈소스 활동 이력 여러가지 오픈소스 컨트리뷰션 작전 앞으로의 길
  • 9. Linux kernel – Perf 현재 참여하는 오픈소스 소개 1) Linux 기반 성능분석 도구 perf (2009) 2) 커널 또는 특정 프로그램 (perf 로 알 수 있는것들 ) “ 특정 프로그램 또는 시스템 전반적으로 성능분석” Events(Cpu-cycles, system call, cache-misses, page-faults, context-switch) 가 언제 / 얼마나 / 어떻게 발생 되었는지를 살펴보는것이다 ✔ 어느함수가 cpu 를 많이 잡아먹는지 ? ✔ 어느코드부분이 메모리할당을 얼마나 하는지 ? ✔ cache-misses 가 어떤 코드 부분 때문에 발생하는지 ? ✔ 특정 커널 함수가 불려지는지 혹은 얼마나 불려지는지 ?
  • 10. Perf 도구 간단한 예제로 알아보기 예시 ) Taeung_Program 분석 # perf record Taeung_Program ^c ( 성능정보수집 ) # perf report ( 성능정보 통계출력 ) # ./Taeung_Program # perf top (record+report) < 그림 1> perf top ‘에서 Taeung_Program’ 선택시
  • 11. Perf 도구 간단한 예제로 알아보기 예시 ) Taeung_Program 분석 특정 프로그램 함수 (main) 에 대한 assembly code 단위 분석 < 그림 2> perf top 에서 annotate 기능으로 어셈블리 코드
  • 12. Perf 도구 perf 의 장점 및 특징 ✔ 특징 ✔ 장점 'Performance counters' 라는 HW registers 를 기반 커널 및 프로그램의 감속 없이 Profiling 을 위한 Target 프로그램 재컴파일 없이 프로그래밍 언어 종속적이지 않게 커널버전에 따른 각 버전이 존재 (kernel 코드와 함께 개발 ) C program (user space) (Linux kernel 소스의 tools/perf 경로 ) Command line tool * 공식 Linux kernel – perf 저장소 : http://git.kernel.org/cgit/linux/kernel/git/tip/tip.git
  • 13. 현재 참여하는 오픈소스 소개 오픈소스 참여 계기 오픈소스 활동 이력 여러가지 오픈소스 컨트리뷰션 작전 앞으로의 길 Motivation 오픈소스개발에 참여한 계기
  • 14. Motivation 오픈소스개발에 참여한 계기 개인적인 개발실력에 대한 의문 / 생각 ( 졸업 전 ) 개발자 ? 이것저것 조합하는 유저 ? Core 개발자 , 프로 개발자가 되고싶은 마음 내가만든 프로그램 , 제품이 내가만든것인가 ?
  • 15. Motivation 가내 하고싶은 SW 찾기 졸업 후 첫 회사 다니면서 고민 / 생각 Low level, system 분야의 관심 → ( 주 ) XS 순수한 (?) 소프트웨어 vs 업무 및 제품 의존적인 소프트웨어 Web (frontend, backend), AngularJS, Django, Jquery, Bootstrap ARM, Linux porting, L4/Fiacso, QT/C++, Ncurses NAS(Network Attached Storage), bash, python 시스템 소프트웨어 개발에 관심 ( 커널모듈 , 데몬 , Utility, syscall)
  • 16. Motivation 오픈소스 개발의 시작 회사내의 오픈소스 참여기회 회사업무로 인해 → L4/Fiasco → Mailing List 경험 Porting & Device Driver 관련 가이드 문서공유 ( 첫 오픈소스 기여 ) < 그림 3> l4-hackers 메일링리스트에 공유한 Device driver & Porting 가이드 문서
  • 17. Motivation 오픈소스 개발의 시작 회사외의 오픈소스 참여시도 오픈소스 분석 목적 스터디 , 국내 kernel 커미터 contact 무산됨 , 더딘진행 , 진입장벽 난관에 봉착 소스 읽고 이해해보고 , perf 소개 강의도 듣고 스터디에서 perf 분석시작 C 문법은 알지만 Source Reading 의 어려움
  • 18. 현재 참여하는 오픈소스 소개 오픈소스 참여 계기 오픈소스 활동 이력 여러가지 오픈소스 컨트리뷰션 작전 앞으로의 길 Contribution 오픈소스 활동 이력
  • 19. Contribution 첫 PATCH 작업 (perf)  처음 적용된 Bug fix 기여 perf tools: Modify error code for when perf_session__new() fails < 그림 4> 첫 commit 정보 스크린샷
  • 20. Contribution 지속적인 기여활동 (perf) perf-config 가관련 기능추 기여 (2 개 commit 적용 )  perf-config subcommand 가기능추 완료  perf-config Document 가추 완료  perf-config 의 get, set 가기능추 중  perf-config options (list, list-all, remove, skel, system, user 등 ) 가추 중 toggle zeroing of samples 가기능추 기여 (1 개 commit 적용 )  perf top 실행 중 zeroing of samples 기능에 toggle 가버튼 추 작업 완료 Bug fix 기여 (6 개 commit 적용 )  perf_session__new() 실패 시 에러처리 완료  perf subcommands (mem, kvm, report, kmem, inject) 도중 에러처리 완료  perf_session__delete() 수행안하는 부분 수정보완 완료 더디고 느리지만 계속해서 Contributor 로 활동 진행
  • 21. Contribution 활동 이력 (perf)  perf-config 가관련 기능추 기여 (2 개 commit 완료 / 22 개 patchset 계속진행중 ) < 그림 5> perf-config 의 usage message
  • 22. Contribution 활동 이력 < 그림 6> perf-config 가관련 기능추 24 개 patchset cover letter Contribution 활동 이력 (perf)
  • 23. Contribution 활동 이력 < 그림 7> 최근 적용된 perf-config 명령 , doc 2 개의 커밋관련 메일 Contribution 활동 이력 (perf)
  • 24. Contribution 활동 이력Contribution 활동 이력 (perf) Linux kernel – perf 정식 git ‘저장소 tip’ Maintainer : Arnaldo, Ingo, Jiri, 김남형 https://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git < 그림 8> 리눅스 커널 perf 정식 git 저장소에 적용된 commit 정보 (2014-2015)
  • 25. Contribution 활동 이력Contribution 활동 이력 (perf) < 그림 9> 최근 리눅스 커널 perf 정식 git 저장소에 적용된 commit 정보
  • 26. 현재 참여하는 오픈소스 소개 오픈소스 참여 계기 오픈소스 활동 이력 여러가지 오픈소스 컨트리뷰션 작전 앞으로의 길 Opensource Linux kernel 이외의 다른 오픈소스
  • 27. Opensource Linux kernel 이외의 다른 오픈소스 < 그림 10> 전세계 각종 오픈소스 통계 사이트 (https://www.openhub.net/)
  • 28. Opensource Linux kernel 이외의 다른 오픈소스 < 그림 11> 오픈소스 커미터 개인별 통계 뷰 (https://www.openhub.net/accounts/namhyung)
  • 29. Opensource Github / Not Github - Node.js (https://github.com/nodejs/node) - Angular.js (https://github.com/angular/angular.js) - Spring-boot (https://github.com/spring-projects/spring-boot) - Rust (https://github.com/rust-lang/rust) - Redis (https://github.com/antirez/redis) - Flask (https://github.com/mitsuhiko/flask) … - Apache (http://git.apache.org) - Linux kernel (http://git.kernel.org) - GNU (http://git.savannah.gnu.org/cgit/) - Webkit (git://git.webkit.org/WebKit.git) … Github Not Github
  • 30. Opensource 유망 오픈소스 정리자료 < 그림 11> 유망 오픈소스 정리 PDF (http://www.oss.kr/oss_repository12/103649) OSS 에서 정리한 전세계 유망 오픈소스 정리 자료 (2013 기준 )
  • 31. Opensource 가내 참여할 오픈소스 찾기 ? (IMHO) 졸업 이후 3~5 년 안에 한 분야 만큼은 전문성을 지녀야한다고봄 ( 준 전문가 ?) 하나의 분야에 대한 선택이 필요 ( 메타인지 필요 ) 1) Big data 2) OS (memory, device driver, sched, network, FS etc.) 3) Embedded (RTOS, firmware, etc.) 4) Web (frontend, backend) 5) Web brower 6) Cloud, Paas, Baas, etc 7) Language, Compiler (Rust, Go, etc.) 8) AI 9) X-window system (Gnome, KDE, Unity, Xfce, etc.) 10) Tools (eclipse, IDE, git, etc.) 11) Application (mobile, PC, embedded, etc.) ...
  • 32. Opensource 가내 참여할 오픈소스 찾기 ? (IMHO) 하나의 분야에 대한 선택작전 ( 진입장벽 부수기 ) ✔ 구글링을 통한 주체적인 선택 ( 능력자들 ) ✔ 오픈소스 분석 스터디 그룹활동 ( 분야선택 , source reading, etc) ✔ 해당 분야를 하는 회사에 실무경험 쌓기 ( 회사일과 오픈소스병행 )
  • 33. Opensource 가내 참여할 오픈소스 찾기 ? (IMHO) 하나의 분야에 대한 선택작전 ( 진입장벽 부수기 ) ✔ 구글링을 통한 주체적인 선택 ( 능력자들 ) ✔ 오픈소스 분석 스터디 그룹활동 ( 분야선택 , source reading, etc) ✔ 해당 분야를 하는 회사에 실무경험 쌓기 ( 회사일과 오픈소스병행 ) < tip: 프로젝트 별 간단정리 공유 (5 분 ) > - 사용언어 - 총라인수 , 소스폴더 구조 (2-3 depth) - 대표기능 1 개 시나리오 설명 - 소스받기→ ( 컴파일 / 세팅 ) → 실행 방법 ( 간단한 사용법 )
  • 34. 현재 참여하는 오픈소스 소개 오픈소스 참여 계기 오픈소스 활동 이력 여러가지 오픈소스 컨트리뷰션 작전 앞으로의 길 How to contribute 오픈소스 컨트리뷰션 작전 (IMHO)
  • 35. How to contribute 오픈소스 컨트리뷰션 작전 (IMHO) 메인테이너가 쉽게받아줄거라 예상되는 PATCH/Pull-request 는 ? ( 사견 ) 1 위 – Refactoring ( 가장 부담 zero) 2 위 – Bugfix ( 명확한 버그라면 ) 3 위 – Documentation ( 첫 접근성은 좋으나 기술적인 description 이 문제 ) 4 위 – Minor features 그 이후 new feature 나 core 부분은 신뢰가 필요하다고봄 ( 다수의 commits 필요 )
  • 36. How to contribute 오픈소스 컨트리뷰션 작전 (IMHO) 가보통 어떻게 짜는 ? ( 문법다 안다고 좋은영작못하듯 ) 작전 1) 시나리오 기반 Source Reading 작전 2) 오픈소스의 설계구조 질 좋은 오픈소스를 통한 나만의 소스 데이터베이스 필요 명확한 feature 이해 → 구현방식이해 (by navigator (ctags, cscope, intelij, eclipse, etc)) 소스구조 공유 (http://aosabook.org/en/index.html) 좋은구조 , 좋은 Name, 간결한코드
  • 37. 현재 참여하는 오픈소스 소개 오픈소스 참여 계기 오픈소스 활동 이력 여러가지 오픈소스 컨트리뷰션 작전 앞으로의 길 Future plan 오픈소스에서의 앞으로의 목표
  • 38. Future plan 오픈소스에서의 앞으로의 목표 1. Linux kernel 에대한 PATCH 작업 ( 기본실력쌓기 ) - perf : Bugfix, minor features, new features, etc. - frace 등 기타 서브시스템에 대한 Bugfix 작업 2. 알고리즘 코딩훈련 - Knapsack, Quick-sort, Cheese, etc. 3. 커널 및 CS 관련 이론학습 - Tracing, Network, Memory, File System, etc. 올해 1 년간의 목표
  • 39. Future plan 오픈소스에서의 앞으로의 목표 향후 목표와 방향 ✔ Linux kernel Committer (@kernel.org, @apache.org 등의 위엄 ) ✔ 개발자로서의 성장 ( 프로개발자 되기 , 오픈소스 개발패러다임에서의 실력자 ) ✔ 오픈소스로 다져진 실력으로 취업 목표