Outsider's Dev Story

Stay Hungry. Stay Foolish. Don't Be Satisfied.
RetroTech 팟캐스트 44BITS 팟캐스트

Grafana, Loki, Tempo의 라이센스가 AGPL이 되면 무슨 영향을 받을까?

지난 4월 Grafana Labs에서 자사의 프로젝트를 Apache 라이센스에서 AGPL v3 라이센스로 변경했다. 여기에는 대시보드로 널리 쓰이는 Grafana, 로그 수집 시스템인 Loki, 분산 트레이싱 Tempo가 포함되었다.

이 변경은 전에 Elastic과 AWS의 분쟁, 어떻게 봐야 할까?에서 살펴봤듯이 클라우드 서비스로 수익을 내고 싶은 오픈소스 회사가 다른 SaaS 프로바이더를 막기 위한 움직임과 같은 맥락이지만 MongoDB, Elastic, Redis Labs가 SSPL을 선택해서 오픈소스가 아니게 된 것과 달리 Grafana Labs는 AGPL을 선택했다는 점이 다르다. SSPL은 Open Source Initiative(OSI)에서 인정한 라이센스가 아니고 AGPL은 OSI가 인정한 라이센스이다.

Grafana 로고

Grafana가 AGPL로 바꾼 것은 알고 있었지만, 이전에 SSPL 관련 이슈에 집중한 나머지 AGPL은 어떻게 흘러갈지에만 관심이 있다가 AGPL이 나에게 어떤 영향을 미치는지는 미처 고민하지 못하고 있었다. 마침 페이스북에서 AGPL 관련한 질문에 질문에서 얘기를 나누다가 AGPL 때문에 내가 혹은 회사에서 사용하는 Grafana도 영향을 받나? (혹은 상용 구매를 고려해야 하나?)라는 의문이 들어서 더 찾아보게 되었다. 어제 대화에서는 "그럴 리가 없어요"라는 입장을 고수하다가 마지막에 설득당해서 Grafana 때문에 다른 소스 코드도 다 공개하거나 상용 구매를 해야 하는 건가?라고 생각하게 되어서 자세히 알아보게 되었다.

이전 Elastic의 SSPL 변경 이슈에서도 사람들이 왜 AGPL을 선택하지 않았는지 궁금하다는 얘기가 있었고 AGPL을 선택하는 경우 관련 코드도 모두 공개해야 하므로 안 했을 것이라는 얘기가 있었다. 그때는 SSPL이 더 중심이었기에 따로 알아보진 않았는데 이젠 Grafana가 AGPL을 선택했기 때문에 어떤 조건에서 적용받고 적용받지 않는지 알아야 할 필요가 있었다.

라이센스는 법적인 부분이 있고 광범위하게 명시되어 있어서 구체적인 사례에 대한 적용을 이해하려면 꽤 어렵다. 법적인 해석과 영어 해석의 이중고. ㅠ

제대로 이해한 게 맞는지 검증받고자 하는 의도도 있어서 잘못된 부분이나 놓친 부분이 있으면 얘기해 주시기 바랍니다.

GNU Affero General Public License version 3(AGPL-3.0)

일단 AGPL이 어떤 라이센스인지 알아야 할 것 같다. 1988년 GPL(General Public License)가 만들어졌고 현재 버전은 v3이다. FSF(Free Software Foundation)에서는 GPLv3의 두 가지 타입을 더 만들었는데 LGPLv3(Lesser General Public License)와 AGPLv3(Affero General Public License)이다.

AGPLv3 로고

GNU의 왜 GNU Affero GPL인가를 보면 다음과 같이 나와 있다.

GNU Affero GPL은 평범한 GNU GPL 3판(버전)을 수정한 것입니다. 여기에는 하나의 추가 요건이 덧붙여져 있습니다. 만약 여러분이 서버에서 프로그램을 실행하여 그것이 서버 상에서 다른 사용자들과 통신하게 된다면, 여러분의 서버는 실행되고 있는 프로그램의 소스 코드를 사용자들이 다운로드 받을 수 있게 해야 한다는 것입니다. 만약 여러분이 개작한 프로그램이 서버에서 실행되고 있다면 바로 그 개작한 판의 소스 코드를 사용자들이 가질 수 있어야 합니다.

GPL이 만들어진 시기와는 달리 소프트웨어를 배포하지 않고 서버에서만 운영하는 때도 많아졌고 이러면 GPL이 보호해 주지 못하기 때문에 AGPL은 이런 부분까지 조건에 넣어서 서버에서 AGPL 라이센스의 프로그램을 수정해서 사용한다면 그 수정한 내용도 다시 공개해서 사용자들이 소스 코드를 볼 수 있게 만든 것이다.

실제로 GPLv3AGPLv3비교하면 (자잘한 문구 차이 외에) 13. Remote Network Interaction; Use with the GNU General Public License 부분만 AGPL에 추가되어 있고 다른 조건은 GPL과 같은 것을 알 수 있다.

여기서 중요한 부분은 나머지 조건은 GPL과 모두 같고 원격 네트워크로 상호작용에 대한 조건만 추가된 것이 AGPLv3라는 것을 알 수 있다.

AGPLv3가 발동되는 상황

어제 내가 댓글에서 이런저런 얘기를 했듯이 잘 모르고 하는 얘기도 많으므로 최대한 신뢰할 수 있는 소스를 참고하려고 했지만 찾다가 내가 원하는 답을 가장 잘 정리해 놓은 Stackoverflow의 답변을 찾았다. 해석의 여지가 있겠지만, 이해하기 좋게 잘 정리되어 있어서 이 답변을 많이 참고했다. AGPLv3는 다음 조건에 해당할 때 발동된다.

수정(modify)

