GNU 일반 공중 사용 허가서 (GNU General Public License, GPL)
GNU 일반 공중 사용 허가서(GPL, General Public License)는 소프트웨어를 누구나 자유롭게 실행·복사·수정·배포할 수 있도록 허용하되, 수정한 프로그램을 배포할 때는 같은 GPL 조건으로 소스 코드와 함께 배포하도록 요구하는 오픈소스 라이선스입니다. 이렇게 자유를 파생 저작물에도 이어가게 하는 방식을 '카피레프트(copyleft)'라고 합니다.
자세히 알아보기
GPL은 리처드 스톨먼과 자유 소프트웨어 재단(FSF)이 GNU 프로젝트를 위해 만들었습니다. 1989년 첫 버전이 나왔고, 1991년 GPLv2, 2007년 GPLv3가 발표되었습니다. GPLv3는 특허 조항과 '티보이제이션(하드웨어가 수정된 소프트웨어 실행을 막는 것)' 방지 조항 등을 추가했습니다.
GPL의 의무는 소프트웨어를 '배포'할 때 발생합니다. 바이너리를 배포하면 소스 코드도 제공해야 하고, GPL 코드와 결합한 파생 저작물 전체를 GPL로 공개해야 합니다. 서버에서만 실행하고 배포하지 않는 경우에는 이 의무가 생기지 않는데, 이 빈틈을 메우기 위해 네트워크 사용에도 소스 공개를 요구하는 AGPL이 만들어졌습니다. 라이브러리용으로 조건을 완화한 LGPL도 있습니다.
MIT·BSD·Apache 같은 '허용형(permissive)' 라이선스는 파생물을 비공개로 배포하는 것도 허용한다는 점에서 GPL과 다릅니다.
실무에서는 'GPL v2 only'와 'GPL v2 or later'처럼 버전 조건도 중요합니다. 두 라이선스 버전은 서로 호환되지 않는 부분이 있어, 서로 다른 GPL 버전의 코드를 섞을 때 문제가 될 수 있습니다. 회사가 오픈소스를 사용할 때 라이선스 검토 절차를 두는 이유입니다.
블록체인·암호화폐에서는
- 이더리움의 대표 클라이언트 go-ethereum(Geth)은 라이브러리 코드는 LGPL-3.0, 실행 파일은 GPL-3.0으로 배포됩니다.
- 반면 Bitcoin Core는 MIT 라이선스를 사용합니다. 프로젝트마다 라이선스가 다르므로 코드를 포크해 새 체인이나 지갑을 만들 때는 라이선스 조건을 반드시 확인해야 합니다.
- GPL 코드로 만든 지갑을 배포하면서 소스를 공개하지 않으면 라이선스 위반이 될 수 있습니다. 공개 소스는 사용자가 지갑 코드를 직접 검증할 수 있다는 보안상 이점도 있습니다.
쉽게 말하면
"이 레시피는 마음대로 고쳐 써도 되지만, 고친 레시피를 남에게 줄 때는 똑같이 누구나 고칠 수 있게 공개해야 한다"는 약속입니다.
이 글은 학습을 위한 일반 정보이며 투자 권유나 법률 자문이 아닙니다. 가상자산은 가격 변동이 크고 원금 손실 위험이 있습니다.