본문 바로가기

프로그래머스 풀스택 데브코스/데브코스 TIL

웹 풀사이클 데브코스 TIL 57일차

참여형 지식 공유 플랫폼

스택 오버플로우 등등. 개발자들은 서로 도와주면서 성장한다. 깃허브도 마찬가지다. 깃허브에서 다른 사람의 코드를 보는것도 가능하다. 이 깃허브를 사용해서 오픈소스에 참여할 수 있다.

오픈소스

  • 누구나 특별한 제한 없이 공개되어 있는 소스 코드.

  • 리뷰어 입장에서 코드를 검사(리뷰), 코드 수정 등 개선사항을 마음껏 펼칠 수 있는 코드.

  • != 무료

  • 대부분의 오픈소스는 무료지만 유료도 존재한다.

그렇다면 왜 오픈소스를 사용할까?
답은 개발자 문화와 연결된다. 코드로 서로의 지식을 공유하는 것이다. 다른 사람의 코드에 도움을 받고 다시 도움을 주는 것이 개발자 문화에는 익숙하다. 다른 개발자의 시선으로 코드를 보면 새로운 아이디어가 생길 수도 있고 생각지 못한 버그를 찾아낼 수 있다. 선순환이 일어나는 것이다.

오픈소스 예시

리액트, Node.js, Apache, Bootstrap 등등 수많은 서비스가 있다.

깃허브에 public 에 열린 모든 프로젝트는 다 오픈소스일까?

먼저 깃허브에 올라온 오픈소스 프로젝트를 하나 살펴보자. 리액트의 레포지토리이다.
https://ko.legacy.reactjs.org/docs/how-to-contribute.html
https://github.com/facebook/react

이 리포지토리만 보고 이 프로젝트가 오픈소스인지 아닌지 어떻게 알 수 있을까?
그 중 about을 보면 무언가 특징이 될만한 부분이 있다.

바로 라이센스이다.
https://github.com/facebook/react/blob/main/LICENSE

리액트의 라이센스 페이지이다. 이 라이센스를 읽어보면 출처만 남겨주면 자유롭게 사용할 수 있다고 적혀있다. 또한 Meta 에 저작물이라고 적혀있다.

또한 이 라이센스가 이 소스코드를 보호해주고 있는 오픈소스라는 의미도 가지고 있다.

오픈소스 라이선스

오픈소스로 배포/준비/공개된 소스코드를 사용할 때 지켜야하는 규칙 등을 명시하는 것.

  • 라이선스에 적힌 조건을 이행하지 않으면? : 저작권 침해
  • 라이선스 표기가 되어 있지 않은 깃허브 public 소스 코드를 임의로 사용하면? : 저작권 침해

암묵적으로 인정되는 부분은 있기 하지만 엄연히 말하면 저작권 침해다. 또한 회사 코드 등에는 문제가 생길 수 있다. 또한 오픈소스는 요구 조건이 대부분 간단하기 때문에(출처표기) 지켜주는 것이 좋다.

오픈소스 라이선스가 필요한 이유

  1. 오픈소스라고 명시하려고
  2. 사용/배포할 때 조건을 지켜달라고 말하려고

OSI

MIT에서 학교 학생들이 만들어서 무료로 공개해둔 코드를 출처도 안밝히고 무단으로 복사하는 경우가 많아지자, 학교차원에서 제공해주기 시작한 라이센스가 있는데 이게 MIT LIcense이다. 이와같이 라이센스를 만드는 회사들이 많아지자 이런 라이센스들을 한군데 모은 재단이 open source initiative 이다. 이제 오픈소스 라이센스를 받고 싶으면 이곳에 찾아가면 된다. MIT License는 현재는 라이센스에서 요구하는 사항이 적어 굳이 인증을 해줄 필요가 없다는 등의 여러 이유로 osi에서 빠져있다.

오픈소스 라이선스 종류