This License explicitly affirms your unlimited permission to run the unmodified Program.

Section 2에 나와 있는 대로 수정을 하지 않고 실행할 수 있는 제한 없는 권한을 부여받는다. 따라서 수정하지 않았다면 AGPL의 유일하게 다른 점인 Section 13이 발동되지 않는다.

전파(propagate)

전파 부분의 해석이 좀 어려운데 Section 0. 정의에 다음과 같이 "전파"를 정의하고 있다.

To "propagate" a work means to do anything with it that, without permission, would make you directly or secondarily liable for infringement under applicable copyright law, except executing it on a computer or modifying a private copy. Propagation includes copying, distribution (with or without modification), making available to the public, and in some countries other activities as well.

즉, 컴퓨터에서 실행하거나 개인 사본을 수정하는 것을 제외하고 저작권법에 침해되는 직접/이차적 책임을 지게 되는 모든 행위를 뜻하고 여기에는 복사, 배포(수정 여부는 상관없이), 공개적으로 제공, (일부 국가에서는) 그 외 활동도 포함된다고 하고 있다.

저 스택오버플로우 답변에도 나와 있지만 내부 서버에서 그냥 실행만 하는 것은 AGPL이 발동되지 않는다고 생각해도 무리가 없어 보인다. 이 서버가 공개적으로 열려있는 경우에는 상황에 따라 다를 수 있을 것 같다. 공개된 서버에서 쓰는 어떤 라이브러리가 AGPL인 경우 이는 전파라고 해석이 가능해 보인다.

운반(Convey)

Section 0. 정의를 보면 "운반"을 다음과 같이 정의하고 있다.

To "convey" a work means any kind of propagation that enables other parties to make or receive copies. Mere interaction with a user through a computer network, with no transfer of a copy, is not conveying.

다른 사람이 복사본을 받거나 만들 수 있게 하는 모든 전파 활동을 의미하고 복사본의 전송 없이 컴퓨터 네트워크를 통한 사용자와의 단순한 상호작용은 운반이 아니라고 한다.

그러므로 AGPL 프로그램을 포함해서 패키징 후 납품한다거나 다운로드할 수 있게 제공하는 경우에는 "운반"에 포함되지 않는다고 해석할 수 있을 것 같고 웹 애플리케이션처럼 서버에서 실행만 하는 경우라면 "전파"인지 아닌지가 중요해질 것 같다.

그래서 Grafana는?

처음 궁금했던 Grafana로 돌아와 보자. Stackoverflow 답변에도 비슷한 사례가 잘 정리되어 있지만 Grafana에 맞게 다시 정리해보았다.(Grafana는 안 쓰고 Loki와 Tempo를 쓰진 않을 것 같으므로 Grafana를 예로 들었다.)

내부에서 Grafana를 쓰는 경우

대부분은 Grafana를 시각화 용도로 쓰고 있을 것이고 Prometheus나 다른 프로그램을 통해서 수집한 데이터를 보여주는 용도로 회사 내부에서만 사용하고 있을 것이다. 이럴 때 수정도 하지 않았고 전파하지도 않고 운반도 하지 않았으므로 관련 시스템의 소스 코드를 공개할 필요는 없어 보인다.

Grafana를 서비스로 제공하는 경우

서비스의 성격상 Grafana를 사용자에게 기능으로 제공한다면 전파라고 볼 수 있지만(운반은 아니다) 수정하지 않았으므로 소스 코드를 공개할 필요가 없다. 다만 Grafana를 수정했다면 AGPL의 적용을 받아서 관련 소스 코드를 모두 공개해야 한다.

Grafana를 포함해서 배포하는 경우

이 경우에는 전파이면서 운반에 포함된다. 수정 여부에 대해서 확실치 않은데 가장 확실하게 AGPL이 적용되는 경우라 보통 소스 코드를 모두 공개해야 할 것이다.

AGPL이 발동되었지만, 프로젝트의 소스 코드는 공개할 수 없는 경우

AGPL 라이센스 변경과 관련해서 Grafana CEO Raj Dutt의 Q&A를 보면 AGPL을 사용할 수 없는 사용자는 어떻게 해야 하는지에 관한 질문에 다음과 같은 선택권을 얘기하고 있다.

  1. Apache 라이센스로 배포된 버전에 머무른다.
  2. Grafana Cloud를 도입한다.
  3. Grafana를 수정할 계획이 없다면 엔터프라이즈 버전을 사용해라.
  4. 수정해야 한다면 Grafana Labs의 유료 독점 라이센스에 따라 AGPL 버전을 다시 라이센스해서 사용할 수 있다.

Grafana의 두가지 에디션 다운로드 화면

이번에 찾아보면서 알게 되었지만 Grafana는 듀얼 라이센스로 제공되고 있다. 다운로드 페이지에 가면 오픈소스 에디션과 엔터프라이즈 에디션을 다운로드받을 수 있고 엔터프라이즈 에디션은 Grafana Labs License가 적용되어 있다.

엔터프라이즈 에디션은 오픈소스 에디션의 기능을 모두 포함하고 있고 여기까지는 무료로 쓸 수 있지만, 유료로 사용할 수 있는 기능을 업그레이드할 수 있다고 한다. 여기서 약간 혼동이 오는 부분은 그럼 오픈소스 기능만 사용한다고 했을 때 오픈소스 에디션을 쓸 때와 엔터프라이즈 에디션을 쓸 때의 차이점이 무엇인가이다. Grafana Labs License을 읽어보진 않았지만 Grafana CEO의 답변을 보면 Grafana를 수정하지 않고 사용할 계획인데 AGPL이 복잡하다면 엔터프라이즈 버전을 쓰는 것이 괜찮은 대안으로 보인다.

2021/07/18 20:11 2021/07/18 20:11