오픈소스(OpenSource)
흔히 오픈소스라고 하면 우리는 free-software, 자유롭게 마구잡이로 가져다 쓸 수 있는 소프트웨어라고 생각하기 쉽다. GNU라는 단체에서 처음 등장한 copyleft라는 단어도 copyright(저작권)을 통한 수익 창출 과정을 정반대에서 비판하는 단어로 시작되었다. (결국 공짜로 써도 된다는 free의 의미..? NO!)
상업적 이익을 추구하지 않고, 사회를 위해 쓰여야 한다는 산업 초기의 개발 문화와 철학이 지금까지 이어져 오고 있는게 신기하면서도 대단하다. 우리가 익히 들어 알고 있는 오픈소스 소프트웨어는 생각한 것보다 훨씬 복잡하고 역사가 깊다. 특히 라이센스를 통한 저작권 권리 명시나 동일 라이센스 배포 등 오픈소스 소프트웨어의 사용에 대한 규칙도 굉장히 자세하게 명시되어 있다. 만약 잘못 사용하면 법적 책임도 물을 수 있기 때문에 그 사용 방법과 종류에 대해 더 자세히 알아볼 필요가 있다.
따라서 우리는 free(공짜)라는 단순한 생각을 뒤로 한 채 오픈소스의 진정한 free-software 정신과 그 깊은 내막을 들여다보자.

1. 오픈소스의 정의
오픈소스란 라이선스 방식을 통해 배포된 소스코드를 자유롭게(freely) 복사, 사용, 수정, 재배포할 수 있는 소프트웨어를 뜻한다. 누구라도 자유롭게 소스코드의 버그를 수정하거나 코드를 개조하여 기능을 추가할 수 있고, 소프트웨어 개발에 자유롭게 참여가 가능하다.
개발자에게 코드를 소스 코드의 접근 권리, 소스 코드의 수정 권리 , 프로그램 배포 권리를 제공하는 것!
정말 아무렇게나, 마구잡이로 가져다 사용해도 되나?
NO!
2. 오픈소스의 법적 책임과 의무사항
"오픈소스에 관한 법적리스크를 이해하기 위해서는 소프트웨어에 관한 지식재산권과 라이선스의 기본적인 개념을 이해할 필요가 있다. 오픈소스 라이선스는 소프트웨어 라이선스의 일종이기 때문이다. 소프트웨어를 보호하는 법적 장치, 즉 소프트웨어에 관한 지식재산권으로는 저작권, 특허권, 상표권, 영업비밀이 있다."
(https://sktelecom.github.io/guide/use/license/ 참고)
- 오픈소스를 사용하면서 간과하면 안되는 점이 있다! 바로 오픈소스를 사용함에 있어 요구되는 법적 의무사항!!!
상용 소프트웨어와 마찬가지로 오픈소스를 사용하기 위해선 '라이센스(license)'를 필히! 무조건! 따라야 한다.
(안 그러면 법적인 책임을 물을 수도...)
- 이 라이센스가 그럼 뭔데?
오픈소스의 권리자들(ex. 초기 개발자)은 많은 사람들이 자신의 소스코드를 자유롭게 사용할 수 있도록 라이선스를 달아 배포하고 있다. 이는 사용자들에게 소스코드의 사용, 복제, 수정, 재배포에 대한 권리를 부여하는데, 이러한 권한을 명시적으로 나타내는게 바로 '오픈소스 라이센스' 인 것! 이러한 권한을 명시하지 않은 소프트웨어는 오픈소스라고 할 수 없다.
3. 주요 의무사항?
1) 저작권 표시 및 라이선스 고지
개발자 또는 기여자에 관한 사항, 저작권을 제품에 표시하거나 포함하도록 요구함. +) 오픈소스의 사용자들이 해당 권리에 대한 인식을 할 수 있게끔 라이선스 사본을 함께 첨부하도록 요구하고 있다.
2) 소스코드 공개
대표적인 라이센스 : GPL, AGPL, GPL 3.0 등등 ... 소스코드의 공개의무
3) 재배포 시 동일 라이센스 적용
라이센스마다 약간의 차이가 존재하는데, 이때 가장 두드러지는 것이 바로 재배포시 의무사항. 바로 'Copyleft' 조항이다. 특히 GPL 계열의 라이센스들은 소프트웨어를 수정, 사용한 뒤 재배포하게 되면 필수적으로 동일한 라이센스로 배포해야 함을 명시하고 있다.
4. 명시 방법
- 소스 코드 파일 상단 주석
- 오픈소스 소프트웨어 내 license(readme, copying 파일) 첨부
- 오픈소스 전용 웹사이트를 통한 명시
5. 오픈소스 라이센스의 종류

