나의 코드에서 모두의 코드로
이한
소개
이한
전기전자컴퓨터공학과 (2학년 수료, 휴학)
인턴
sn0wle0pard
sn0wle0pard/ipytracer
97
BSD-3-Clause-Clear
파이썬 알고리즘 시각화 라이브러리
sn0wle0pard/vimrc.io
MIT
Vimrc 생성 사이트 http://vimrc.io
왜 오픈소스에 관심을 가지게 되었나요?
우연한 시작
당시 발표를 들으려고 참석
학교에서 알려주지 않는 오픈소스 이야기
당시 들은 이야기
- 오픈소스 기여 이야기
- 생각보다 어렵지 않아요!
- 재미있어 보이는 오픈소스 대회들
제 4회 D2 Campus Seminar
지방 (예비) 개발자
집도 학교도 모두 지방
인턴, 컨퍼런스 참석 하기 힘듬 등등
실력을 보여줄/키울 수단이 필요
선배들의 조언
코드는 언제나 어디서나 정직
많이 코딩해보고, 많이 보여줘라
작성하는 모든 코드을 모두 GitHub으로 관리
실제로 인턴을 구하는데 도움이 되었음
JakeWharton/RxBinding
@CheckResult @NonNull
public static Observable<Object> clicks(@NonNull View view) {
checkNotNull(view, "view == null”);
return new ViewClickObservable(view);
}
@Override public void onClick(View v) {
if (!isDisposed()) {
observer.onNext(Notification.INSTANCE);
}
}
ViewClickObservable.javaRxView.java
새로운 개념을 이해하기 위해
6.2K
6K
Apache 2.0
RX
Reactive
Extension
Algorithm Visualizer
parkjs814/AlgorithmVisualizer
Algorithm Visualizer for Jupyter/IPython Notebook
sn0wle0pard/ipytracer
97
8
BSD-3-Clause-Clear
2016 출전 및
Beyond Fest 수상
ipytracer
ipytracer
여러분의 코드를
시각화 해서 보여줍니다!
오픈소스를 공개하며 겪은 일들
나만 쓸 코드라면 하지 않았을 일들
라이선스 정하기
Hall of shame
FFmpeg를 사용하면서 GPL 라이선스를 지키지 않은 프로그램 목록들
국내의 유명한 동영상 플레이어들도 목록에 있었거나 있다

오픈소스도 라이선스가 있다.

각자 고유한 범위를 가지고 있으니 적합한 것을 선택 해야 한다
모두 자유롭게 사용하자! MIT!
D2 CAMPUS FEST 2016 오픈소스 라이선스 中
아파치 라이선스를 사용한다면,
GPL 라이선스를 사용하는 라이브러리를 피하셔야 합니다.
여러 라이선스가 사용될 때는 더 제약이 강한 라이선스를 고르는게 좋습니다
D2 Fest 에서 알게 된 사실
https://www.apache.org/licenses/GPL-compatibility
Apache 2 software can therefore be included in GPLv3 projects,
because the GPLv3 license accepts our software into GPLv3 works.
However, GPLv3 software cannot be included in Apache projects.
GPL Compatibility
라이선스 주의점
라이선스 수정
MIT에서 BSD-3로 라이선스 변경
사용할 라이브러리 선정기준 중 하나가 됨
Neither the name of the [organization] nor the names of its con-
tributors may be used to endorse or promote products derived
from this software without specific prior written permission.
사용하는 라이브러리 대부분 MIT 라이선스
Chart.js는 BSD-3-Clause-Clear로 배포
일반적으로 두 라이선스는 호환된다고 여겨짐
단, BSD-3의 다음 조건이 마음에 걸림
좋은 코드를 위해서
Tracer
Chart
Tracer
List1D
Tracer
파이썬 list의 역할을 함
대부분의 로직은 비슷하고, View처리 로직만 다름
OOP 상속!
list
디자인 패턴
MC를 V에서 떼어 놓기 어려운 구조
코드 작성도 어렵고, 보기에도 어려움
디자인 패턴을 공부
MVP패턴에 가깝게 구현
Test
“내 코드는 의도 그대로 동작하고 있나요?”
“리팩토링 제대로 한 거 맞나요?”
“하나 하나 확인 할 수 있을까요?”
내 코드 작동은 누가 보증할까요? Unit Test!
ipytracer의 경우 파이썬 list에서 되는 일은 모두 그대로 작동해야 함
처음 테스트 해보니 정말 펑펑 터짐
Test
하세요!
Test
꼭꼭 하세요!
Git
실수로 개인정보가 포함된 파일이 소스에 포함
커밋까지 해버렸음
https://help.github.com/articles/removing-sensitive-data-from-a-repository/
인기가 없어서 본사람은 없었고 다행히 Git History에서 제거
주의할점: Revert Commit 혹은 파일 제거를 위한 커밋 X
파일 제거 커밋 검색하면 엄청 잘 나옵니다
문서화
주석 달기도 힘든데 문서는 무슨 문서 …
그럼 주석만 다세요!
프로젝트 홍보
구슬도 꿰어야 보배!
Reddit, Python Korea에 홍보
해당 플랫폼에 많은 영향을 주는 커뮤니티에 홍보 + 영어권
덕분에 Python Weekly에 소개됨
http://qiita.com/tttamaki/items/fadda266e6d52b06e436
Qiita: 일본의 프로그래밍 정보 공유 사이트
ipytracer를 사용한 예제가 올라옴
weibo에서 중국인이 소개해 주기도 그 주에 github 트래픽이 엄청 났음
염원하던 Pycon 발표의 기회도!
유명한 라이브러리들의 코드의 도움도 많이 받았지만,
스타수가 적은 코드들이 엄청난 도움이 될 때도 있었음
여러분의 코드는 누군가에게 도움이 될 수 있습니다
SNS 처럼 생각해보세요!
Social Coding
오픈소스 기여 이야기
이젠 더 큰 프로젝트를 향한 욕심
학부생은 무엇을 할 수 있을까요?
첫 기여
Hexo
Node 기반 정적 블로그 툴
코드하이라이팅에 highlight.js를 사용
highlight.js가 JSX를 지원하지 않음
Prism.js
코드 하이리팅 라이브러리 JSX 지원
MDN 사이트에서 사용중
hexo-prism-plugin이 있었음
그런데 이번에는 줄번호가 표시 안됨!
첫 기여
Prism.js 튜토리얼코드를 참고해
hexo-prism-plugin에 적용
7번째 이슈였고 Merge!
이 후로도 사용하는 몇몇 라이브러리에
번역제공으로 기여
CPython
그 외 이야기
일부 프로젝트의 경우 Contributor agreement에 서명해야함
기여자 가이드를 꼼꼼하게 읽지 않아 해메었음
새삼 느겼던 Test의 중요성
리뷰어들이 매우 친절하셨음 (프로젝트에 긍정적인 시선이 됨)
이슈를 발견하기도 함
상당기간 파이썬의 동안 Mac Travis CI가 제대로 동작하지 않았음
파이썬정도의 프로젝트에서도 이런 실수가 나오는 구나
저는 학부생도 모든 걸 할 수 있다고 생각합니다
물론 관련 지식이 필요한 프로젝트는 어렵겠지요
학생을 위한 많은 프로그램들
Easy Issue
문서번역
오픈소스
커미터/메인테이너와
멘토링 및 기여 참여
학부생 오픈소스
개발 멘토링
오픈소스
커미터/메인테이너와
멘토링 및 기여 참여
오픈소스 지원사업
큰 프로젝트에 기여하는 일은 생각보다 어려운 일이 아닙니다.
큰 프로젝트도 간단한 실수가 나오기도 합니다.
Social Coding! 여러분의 코드는 누군가 에게 도움이 될 수 있습니다!
감사합니다!

네이버 오픈소스 세미나 - 나의코드에서 모두의 코드로 UNIST 이한

  • 1.
  • 2.
    소개 이한 전기전자컴퓨터공학과 (2학년 수료,휴학) 인턴 sn0wle0pard sn0wle0pard/ipytracer 97 BSD-3-Clause-Clear 파이썬 알고리즘 시각화 라이브러리 sn0wle0pard/vimrc.io MIT Vimrc 생성 사이트 http://vimrc.io
  • 3.
    왜 오픈소스에 관심을가지게 되었나요?
  • 4.
    우연한 시작 당시 발표를들으려고 참석 학교에서 알려주지 않는 오픈소스 이야기 당시 들은 이야기 - 오픈소스 기여 이야기 - 생각보다 어렵지 않아요! - 재미있어 보이는 오픈소스 대회들 제 4회 D2 Campus Seminar
  • 5.
    지방 (예비) 개발자 집도학교도 모두 지방 인턴, 컨퍼런스 참석 하기 힘듬 등등 실력을 보여줄/키울 수단이 필요 선배들의 조언 코드는 언제나 어디서나 정직 많이 코딩해보고, 많이 보여줘라 작성하는 모든 코드을 모두 GitHub으로 관리 실제로 인턴을 구하는데 도움이 되었음
  • 6.
    JakeWharton/RxBinding @CheckResult @NonNull public staticObservable<Object> clicks(@NonNull View view) { checkNotNull(view, "view == null”); return new ViewClickObservable(view); } @Override public void onClick(View v) { if (!isDisposed()) { observer.onNext(Notification.INSTANCE); } } ViewClickObservable.javaRxView.java 새로운 개념을 이해하기 위해 6.2K 6K Apache 2.0 RX Reactive Extension
  • 7.
  • 8.
    Algorithm Visualizer forJupyter/IPython Notebook sn0wle0pard/ipytracer 97 8 BSD-3-Clause-Clear 2016 출전 및 Beyond Fest 수상 ipytracer
  • 9.
  • 10.
    오픈소스를 공개하며 겪은일들 나만 쓸 코드라면 하지 않았을 일들
  • 11.
    라이선스 정하기 Hall ofshame FFmpeg를 사용하면서 GPL 라이선스를 지키지 않은 프로그램 목록들 국내의 유명한 동영상 플레이어들도 목록에 있었거나 있다  오픈소스도 라이선스가 있다.  각자 고유한 범위를 가지고 있으니 적합한 것을 선택 해야 한다 모두 자유롭게 사용하자! MIT!
  • 12.
    D2 CAMPUS FEST2016 오픈소스 라이선스 中 아파치 라이선스를 사용한다면, GPL 라이선스를 사용하는 라이브러리를 피하셔야 합니다. 여러 라이선스가 사용될 때는 더 제약이 강한 라이선스를 고르는게 좋습니다 D2 Fest 에서 알게 된 사실 https://www.apache.org/licenses/GPL-compatibility Apache 2 software can therefore be included in GPLv3 projects, because the GPLv3 license accepts our software into GPLv3 works. However, GPLv3 software cannot be included in Apache projects. GPL Compatibility 라이선스 주의점
  • 13.
    라이선스 수정 MIT에서 BSD-3로라이선스 변경 사용할 라이브러리 선정기준 중 하나가 됨 Neither the name of the [organization] nor the names of its con- tributors may be used to endorse or promote products derived from this software without specific prior written permission. 사용하는 라이브러리 대부분 MIT 라이선스 Chart.js는 BSD-3-Clause-Clear로 배포 일반적으로 두 라이선스는 호환된다고 여겨짐 단, BSD-3의 다음 조건이 마음에 걸림
  • 14.
    좋은 코드를 위해서 Tracer Chart Tracer List1D Tracer 파이썬list의 역할을 함 대부분의 로직은 비슷하고, View처리 로직만 다름 OOP 상속! list
  • 15.
    디자인 패턴 MC를 V에서떼어 놓기 어려운 구조 코드 작성도 어렵고, 보기에도 어려움 디자인 패턴을 공부 MVP패턴에 가깝게 구현
  • 16.
    Test “내 코드는 의도그대로 동작하고 있나요?” “리팩토링 제대로 한 거 맞나요?” “하나 하나 확인 할 수 있을까요?” 내 코드 작동은 누가 보증할까요? Unit Test! ipytracer의 경우 파이썬 list에서 되는 일은 모두 그대로 작동해야 함 처음 테스트 해보니 정말 펑펑 터짐
  • 17.
  • 18.
  • 19.
    Git 실수로 개인정보가 포함된파일이 소스에 포함 커밋까지 해버렸음 https://help.github.com/articles/removing-sensitive-data-from-a-repository/ 인기가 없어서 본사람은 없었고 다행히 Git History에서 제거 주의할점: Revert Commit 혹은 파일 제거를 위한 커밋 X 파일 제거 커밋 검색하면 엄청 잘 나옵니다
  • 20.
    문서화 주석 달기도 힘든데문서는 무슨 문서 … 그럼 주석만 다세요!
  • 21.
    프로젝트 홍보 구슬도 꿰어야보배! Reddit, Python Korea에 홍보 해당 플랫폼에 많은 영향을 주는 커뮤니티에 홍보 + 영어권 덕분에 Python Weekly에 소개됨 http://qiita.com/tttamaki/items/fadda266e6d52b06e436 Qiita: 일본의 프로그래밍 정보 공유 사이트 ipytracer를 사용한 예제가 올라옴 weibo에서 중국인이 소개해 주기도 그 주에 github 트래픽이 엄청 났음 염원하던 Pycon 발표의 기회도!
  • 22.
    유명한 라이브러리들의 코드의도움도 많이 받았지만, 스타수가 적은 코드들이 엄청난 도움이 될 때도 있었음 여러분의 코드는 누군가에게 도움이 될 수 있습니다 SNS 처럼 생각해보세요! Social Coding
  • 23.
    오픈소스 기여 이야기 이젠더 큰 프로젝트를 향한 욕심
  • 24.
    학부생은 무엇을 할수 있을까요?
  • 25.
    첫 기여 Hexo Node 기반정적 블로그 툴 코드하이라이팅에 highlight.js를 사용 highlight.js가 JSX를 지원하지 않음 Prism.js 코드 하이리팅 라이브러리 JSX 지원 MDN 사이트에서 사용중 hexo-prism-plugin이 있었음 그런데 이번에는 줄번호가 표시 안됨!
  • 26.
    첫 기여 Prism.js 튜토리얼코드를참고해 hexo-prism-plugin에 적용 7번째 이슈였고 Merge! 이 후로도 사용하는 몇몇 라이브러리에 번역제공으로 기여
  • 27.
  • 28.
    그 외 이야기 일부프로젝트의 경우 Contributor agreement에 서명해야함 기여자 가이드를 꼼꼼하게 읽지 않아 해메었음 새삼 느겼던 Test의 중요성 리뷰어들이 매우 친절하셨음 (프로젝트에 긍정적인 시선이 됨) 이슈를 발견하기도 함 상당기간 파이썬의 동안 Mac Travis CI가 제대로 동작하지 않았음 파이썬정도의 프로젝트에서도 이런 실수가 나오는 구나
  • 29.
    저는 학부생도 모든걸 할 수 있다고 생각합니다 물론 관련 지식이 필요한 프로젝트는 어렵겠지요 학생을 위한 많은 프로그램들 Easy Issue 문서번역 오픈소스 커미터/메인테이너와 멘토링 및 기여 참여 학부생 오픈소스 개발 멘토링 오픈소스 커미터/메인테이너와 멘토링 및 기여 참여 오픈소스 지원사업
  • 30.
    큰 프로젝트에 기여하는일은 생각보다 어려운 일이 아닙니다. 큰 프로젝트도 간단한 실수가 나오기도 합니다. Social Coding! 여러분의 코드는 누군가 에게 도움이 될 수 있습니다!
  • 31.