합법이면 공정한가: AI 재구현과 카피레프트의 침식

지난 주, Python 텍스트 인코딩 탐지 라이브러리인 chardet의 메인테이너 Dan Blanchard가 새 버전을 릴리스했다. chardet 7.0은 속도가 기존 대비 48배 빨라졌고, 멀티코어를 지원하며, 설계부터 다시 짜여졌다. Anthropic의 Claude가 기여자로 등재되어 있다. 그리고 라이선스가 LGPL에서 MIT로 바뀌었다.

Blanchard의 말에 따르면 자신은 코드를 보지 않고 API와 테스트 스위트만을 참조해 Claude에게 처음부터 재구현하도록 지시했고, 그 결과 이전 버전과의 코드 유사도가 1.3% 미만이라고 한다. 따라서 이것은 독자적인 새 저작물이며 LGPL을 계승할 의무가 없다는 것이다. 원작자 Mark Pilgrim은 GitHub 이슈를 열어 항의했다. LGPL은 수정 배포 시 동일 라이선스 유지를 요구하는데, 기존 코드에 충분히 노출된 상태에서 만든 재구현은 클린 룸이라고 볼 수 없다는 것이 그의 주장이다.

이 사건은 Flask의 창시자 Armin Ronacher와 Redis의 창시자 Salvatore Sanfilippo(이하 antirez)의 글을 통해 더 넓은 논쟁으로 번졌다. 두 사람은 각기 다른 경로로—Ronacher는 라이선스 철학의 측면에서, antirez는 저작권법의 법리에서—이 재구현이 정당하다는 결론에 도달한다. 나는 두 글을 모두 존중하지만, 둘 다 틀렸다고 생각한다. 아니, 더 정확하게는 둘 다 핵심 질문을 회피하고 있다.

그 핵심 질문이란 이것이다. 합법이면 공정한가. 두 글은 이 물음에는 답하지 않은 채, 법리적으로 가능하다는 사실에서 사회적으로 정당하다는 결론을 끌어낸다. 법적 허용과 사회적 당위는 같은 것이 아니다. 법은 최소한의 기준을 정할 뿐이고, 어떤 행위가 그 기준을 통과한다는 것이 그 행위가 옳다는 뜻은 아니다. 이 구분이 이 글의 출발점이다.

유비의 방향이 거꾸로다

antirez의 논거는 GNU 프로젝트가 UNIX 유저스페이스를 재구현했을 때, 그것이 합법이었다는 사실에서 출발한다. Linux 커널도 마찬가지였다. 저작권법은 보호 받는 표현(protected expressions)의 복제를 금하지만 아이디어와 동작 방식은 보호하지 않는다. AI로 재구현하는 것도 같은 법적 지형 위에 있으므로 합법이라는 것이다.

이 법리의 설명 자체는 대체로 맞다. 재구현이 합법이라는 주장을 나는 반박하지 않는다. 문제는 그 다음 단계에 있다. antirez는 합법임을 보인 뒤 논의를 끝낸다. 그러나 법리가 옳다는 것과 행위가 사회적으로 정당하다는 것은 별개의 주장이다. 이 둘을 동일시할 때 논증의 간극이 생긴다.

그 간극이 가장 선명하게 드러나는 곳이 바로 antirez가 끌어온 역사적 유비다.

GNU가 UNIX를 재구현했을 때, 그 벡터는 독점에서 공유 쪽을 향하고 있었다. Stallman은 UNIX라는 독점 소프트웨어를 자유 소프트웨어로 재구현하기 위해 저작권법의 한계를 영리하게 활용한 것이다. 그 재구현의 윤리적 정당성은 법적 합법성에서 오는 것이 아니라, 공유지(commons)를 넓히는 방향에서 나왔다. 그것이 GNU 프로젝트가 환호를 받은 이유다.

chardet 사건에서 재구현의 벡터는 반대 방향이다. 카피레프트 라이선스인 LGPL로 보호되던 소프트웨어가 퍼미시브 라이선스인 MIT로 재구현되었다. 이것은 공유지를 넓히는 재구현이 아니라 공유지의 울타리를 제거하는 재구현이다. 이제 chardet 7.0을 기반으로 만들어지는 파생 작업은 소스 코드를 공개할 의무가 없다. 월 1억 3천만 다운로드라는 규모의 라이브러리에서 그 의무가 사라진 것이다.

