[ 기술 컬럼 ] Open Source 개념 및 활용 - 데브 구루 의 Hello World ! 
 [ 기술 컬럼 ] Open Source 개념 및 활용 
 시간 : : 5 월 21 , 2020 
 오픈 소스 란 ? 
 소스 코드 , 디자인 문서 , 제품 내용 등 을 공개 해 누구 나 수정 , 재 배포 할 수 있 는 소프트웨어 를 말 합니다 . 
 오픈 소스 ≠ 프리웨어 
 오픈 소스 는 소스 코드 가 공개 되 어 있 어 흔히 무료 라고 생각 하 지만 , 이 는 잘못 된 인식 입니다 . 
 오픈 소스 는 각 프로젝트 의 라이선스 에 따라 몇 가지 제약 사항 이 존재 하 며 , 
 상업 적 으로 도 많이 활용 되 어 유료 인 경우 도 존재 합니다 . 
 오픈 소스 프로젝트 들 도 저작 권 이 존재 하 며 오픈 소스 라이선스 를 통해서 
 각 프로젝트 의 제약 사항 과 저작 권 , 상업 적 사용 등 의 항목 에 대해서 명시 하 고 있 습니다 . 
 아래 표 는 주로 사용 되 는 오픈 소스 라이선스 와 각 라이선스 의 특징 을 나타내 고 있 습니다 . 
 2 차 적 저작물 재 공개 의무 , 독점 SW 와 결합 가능 에 
 O 표시 가 되 어 있 는 라이선스 의 경우 주의 해서 사용 해야 합니다 . 
 * 출처 : 오픈 소스 SW 라이선스 가이드 << 정보 통신부 , 컴퓨터 프로그램 보호 위원회 >> 
 아래 주의 해야 할 라이선스 들 의 특징 과 적용 사례 를 참조 하 시 면 이해 하 기 편하 실 겁니다 . 
 특징 적용 사례 
 LGPL 수정 한 소스 코드 LGPL 로 공개 
 LGPL Static Linking 으로 사용 하 면 전체 소스 코드 공개 모질 라 파이어폭스 ( v 2 . 1 ) 
 GPL GPL 소스 코드 를 이용 한 소프트웨어 는 전체 GPL 로 공개 리눅스 커널 ( v 2 . 0 ) 
 AGPL AGPL 소스 코드 를 이용 한 소프트웨어 전체 AGPL 로 공개 
 웹 서비스 로 제공 되 는 서비스 포함 몽고 DB ( v 3 . 0 ) 
 MPL 소스 코드 와 실행 파일 의 저작 권 을 분리 한 게 특징 
 MPL 의 경우 수정 한 코드 에 대해서 는 원작자 에게 알리 고 
 소스 코드 를 공개 해야 하 지만 실행 파일 에 대해서 는 
 별도 의 라이선스 를 적용 할 수 있 습니다 . 모질 라 파이어폭스 
 라이선스 의 위반 
 라이선스 표 와 제약 사항 을 확인 하 며 사용 하 다 보 면 어렵 고 불편 합니다 . 
 그래서 소스 가 모두 공개 되 어 있 기 때문 에 마음 만 먹 으면 
 라이선스 를 준 수 하 지 않 고 무단 으로 사용 하 려고 할 수 있 습니다 . 
 그러나 수 많 은 오픈 소스 프로젝트 사용 자 들 과 오픈 소스 관련 재단 들 이 
 라이선스 위반 사례 에 대해 확인 하 고 있 으며 라이선스 에 따라서 저작권법 에 저촉 될 수 있 습니다 . 
 미국 법원 에서 는 오픈 소스 라이선스 가 집행력 있 는 계약 임 을 인정 하 고 있 고 
 라이선스 소송 은 본국 이 아닌 다른 나라 에서 도 가능 하 기 때문 에 법 적 제재 를 받 을 수 있 어 
 라이선스 에 대해 충분히 이해 하 고 주의 해서 사용 해야 합니다 . 
 우리 나라 에서 는 발생 한 라이선스 위반 사례 로 는 한글 과 컴퓨터 와 아티 펙 스 간 에 발생 한 
 오픈 소스 무 단도 용 관련 분쟁 소송 으로 자신 들 이 공개 한 오픈 소스 인 ' 고스트 스크립트 ’( PDF 관련 기술 ) 를 
 무 단도 용 에 대해 합의금 205 만 달러 ( 약 24 억 원 ) 로 합의 하 며 , 소송 이 취하 되 는 사건 이 있 었 습니다 . 
 이 예시 를 통해 라이선스 문제 의 심각 성 을 확인 할 수 있 습니다 . 
 그럼 어떤 오픈 소스 를 사용 해야 할까요 ? 
 현재 의 오픈 소스 는 매우 다양 한 분야 에 방대 하 게 존재 하 고 있 습니다 . 
 초창기 오픈 소스 확장 에 불씨 를 당겼 으며 현재 까지 널리 사용 되 는 OS 인 리눅스 부터 
 최근 전문 개발자 이외 에 도 많 은 사람 이 코딩 을 손쉽 게 사용 할 수 있 게 해 준 프로그래밍 언어 인 파이썬 까지 첨자 분야 와 범위 를 확장 하 고 있 습니다 . 
 그 중 에서 유명 하 고 흥미 로운 몇 가지 오픈 소스 프로젝트 를 소개 해 드리 겠 습니다 . 
 이 오픈 소스 를 사용 할 때 는 무료 이 지만 , 소스 코드 수정 시 에 는 저작 권 과 라이선스 를 명시 해야 합니다 . 
 * Eloctron 기반 의 Micorosoft 의 오픈 소스 프로젝트 인 코드 에디터 입니다 . 가볍 고 , 다양 한 환경 에서 사용 이 가능 합니다 . ( * Node . js 의 HTML , JS , CSS 인 웹 언어 로 데스크톱 프로그램 제작 플랫 폼 ) 오픈 소스 프로젝트 답 게 많 은 개발자 들 이 Visual Studio Code 의 플러그인 을 제작 하 였으며 이 를 활용 해 다양 한 언어 와 분야 에서 IDE 로 사용 이 가능 해 Stack Overflow 의 Developer Survey Results 2019 의 결과 에서 Most Popular Development Environments 부분 50 . 7 % 로 압도 적 인 1 위 를 차지 할 만큼 인기 있 는 개발 도구 가 되 었 습니다 . 사실 오픈 소스 에 조금 이 라도 관심 이 있 으시 면 의아 하 실 겁니다 . 원래 오픈 소스 운동 이 일어나 던 초창기 에 는 MS 가 오픈 소스 진영 과 대척점 에 있 었 죠 , 하지만 MS 는 최근 안드로이드 OS 성장 등 의 오픈 소스 동향 을 보 며 완전히 노선 을 변경 하 였 습니다 . 최근 Github 을 인수 해 유료 기능 이 었 던 것 을 개인 개발자 들 에게 무료 로 제공 했으며 , 올해 는 NPM 을 인수 하 였 고 실패 하 였 지만 Docker 도 인수 하 려는 등 의 행보 를 보이 며 오픈 소스 에 지대 한 관심 을 보이 고 있 습니다 . 이 처럼 오픈 소스 에 회의 적 이 었 던 MS 조차 오픈 소스 를 적극 활용 하 고 있 으니 앞 으로 오픈 소스 를 활용 하 는 기술 이 필수 라고 볼 수 있 습니다 . 
 TOAST UI 시리즈 
 NHN 가 자사 클라우드 서비스 인 TOAST 에 서비스 를 제공 하 며 웹 페이지 의 UI 를 개선 하 기 위해 개발 한 툴 입니다 . 편리 하 고 쉽 게 UI 를 구성 할 수 있 으며 준수 한 퀄리티 의 디자인 을 제공 합니다 . TOAST UI 의 경우 하나 의 프로젝트 가 아닌 시리즈 로 Chart , Editor , Grid , Calendar , Image - editor 를 제공 하 며 추가 적 으로 UI 를 구성 하 는 데 편리 할 만 한 Components 도 제공 하 고 있 습니다 . 
 << TOAST Chart >> 
 << TOAST Component Rolling >> 
 fzf ( command - line fuzzy finder ) 
 앞서 대 기업 들 의 오픈 소스 프로젝트 위주 로 소개 했 지만 fzf 는 평소 vim 의 확장 프로그램 개발 로 유명 한 개인 개발자 가 시작 한 오픈 소스 프로젝트 로 세계 적 으로 많 은 관심 을 받 고 있 습니다 . ( Github 의 2 만 9 천 개 의 스타 를 받 았 으며 , 대략 300 위 권 ) fzf 는 커맨드 라인 검색 툴 로 유닉스 , 리눅스 등 의 시스템 에서 대충 생각 나 는 조건 들 로 검색 해도 원 하 는 결과 를 빠르 게 찾 을 수 있 는 검색 툴 입니다 . Go 를 이용 해서 제작 되 었 으며 파일 의 인덱싱 과 동시 에 결과 필터링 으로 빠른 검색 속도 자랑 합니다 . 
 << fzf 를 이용 한 검색 예시 >> 
 오픈 소스 에 대한 개념 과 주 의 사항 을 알 게 되 었 다면 직접 참여 해 보 며 익히 는 것 이 가장 좋 습니다 . 
 오픈 소스 프로젝트 참여 는 개발자 에게 도움 이 되 고 커뮤니티 에 도움 되 는 모든 행위 가 오픈 소스 에 기여 하 는 일 이 기 때문 에 오픈 소스 에 당장 코드 의 오류 를 찾아내 어 수정 할 수 있 다면 좋 겠 지만 어렵 다면 간단 한 것 부터 시작 해도 됩니다 . 오픈 소스 는 누구 나 참여 할 수 있 고 다양 한 코드 와 숙련 된 개발자 의 정제 된 코드 를 볼 수 있 고 , 프로젝트 의 규칙 을 따르 며 실제 현장 에서 협업 하 는 방식 에 대해 배울 수 있 어 개발자 에게 많 은 도움 이 됩니다 . 하지만 막상 오픈 소스 를 참여 하 려고 해도 방안 을 모르 기 때문 에 어렵 다고 여기 기 쉽 습니다 . 참여 에 어려움 을 느낄 신입 개발자 도 참여 할 수 있 을 만 한 방안 을 소개 해 드리 겠 습니다 . 
 1 . 오픈 소스 프로젝트 의 커뮤니티 선택 * 관심 분야 와 관심 언어 의 조합 을 검색 해 선택 합니다 . * 현재 활발히 개발 중 인 오픈 소스 를 선택 하 는 것 을 추천 합니다 . 2 . 오픈 소스 프로젝트 의 문서 접하 기 * 해당 프로젝트 의 기능 과 목표 를 접하 며 익숙 해 지 도록 시도 합니다 . * 실제 코드 수정 이 어렵 다면 사용 해 보 며 문서 화 작업 에 기여 하 는 방법 도 가능 합니다 . 
 3 . 해당 오픈 소스 프로젝트 사용 해 보 기 * 사용 하 며 발생 한 오류 를 제보 합니다 . * 문서 화 작업 에 참여 ( 번역 , 기능 정리 등 ) 합니다 . * 코드 의 줄 바꿈 , 들여쓰기 , 오타 수정 , 주석 등 을 깔끔 하 게 수정 해서 코드 를 반영 시킵니다 . 이상 으로 오픈 소스 에 대한 이해 에 도움 이 되 었 길 바라 며 , 이 글 을 계기 로 앞 으로 많 은 분 들 이 
 오픈 소스 의 도입 과 참여 에 대해 적극 적 으로 시도 해 보 셨 으면 좋 겠 습니다 .