오픈 소스는 가격, 계약, 책임, 그리고 전통적 시장 신호 없이도 현대 소프트웨어 산업의 기반을 이루며, 표준 경제학이 예측하지 못하는 방식으로 작동한다.
경제학 학부생에게 그것이 무엇인지는 말하지 않은 채 오픈 소스 라이브러리가 어떻게 생산되는지 설명하고, 결과를 예측해 보라고 한다면, 그들은 말이 되지 않는다고 할 것이다. 배제할 수 없는 재화에 가격도 없고, 계약도 없고, 책임도 없고, 생산자 수의 중앙값은 한 명이며, 소비자는 거의 전적으로 무임승차한다. 교과서 어디에도 그런 배열이 안정적인 무언가를 만들어낸다는 모형은 없다.
그런데 npm install을 실행하면 이런 불가능한 재화 수백 개가 몇 초 만에 도착하고, 상업용 소프트웨어 산업은 거의 전부 그 위에 올라앉아 있다. 오픈 소스는 시장의 공리 전체를 거의 한꺼번에 깨뜨린다.
무임승차 문제. 공공재는 비경합적이며(내 사용이 당신의 사용을 줄이지 않는다) 비배제적이다(당신이 나를 막아낼 수 없다). 그리고 표준 이론에 따르면 이런 재화는 과소생산되는데, 모든 합리적 행위자가 다른 누군가가 비용을 치르기를 기다리기 때문이다. 대표적인 사례는 등대다. 모두가 혜택을 보지만 아무도 자원하지 않으므로 정부가 지어야 한다. 오픈 소스 라이브러리는 라이선스에 의해 완벽하게 비경합적이고 비배제적이므로 정의에 정확히 들어맞고, 따라서 이론은 소수만 존재하며 마지못해 생산되고 보조금으로 떠받쳐질 것이라고 예측한다. npm만 해도 오백만 개가 넘는 패키지를 호스팅하며, 그중 거의 어느 것도 보조금 지원을 받지 않고, 매일 수천 개가 더 생겨난다.
값을 치른 만큼 얻는다. 가격은 품질과 희소성을 신호해야 하며, 그렇게 해서 시장이 좋은 것과 나쁜 것을 가려낼 수 있어야 한다. 자체 집계에 따르면 세계에서 가장 널리 배포된 데이터베이스 엔진인 SQLite의 가격은, postinstall hook에 crypto miner를 심어 둔 일주일 된 typosquat과 똑같다. 존재하는 가장 가치 있는 라이브러리와 가장 위험한 라이브러리가 같은 숫자에 놓여 있고, 소비자들은 평판, 다운로드 수, GitHub stars로 이 빠진 신호를 우회한다.
공유지의 비극. 공유 자원은 각 사용자의 합리적 선택이 돌려주지 않고 가져가는 것이기 때문에 고갈된다. 따라서 소프트웨어 공유지에 대한 예측은 과도하게 사용되고 유지보수가 부족한 작은 코드 풀, 즉 소비가 기여를 앞지르면서 쇠퇴하는 상태일 것이다. 공개 레지스트리의 일부 구석은 실제로 그렇게 보이지만, 집계 전체는 레지스트리가 존재한 이래 매년 성장해 왔다.
합리적 자기이익. 경제 주체는 자신의 효용을 극대화하며, 효용은 돈뿐 아니라 즐거움, 지위, 이념까지 포함하도록 충분히 넓게 정의될 수 있다. 그렇게 넓은 정의를 쓰더라도, 많은 사람들의 선호 안에 밤 열한 시에 낯선 사람의 버그 리포트를 답하는 일이 들어 있다고 보기는 무리다. 그것도 전혀 관련 없는 본업을 하루 종일 한 뒤, 제목이 “URGENT!!”인 Fortune 500 company의 이슈에 반응하며, 자신에게 아무 대가도 주지 않는 프로젝트를 위해서 말이다. 그런데도 그런 식으로 작동하는 선호를 가진 사람이 현대 소프트웨어 스택 대부분을 계속 굴릴 만큼 충분히 많다.
수요와 공급. 수요가 증가하면 가격이 오르고 새로운 공급자가 유입되어 시장이 균형을 찾는다고들 하지만, 어떤 라이브러리가 주당 다운로드 천 건에서 천만 건으로 늘어나도 가격은 여전히 0이고 유지관리자 수는 보통 여전히 한 명이다. 수요가 공급에 작용할 통로가 없기 때문이다. 사용자는 더 많이 늘어나고, 이슈 트래커는 차오르며, 보안 연구자들은 그 라이브러리를 상대로 CVE를 제출하기 시작하지만, 여전히 한 사람의 일이 된다.
분업. 핵심 인프라는 실패에 대한 책임을 지는 기업 안에서 조직된, 전업으로 고용된 전문가들이 구축해야 한다고 여겨진다. ecosyste.ms가 추적하는 공개 레지스트리 전반에서 절반이 넘는 패키지는 단 한 명의 유지관리자만 가진다. 그리고 그 한 사람은 종종 다른 분야에서 낮 일을 하고, 하위 사용자 누구와도 고용 관계가 없으며, 누구에게도 계약상 책임을 지지 않는다. 의존성 그래프의 긴 구간에서 bus factor는 결국 취미로 하는 한 사람으로 계산된다.
기업은 경쟁우위를 지킨다. 회사는 엔지니어에게 무언가를 만들게 한 다음 자기 고객을 두고 경쟁하는 사람들에게 그것을 넘겨주도록 비용을 지불하지 않는 것이 보통이지만, Google, Meta, Microsoft, Amazon은 모두 나머지 셋이 프로덕션에서 돌리는 오픈 소스 라이브러리에 자금을 댄다. 표준적인 설명은 보완재의 상품화다. 돈을 버는 지점과 인접한 층을 무료로 풀어, 그곳에서 누구도 당신에게 지대를 청구할 수 없게 만드는 것이다. 이것은 React와 gRPC는 그럭저럭 설명하며, 여기 나열한 것들 중 깔끔한 시장 설명이 가능한 유일한 항목이다. 그러나 이 설명은 그 아래의 훨씬 더 큰 층, 즉 유지관리자는 한 명이고 인접한 비즈니스 모델도 없는 라이브러리들에는 확장되지 않는다. npm install이 끌어오는 것의 대부분이 바로 그것들이다.
경제학자들도 이 모든 것을 알아차렸고, 이를 설명하려는 작은 문헌이 존재한다. Lerner and Tirole은 이것을 경력 신호로 보았다. 공개적으로 기여해 평판을 쌓고, 그 평판을 다른 곳에서 현금화한다는 것이다. 하지만 그것은 누군가가 보고 있을 때에나 성립하며, 어떤 채용 담당자도 찾아보지 않을 생소한 의존성을 관리하는 사람에게는 해당하지 않는다. Benkler는 인터넷이 조정 비용을 충분히 낮춰 기업 없이도 생산을 조직할 수 있게 만들었다고 주장했다. 그것은 일이 어떻게 나뉘는지는 설명하지만, 왜 누군가가 그중 화려하지 않은 절반을 떠맡는지는 설명하지 않는다. Von Hippel은 이것을 사용자 혁신으로 틀지었다. 사람들이 자신에게 필요한 것을 만들고, 그 후에는 거의 공짜로 공유한다는 것이다. 그러나 유지관리자가 자기 자신은 이미 그 물건을 쓰지 않게 된 지 몇 년이 지난 뒤에도 계속 버그 리포트에 답하고 있다면 이 설명은 맞지 않게 된다. 이 셋 모두 어떤 유지관리자에게는 어떤 때에 들어맞지만, 어느 하나도 단독으로는 이 시스템이 띠게 된 형태나 그것이 왜 이렇게 오래 버텨 왔는지를 설명하지 못한다.
위의 모든 것을 시장 실패의 목록이라고 부르는 것은, 그 실패들만 교정하면 제대로 작동할 기저의 시장이 있다는 뜻을 암시하지만, 그런 시장은 없다. 오픈 소스는 교과서가 유지될 수 없다고 말하는 기반 위에서 삼십 년 동안 돌아왔다. 이것은 서로 겹쳐진 여러 배열, 즉 일부는 선물 경제이고, 일부는 공유 인프라이며, 일부는 공공 아카이브이고, 일부는 평판 시스템인 것처럼 보인다. 어느 하나의 메커니즘도 전체를 떠받치고 있지 않다.
그런데도 계속 제안되는 실질적 해결책들은 이것을 여전히 시장으로 취급하고 빠진 조각을 덧붙이려 한다. bug bounties, sponsorship marketplaces, dependents-weighted funding formulas, criticality scores, tokenised reward schemes가 모두 그런 데서 나온다. 이들 하나하나는 한 번도 가격이 있었던 적 없는 것에 가격을 재구성하려는 시도이며, 그러려면 가치를 대신할 숫자가 필요하다.
그 일에 사용할 수 있는 숫자들은 약한 대리 지표일 뿐이며, 누구나 정말 알고 싶어 하는 것에서 두세 단계나 떨어져 있다. 즉, 누가 이것을 계속 돌아가게 하고 있는지, 그들이 멈추기까지 얼마나 가까이 와 있는지, 그리고 이것을 상대로 제출된 보안 보고서가 과연 누구에게라도 닿을지다.