antirez는 이 방향의 차이를 논하지 않는다. GNU의 역사를 끌어왔는데, 그 역사가 실은 자신의 결론에 반증 사례가 된다는 것을 보지 못하거나 보지 않으려 한다.

GPL은 공유에 반하는가

한편, Ronacher의 논거는 다르다. 그는 자신이 오래전부터 chardet이 비GPL 라이선스로 바뀌기를 원했다고 밝힌다. 그리고 GPL이 공유 정신에 반한다고 주장한다. 자신은 가능한 한 라이선스 강제가 적은 방향으로 공개하는 것을 지지하고, 사회는 공유할 때 더 나아진다는 믿음을 가지고 있기 때문이란다.

이 주장은 GPL에 대한 근본적인 오해를 담고 있다.

GPL이 무엇을 금지하는지부터 보자. GPL은 소스 코드를 비공개로 유지하는 것을 금지하지 않는다. GPL 소프트웨어를 개인적으로 수정해 사용하는 것에는 아무런 제약이 없다. GPL이 조건을 발동시키는 것은 배포할 때뿐이다. 수정한 코드를 배포하거나 서비스로 제공하면, 그 코드도 같은 조건으로 공유해야 한다는 것. 이것은 공유를 제한하는 것이 아니라 공유를 조건으로 거는 것이다.

이것을 받아서 사용하고 개선했다면, 그 개선도 공유하라는 요구는 공유를 억제하는 메커니즘이 아니라 공유를 연달아 강제하는 메커니즘이다. 공유지의 이용자에게 공유지에 대한 기여 의무를 부과하는 것이 공유 문화를 해친다는 주장은 어불성설이다.

MIT 라이선스와 비교해 보면 차이가 분명하다. MIT 라이선스 하에서는 누구나 코드를 가져다 개선한 뒤 독점 소프트웨어로 닫아버릴 수 있다. 가져가서 써도 되지만 기여는 선택적이다. Ronacher가 이 구조를 더 공유 친화적이라고 본다면, 그가 말하는 공유는 흘러가는 방향이 있는 공유다. 더 많은 자본과 인력을 가진 쪽이 가져가는 방향으로.

이 비대칭이 현실에서 어떻게 작동하는지는 역사가 보여준다. 1990년대에 많은 기업들이 GPL 코드를 흡수해 독점 소프트웨어를 만들었다. 이것이 가능했던 것은 그들이 MIT 같은 퍼미시브 라이선스를 선택했기 때문이 아니라, 당시 카피레프트 라이선스의 집행이 느슨했기 때문이다. GPL이 강화되면서 이 구멍이 막혔다. 자원이 없어서 기여를 통한 상호성에 의존할 수밖에 없는 개인 개발자나 작은 프로젝트에게 카피레프트는 그나마 대등한 교환을 가능하게 하는 장치였다.

Flask를 만든 사람이 이 구분을 모를 이 없다. 그렇다면 이 논거는 나이브한 것이 아니라 편의적인 것이다.

스스로 반증하는 사례

Ronacher의 글에서 가장 흥미로운 부분은 논거가 아니라 스쳐 지나가는 한 문장이다. Vercel이 GNU Bash를 AI로 재구현해 공개했다가, Cloudflare가 같은 방식으로 Next.js를 재구현하자 눈에 띄게 화를 냈다는 것이다.

Ronacher는 이것을 아이러니로 언급하고 넘어가지만, 이 일화는 그의 입장 전체를 무너뜨린다. Next.js는 MIT 라이선스다. Cloudflare의 vinext는 라이선스를 위반한 것이 아니라, Ronacher가 공유 문화의 진전이라 부른 바로 그 행위를 Next.js에 적용한 것 뿐이다. Vercel의 분노는 라이선스 침해에 대한 것이 아니라 순수하게 경쟁적·영토적 반응이었다. 내가 GPL 소프트웨어를 MIT로 재구현하는 것은 공유 문화의 진전이고, 누군가 내 MIT 소프트웨어를 같은 방식으로 재구현하는 것은 불쾌하다. 이것이 퍼미시브 라이선스 진영이 카피레프트 진영보다 더 공유 친화적이라는 주장의 실체이다. 그가 말하는 공유 정신란 결국 이토록 비대칭적인 것이다.

