AGPLv3
1. 개요
1. 개요
AGPLv3는 자유 소프트웨어 재단이 개발한 강력한 카피레프트 라이선스이다. 정식 명칭은 GNU Affero General Public License version 3이며, 2007년 11월 19일에 최초 공개되었다. 이 라이선스는 GNU GPLv3를 기반으로 하여 네트워크를 통해 서비스를 제공하는 소프트웨어에 특화된 추가 조항을 포함하고 있다.
주요 목적은 네트워크 서버 소프트웨어를 사용하는 사용자들도 해당 소프트웨어의 수정된 소스 코드를 받을 수 있는 권리를 보장하는 것이다. 기존의 GPL이 프로그램의 실행 파일을 배포할 때만 소스 코드 공개 의무를 부과했다면, AGPLv3는 프로그램을 네트워크 서비스 형태로 제공할 때에도 동일한 의무를 적용한다.
이를 통해 SaaS나 클라우드 컴퓨팅 환경에서도 자유 소프트웨어의 원칙이 유지되도록 설계되었다. 따라서 AGPLv3는 주로 웹 애플리케이션, API 서버, 데이터베이스 관리 시스템 등 네트워크 기반 서비스를 개발하고 배포할 때 많이 채택된다.
2. 주요 특징
2. 주요 특징
2.1. 카피레프트 (Copyleft)
2.1. 카피레프트 (Copyleft)
카피레프트는 자유 소프트웨어 재단이 주창한 라이선스 철학이자 법적 메커니즘으로, AGPLv3의 핵심을 이루는 원칙이다. 이는 저작권(Copyright)을 이용하여 소프트웨어의 자유를 보장하고 확산시키는 것을 목표로 한다. 전통적인 저작권이 '모든 권리 보유'를 의미한다면, 카피레프트는 '일부 권리 보유' 또는 '조건부 권리 부여'에 가깝다. 사용자에게 소프트웨어를 실행, 복사, 수정, 재배포할 자유를 부여하지만, 그 자유를 유지하도록 의무화하는 것이 특징이다.
구체적으로 AGPLv3의 카피레프트 조항은, 이 라이선스가 적용된 소프트웨어를 수정하거나 파생작을 만들어 배포할 때, 수정된 전체 소스 코드를 반드시 공개해야 하며, 동일한 AGPLv3 라이선스 하에 제공해야 한다고 규정한다. 이는 소프트웨어의 자유가 사유화되거나 제한되는 것을 방지하기 위한 장치이다. 사용자가 자유롭게 얻은 소프트웨어의 자유를, 그 소프트웨어를 기반으로 한 다음 버전이나 파생작에서도 동일하게 누릴 수 있게 보장하는 것이다.
이러한 강력한 카피레프트 성격은 오픈 소스 생태계 내에서도 '강한 카피레프트(Strong Copyleft)' 라이선스로 분류되며, MIT 라이선스나 아파치 라이선스 같은 허용적 라이선스와 대비된다. AGPLv3의 카피레프트는 단순한 파일 배포뿐만 아니라 네트워크를 통한 서비스 제공 시에도 소스 코드 공개 의무를 발생시켜, 클라우드 컴퓨팅 시대에 맞춰 기존 GPL의 원칙을 확장한 것으로 평가받는다.
2.2. 네트워크 사용 조항 (Affero Clause)
2.2. 네트워크 사용 조항 (Affero Clause)
네트워크 사용 조항은 AGPLv3 라이선스의 가장 핵심적이고 독특한 특징이다. 이 조항은 종종 '애페로 조항' 또는 '서버사이드 공개 조항'으로 불리며, GPLv3에는 존재하지 않는 추가적인 의무를 부과한다. 이 조항의 목적은 소프트웨어가 인터넷을 통해 서비스로 제공될 때도 카피레프트의 자유를 사용자에게 보장하는 데 있다.
기존의 GPL 계열 라이선스는 소프트웨어를 배포(예: 실행 파일을 제공)할 때만 수정된 소스 코드를 공개할 의무를 발생시켰다. 그러나 웹 애플리케이션이나 API 서버와 같이 네트워크를 통해 사용자에게 서비스를 제공하는 경우, 서버 측에서 실행되는 수정된 소프트웨어의 소스 코드를 공개하지 않아도 되는 '루프홀'이 존재했다. AGPLv3의 네트워크 사용 조항은 바로 이 허점을 메우기 위해 도입되었다.
이 조항에 따르면, AGPLv3 라이선스가 적용된 프로그램을 수정하여 네트워크 상의 다른 사용자에게 서비스(예: SaaS) 형태로 제공하는 경우, 해당 서비스를 이용하는 모든 사용자에게 수정된 소스 코드를 공개할 의무가 생긴다. 이는 프로그램을 실행하는 서버에 접속할 수 있는 모든 사용자가 소스 코드를 받을 권리가 있음을 의미한다. 공개 방법은 일반적으로 서비스 웹사이트에 소스 코드를 다운로드할 수 있는 링크를 명시적으로 제공하는 것이다.
따라서 이 조항은 클라우드 컴퓨팅 시대에 소프트웨어의 자유를 지키는 강력한 도구로 작용한다. 개발자나 기업이 AGPLv3 소프트웨어를 기반으로 상용 서비스를 구축하고자 할 때는, 서비스 사용자에게 소스 코드를 공개해야 한다는 점을 반드시 고려해야 한다. 이는 오픈 소스 철학을 네트워크 환경까지 확장시킨 중요한 진전으로 평가받는다.
2.3. 특허 조항
2.3. 특허 조항
AGPLv3의 특허 조항은 라이선스에 포함된 중요한 보호 장치이다. 이 조항은 라이선스 사용자에게 특허 소송을 제기하는 것을 효과적으로 제한함으로써, 커뮤니티 전체의 자유를 보호하는 역할을 한다. 이는 GNU GPLv3에서 도입된 특허 조항을 그대로 계승한 것이다.
특허 조항의 핵심은 라이선스 사용자가 AGPLv3 프로그램을 수정하거나 배포하는 경우, 해당 프로그램에 대해 특허 소송을 제기할 수 있는 권리를 포기해야 한다는 점이다. 만약 사용자가 프로그램에 대해 특허 침해 소송을 제기하면, AGPLv3에 의해 부여된 모든 권리(프로그램을 사용, 수정, 배포할 수 있는 권리)가 즉시 종료된다. 이는 자유 소프트웨어 재단이 의도한 강력한 카피레프트 방어 메커니즘의 일환이다.
이러한 조항은 소프트웨어의 자유로운 사용과 발전을 저해할 수 있는 특허 관련 분쟁을 사전에 방지하는 데 목적이 있다. 특히 네트워크를 통해 서비스되는 소프트웨어에 AGPLv3가 적용되는 경우가 많으므로, 서비스 제공자와 사용자 간의 법적 불확실성을 줄이는 효과가 있다. 결과적으로 이 조항은 AGPLv3로 보호받는 프로젝트의 모든 기여자와 사용자에게 더 안전한 법적 환경을 제공한다.
2.4. 호환성
2.4. 호환성
AGPLv3는 GNU GPLv3에 기반을 두고 있기 때문에, GPLv3와의 호환성은 매우 높다. 이는 AGPLv3로 배포된 코드를 GPLv3 프로젝트에 통합하거나 그 반대의 경우가 원칙적으로 가능함을 의미한다. 두 라이선스는 카피레프트의 핵심 원칙과 대부분의 조항을 공유하기 때문이다. 다만, AGPLv3의 추가적인 네트워크 사용 조항은 GPLv3에는 없는 의무사항이므로, GPLv3 프로젝트에 AGPLv3 코드를 포함시킬 경우 전체 프로젝트는 AGPLv3의 조건을 따라야 한다.
다른 자유 소프트웨어 라이선스와의 호환성 측면에서는 GPLv3와 동일한 제약을 가진다. AGPLv3는 GNU LGPL이나 아파치 라이선스 2.0과 같은 약한 카피레프트 또는 허가적 라이선스와는 양방향으로 호환되지 않는다. 즉, 이러한 라이선스로 배포된 코드를 AGPLv3 프로젝트에 결합하는 것은 라이선스 조건이 충돌하여 허용되지 않는다. 그러나 MIT 라이선스나 BSD 라이선스와 같은 매우 허가적인 라이선스의 코드는 AGPLv3 프로젝트에 포함될 수 있으며, 이 경우 결합된 작품 전체는 AGPLv3의 조건으로 배포되어야 한다.
라이선스 선택 시, 특히 기존 오픈 소스 컴포넌트들을 조합하는 경우 이러한 호환성 문제를 주의 깊게 검토해야 한다. AGPLv3의 강력한 카피레프트 성격은 다른 많은 라이선스와의 결합을 제한하며, 이는 프로젝트의 재사용성과 생태계 참여에 영향을 미칠 수 있다.
3. AGPLv3와 GPLv3의 차이점
3. AGPLv3와 GPLv3의 차이점
AGPLv3와 GPLv3의 가장 핵심적인 차이는 소프트웨어를 네트워크를 통해 서비스로 제공하는 경우의 의무 발생 여부에 있다. GPLv3는 프로그램의 수정 버전을 배포할 때, 즉 사용자에게 실행 파일이나 소스 코드를 전달할 때에만 소스 코드를 공개할 의무가 발생한다. 반면, AGPLv3는 이 '배포' 행위 외에 '네트워크 상호작용'을 통해 프로그램을 사용자에게 제공하는 경우에도 동일한 공개 의무를 부과한다. 이는 소프트웨어를 서비스형 소프트웨어(SaaS) 형태로만 운영하여 배포를 회피함으로써 카피레프트의 의무를 피하는 것을 방지하기 위한 것이다.
이 차이는 특히 웹 애플리케이션, API 서버, 클라우드 컴퓨팅 플랫폼과 같은 네트워크 기반 소프트웨어에 중대한 영향을 미친다. 예를 들어, GPLv3 라이선스의 웹 애플리케이션 코드를 수정하여 상용 클라우드 서비스로 운영하는 경우, 서비스 이용자에게 코드를 배포하지 않으므로 소스 코드를 공개할 필요가 없다. 그러나 동일한 코드가 AGPLv3로 라이선스되어 있다면, 해당 서비스를 제공하는 기업은 수정된 전체 소스 코드를 네트워크를 통해 서비스를 이용하는 모든 사용자에게 공개해야 한다.
두 라이선스는 모두 자유 소프트웨어 재단(FSF)이 작성했으며, GPLv3를 기반으로 하여 거의 모든 조항을 공유한다. 이는 특허 조항, 티보트(tivoization) 제한, 호환성 규정 등 대부분의 강력한 카피레프트 조항이 동일함을 의미한다. 따라서 AGPLv3는 GPLv3에 단 하나의 추가 조항, 즉 네트워크 사용 조항을 더한 라이선스로 이해할 수 있다. 이로 인해 AGPLv3는 GPLv3와 상호 호환되며, AGPLv3 코드와 GPLv3 코드를 결합한 결과물은 AGPLv3의 조건에 따라 라이선스되어야 한다.
4. 라이선스 의무사항
4. 라이선스 의무사항
4.1. 소스 코드 공개
4.1. 소스 코드 공개
AGPLv3의 핵심 의무 중 하나는 소프트웨어를 실행하는 사용자에게 해당 소프트웨어의 완전한 소스 코드를 제공해야 한다는 점이다. 이는 GPL 라이선스의 기본 정신을 따르지만, AGPLv3는 특히 네트워크를 통해 서비스를 제공하는 경우에도 이 의무를 명확히 확장한다는 점에서 차별화된다.
일반적인 GPLv3는 소프트웨어의 실행 파일을 배포할 때 수령인에게 소스 코드를 제공할 의무를 부과한다. 반면 AGPLv3는 소프트웨어를 수정하지 않고 단순히 네트워크 서버에서 실행하여 사용자에게 서비스만 제공하는 경우에도, 그 서비스를 이용하는 사용자에게 수정된 소스 코드를 공개할 것을 요구한다. 이는 소프트웨어가 클라우드 컴퓨팅 환경이나 웹 애플리케이션 형태로 제공될 때 발생할 수 있는 라이선스의 간극을 메우기 위한 것이다.
따라서 AGPLv3로 라이선스된 프로그램을 수정하여 SaaS 형태의 서비스를 운영한다면, 해당 서비스의 사용자에게는 수정된 버전의 전체 소스 코드를 쉽게 접근할 수 있는 방법을 제공해야 한다. 이는 일반적으로 서비스 웹사이트에 소스 코드를 다운로드할 수 있는 링크를 명시적으로 게시하는 방식으로 이행된다. 이 의무는 프로그램의 저작권자가 아닌, 프로그램을 수정하여 서비스하는 배포자에게 적용된다.
이러한 소스 코드 공개 조항은 자유 소프트웨어의 원칙을 네트워크 시대에 맞게 확고히 지키려는 의도를 반영한다. 이를 통해 서버 측에서 실행되는 소프트웨어의 개선 사항도 커뮤니티에 환원되어 오픈 소스 생태계의 협업과 발전을 촉진하는 데 기여한다.
4.2. 라이선스 및 저작권 표시
4.2. 라이선스 및 저작권 표시
AGPLv3를 따르는 소프트웨어를 배포하거나 네트워크를 통해 서비스할 때는 라이선스 및 저작권 표시 의무를 준수해야 한다. 이는 소프트웨어의 자유를 보장하고 카피레프트 원칙을 지키기 위한 핵심적인 요구사항이다.
라이선스 의무사항에 따르면, AGPLv3로 라이선스된 프로그램을 배포할 때는 각 사본에 명확한 저작권 표시를 포함시켜야 한다. 또한, 프로그램과 함께 AGPLv3 라이선스 전문을 제공하거나, 또는 라이선스 전문이 담긴 안정적인 URL을 제공해야 한다. 이는 사용자에게 그들이 AGPLv3에 의해 보호받는 자유 소프트웨어를 사용하고 있음을 알리고, 그에 따른 권리와 의무를 확인할 수 있게 하기 위함이다.
네트워크를 통해 프로그램을 서비스하는 경우에도 동일한 원칙이 적용된다. 서비스 제공자는 서비스의 상호작용적인 사용자 인터페이스에 적절한 저작권 공지와 라이선스 정보를 표시해야 한다. 이는 AGPLv3의 핵심인 네트워크 사용 조항이 의도하는 바로, 최종 사용자가 소스 코드를 받을 권리가 있음을 알리기 위한 중요한 수단이다.
이러한 표시 의무는 단순한 형식적 요구를 넘어, 자유 소프트웨어 생태계의 투명성과 지속 가능성을 유지하는 데 기여한다. 모든 수정 사본이나 파생 저작물에도 원본과 동일한 방식으로 저작권 및 라이선스 정보가 전달되어야 하며, 이는 동일 라이선스 적용 원칙의 일환으로 작동한다.
4.3. 동일 라이선스 적용
4.3. 동일 라이선스 적용
AGPLv3의 핵심 의무 중 하나는 수정된 프로그램을 배포할 때, 원본과 동일한 라이선스를 적용해야 한다는 점이다. 이는 카피레프트 원칙의 핵심으로, AGPLv3로 배포된 소프트웨어의 자유를 후속 사용자들에게도 보장하기 위한 장치이다. 사용자가 AGPLv3 소프트웨어를 수정하거나 확장하여 배포하거나 네트워크를 통해 서비스로 제공할 경우, 그 결과물 전체에 대해 AGPLv3를 적용해야 한다.
이 '동일 라이선스 적용' 조항은 소프트웨어의 자유가 사유화되는 것을 방지한다. 예를 들어, AGPLv3 라이브러리를 사용하여 웹 애플리케이션을 개발했다면, 해당 애플리케이션의 전체 소스 코드를 AGPLv3로 공개해야 한다. 이 규정은 GPLv3에도 존재하지만, AGPLv3는 네트워크를 통한 사용까지 배포로 간주하는 애페로 조항이 추가되어 그 적용 범위가 더욱 넓다. 따라서 SaaS 형태로 서비스를 제공하는 경우에도 라이선스 의무가 발생한다.
이러한 강력한 카피레프트는 소프트웨어의 자유로운 확산과 협업을 촉진하는 동시에, 상용 소프트웨어 개발자들에게는 주의가 필요한 부분이다. AGPLv3 코드를 자신의 사유 제품에 통합하고자 할 경우, 제품 전체의 소스 코드 공개 의무가 발생할 수 있기 때문이다. 따라서 라이선스를 선택하거나 타인의 코드를 사용할 때는 이 '동일 라이선스 적용' 원칙이 미치는 영향을 신중히 평가해야 한다.
5. 적용 사례 및 사용 소프트웨어
5. 적용 사례 및 사용 소프트웨어
AGPLv3는 주로 네트워크를 통해 서비스 형태로 제공되는 소프트웨어에 널리 적용된다. 이 라이선스의 핵심인 네트워크 사용 조항은 소프트웨어를 서버에서 실행하여 사용자에게 서비스를 제공하는 경우에도 수정된 소스 코드를 공개하도록 의무화하기 때문에, SaaS나 클라우드 컴퓨팅 기반의 프로젝트에서 채택되는 경우가 많다.
주요 적용 사례로는 데이터베이스 관리 시스템인 MongoDB와 CouchDB가 있다. 특히 MongoDB는 커뮤니티 에디션의 라이선스를 AGPLv3로 채택하여, 클라우드 서비스 제공업체가 이를 기반으로 상용 서비스를 구축할 때 소스 코드 공개 의무를 부과했다. 또한 분산 버전 관리 시스템인 GitLab의 커뮤니티 에디션도 AGPLv3를 사용하며, 이를 통해 웹 기반 협업 도구의 소스가 공개되도록 보장한다.
이 외에도 함수형 프로그래밍 언어인 Elixir의 주요 웹 프레임워크인 Phoenix Framework, 그리고 실시간 웹 애플리케이션을 구축하기 위한 Node.js 기반의 Socket.IO 서버 라이브러리 등 다양한 네트워크 중심의 오픈소스 프로젝트들이 AGPLv3를 선택하고 있다. 이러한 프로젝트들은 라이선스를 통해 소프트웨어의 자유를 보호하면서도, 네트워크 서비스 형태로 사용될 때 발생할 수 있는 라이선스의 허점을 막고자 한다.
6. 장점과 단점
6. 장점과 단점
6.1. 장점
6.1. 장점
AGPLv3의 가장 큰 장점은 네트워크를 통해 서비스를 제공하는 소프트웨어에서도 카피레프트의 원칙을 효과적으로 적용할 수 있다는 점이다. 기존의 GPL은 프로그램의 실행 파일을 배포할 때만 소스 코드 공개 의무가 발생했기 때문에, 서버에서 실행만 하고 배포하지 않는 웹 애플리케이션 등에는 공개 의무가 적용되지 않는 허점이 있었다. AGPLv3는 이 '애플리케이션 서비스 제공(ASP) 루프홀'을 막아, 사용자가 네트워크를 통해 프로그램과 상호작용하는 경우에도 수정된 소스 코드를 공개하도록 요구한다.
이러한 특징은 클라우드 컴퓨팅과 SaaS가 보편화된 현대 소프트웨어 생태계에서 특히 의미가 크다. 개발자는 AGPLv3를 채택함으로써 자신의 서버 소프트웨어를 기반으로 한 상용 서비스가 소스 코드를 공개하지 않고 독점적으로 발전하는 것을 방지할 수 있다. 이는 자유 소프트웨어의 공유와 협업 정신을 네트워크 시대까지 확장시켜, 오픈 소스 커뮤니티의 혁신이 웹 기반 서비스 영역에서도 지속되도록 보장한다.
또한, AGPLv3는 GPLv3를 기반으로 하여 모든 GPLv3의 장점을 그대로 계승한다. 이는 강력한 특허 대응 조항, 티보팅 방지 조항, 그리고 다양한 자유 소프트웨어 라이선스와의 호환성 개선 등을 포함한다. 따라서 라이선스 선택자는 네트워크 사용 조항이라는 추가적인 보호를 받으면서도, 광범위한 GPL 생태계와의 코드 공유 및 결합의 이점을 누릴 수 있다.
6.2. 단점
6.2. 단점
AGPLv3의 주요 단점은 강력한 카피레프트 조항으로 인한 상업적 활용의 제약과 복잡한 라이선스 의무 준수 부담에 있다. 특히 네트워크를 통해 서비스를 제공하는 경우에도 소스 코드 공개 의무가 발생한다는 점은 많은 기업에게 부담으로 작용한다. 이는 클라우드 컴퓨팅이나 SaaS 모델을 주요 사업으로 하는 회사가 AGPLv3 라이선스가 적용된 라이브러리나 소프트웨어를 사용하는 것을 꺼리게 만드는 주요 요인이다.
라이선스의 복잡성과 해석의 애매모호함도 단점으로 지적된다. "네트워크 상호작용"의 정의나 어떤 수준의 코드 수정이 공개 의무를 트리거하는지에 대한 명확한 기준이 모든 경우에 명시되어 있지 않아 법적 불확실성을 초래할 수 있다. 이는 개발자와 기업이 라이선스 위반에 대한 두려움 없이 소프트웨어를 사용하고 배포하는 것을 방해한다.
또한, AGPLv3는 다른 많은 오픈 소스 라이선스와의 호환성이 제한적이다. 이는 AGPLv3 코드를 다른 오픈 소스 프로젝트, 특히 약한 카피레프트나 허용적 라이선스를 사용하는 프로젝트와 결합하는 것을 어렵게 만든다. 결과적으로 생태계 내에서 코드의 재사용과 협업이 제한될 수 있으며, 이는 프로젝트의 성장 잠재력을 저해할 수 있다.
마지막으로, 라이선스 준수를 위한 관리 부담이 상당하다. 소스 코드 제공 방법, 저작권 고지 사항 유지, 수정 사항 명시 등 의무사항을 지속적으로 관리해야 하며, 특히 대규모 분산 시스템에서는 이 과정이 더욱 복잡해질 수 있다. 이러한 관리 오버헤드는 리소스가 제한된 소규모 팀이나 스타트업에게는 실질적인 장벽이 될 수 있다.
7. 라이선스 선택 시 고려사항
7. 라이선스 선택 시 고려사항
AGPLv3를 채택할지 여부를 결정할 때는 소프트웨어의 배포 방식과 개발자의 목표를 중심으로 신중히 고려해야 한다. 가장 핵심적인 판단 기준은 소프트웨어가 네트워크를 통해 서비스 형태로 제공되는지, 아니면 전통적인 방식으로 실행 파일을 배포하는지이다. AGPLv3는 카피레프트의 원칙을 네트워크 사용까지 확장하여, 서버에서 실행되는 프로그램을 수정하여 서비스로 제공하는 사용자에게도 소스 코드 공개의무를 부과한다. 따라서 SaaS나 클라우드 기반 서비스를 상업적으로 운영하면서 소스 코드를 공개하고 싶지 않은 경우, AGPLv3는 적합하지 않을 수 있다.
반면, 오픈 소스 생태계의 자유를 최대한 보호하고, 소프트웨어의 모든 파생 작업이 커뮤니티에 기여하도록 강력하게 유도하려는 프로젝트에는 AGPLv3가 효과적이다. 이 라이선스는 네트워크 서버라는 '배포의 간극'을 막아, GPLv3의 정신을 온라인 시대에 완전히 구현한다. 또한, 자유 소프트웨어 재단이 설계한 만큼 특허 관련 보호 조항과 호환성 문제에 대한 명확한 해결책을 제공한다는 점도 장점이다.
라이선스를 선택할 때는 AGPLv3의 엄격한 요구사항이 다른 라이브러리나 구성 요소의 라이선스와 충돌하지 않는지 확인하는 것이 중요하다. Apache License 2.0이나 MIT 허가서 같은 허용적 라이선스의 코드를 AGPLv3 프로젝트에 포함시키는 것은 가능하지만, 그 반대의 경우는 카피레프트 조항으로 인해 제한될 수 있다. 궁극적으로, 개발자는 소프트웨어의 사용과 수정의 자유를 어느 수준까지 공유할 것인지에 대한 철학적 입장과 실용적인 비즈니스 모델을 종합적으로 평가하여 결정해야 한다.
