오픈소스에서 제일 비싼 것
내가 만드는 것들은 전부 코드를 쓰는 사람이 나 하나다. 맥글도, 바로양식도, 이 블로그도. 누가 왜 이 줄을 넣었는지 물을 필요가 없다. 내가 넣었고, 이유도 대개 기억난다.
그래서인지 요즘 오픈소스를 보면 비효율이 먼저 눈에 들어온다. 여러 사람이 하나를 만들면, 전체 그림을 모르는 사람이 계속 커밋을 보낸다. 메인테이너는 그걸 이해하려고 시간을 쓴다. 그 사람이 무엇을 몰랐는지, 왜 이렇게 고쳤는지, 기존 설계와 부딪히는 데는 없는지. 코드를 읽는 게 아니라 남의 머릿속을 복원하는 일이다.
나는 이걸 컨텍스트 낭비라고 부른다. 오픈소스에서 제일 비싼 건 코드가 아니라 그 코드를 이해하는 데 드는 주의력이다.
코드가 공짜가 된 뒤
이 문제는 AI가 코드를 쓰기 시작하면서 더 커졌다. 코드를 만드는 비용은 거의 0이 됐는데, 그게 맞는지 판단하는 비용은 그대로다. 그 판단은 여전히 메인테이너 한 사람의 몫이다.
curl의 메인테이너는 AI로 만든 그럴듯한 보안 리포트에 시달리다 결국 버그 바운티를 접었다. 읽어 보면 말은 되는데 실제로는 없는 취약점들이었다. 보내는 쪽은 몇 초면 만들고, 받는 쪽은 몇 시간을 써서 아니라는 걸 확인한다. 이 비대칭이 지금 오픈소스가 겪는 가장 큰 비용이라고 본다.
원래 여럿이 만들지 않았다
그런데 따져 보면 잘 되는 오픈소스는 처음부터 여럿이 만드는 구조가 아니었다. 나디아 에그발이 『Working in Public』에서 쓴 대로, 대부분의 프로젝트는 핵심 메인테이너 한두 명이 코드를 거의 다 쓰고 나머지는 관중석에 있다. 기여자는 많아 보여도 대부분 오타 하나, 문서 한 줄이다.
그럼 오픈소스가 주는 건 뭘까. 내가 보기엔 코드를 같이 쓰는 게 아니라 내가 가질 수 없는 컨텍스트를 얻는 일이다. 나는 내 맥 하나, 내 사용법 하나밖에 모른다. 다른 환경에서 어떻게 터지는지, 내가 상상도 못 한 방식으로 누가 쓰고 있는지는 남이 알려 줘야만 안다. 코드를 공개하면 믿고 쓸 수 있다는 신뢰도 따라온다. 내가 손을 놓아도 누군가 이어받을 수 있다는 것도.
컨텍스트를 낭비하게 만드는 건 사람이 많아서가 아니다. 컨텍스트가 없는 사람이 코드를 직접 넣는 구조 때문이다.
이슈는 받고, 코드는 내가
SQLite는 오래전부터 이렇게 해 왔다. 코드는 누구나 볼 수 있지만 외부에서 보낸 코드는 받지 않는다. 오픈소스이지만 오픈 기여는 아니다. 예전엔 이상한 고집처럼 보였는데, 지금 보면 앞서간 방식이다.
코드 작성이 싸진 지금은 이게 더 맞는 것 같다. 바깥 사람에게는 무엇이 어디서 어떻게 깨지는지만 받는다. 재현 방법이 붙은 문제 하나가 그럴듯한 PR 열 개보다 고맙다. 고치는 건 전체를 아는 사람이 한다. 그 사람 손이 모자라면 AI를 쓰면 된다. 컨텍스트를 가진 쪽이 도구를 쓰는 게, 컨텍스트 없는 사람 열 명이 도구를 쓰는 것보다 낫다.
물론 이건 혼자 만드는 사람의 편한 생각일 수도 있다. 리눅스 커널처럼 한 사람이 다 알 수 없는 크기의 프로젝트는 여럿이 나눠 맡을 수밖에 없다. 거기서도 결국 하위 시스템마다 그 부분을 다 아는 메인테이너가 있고, 패치는 그 사람을 거친다. 컨텍스트를 쪼개서 사람마다 나눠 들고 있는 구조다.
사람이 하나든 천 명이든, 코드가 들어가는 문 앞에는 전체를 아는 누군가가 서 있어야 한다. 그 문을 얼마나 좁게 둘지는 아직 정하지 못했다.
댓글 0