Ronacher는 이 아이러니를 인식하고도 멈추지 않는다. 자신의 세계관에 부합하는 사례이기 때문이란다. 세계관과 일치하지 않는 증거를 스스로 제시하고도 결론을 바꾸지 않는 것은 논거가 결론에 앞서는 것이 아니라 결론이 논거에 앞서고 있다는 신호다.

합법성과 사회적 당위는 다른 층위에 있다

서두에서 말한 질문으로 돌아오자. 합법이면 공정한가.

antirez는 법리를 꼼꼼히 설명한 뒤 그것으로 충분하다는 듯이 끝을 맺는다. Ronacher는 법적 회색 지대를 인정하면서도 도덕적 문제는 내가 관심 있는 부분이 아니다라고 한 문장으로 넘긴다. 두 글 모두 법적 허용을 사회적 정당성의 대리물로 삼는다. 그러나 법은 어떤 행위를 막지 않는다는 것을 말할 뿐이지, 그 행위가 옳다는 것을 보증하지는 않는다. 조세를 아슬아슬하게 회피하는 것이 합법이더라도 옳은지는 별개의 물음이다. 특허를 합법적으로 취득한 기업이 수십 연간 저렴하게 공급되던 필수 의약품 가격을 수십 배 올리는 것이 합법이더라도, 그것이 사회적으로 정당하다는 뜻은 아니다. 합법성은 필요조건일 수 있지만 충분조건은 아니다.

chardet 사건에서 이 구분은 더욱 뚜렷하다.

chardet의 LGPL이 보호한 것은 Blanchard 한 사람의 노동이 아니다. 12년간 이 라이브러리에 기여한 모든 사람들이 동의한 사회적 계약이다. 그 계약의 내용은 이것을 가져다 쓴다면, 당신이 만든 것도 같은 조건으로 공유하라는 것이었다. 이 계약은 법원이 강제하는 종류의 계약이기도 하지만, 그보다 먼저 오픈 소스 공동체가 수십년에 걸쳐 구축해 온 신뢰의 토대였다. 재구현이 법적으로 새로운 저작물로 인정될 수 있다는 것과, 그 재구현이 기존 기여자들과 맺은 사회적 계약을 파기했다는 것은 별개의 문제다. 법원이 만일 Blanchard의 손을 들어준대도 그것은 그의 행위가 공동체적으로 정당하다는 것을 의미하지 않는다. 합법성은 사회적 정당성을 뒤따라오게 하지 않는다.

FSF 대표 Zoë Kooyman은 이를 간결하게 표현했다. 자신이 받은 권리를 타인에게 부여하기를 거부하는 것은 어떤 방법을 쓰든 반사회적 행위다.

누구의 관점이 디폴트로 설정되어 있는가

이 논쟁을 읽으면서 계속 드는 질문이 있다. 두 저자는 AI 재구현의 비용 하락을 어떤 위치에서 바라보고 있는가.

antirez는 Redis를 만들었고, Ronacher는 Flask를 만들었다. 두 사람 모두 오픈 소스 생태계의 중심에 있는 사람들이다. 그들의 입장에서 AI 재구현의 비용 하락은 자신이 가하는 쪽의 이야기다. 무언가를 더 쉽게 재구현할 수 있게 되는 것이다. Ronacher는 GNU Readline을 GPL이기 때문에 재구현하려 했다고 밝힌다.

반면 수십년간 chardet 같은 라이브러리에 기여해온 사람들의 입장에서 같은 기술 변화는 자신이 당하는 쪽의 이야기다. 자신의 기여가 담긴 카피레프트 보호막이 제거되는 것이다. 두 저자는 전자의 위치에서 후자의 위치에 있는 사람들을 향해 “이것은 항상 합법이었고, 역사적 선례가 있으며, 기술 변화에 적응하라”고 말하고 있다.

