본문 바로가기

[기고]오픈소스 소프트웨어 교육에 관한 접근법

OSS관리자2 게시글 작성 시각 2019-11-25 17:53:19 게시글 조회수 2847

오픈소스 소프트웨어 교육에 관한 접근법

 

 

이민석 학장

 

 

 

 

이민석 학장
이노베이션 아카데미

minsuk@innovationacademy.kr

 

 

 

 

글로벌 소프트웨어 산업에서 오픈소스 소프트웨어는 이제 거스를 수 없는 대세로 자리 잡았다. 오픈소스 소프트웨어는 교육, 연구, 공공에서도 예외 없이 사용되고 있다. 소프트웨어는 이제 오픈소스 소프트웨어를 의미하고, 유능한 소프트웨어 개발자는 오픈소스 소프트웨어에 익숙하다는 가정이 당연하게 되었다. 이러한 환경에서 특히 대학을 중심으로 오픈소스 소프트웨어 교육을 어떻게 할 것인가에 대한 이슈가 지속적으로 제기되고 있다. 

 

국내 대학들에서 오픈소스 소프트웨어 기술, 오픈소스 소프트웨어 방식의 교육은 소프트웨어 산업체의 오픈소스 소프트웨어 수용에 비하면 상대적으로 늦게 시작되었다. NIPA(정보통신산업진흥원)의 지원으로 한·중·일 모델 커리큘럼, 그에 따른 콘텐츠 보급, 공개소프트웨어 개발자 대회 등 여러 노력이 있었으나 대학들이 잘 움직이지는 않았다. 가장 확실한 시작은 2015년부터 시작된 과학기술정보통신부의 소프트웨어 중심대학 사업에서 교과과정 및 교과 외 활동 등에 오픈소스 소프트웨어 교육에 관한 계획을 담을 것을 RFP에 명시한 것이다. 실제 소프트웨어 중심대학들을 포함한 대학들이 전공 교육에서 오픈소스 소프트웨어를 교육 도구로 사용하고 오픈소스 소프트웨어 기술 주제들을 다양한 방식으로 교육하고 있다. 처음에는 대학들이 오픈소스가 개별 과목 또는 주제로 존재하는 방식으로 접근하였으나, 이제는 오픈소스가 모든 컴퓨터 과학, 소프트웨어 기술을 배우는 가장 좋은 방법으로, 일부는 책에서 배우던 이론을 실제 구현한 예로서 잘 인식되고 있는 것으로 보인다. 물론 라이선스 이슈와 같이 분리된 주제도 있다.

 

오픈소스 소프트웨어를 교육한다고 할 때 다루어질 수 있는 주제들을 정리하면 다음과 같다. 현장에서의 오픈소스 소프트웨어 관련 직무는 매우 다양하므로, 학과 및 세부 전공에 따라 모든 내용을 다 다룰 수는 없을 것이다. 여기에서는 오픈소스 소프트웨어와 관련하여 개발 환경, 라이선스, 커뮤니티 관점에서의 교육 주제를 우선순위 없이 모두 나열하고자 한다.

 

소프트웨어 전공 학생들에게는 당연히 전통적인 소프트웨어 전공의 주제들에 대한 교육이 필요하다. 그 전공 주제 수업에서의 실습, 과제, 프로젝트의 수행을 오픈소스 커뮤니티에서 주로 사용하는 도구를 사용하고, 실습 예제 소스, 과제나 프로젝트의 템플릿을 오픈소스 소프트웨어에서 추출하여 활용하는 것이 바람직하다. 현재는 거의 모든 소프트웨어 관련 학과들이 학부 4학년 수준에서 캡스톤 프로젝트를 팀 단위로 수행하는데 이 과정에서 아래 나열된 오픈소스 개발 환경과 프랙티스를 따를 수 있도록 한다. 즉, 최종적인 프로젝트의 결과를 github에 올려서 개발된 결과물을 오픈소스화하는 것이 아니라, 프로젝트 첫날부터, 프로젝트의 모든 산출물을 오픈하여 협업 개발을 경험하도록 하는 것이다.

 

전공 주제를 제외하고, 오픈소스 소프트웨어와 관련하여 다루거나 교육 과정 중에 익숙해져야 할 주제들은 다음과 같다.

 

1. 실행 시스템 : 실제 오픈소스 소프트웨어는 펌웨어, 부트로더, 운영체제, 라이브러리, 미들웨어, 시스템 서비스, 그래픽 사용자 인터페이스, 응용 프로그램까지 소프트웨어 계층 전체를 아우르고 있다. 또 리눅스가 아니라도 윈도우즈나 다른 상용 운영체제에서도 실행 시스템의 많은 부분은 오픈소스에 의존하고 있다. 이 영역에서는 대표적인 오픈소스 운영체제이면서 서버 환경과 개발 환경으로도 많이 사용되는 리눅스를 중심으로 오픈소스 소프트웨어가 실행되는 기반 환경인 운영체제와 관련된 다음 세부 주제들을 다룬다.
  • 주요 리눅스 배포판의 차이
  • 리눅스 기반 컴퓨팅 환경의 설치 및 사용
    • 최소한의 시스템 환경 이해 및 설정 
  • 주요 shell 명령과 shell script의 사용 
  • 패키지 설치, 구성, 제거
  • 가상 머신 환경
  • 컨테이너 기반 실행 환경
  • 그리고 라즈베리파이와 같은 임베디드 환경

 

