자본으로는 설명할 수 없는 것
소프트웨어 개발을 하다보면 오픈 소스 프로젝트에 관심이 생길 수밖에 없는 것 같습니다. 저 또한 그렇고요, 많은 사람들이 오픈 소스 프로젝트에 기여하는 재미를 느끼는 듯 합니다. 그 중 진보적인 일부는 자유 소프트웨어 운동에도 동의하거나, 참여하고요. 단순히 자신의 서비스에 오픈 소스를 이용하는 것 뿐만 아니라 능동적인 기여를 하게 되는 것이 꼭 인간의 본능으로 느껴질 때도 있습니다.
데비안 홈페이지에 있는 '철학(Philosophy)' 페이지(debian.org)엔 아래와 같은 문구가 있습니다.
Why so many people choose to spend lots of hours of their own time writing software, carefully packaging and maintaining it, just to give it all away without charging for it?
왜 그렇게 많은 사람들이 많은 시간을 들여 소프트웨어를 만들고, 정성스럽게 패키징하고, 유지 보수하는 데 많은 시간을 할애한 뒤에 무료로 거저 줄까요?
언뜻 보면 자본주의 논리로 설명할 수 없는 문제처럼 보입니다. 왜 사람들은 이 돈 안되는 프로젝트를 유지하고 있을까요? 도대체 왜 이 세상이 이런 '이상한 논리'에 의해 돌아가는 걸까요? 이 글이 그에 대한 조금의 시야를 제공할 수 있길 바라며 써보고 싶은 말을 양껏 써보겠습니다.
자유 소프트웨어(Free software)와 오픈소스(Open source)
본문에 앞서, '자유 소프트웨어'와 '오픈 소스'의 차이부터 짚고 넘어가겠습니다. '자유 소프트웨어'는 사용자가 자유롭게 사용할 수 있으면서 수정 및 재배포, 상업적 이용 및 재판매 또한 자유롭게 할 수 있는 소프트웨어를 의미합니다. 당연히 소스 코드를 수정할 수 있어야 하기 때문에 모든 자유 소프트웨어 프로젝트는 오픈 소스 프로젝트입니다.
반면, 오픈 소스 프로젝트는 단순히 코드를 공개하기만 되므로, 자유 소프트웨어보다 넓은 개념입니다. 모든 오픈 소스 프로젝트가 자유 소프트웨어는 아닙니다. 소스 코드를 공개하되 수정 재배포를 금지하거나, 상업적 이용을 금지하면 '자유롭다'고 할 수 없습니다.
이 둘을 묶어서 FOSS(Free and Open Source Software)라고 합니다.
돈이 안되는 이상한 일
곳곳까지 자본의 논리가 침투해있는 많은 '사회'는 돈이 없으면 스스로 움직이지 않습니다. '공짜 점심은 없다'는 말처럼 일단 돈을 받아야(혹은 받기로 약속해야) 몸을 움직여 일을 하죠. 그럼에도 불구하고 FOSS 진영은 자신이 만든 설계도를 공짜로 공개합니다. 실제로 Tidlift의 2024 오픈 소스 유지관리자 현황 보고서(tidelift.com)에 따르면, 전체 오픈 소스 프로젝트 유지관리자의 60%는 무급으로 일하고 있습니다.
게다가 전체의 16%는 '나에게 오픈소스는 돈을 받지 않는 취미이며, 내가 유지관리하는 프로젝트를 위해 돈을 받고 싶지도 않다'며 흔히 일어나는 도네이트 또한 거절하는 모습을 보였습니다. 이런 이상한 일이 일어나는 이유는 여러 가지가 있지만, 그 중 일부만 생각해보면 아래와 같습니다.
어떤 사람들은 단순히 재밌다는 이유로 참여합니다.
소프트웨어의 발전사를 거슬러 올라가다 보면 Hack 정신으로 대표되는 '재미추구' 현상이 보입니다. '단순히 재미로' 만든 대표적인 오픈소스 프로젝트가 바로 파이썬입니다. 파이썬 서문(python.org)에 따르면 귀도 반 로섬은 단순 취미 프로젝트로 파이썬 개발에 착수했습니다.
지금도 많은 사람들이 재미를 이유로 프로그램을 만듭니다. 인터넷에 조금만 검색해봐도 취미로 만든 게임을 자랑하거나, 취미로 만든 프로그램을 공유하는 모습을 볼 수 있습니다. (저를 포함한) 프로그래밍에 흥미를 느끼는 사람들에 의해 오픈 소스 프로젝트가 굴러갑니다.
어떤 사람들은 학습을 위해 참여합니다.
나만의 프로젝트를 이끌고 싶은 학구열 또한 오픈 소스 프로젝트가 유지되는 이유 중 하나입니다. Maintainer가 아닌 Contributor까지 포함해 본다면, 다양한 아키텍처와 언어를 경험하기 위해서 많은 프로젝트에 기여하기도 합니다. 많은 학생들과 사회인들이 프로그래밍에 대한 통찰을 키우기 위해서 오픈 소스 프로젝트에 참여합니다.
아직 많은 프로젝트에 기여한 것은 아니지만, 약간의 경험을 해보면서 실제로 코드를 보는 능력이 키워진 것을 부정할 수는 없습니다. 특히 개인적인 경험으로는 프로젝트 구조를 이해하는 속도가 빨라졌습니다. 남이 짠 코드를 읽는 것이 예전보단 좀 덜 어려워진 것 같습니다.
어떤 사람들은 더 나은 사회와 정치적 이념, 양심 때문에 참여합니다.
대표적으로, 리처드 스톨먼을 비롯한 자유 소프트웨어 재단(FSF)의 이념에 동의하는 사람은 그들이 꿈꾸는 더 나은 세상을 위해 오픈 소스 프로젝트에 참여하곤 합니다. 그들은 '오픈 소스'는 자유 소프트웨어 정신과 다른 가치를 지녔고 유지 관리를 대중에게 떠넘기는 운동이라고 말하기도 하며 따라서 자유 소프트웨어 운동을 오픈 소스라는 용어로 부르는 것을 싫어합니다
꼭 다소 급진적 이념이 아니더라도, 정보의 자유로운 공유를 지지하는 이념을 가진 (저와 같은) 사람들 또한 이쪽 이유로 오픈 소스 프로젝트에 참여하기도 합니다. 제가 개발한 프로그램이 다른 사람의 서비스에 널리 쓰여서 더 이로운 사회를 만드는데 기여했으면 좋겠거든요.
결국, 오픈소스 프로젝트를 이끄는 가치가 돈보다 중요한 가치를 지녔다고밖에 생각되지 않습니다. 누군가에겐 재미가, 학습욕이, 양심이 돈을 이기는 가치가 되는 것이죠. 어쩌면 FOSS는 황금만능주의 시대에 마지막까지 남는, 인간적인 정이 있는 분야라고 생각합니다.
공공의 이익을 위해서
대부분 FOSS 프로젝트의 수익 모델은 도네이트에 의존하고 있습니다. 그 외엔 기업으로부터 자본을 받거나, 기술지원에 가격을 매기는 경우(RedHat 등)가 있습니다. 실제로 Wikipedia의 Business midels for open source software 문서에는 오픈 소스 소프트웨어로 돈을 버는 많은 방법이 소개되어 있습니다. 그런데, FOSS를 움직이는 수많은 '돈보다 우선한' 가치 중에서 '양심'과 '이념'을 보자고요. 그들은 그들이 믿는 더 나은 사회를 만들기 위해 FOSS 프로젝트를 무급으로 운영합니다. 그리고 그 이상향은 매우 급진적이지 않은 이상 사회 구성원들이 생각하는 객관적 이상향과 다르지 않습니다.
정보의 무제한 공유, 차별 없는 접근, 투명한 소스코드 공개와 자유로운 이용. 좋은 가치이고 실제로 현대 국가들도 이와 비슷한 방향의 정책을 설정하곤 합니다. 우리나라만 해도 공공기관의 모든 정보는 정보공개포털(open.go.kr)을 통해 공개됩니다. 그리고 가능한 한 많은 정보를 공공데이터포털(data.go.kr)을 통해 열람 및 이용할 수 있게 했습니다. 그렇다면, 이와 비슷한 성격인 오픈 소스 프로젝트 또한 '민간이 생성한 공공재'로 취급하여, 국가에서 장려하고 보상(보조금 등)을 주면 어떨까요?
즉, FOSS를 공공재로 취급하고, 개인의 도네이트와 같은 불안정한 수익 모델을 유지하는 대신 국가 차원에서 공공 자금을 투입하여 FOSS 생태계를 유지하는 것입니다. 잘 만든 FOSS 하나가 전 세계적으로 사용되는 수많은 사례를 보면, 국가 경쟁력 확보를 위해 FOSS 생태계에 예산을 투입하는 것이 필요하다고 생각합니다.
이미 독일의 소버린 테크 펀드(STF;Sovereign Tech Fund)라는 단체가 2022년부터 공적 자금을 통해 FOSS에 투자하고 있습니다. 이들이 투자하는 프로젝트(sovereigntechfund.de)는 개발자라면 이름만 들어도 아는 유수의 프로젝트(FreeBSD부터 GNOME, Log4j 등)입니다. 한국 정부에서 이와 비슷한 기구를 설립하여 FOSS를 장려하고 지원하면 더 나은 사회를 만듦과 동시에 국가 경쟁력을 확보할 수 있을 것입니다.
번외: AI와 오픈 소스 프로젝트
상단에 언급한 '오픈 소스 유지관리자 현황 보고서'를 살펴보다 재미있는 Section이 있어서 적어봅니다.
오픈 소스 유지관리자 전체의 51%는 현재 AI 코딩 툴을 사용하지 않는다고 하고, 그 중 대부분은 미래에도 사용할 생각이 없다고 합니다. 현재 유지되고 있는 오픈 소스 프로젝트는 대부분 성숙도가 높은 프로젝트인데요, 아무래도 이미 많은 사람들이 기여하고 안정 궤도에 올라 유지 단계에 접어든 프로젝트가 많아서 그렇다고 생각됩니다. 아무래도 보수적으로 접근할 수밖에 없기도 하고, 개발 단계에 비해 유지보수 단계는 AI 코딩 툴의 도움을 받을 일이 많지 않아서라고도 생각됩니다.
위 도표는 연령별 AI 코딩 툴 사용 여부인데요, 비교적 젊은층에서 적극적으로 사용하고 있는 것으로 보입니다. 젊은 사람이 이끄는 프로젝트는 비교적 신생 프로젝트일 가능성이 높고, 앞으로 새로 생기는 프로젝트 또한 AI 사용 비중이 높을 것 같습니다. 전체적인 AI 코딩 툴을 사용한 프로젝트의 비중은 점점 높아질 것으로 예상됩니다.
개인적인 소해로, AI의 생산성이 높아지기도 했고, 코드 보안이 비교적 중요하지 않은 FOSS 진영의 특성상 오픈 소스 프로젝트에 AI 코딩 툴의 도입을 찬성하는 바입니다. 집단지성을 통해 유지되는 오픈 소스 프로젝트 특성 상 전체와 조화로운 코드를 작성하는 능력이 필요하는데요(이걸 메인테이너가 확인하고 병합 여부를 결정하긴 합니다만), AI 코드를 보고 느낀 점이 참 무미건조하지만, 어디든지 잘 어울리는 정형화된 코드라고 생각되었습니다. 그 프로젝트의 컨벤션이 아주 특이하지 않는 이상 대부분 잘 어울리는 코드를 짤 수 있다고 생각합니다. 또, AI 코드를 그대로 갖다 쓰는게 아니라(당연히!) 그걸 프로젝트에 맞는 스타일로, 또 올바른 동작을 하도록 수정하는 작업은 여전히 필요하기 때문에, 이것이 프로젝트의 성부에 영향을 미친다고 생각하지 않습니다.
어쩌면 빠른 개발 속도가 장점인 오픈 소스 프로젝트 특성 상 AI 코딩 툴의 도입이 그 생산성을 높이는데 큰 기여를 할 것 같다는 생각도 듭니다.
여러분은 이에 대해 어떻게 생각하시나요?