이 비대칭을 무시한 채 보편적 논거인 것처럼 서술할 때, 글은 분석이 아니라 이해관계의 합리화가 된다. 두 저자 모두 자신의 이해관계와 정확히 일치하는 결론에 도달한다는 것을 독자는 유념해야 한다.

이 싸움이 가리키는 것

Bruce Perens는 The Register와의 인터뷰에서 소프트웨어 개발의 전체 경제학이 죽었다고 경고했다. antirez는 비슷한 인식에서 적응하라고 말한다. Ronacher는 이 방향이 마음에 든다고 말한다.

세 반응 중 어느 것도 핵심 질문에 답하지 않는다. 카피레프트의 집행이 기술적으로 어려워졌을 때, 그것이 카피레프트를 불필요하게 만드는가, 아니면 더욱 중요하게 만드는가.

나는 후자라고 생각한다. GPL이 보호한 것은 코드의 희소성이 아니라 사용자의 권리였다. 코드 생산 비용이 낮아진다고 해서 그 코드를 통해 권리를 침식하는 행위가 괜찮아지는 것은 아니다. 오히려 재구현의 마찰이 사라질수록, 카피레프트 라이브러리를 MIT로 탈바꿈시키는 비용도 사라진다. GPL이 의존했던 마찰이 줄어들었다는 것은 법적 집행의 문제일 뿐, 그 기저의 당위를 건드리지 않는다.

그 당위는 이것이다. 공유지에서 가져간 자는 공유지에 돌려줘야 한다는 것. 그 원칙은 재구현이 5년 걸리든 5일 걸리든 달라지지 않는다. 법원이 AI 재구현을 클린 룸으로 인정하든 파생 저작물로 보든, 그 판결이 이 원칙의 사회적 무게를 경감시키지는 않는다.

이것이 법리와 사회적 가치가 갈라지는 지점이다. 법은 사후적으로, 느리게, 현재의 권력 관계를 반영하며 만들어진다. 오픈 소스 공동체가 수십 연에 걸쳐 쌓아온 규범은 법원의 판결을 기다리지 않았다. 법이 그것을 보호해주지 않을 때도 사람들이 GPL을 선택한 것은, 그것이 자신이 속한 공동체의 가치와 일치했기 때문이다. 그 가치는 법이 바뀐다고 사라지지 않는다.

이전 글들에서 나는 이 싸움의 다음 단계로 훈련 카피레프트(TGPL)를 제안했다. AI 재구현 문제는 거기서 한 걸음 더 나아가 명세(specification) 계층까지 보호 범위를 확장해야 한다는 것을 시사한다. 소스 코드가 명세로부터 생성될 수 있다면, 그 명세가 GPL 프로젝트의 본질적 지식재산이 된다. 소스 코드를 보지 않고 테스트 스위트와 API만으로 재구현했다는 Blanchard의 주장은, 역설적으로, 그 테스트 스위트와 API 명세가 보호되어야 한다는 논거가 된다.

GPL의 역사는 새로운 착취 방식이 등장할 때마다 법적 도구가 진화해 온 역사다. GPLv2에서 GPLv3로, AGPL로. 그러나 그 진화를 이끈 것은 판결이 아니라 공동체의 가치 판단이었다. 법은 뒤따라왔다. 지금도 마찬가지다. 법원이 AI 재구현에 대해 어떤 판결을 내리든, 우리가 먼저 답해야 할 질문은 법적인 것이 아니라 사회적인 것이다. 공유지의 열매를 취한 자는 공유지에 돌려줄 의무가 있는가. 나는 그렇다고 생각한다. 그리고 그 판단은 법원의 판결을 기다릴 필요가 없다.

antirez와 Ronacher의 글이 흥미로운 것은 그들이 옳기 때문이 아니라, 그들이 무엇을 보지 않으려 하는지가 선명하게 드러나기 때문이다. 합법성으로 사회적 가치 판단을 대신하려 할 때, 정작 중요한 질문은 법리의 그늘 속에 묻힌다.