2. 개발 도구 및 언어 : 학생들이 회사나, 커뮤니티의 개발자들이 많이 사용하는 소프트웨어 개발 도구를 수업 환경에서도 사용하는 것이 필요하다. 오픈소스와 상용 개발 도구 모두를 경험하는 것이 좋은데, 통상적으로 사용되는 많은 상용 소프트웨어 개발 도구도 학생들 개인과 학교의 교육 환경에서는 무료로 제공되는 경우가 많다. 프로그래밍 언어 교육에는 각 언어의 대표적인 코딩 스타일 교육이 포함되어야 한다.

  • Python을 포함한 프로그래밍 언어 
  • 각 프로그래밍 언어별 디버깅 환경과 도구
  • 한두 가지의 IDE 환경, Build 도구와 과정
  • git을 포함한 버전 관리 도구
  • github을 포함한 원격 저장소(remote repository)의 활용

 

3. 개발 방식 (Practice) : 소프트웨어 프로젝트들은 각각 사용하는 언어와 도구도 다르고, 개발 진행될 때, 개발자들이 소통하는 방식도 조금씩 다를 수 있지만, 모든 프로젝트는 이슈 관리, 개발, 리뷰, 시험, 품질 관리, 배포에 이르는 과정을 거치게 된다. 따라서 이 과정을 교과과정에서 진행되는 팀 단위의 프로젝트에서 경험하는 것이 필요하다. 

  • ALM (Application Lifecycle Management)의 이해
  • 페어 프로그래밍 (pair programming), 코드 리뷰 (code review), 테스트 주도 개발(test driven development), 이슈 관리 (issue tracking), 지속적 통합 (continuous integration), 정적 분석에 의한 코드 품질 관리 (static code analysis) 등을 포함하는 협업 개발 프랙티스의 경험
  • 협업을 위한 커뮤니케이션 방식 및 도구

 

4. 오픈 데이터, 오픈 API : 실제 오픈소스 기술 및 환경은 오픈소스 소프트웨어만을 의미하는 것은 아니다. 주로 공공기관들은 자신들의 데이터를 누구나 이용할 수 있도록 오픈하고 있고, 또 여러 회사가 자신들의 대표적인 서비스를 오픈 API 형태로 외부의 개발자들이 만들어내는 서비스와 연계하여 활용할 수 있도록 하고 있다. 수업에서 또 프로젝트에서 이미 있는 것이 있다면, 그리고 같은 종류의 서비스를 교육적으로 직접 만들어보는 것이 큰 의미가 있지 않다면, 오픈 API, 데이터를 활용하는 경험을 가지도록 한다.

 

5. 오픈소스 라이선스 : 오픈소스 소프트웨어는 OSI에서 정한 오픈소스 라이선스 기준을 만족하는 수준의 저작권을 가지면서 공개된 소프트웨어를 말한다. 오픈소스 프로젝트 결과물이 성공적으로 확산되기 위해서는 적절한 저작권의 선택이 중요하기 때문에 다음과 같은 주제들에 관한 이해가 필요하다고 볼 수 있다.

  • 지적 재산권과 저작권에 대한 이해
  • 오픈소스 라이선스가 만들어진 배경과 철학 
  • 주요 오픈소스 라이선스에 대한 이해
  • 오픈소스 라이선스와 비즈니스 관계

 

6. 오픈소스 거버넌스 : 오픈소스 거버넌스는 외부의 오픈소스 결과물을 이용할 때, 사용된 오픈소스 소프트웨어들이 가지는 저작권 관점의 제약 사항들을 만족하고, 또 자신들이 외부에 제공하는 오픈소스 소프트웨어도 외부의 결과물들과 섞여서 성공적으로 확산되어 사용될 수 있도록 하는 관리 체계로 다음과 같은 요소들이 포함된다. 

  • 오픈소스 거버넌스 프레임워크
  • 라이선스 정합성
  • 기여자 라이선스 계약 (CLA, Contributor License Agreements)
  • 라이선스 분쟁 사례

 

7. 오픈소스의 문화 : 오픈소스 소프트웨어는 이전에 인류가 이뤄낸 많은 기술, 문화적 혁신과 발전의 배경이 되었던 과학적 기술과 관찰 결과의 공유 정신에 그 기반을 두고 있다. 그 기반 위에서 오픈소스의 사회적 현상, 커뮤니티 문화, 커뮤니티 현상 등을 이해할 필요가 있다.

  • 오픈소스의 역사와 배경
  • 오픈소스 관련 재단들의 설립 취지와 역할
  • 오픈소스 커뮤니티의 의미와 역할
  • 개발자 행사 참여를 통한 경험

 

