Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

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

3,077 views

Published on

오픈소스 기여(contributing) 자체를 모르시거나 어떤 오픈소스에 참여할까 분야를 못고르고 계신분, 오픈소스 개발에 참여할때 진입장벽에 봉착한분들을 위한 초기작전/전략 내용입니다.

Published in: Software
  • DOWNLOAD FULL BOOKS, INTO AVAILABLE FORMAT ......................................................................................................................... ......................................................................................................................... 1.DOWNLOAD FULL. PDF EBOOK here { https://tinyurl.com/y6a5rkg5 } ......................................................................................................................... 1.DOWNLOAD FULL. EPUB Ebook here { https://tinyurl.com/y6a5rkg5 } ......................................................................................................................... 1.DOWNLOAD FULL. doc Ebook here { https://tinyurl.com/y6a5rkg5 } ......................................................................................................................... 1.DOWNLOAD FULL. PDF EBOOK here { https://tinyurl.com/y6a5rkg5 } ......................................................................................................................... 1.DOWNLOAD FULL. EPUB Ebook here { https://tinyurl.com/y6a5rkg5 } ......................................................................................................................... 1.DOWNLOAD FULL. doc Ebook here { https://tinyurl.com/y6a5rkg5 } ......................................................................................................................... ......................................................................................................................... ......................................................................................................................... .............. Browse by Genre Available eBooks ......................................................................................................................... Art, Biography, Business, Chick Lit, Children's, Christian, Classics, Comics, Contemporary, Cookbooks, Crime, Ebooks, Fantasy, Fiction, Graphic Novels, Historical Fiction, History, Horror, Humor And Comedy, Manga, Memoir, Music, Mystery, Non Fiction, Paranormal, Philosophy, Poetry, Psychology, Religion, Romance, Science, Science Fiction, Self Help, Suspense, Spirituality, Sports, Thriller, Travel, Young Adult,
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here

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

  1. 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. 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. 3. Open Frontier Lab 공개 SW 개발자 센터 (http://devlab.oss.kr/)
  4. 4. Purpose 발표의 취지 오픈소스의 중요성까지는 알겠지만 .. 오픈소스 개발 패러다임을 모르거나 시작하고싶은데 진입장벽에 봉착한 분들 오픈소스 컨트리뷰션을 왜하는지 ? 하면 어떤방식으로 하는지 ?
  5. 5. To conclude 결론 부터 말하자면 오픈소스 컨트리뷰션을 왜하는지 ? 하면 어떤방식으로 하는지 ? 새로운 개발방식을 익히기위해 ( 오픈소스 개발방식 ) 새로운 개발방식으로 .. ( 오픈소스 개발방식 )
  6. 6. To conclude 결론 부터 말하자면 새로운 개발방식 이란 ? ( 오픈소스개발방식 ) 오픈소스 개발 방식의 특징 ( 사견 ) 뒤에 이어서 설명 ✔ 갑으로 시작해서 을 , 병 , 정 , 무 , 기 .. 로 끝나지 않고 ✔ 개발자로 시작해서 개발자로 끝난다 ✔ 코드도 모르면서 말만하는 팀장 / 사장 없다 ✔ 소스를 공개하면서 비가시성의 상당한 문제 극복 ✔ 집단지성을 활용한 비대한 발전 ✔ 자본주의 사회에서 돈도 안되는 오픈소스가 소프트웨어의 역사를 이끄는 이유
  7. 7. Contents 현재 참여하는 오픈소스 소개 오픈소스 참여 계기 오픈소스 활동 이력 여러가지 오픈소스 컨트리뷰션 작전 앞으로의 길
  8. 8. Linux kernel – perf 현재 참여하는 오픈소스 소개 현재 참여하는 오픈소스 소개 오픈소스 참여 계기 오픈소스 활동 이력 여러가지 오픈소스 컨트리뷰션 작전 앞으로의 길
  9. 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. 10. Perf 도구 간단한 예제로 알아보기 예시 ) Taeung_Program 분석 # perf record Taeung_Program ^c ( 성능정보수집 ) # perf report ( 성능정보 통계출력 ) # ./Taeung_Program # perf top (record+report) < 그림 1> perf top ‘에서 Taeung_Program’ 선택시
  11. 11. Perf 도구 간단한 예제로 알아보기 예시 ) Taeung_Program 분석 특정 프로그램 함수 (main) 에 대한 assembly code 단위 분석 < 그림 2> perf top 에서 annotate 기능으로 어셈블리 코드
  12. 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. 13. 현재 참여하는 오픈소스 소개 오픈소스 참여 계기 오픈소스 활동 이력 여러가지 오픈소스 컨트리뷰션 작전 앞으로의 길 Motivation 오픈소스개발에 참여한 계기
  14. 14. Motivation 오픈소스개발에 참여한 계기 개인적인 개발실력에 대한 의문 / 생각 ( 졸업 전 ) 개발자 ? 이것저것 조합하는 유저 ? Core 개발자 , 프로 개발자가 되고싶은 마음 내가만든 프로그램 , 제품이 내가만든것인가 ?
  15. 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. 16. Motivation 오픈소스 개발의 시작 회사내의 오픈소스 참여기회 회사업무로 인해 → L4/Fiasco → Mailing List 경험 Porting & Device Driver 관련 가이드 문서공유 ( 첫 오픈소스 기여 ) < 그림 3> l4-hackers 메일링리스트에 공유한 Device driver & Porting 가이드 문서
  17. 17. Motivation 오픈소스 개발의 시작 회사외의 오픈소스 참여시도 오픈소스 분석 목적 스터디 , 국내 kernel 커미터 contact 무산됨 , 더딘진행 , 진입장벽 난관에 봉착 소스 읽고 이해해보고 , perf 소개 강의도 듣고 스터디에서 perf 분석시작 C 문법은 알지만 Source Reading 의 어려움
  18. 18. 현재 참여하는 오픈소스 소개 오픈소스 참여 계기 오픈소스 활동 이력 여러가지 오픈소스 컨트리뷰션 작전 앞으로의 길 Contribution 오픈소스 활동 이력
  19. 19. Contribution 첫 PATCH 작업 (perf)  처음 적용된 Bug fix 기여 perf tools: Modify error code for when perf_session__new() fails < 그림 4> 첫 commit 정보 스크린샷
  20. 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. 21. Contribution 활동 이력 (perf)  perf-config 가관련 기능추 기여 (2 개 commit 완료 / 22 개 patchset 계속진행중 ) < 그림 5> perf-config 의 usage message
  22. 22. Contribution 활동 이력 < 그림 6> perf-config 가관련 기능추 24 개 patchset cover letter Contribution 활동 이력 (perf)
  23. 23. Contribution 활동 이력 < 그림 7> 최근 적용된 perf-config 명령 , doc 2 개의 커밋관련 메일 Contribution 활동 이력 (perf)
  24. 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. 25. Contribution 활동 이력Contribution 활동 이력 (perf) < 그림 9> 최근 리눅스 커널 perf 정식 git 저장소에 적용된 commit 정보
  26. 26. 현재 참여하는 오픈소스 소개 오픈소스 참여 계기 오픈소스 활동 이력 여러가지 오픈소스 컨트리뷰션 작전 앞으로의 길 Opensource Linux kernel 이외의 다른 오픈소스
  27. 27. Opensource Linux kernel 이외의 다른 오픈소스 < 그림 10> 전세계 각종 오픈소스 통계 사이트 (https://www.openhub.net/)
  28. 28. Opensource Linux kernel 이외의 다른 오픈소스 < 그림 11> 오픈소스 커미터 개인별 통계 뷰 (https://www.openhub.net/accounts/namhyung)
  29. 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. 30. Opensource 유망 오픈소스 정리자료 < 그림 11> 유망 오픈소스 정리 PDF (http://www.oss.kr/oss_repository12/103649) OSS 에서 정리한 전세계 유망 오픈소스 정리 자료 (2013 기준 )
  31. 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. 32. Opensource 가내 참여할 오픈소스 찾기 ? (IMHO) 하나의 분야에 대한 선택작전 ( 진입장벽 부수기 ) ✔ 구글링을 통한 주체적인 선택 ( 능력자들 ) ✔ 오픈소스 분석 스터디 그룹활동 ( 분야선택 , source reading, etc) ✔ 해당 분야를 하는 회사에 실무경험 쌓기 ( 회사일과 오픈소스병행 )
  33. 33. Opensource 가내 참여할 오픈소스 찾기 ? (IMHO) 하나의 분야에 대한 선택작전 ( 진입장벽 부수기 ) ✔ 구글링을 통한 주체적인 선택 ( 능력자들 ) ✔ 오픈소스 분석 스터디 그룹활동 ( 분야선택 , source reading, etc) ✔ 해당 분야를 하는 회사에 실무경험 쌓기 ( 회사일과 오픈소스병행 ) < tip: 프로젝트 별 간단정리 공유 (5 분 ) > - 사용언어 - 총라인수 , 소스폴더 구조 (2-3 depth) - 대표기능 1 개 시나리오 설명 - 소스받기→ ( 컴파일 / 세팅 ) → 실행 방법 ( 간단한 사용법 )
  34. 34. 현재 참여하는 오픈소스 소개 오픈소스 참여 계기 오픈소스 활동 이력 여러가지 오픈소스 컨트리뷰션 작전 앞으로의 길 How to contribute 오픈소스 컨트리뷰션 작전 (IMHO)
  35. 35. How to contribute 오픈소스 컨트리뷰션 작전 (IMHO) 메인테이너가 쉽게받아줄거라 예상되는 PATCH/Pull-request 는 ? ( 사견 ) 1 위 – Refactoring ( 가장 부담 zero) 2 위 – Bugfix ( 명확한 버그라면 ) 3 위 – Documentation ( 첫 접근성은 좋으나 기술적인 description 이 문제 ) 4 위 – Minor features 그 이후 new feature 나 core 부분은 신뢰가 필요하다고봄 ( 다수의 commits 필요 )
  36. 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. 37. 현재 참여하는 오픈소스 소개 오픈소스 참여 계기 오픈소스 활동 이력 여러가지 오픈소스 컨트리뷰션 작전 앞으로의 길 Future plan 오픈소스에서의 앞으로의 목표
  38. 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. 39. Future plan 오픈소스에서의 앞으로의 목표 향후 목표와 방향 ✔ Linux kernel Committer (@kernel.org, @apache.org 등의 위엄 ) ✔ 개발자로서의 성장 ( 프로개발자 되기 , 오픈소스 개발패러다임에서의 실력자 ) ✔ 오픈소스로 다져진 실력으로 취업 목표
  40. 40. Thanks

×