Upgrade to Pro — share decks privately, control downloads, hide ads and more …

GDG DevFest Suwon 2018 - GSoC (Donghee Na)

GDG Suwon
November 13, 2018

GDG DevFest Suwon 2018 - GSoC (Donghee Na)

GDG DevFest Suwon 2018 - GSoC (Donghee Na)

GDG Suwon

November 13, 2018
Tweet

More Decks by GDG Suwon

Other Decks in Technology

Transcript

  1. - 14년째 구글에서 주관하는 여름방학 오픈소스 활동 프로그램 - 대학에

    등록된 학부 및 석 박사 과정 학생만이 참가 가능 - 2017년 부터 이미 2번 이상 참여를 한 학생은 참가 불가 Intro
  2. - 학교에서는 만나기 힘든 현실 세계 문제를 해결하는 기회 -

    유명 오픈소스 커미터들로부터 코드리뷰도 받을 수 있는 기회 - 프로그램을 수행하는 학생들 간의 네트워크 형성 효과 - 구글에서 제공하는 여러가지 Benefit (Referral, 티셔츠, 오픈소스 관련 구독권, stipend) 학생 입장에서는 정말 좋은 기회
  3. Google Summer of Code Timeline Tentative Timeline Time 1월 2월

    3월 4월 5월 6월 7월 8월 8-9월 10월 Activity Type 참여 프로젝트 접수 참여 프로젝트 발표 학생 접수 기간 참여 학생 발표 프로젝트 시작 1차 평가 2차 평가 최종 평가 결과물 발표 멘토 서밋 Description 각 오픈소스 단체에서 GSoC에 접수를 합니다. 선정 된 오픈소스 단체 발표 학생들의 Proposal 접수 및 재학 증명서 제출 선정된 학생 발표 및 개별연락 Community Bonding을 포함한 전반적인 프로젝트 시작 멘토 1차 평가 멘토 2차 평가 멘토 최종 평가 및 최종 결과물 제출 Google Summer of Code 홈페이지에서 발표 Google HQ에서 프로젝트 대표 멘토들이 모여 Submit Track 2
  4. - 2018년 GSoC 기준 전세계 약 5000여명의 학생들이 지원 -

    그 중 1264명의 학생들이 선정 - 한국 학생은 2018년에는 2명, 2017년 8명, 2016년 6명 참가 - 인도학생들이 넘사벽으로 많고, 그 다음으로 미국학생들이 많은 편 그밖의 현황
  5. Vert.x (2016) Writing blueprint applications and documentation. - Vert.X는 JVM

    기반 비동기 웹서버 프레임워크 - Polyglot - Super Simple Concurrency model - Event Bus Suwan
  6. Vert.x (2016) Writing blueprint applications and documentation. - Vert.X로 ToDo

    백엔드 작성 및 문서화 - Vert.X로 메시지 큐 기반 애플리케이션 작성 및 문서화 - Vert.X로 마이크로 서비스 예제 작성 및 문서화 Suwan
  7. Vert.x (2016) Writing blueprint applications and documentation. - ToDo 백엔드

    작성 및 도커라이징해서 코드 샘플 첨부 - 테스트 코드 작성 및 Travis CI 연동 - 약 3장 정도의 Proposal 작성 Suwan
  8. Vert.x (2016) Writing blueprint applications and documentation. - 합격 학생의

    Proposal을 분석 및 회고 - Proposal의 깊이와 디테일에서 차이(3장 VS 10장+) Suwan
  9. Google Summer of Code 2017 - 1년 동안 다양한 오픈소스

    프로젝트에 컨트리뷰팅 (e.g Dropbox pyston, Google grumpy, Google chromium) - 2월부터 프로젝트 멘토들에게 접촉하여 미리 최대한 정보를 얻어냄 Suwan
  10. Google Summer of Code 2017 - CERN-HSF (Updating gopy to

    support Python3 and PyPy) - AboutCode (Static analysis of binaries for build tracing) - LLVM (Warn if virtual calls are made from constructors or destructors) - Mono (Import System.IO.FileStream from CoreFX) - Coala (Integration of ANTLRv4 into coala core) Suwan
  11. Google Summer of Code 2017 - 대부분 프로젝트 멘토로 부터

    긍정적인 회신 - 멘토가 어떤 Proposal을 원하는지 파악 - 내가 잘 모르는 기술 스택에 대해서는 미리 공부 - 대략적인 Proposal을 작성하면서 3월 지원기간을 대비 Suwon
  12. - 학생은 최대 3개의 프로젝트까지 동시지원이 가능 (-2017년까지는 5개) -

    멘토는 학생이 다른 프로젝트에 지원했는지 여부는 알 수 없음 - 다만 Proposal 작성에 소요되는 시간이 상당하기 때문에 감당할 수 있는 범위 - 퀄리티 >>>>> 양 Application Period
  13. - 프로젝트마다 할당받는 학생 Slot수가 정해져있고, 학생은 해당 Slot을 받기

    위해 경쟁을 해야함 - Slot수는 적은 곳은 1개, 많은 곳은 20개까지 모두 다르다 - Slot수는 구글이 결정하며, 검증이 많이된 프로젝트 일수록 많이 받으며, 작년 프로젝트 성공률도 영향을 끼친다 (Application period가 까다로운 이유) Application Period
  14. 따라서 지원하는 학생에겐 제일 중요한 기간 - Proposal은 정말 잘

    써야 한다 - 멘토가 학생을 평가 할 수 있는 방법이 그리 많지가 않다. (코딩 테스트, 스카이프 면접, 과제, 포트폴리오..) - 재학증명서도 제출해야 하는데, 재학증명서는 구글에서 요구하는 양식에 맞추어서 제출하자 (해년마다 조금씩 다르니 꼭 확인하자!!) Suwon
  15. CERN-HSF (2017) About CERN-HSF - CERN-HSF는 유럽 입자 물리 연구소와

    HEP Software Foundation의 연합단체 - 입자가속기에 사용되는 프레임워크를 작성하거나 관련된 프로젝트를 수행 Suwon
  16. CERN-HSF (2017) Updating gopy to support Python3 and PyPy -

    Python을 사용하는 과학자들에게 Go로 작성된 라이브러리를 Python 확장 패키지로 바인딩해서 제공하는 프로젝트 (Experimental project) - Python3와 PyPy 지원을 하도록 만들어보자! Suwon
  17. CERN-HSF (2017) Pre-test를 보는 경우도 있습니다 - 프로젝트를 수행할 수

    있는지 간단한 과제를 수행 - 영문 이력서 제출 - 거의 인턴 지원과 비슷한 느낌.. Suwan
  18. CERN-HSF (2017) Updating gopy to support Python3 and PyPy -

    Go로 작성되어 있는 소스코드를 분석하여 - 작성되어 있는 변수명과 해당 변수 명의 Public Private 여부 구분 - Function과 Method의 시그너쳐를 분석 - 특정 인터페이스를 구현하고 있는지 분석 위의 요구사항을 부합하는 Go 프로그램 작성 -> go/types와 go/ast 패키지를 활용하여 답안 작성 및 제출 Suwon
  19. CERN-HSF (2017) Updating gopy to support Python3 and PyPy -

    남은 기간 동안은 Proposal에 집중 - 구글독스로 Proposal 작성 후 멘토에게 공유하여 계속 피드백을 받음. Suwon
  20. Application Period Proposal에 꼭 작성을 해야하는 것들!! - 나는 누구인지,

    코드 샘플 공유 - 이번 프로젝트에서 내가 달성하고자 하는 목표는 어떤 것인지 - 어떻게 구현 할 것인지, 다이어그램 및 구체적인 방법론 제시 - 대략적인 스케쥴 작성 (2-4주 간격) - 그 밖에 일정에 예외사항이 발생할 수 있는 개인적인 사항들 공유 (중간고사, 기말고사) Suwon
  21. 프로젝트 최종 선정 방식은.. - 멘토들이 자신들의 프로젝트에 함께 할

    학생을 Pick하는 방식 - 동시에 여러 프로젝트를 지원한 경우, 먼저 해당 학생을 선정한 프로젝트가 학생을 가져가는 방식 - 따라서 여러 프로젝트를 동시에 지원하는 경우엔 어느 곳에서 나를 선택하게 될지 알 수가 없다 - 여러 프로젝트에서 동시에 해당 학생을 원하는 경우 Conflict rule에 따라 프로젝트 멘토끼리 협상이 가능하나, 실제로 이어지는 경우는 드물다고 한다 Suwon
  22. CERN-HSF (2017) Updating gopy to support Python3 and PyPy -

    gopy는 gomobile이라는 프로젝트의 영향을 받은 프로젝트 - Python 인터프리터에서 Go 패키지를 사용할 수 있게 Python extension package를 생성 Suwon
  23. Suwon AST Traverse 및 분석 CFFI 인터페이스 를 위한 Go코드

    생성 생성된 Go코드를 cgo로 export CFFI 인터페이스 를 위한 Python 코드 생성
  24. package simple // Func is a simple func func Func()

    {} // Add is a (less) simple func func Add(i, j int) int { return i + j } func Bool(b bool) bool { return b } func Comp64Add(i, j complex64) complex64 { return i + j } func Comp128Add(i, j complex128) complex128 { return i + j }
  25. from __future__ import print_function import simple as pkg print("doc(pkg):\n {}"

    .format(repr(pkg.__doc__)) print("pkg.Func()...") pkg.Func() print("fct = pkg.Func...") fct = pkg.Func print("fct()...") fct() ret = pkg.Add(1,2),) print("pkg.Bool(True)= {}" .format(pkg.Bool(True)) print("pkg.Bool(False)= {}".format(pkg.Bool(False)) a = 3+4j b = 2+5j print("pkg.Comp64Add({}, {}) = {}”.format(a, b, pkg.Comp128Add(a, b)) print("pkg.Comp128Add({}, {}) = {}" .format(a, b, pkg.Comp128Add(a, b))
  26. CERN-HSF (2017) 프로젝트 평가 방식 - 한 달 주기로 총

    3차례의 멘토 평가를 통과해야 함 - 매 평가마다 멘토가 피드백을 남김 그리고 Pass/Fail 결정 - 스케줄에 맞추어 프로젝트를 진행하고 있는가가 중점 포인트 - 프로젝트 작업 이외에 블로그 포스팅과 같이 외부 활동도 중요하게 생각 Suwon
  27. CERN-HSF (2017) 프로젝트 결과 및 최종보고서 작성 - CFFI를 통해

    CPython3와 PyPy를 지원할 수 있게됨. - 미지원 built in type에 대해서도 추가 지원 구현 - gopy 퍼포먼스 벤치마크 - 화상미팅으로 최종 발표 Suwon
  28. 알면 좋은 것들 - 프로젝트 기간에는 최소 주 1회 이상은

    멘토와 연락을 하자 - Proposal에 제시한 일정은 최대한 맞추는게 좋다 - Final submit은 영구박제되니 최대한 신중하게 작성하자 - 화상미팅 등 세부적인 행사는 함께하는 오픈소스 단체별로 다르다. Suwon
  29. 알면 좋은 것들 - 1차 평가 때는 대부분 합격하는 분위기

    - 2차 평가 때부터 많이 탈락시키는 분위기 - 2차~최종 평가에서 탈락하는 학생이 약 15-20% - 이미 어느정도 검증된 Proposal로 진행이 되는 프로젝트라는 점을 감안했을 때 낮지는 않은 수치 Suwon
  30. Coala (2018) What is coala project? - Code linting, 커밋메시지

    컨벤션 체크를 쉽게 할 수 있도록 도와주는 프로젝트 - DockerFile 작성하듯이 .coafile을 작성하면 쉽게 연동 가능 - Core 코드는 coala에 각종 플러그인성 코드들은 coala-bears에 구현이 되어있음 Suwon
  31. Coala (2018) Integration of ANTLRv4 into coala core - 2017년

    Coala에 제안했던 프로젝트를 2018년에 진행했으면 좋겠다는 메인테이너의 제안 - Nested Language의 Linting을 위한 experimental 프로젝트도 멘토링을 계획했으나, 참가 학생의 잠수로 중단… Maybe GSoC 2019? Suwon
  32. Coala (2018) Integration of ANTLRv4 into coala core - Antlr

    라이브러리를 Coala core 라이브러리에 통합 - Coala-bear를 작성 할 때 AST 정보에 접근할 수 있게 돕는 프로젝트 - 프로젝트 자체가 모호한면이 있어서 조금 더 구체화 - 유스케이스를 조사하여 언어 별 Linting tool에서 자주 가져올만한 AST 정보를 API화 Suwon
  33. Coala (2018) 학생 선발 과정에서 해야했던 것들 - 학생의 지원서

    검토 - 학생의 질문에 답변하기 - 학생의 지원서 피드백 남기기 Suwon
  34. Coala (2018) Integration of ANTLRv4 into coala core - 놀라웠던

    점은 지원한 학생들이 학부 1-2학년생들이었다는 것 - 최종 학생 결정은 upvote로 proposal을 최대한 구체적으로 제출한 학생을 선정 Suwon
  35. Coala (2018) 멘토로 활동한다는 것 - 학생으로 참가 할 때와

    달리, 멘토로 활동하는 것은 티셔츠를 받는 것 외에는 별다른 혜택이 없다. - 주로 멘토링 해준 부분은 AST 정보를 가져오는 API를 어떻게 통합할 것인지? - 어떤 랭귀지를 샘플로 잡고 해볼 것인지? - 사실 멘티 학생이 워낙 잘해줘서... Suwon
  36. Coala (2018) 느낀점 - 학생 때는 몰랐던 멘토의 사정 -

    GSoC를 어떻게 운영하면 좋을지 구글에 의견을 개진할 수도 있었던 좋은 경험 - GSoC 뿐만 아니라 GCI에도 참여하면서 지속적으로 많은 친구들을 더 사귈 수 있었던 좋은 기회 Suwon