8. 오픈소스의 경제적 효과 : 오픈소스 소프트웨어는 현실적으로 만들어 공개하는 조직들과 사용하는 조직 모두에게 경제적으로 이득을 준다. 따라서 그 경제적 이득의 원천을 어디에 있는지, 그 이득을 최대화하기 위하여 각 조직들이 어떤 일들을 해왔고, 그 성과는 어떠했는지를 배울 필요가 있다. 

  • 오픈소스의 혁신 사례
  • 오픈소스의 활용에 따른 효과
  • 오픈소스 비즈니스 모델
  • 오픈소스 소프트웨어 정책
  • 오픈소스 성숙도 모델

     

 

오픈소스 소프트웨어는 이제 거스를 수 없는 대세로 자리 잡았다. 모든 영역에서 오픈소스 소프트웨어를 제외하고는 의미 있는 가치를 생산하기 어려워졌으며, 시장이 원하는 혁신의 속도를 따라가기 어려워졌다. 이 때문에 오픈소스 기술, 문화, 방법론, 법적인 이슈 등에 관한 교육이 여러 수준에서 필요하며, 이 글에서는 오픈소스 소프트웨어 교육을 한다고 할 때, 다루어야 할 주요 주제들에 관하여 설명하였다. 

 

오픈소스를 모르는 개발자는 이제 설 땅이 없는 시기가 도래했다. 오픈소스 소프트웨어 교육이 더 많이 진행되어 역량 있는 개발자 양성, 연구 개발 결과가 널리 확산되어 혁신을 주도하는 것을 목표로 하는 학교와 연구소, 산업에서 오픈소스 소프트웨어가 더 활성화되기를 기대한다. 

 

 

 ※ 이노베이션 아카데미이노베이션 아카데미 설명

- 프랑스에서 시작된 ‘에꼴42’의 혁신적 교육시스템(無교수, 無교재, 無학비)을 도입하여 소프트웨어 분야의 전문가를 육성하기 위한 교육기관으로,자기주도적인 학습과 동료 간 학습을 통해 문제해결과 협업능력을 키워 스스로 성장하는 소프트웨어 인재를 양성하고자 한다. 
  * 오는 11월 30일까지 소프트웨어 교육 ‘42서울’ 프로그램의 제 1기 교육생을 모집 중이다.

   (온라인 접수 : https://innovationacademy.kr/)

 

 

 

크리에이티브 커먼즈 라이선스

 

이 저작물은 크리에이티브 커먼즈 저작자표시-비영리-변경금지 4.0 국제 라이선스에 따라 이용할 수 있습니다.

 

공개SW 교육
.
2019
공개SW 가이드/보고서 - 번호, 제목, 작성자, 조회수, 작성
번호 제목 작성자 조회수 작성
공지 [2024년] 오픈소스SW 라이선스 가이드 개정판 발간 file support 3544 2024-01-03
공지 [2024년] 기업 오픈소스SW 거버넌스 가이드 개정판 발간 file support 2967 2024-01-03
공지 [2024년] 공공 오픈소스SW 거버넌스 가이드 개정판 발간 file support 2913 2024-01-03
공지 공개 소프트웨어 연구개발(R&D) 실무 가이드라인 배포 file support 15365 2022-07-28
공지 공개소프트웨어 연구개발 수행 가이드라인 file OSS 15270 2018-04-26
348 [기고]오픈소스 소프트웨어 교육에 관한 접근법 file OSS관리자2 2847 2019-11-25
347 국내외 공개SW 교육 현황 file OSS관리자2 3467 2019-11-25
346 [공개SW 월간브리핑] 한국의 개방형 OS, 리눅스 생태계 살아날까 OSS관리자 2407 2019-10-25
345 보안성을 강화한 ‘구름OS’ file OSS관리자 5791 2019-10-25
344 사용자 친화적인 ‘하모니카OS’ file OSS관리자 2747 2019-10-25
343 [공개SW 월간브리핑]오픈소스 컴플라이언스 준수와 OpenChain file OSS관리자 1892 2019-09-26
342 오픈소스 컴플라이언스 관리와 LG전자 사례 file OSS관리자 4238 2019-09-26
341 “오픈소스 컴플라이언스? 공유와 협업으로 모두 함께 달성할 수 있다!” file OSS관리자 4122 2019-09-26
340 [기고] 공개SW 컴플라이언스 준수를 위한 오픈소스 관리 전략 (OpenChain) file OSS관리자 2173 2019-09-26
339 [기고] 공개SW 생태계와 성장하는 AI 기술 트렌드 file OSS관리자 2809 2019-08-22
맨 위로
맨 위로