개발자들의 문화중에 지식을 공유하는 문화가 있는데요.
우리가 코드를 작성하다 막히는 부분 혹은 에러 난 것을 해결하기 위해 검색을 통해 해결할 수 있는 것도 바로 이 지식을 공유하는 문화 덕분이라고 생각합니다.
이러한 개발자들이 지식을 공유하는 플랫폼에는 여러가지가 존재하지만
stackoverflow, github, open source가 대표적이라고 할 수 있습니다. 그중 오늘은 오픈소스에 대해서 이야기를 해보려고 합니다.
오픈소스란?
오픈소스는 제한없이 누구에게나 공개된 소스 코드를 말하는데요, 이렇게 공개된 소스 코드를 통해 검사해주기도 하고, 수정해주기도 하는 기여자가 생기기도 합니다. 그렇다면 왜 우리는 소스코드를 공개하는 걸까요? 그 이유는 내 눈에 보이지 않던 버그나 아이디어가 다른 개발자의 눈에 보일 수 있기 때문에 프로젝트가 업그레이드가 되는 환경이 제공되기 때문입니다.
오픈소스의 종류
우리가 많이 사용하는 오픈소스들을 정말 다양한게 있지만, 제 기준에서 보면 리액트나 노드, 부트스트랩 등등 다양한 오픈소스들이 존재한다는 걸 알 수 있습니다.
그렇다면 오픈소스들은 전부 무료일까요? 무료인 오픈소스가 있는반면에 유료인 오픈소스도 분명히 존재합니다. 제공된 코드를 수정하거나 업그레이드할 수 있는 기능을 Pro(유료) 버전을 만들어 배포하기도 합니다.
깃허브의 public 프로젝트
대부분의 오픈소스들은 깃허브를 통해서 제공이 되는데요 그렇다면 깃허브에서 public으로 만들어진 프로젝트들은 전부 오픈소스인가 생각해본다면 아닙니다. 오픈소스는 라이선스를 통해서 명시하고 있는데요. 만약에 public로 만든 프로젝트인데 라이선스가 없다면 오픈소스가 아니기 때문에 코드 작성자에게 연락을 해서 사용해도 되는지 물어봐야 합니다. 그렇지 않는다면 저작권 침해가 되기 때문이죠.
그렇다면 이 라이선스가 어떤걸 의미하는 걸까요?
라이선스란?
오픈소스로 공개된 소스코드를 사용할 때 지켜야 하는 규칙을 명시하는 것을 말하는데요.
제가 처음 접한 라이선스는 폰트를 사영할때 였습니다. 무료폰트에도 사용범위와 출처 명시가 작성되어 있는 데 사용범위로는 출판, 웹, 영상. 디자인과 같은 종류와 상업적으로 이용가능한지에 대한 것까지 작성되어 있습니다.
오픈소스도 마찬가지로 이러한 조건이 존재하고 있습니다.
만약 이렇게 작성된 조건을 이행하지 않는다면 저작권 침해가 될 수 있습니다.
라이선스 종류
- GPL
- Free Software Foundation
- "어떠한 목적이나 형태로든 사용이 가능하지만 배포 시에는 무조건 공개한다"는 강력한 조항을 갖고 있는데 이는 다른 사람들에게 코드를 공유함으로 인해 IT업계의 발전을 위함도 있어서 절대 GPL 라이선스를 가지고 특허를 내서는 안됩니다.
- 사용 오픈소스: firefox, Linux, git, mariaDB, wordpress
- MIT
- 라이선스 이름만 명시해 주면 되는 자유로운 라이선스로 인기가 가장 많다.
- 사용 오픈소스 : bootstrap, react, angular, jQuery
- Apache
- 소스코드에 대한 공개의무사항은 없지만, 수정하여 배포한다면 라이선스버전과 저작권 copyright를 제공해야 합니다.
- 사용 오픈소스 : 안드로이드
- BSD
- Berkeley Software Distribution
- 라이선스 및 저작권 표시만 해주면 되는 라이선스로 MIT만큼 인기가 많은 라이선스이다.
- 사용 오픈소스 : nginx, Python
이 외에도 다양한 라이선스가 존재하며 라이선스 가이드는 https://www.olis.or.kr/license/licenseGuide.do에서 확인이 가능합니다.
앞으로 우리가 작성하는 프로젝트를 배포할 때, 사용한 오픈소스를 확인하고 해당 조건을 작업한 프로젝트에도 작성해 줘야 나중에 문제가 발생하지 않을 것 같습니다.
'개발지식' 카테고리의 다른 글
Contributor와 Contribution (0) | 2024.02.20 |
---|---|
오픈소스 문서 (0) | 2024.02.19 |
메모리 구조와 메모리 할당 (0) | 2024.01.22 |
컴파일 언어와 스크립트 언어 (0) | 2024.01.22 |
동기와 비동기, 블로킹과 논블로킹 (0) | 2024.01.11 |