그렇게 커미터가 된다: Python을 통해 오픈소스 생태계 가르치기
- Python Community
- Difficulty Beginner
- 2018-08-19 (일요일) 15:40 - 16:20
- 한국어
- 105
- Photography and recording is allowed
Slide
https://www.slideshare.net/inureyes/python-110684727/
Video
https://www.youtube.com/watch?v=kr-VJYkOpMY
Description
오픈소스 및 오픈소스 개발 방법론은 현대 프로그래밍 개발 및 생태계에서 가장 중요한 축을 담당하고 있다. 전세계 유수의 IT 기업들은 거의 모두 오픈소스를 사용하며, 자체 결과물을 오픈소스로 공개하고 있다. 또한 윈도우 및 맥오에스, 리눅스 및 안드로이드를 비롯한 운영체제들 또한 오픈소스로 개발되거나 또는 오픈소스 커뮤니티 방법론을 이용해 테스트되고 있다.
최근 오픈소스 소프트웨어 및 개발 방법론은 과거 컴퓨터 언어 및 개발 과정과 큰 차잇점이 있다. 가장 큰 차잇점은 네트워크에 의해 가속화된 생태계의 속도이다. 최근 오픈소스 소프트웨어 생태계의 경우 개발 방법론, 기술, 라이브러리 및 프로젝트들이 등장하고 성숙하는 과정에 걸리는 시간이 기존 컴퓨터 생태계에 비해 굉장히 짧다. 따라서 오픈소스 참여 기술보다는 오픈소스 생태계 및 변화의 흐름을 이해하는 것이 더 중요해지고 있다. 따라서 일반적인 대학 교과과정의 타임 프레임을 적용하여 과목을 설계하기에는 무리가 있다.
이 세션에서는 오픈소스 소프트웨어 대학 교육 과정을 설계하고 2년간 강의하며 겪은 다양한 경험을 Python 언어를 중심으로 다룬다. Python은 초기 접근이 용이하여 21세기 초부터 많은 대학이 기초 프로그래밍 언어로 선택하고 있어, 오픈소스 소프트웨어 방법론 교과 과정의 주 언어로 선택하였다. 교과 과정이 지향하는 바는 프로그래밍과 오픈소스 문화 두가지이다. 이를 반영한 교육 과정 설계 시 주의한 점들과, 2년간의 경험 끝에 잘못 생각한 것으로 판단하게 된 몇가지에 대해 간단히 소개한다.
오픈소스 소프트웨어 교육 과정에서는 초반부 오픈소스의 역사, 문화에 대해 학습한 방법과, Python 기반의 오픈소스 프로젝트 진행 과정에서 경험한 다양한 사례 및 장단점에 대해 소개한다. 개발 과정에서는 GitHub을 이용한 협업, 오픈소스 소프트웨어를 무에서 시작하거나 포크해서 시작하는 과정, 공동 작업에서의 PEP 준수의 중요성, 컨트리뷰터,커미터,메인테이너 결정 및 운영과, 팀 내 충돌, 그리고 Code of Conduct를 만들었던 과정을 차례로 설명한다. 또한 배포 패키지 개발을 위해 pypi를 사용하고, manpage로 매뉴얼을 준비하는 과정 및 python 패키지 제작시 겪는 몇몇 허들에 대해서도 소개한다.
마지막으로 과정에서 동기 부여에 대해 고민한 여러 생각 및 경험과 함께, 수업 과정에서 사용한 오리지널 프로젝트 원저자와의 GitHub을 통한 소통 및 오픈소스 경험의 확장 과정을 소개한다.