수많은 오픈소스 라이선스가 존재하고 우리는 그중에 어떤 것을 사용할지 선택해야한다. 하지만 모든 라이선스의 내용을 읽어보고 찾아다니는것은 힘든일이다. 우리나라에서 제공하는 서비스 중에 라이선스의 주요 내용을 요약해서 보여주는 서비스가 존재한다.
https://www.olis.or.kr/license/Detailselect.do?lId=1006

이 사이트에서 주요내용을 보고 어떤 라이센스를 사용할지 찾으면 된다. 특별히 중요하게 봐야할 조건은 배포와 관련된 조건들이다.

그밖에도 아파치 라이선스, GPL 등의 라이센스를 많이 사용한다.
OLIS에서는 CodeEye라는 코드 검사 서비스도 제공한다.

라이선스 적용사례

안드로이드

안드로이드는 아파치 라이센스가 적용된 대표적인 구글 오픈소스 프로젝트이다.

아파치 라이선스는 저작권, 특허, 상표, attribution 등에 대한 고지사항을 소스코드 또는 NOTICE 파일에 포함해야한다. 안드로이드도 이 요구사항을 잘 따르고 있다.

다른 파일들을 찾아보면

BSD-Like 와 MIT 라이센스도 둘 다 있다. 이와 같이 하나의 프로젝트에 여러가지 라이선스가 있을 수 있다.

GPL 라이센스

Free Software Foundation(자유 소프트웨어 재단)에서 GNU 를 위해 만든 라이선스. 강력한 조항을 가지고 있다. 대표적인 예시는 Firfox, Linux, Git, MariaDB, Wordpress 등이 있다.
강력한 조항이란 무슨 의미일까? 어떤 목적으로, 어떤 형태로든 다 사용할 수는 있지만, 사용/배포하는 경우에는 무조건 동일한 라이센스로 공개해야한다는 조항이다.

배포시 의무사항:
각 복제본에 저작권 고지와 보증책임이 없음을 명시
GPL 3.0의 조건 및 제7조의 조건에 관한 내용을 있는 그대로 유지
프로그램을 양도 받는 모든 이들에게 프로그램과 함께 GPL 라이선스 사본 제공
수정시 수정사실 및 일시를 명시
원본저작물과 파생저작물을 GPL3.0에 의해 배포
원본저작물 및 파생저작물에 대한 소스코드를 제공하거나, 요청시 제공하겠다는 약정서 제공
사용자제품에 대한 인증키 등 설치정보의 제공
차별적인 특허라이선스 계약체결의 금지

파생된 라이선스등은 AGPL(ex.MongoDB), LGPL 등이 있다.

라이선스 사용 가이드

https://opensource.guide/ko/

이 주소에 들어가면 오픈소스 사용에 대한 가이드가 제공된다. 참고하면 좋다.

beerware

비어웨어란 제약이나 조건이 매우 낮은 소프트웨어 사용궈니자 그것을 통해 배포된 소프트웨어를 일컫는 말이다. 최종 사용자에게 프로그램 또는 소스 코드를 마음껏 사용할 수 있는 권리를 제공한다. 기존 오픈소스 라이선스 보다도 단순한 비공식 라이선스이다.

npm

npm 에서 라이브러리들은 오픈소스로 된 경우 license 가 적혀 있다.
express의 경우에는 MIT 라이선스이다. dotenv는 BSD 라이선스이다.
만약 npm 오픈소스를 사용해서 프로젝트를 만들어서 배포를 할 경우 오픈소스 제약 조건등을 확인해야한다. 이에 대한 주요한 내용들을 모아둔 내용은 다음과 같다.

https://www.olis.or.kr/license/distribute.do

마지막으로 라이선스 비교표 이다.

https://www.olis.or.kr/license/compareGuide.do

후기

오픈소스란 어떤것인지와 오픈소스 라이선스에 대해서 알아보았다.
키워드: 프로그래머스 데브코스, 국비지원교육, 코딩부트캠프