이번 글에서는 오픈소스의 종류 및 라이선스 별 공개 범위에 대해서 정리해 보겠습니다.
오픈소스의 의미
- 오픈소스 소프트웨어는 공개소프트웨어라고도 불림
- 특정 기능이나 안정성이 필요한 경우 다른 사람이 개발한 소스코드를 이용할 수 있음
공개소프트웨어라고도 불리는 오픈소스는 특정 기능이나 안정성을 요구하는 프로그램 개발에서 이미 검증된 소프트웨어를 차용함으로써 리스크를 줄이고 업무 효율성을 높이기 위한 최선의 선택입니다. 오픈소스라고 해서 아무런 제약없이 가져다 사용할 수 있는 것은 아닙니다. 오픈소스를 이용해서 수정이나 개선을 통해 새로운 소프트웨어를 개발하고 이를 판매하게 되면 개발된 소프트웨어에 대해서 일정 제약조건이 발생하게 됩니다. 그것은 일정 부분 혹은 전체에 해당하는 소스코드 공개가 될 수 있어 비지니스 리스크를 안게 됩니다. 따라서 개발자는 자신이 사용하는 오픈소스의 라이선스 조건을 정확히 파악하고 향후 발생할 수 있는 리스크에 대해서 인지를 하는 것이 중요합니다.
다만 완성형(패키지) 소프트웨어를 개발하여 배포하는 경우 예외 조항이 발생할 수 있습니다.
- 오픈소스가 포함되어 있는지 여부는 오픈소스 라이선스와 관계없음
- 오픈소스의 라이선스 위반은 최종사용자에게 영향을 미치지 않음
- 오픈소스 저작권자와 오픈소스를 이용한 개발자 간의 문제임
오픈소스 종류
- GPL형 라이선스
- GPL
- LGPL
- BSD형 라이선스
- BSD
- 아파치(Apache)
- MIT 라이선스
- MPL형 라이선스
- MPL
- CDDL
- CPL
- EPL
공통적인 특징
- 자유롭게 사용, 복제, 수정하여 사용할 수 있고 일정 조건하에 재배포 할 수 있습니다.
오픈소스 라이선스 별 특징
GPL
GPL 2.0은 가장 많은 오픈소스가 채택하고 있는 정책입니다. 라이선스 조건이 상대적으로 엄격한 편입니다.
각 복제본에 적절한 저작권 표시를 하여야 하고 보증책임이 없음을 명시하여야 하며, 소프트웨어를 수정하고나 새로운 소프트웨어를 링크하는 경우 동일하게 GPL로 소스코드를 공개해야 합니다.
원본저작물과 파생저장물에 대한 소스코드를 제공해야 하며, 요청 시 소스코드를 제공하겠다는 약정서를 제공해야 합니다.
자신의 특허를 구현한 소프트웨어의 소스코드를 GPL로 배포하는 경우 사용자에게 특허 사용에 대한 비용을 청구할 수 없습니다.
LGPL (Lesser GPL)
GPLS보다 완화된 라이선스로써 응용 프로그램 전체 소스코드를 공개하는 것을 방지하기 위해 제정되었습니다. 라이브러리에 적용하기 위해서 GPL과 별개로 만든 라이선스 입니다.
KGPL의 경우 소스코드를 수정하면 수정한 소프트웨어 라이브러리를 LGPL로 공개해야 합니다. LGPL 라이브러리에 소프트웨어를 링크하였다면 소스코드를 공개할 필요는 없습니다.
BSD (Berkeley Software Distribution)
BSD의 경우 소스코드를 수정하더라도 응용 프로그램의 소스코드를 공개할 의무가 없습니다. 또한 판매 시 BSD가 아닌 다른 라이선스를 적용하여 판매할 수도 있습니다. Copyleft를 적용하지 않기 때문에 GPL에 비해서 제한이 적은 특징이 있습니다.
단, 소프트웨어를 재배포 시 저작권 표시와 보증책임이 없다는 표시를 해야합니다.
아파치(apache)
아파치 라이선스는 Copyleft가 적용되지 않는 BSD 라이선스입니다. 아파치 라이선스로 제공되는 가장 큰 플랫폼은 우리에게 너무나도 익숙한 안드로이드 플랫폼입니다.
아파치 라이선스 역시 소스코드 공개의무가 없고, 상용 소프트웨어에 이용할 수 있습니다. 역시 동일하게 아파치 라이선스로 배포하지 않아도 무방합니다. 단, 재배포 시 아파치 상표권 침해가 없어야 하고 아파치 소프트웨어임을 밝혀야 합니다. 저작권, 특허, 상표 등에 대한 고지사항을 소스코드나 Notice 파일에 포함하여야 합니다.
MPL(Mozilla Public License)
MPL 라이선스의 경우 법률가들이 참여해 만든 라이선스이기 때문에 정교하게 설계되었지만 그만큼 복잡하고 이해하기 힘든 라이선스입니다. 넷스케이프 브라우저 Mozilla의 소스코드를 공개하는 라이선스로써 소스코드 공개 범위가 GPL보다 명확하다는 장점이 있습니다.
GPL과 비교하자면, Copyleft 조항이 있기 때문에 소스코드를 공개할 의무가 있습니다. 다만 원래 소스코드에 없던 부분은 공개할 의무가 없습니다. 또한 다른 프로그램과 결합하는 경우 MPL 코드를 제외한 다른 코드는 공개하지 않아도 됩니다.
소스코드를 혼합하여 개발할 경우 – 오픈소스의 양립성 문제
GPL 라이선스 오픈소스와 MPL 라이선스 오픈소스를 병행하여 이용할 경우 어느쪽의 라이선스 조건을 차용하더라도 다른 라이선스의 조건을 위반할 수 있어 신중해야 합니다.
오픈소스 라이선스를 위반할 경우 재개발, 소스코드 공개, 출시 취소 등의 리스크가 발생할 수 있습니다.