이외에도 자주 사용되는 라이센스들이 많이 있는데, 대표적인 예로, MIT License, AGPL,PSF-2.0, OSL 등이 있다. 우리는 앞서 라이센스마다 copyleft 측면에서 차이가 있음을 알고 있었다. 소스코드의 제공의무 여부를 두고 나뉜다고도 볼 수 있는데, 대표적으로 permissive license(제공의무가 없는 경우) / reciprocal(제공의무가 있는 경우)로 구분이 가능하다.

1) Permissive License: BSD, MIT, Apache 등
카피레프트(Copyleft) 조항을 포함하지 않고 소스코드 제공 의무도 없는 소프트웨어. 의무사항이 비교적 간단한 라이센스라고 볼 수 있다. 이를 BSD 타입의 라이센스라고도 하는데, 자사의 제품을 만든 후 이를 상용 라이선스로 배포하는 것도 가능하다.
EX) BSD, MIT: 오픈소스를 포함하는 소프트웨어를 배포할 경우, 소스코드 공개의 의무는 없지만 저작권 표시 및 라이센스 고지를 준수해야 한다.
-> MIT License : MIT에서 학생들을 위해 만든 오픈소스 소프트웨어 라이센스. 외부에서 만든 소프트웨어를 공급할 때 어떤 것도 학생에게 요구하지 말라는 목적으로 만들어진 라이센스다. 소스코드 사용 이후에도 라이센스 및 저작권 명시만 하면 된다.
-> BSD License : Berkely 의 캘리포니아 대학에서 제공한 라이센스. 이 또한 소스코드의 공개 의무는 없고 라이센스의 고지와 저작권 명시 의무만 지키면 된다.
2) GPL License(GNU - General Public License) : GPL 2.0, GPL 3.0 AGPL 등
오픈소스의 재배포 시 소스코드의 공개를 요구하는 라이센스. 여기서 오픈소스 자체의 소스뿐만 아니라 결합한 소스코드 전체를 함께 동일한 라이센스 조건으로 공개해야 한다.
EX) GPL 2.0, GPL 3.0: 2.0과 3.0 버전의 차이는 설치 정보(ex. framework, tool, info)에 대한 공개 유무다.
-> 이는 기업 정보 유출의 우려가 있기 때문에 GPL 3.0 버전은 잘 사용되지 않는다.
EX) AGPL: 앞서 GPL 라이센스들은 서버와 같이 사용자들에게 잘 노출되지 않는 환경에서 발생하는 저작권 문제를 해결해주지 못했다. 특히 오픈소스를 수정한 소스코드를 서버에서만 사용하는 개발자가 해당 프로그램을 배포하지 않을 경우 사용자들은 해당 소스코드를 소유하지도, 수정하지도, 재배포하지도 못한다. 그래서 등장한 것이 AGPL!
네트워크 서비스가 제공하는 서버에 AGPL 소프트웨어가 포함되어 있다면 소프트웨어를 배포하지 않아도 AGPL 오픈소스 + 함께 링크되어 동작하는 다른 소프트웨어의 소스코드도 공개해야 한다.
-> 이 역시 기업 내에서는 회사의 핵심 서버 프로그램을 공개해야 하는 정보 유출 우려로 잘 사용되지 않는다.
6. 기업 정보 유출에 관한 우려
GPL 계열의 라이센스들은 그 강도에 따라 소스 코드를 전면 공개하거나 일부 공개하는 등의 copyleft 조항을 유지하고 있다. 때문에 해당 라이센스 기반의 오픈소스를 사용하게 되면 기업이나 회사 측에서 그닥 반기지 않는다.
(ex. 아이폰을 만들고자 GPL 라이센스 기반의 오픈소스를 사용했을 때 애플이 부딪힐 여파는? 내부 소프트웨어의 전면 공개.. 물론 그렇게 하진 않겠지만 ㅎㅎ;;)


+) GNU L(lesser)GPL : GPL의 강력한 copyleft 조항은 기업에 많은 부담감을 부여.. 상용 소프트웨어로 사용되기 어렵다는 단점이 있다. 이에 LGPL은 좋은 기능의 소프트웨어가 더 많이 쓰이고 표준이 되도록 유도하고자 단순한 라이브러리와 모듈의 링크를 허용했다.
-> 사용 예시: Mozila firefox(v2.1)
7. 마무리/느낀 점
자, 우리는 앞서 오픈소스와 그 의무를 담은 라이센스에 대해 간단하게 짚어보았다. 로마에 가면 로마법에 따르라고 하지 않았던가.. 오픈소스를 사용할 때도 마찬가지다. 자유를 선언하고는 있지만, 하지만, 법적 권리가 존재함을 분명히 알고 있어야 한다! 고지 의무, 혹은 법적 의무 사항을 내가 다 반영을 했는가?를 살펴보고 슬기롭게, 현명하게 오픈소스 소프트웨어를 활용하도록 하자!(필자는 당장 readme 수정하러 총총..)

#오픈소스 #라이센스 #copyleft #GNU #free-software
