← 목록으로
지난 소식
우리가 알던 오픈소스는 죽었다
요약
- AI로 인한 저품질 기여와 검토 부담 증가로 인해 오픈소스 유지관리자들이 외부 기여를 제한하거나 차단하는 사례가 늘고 있습니다.
- 이러한 변화는 신규 기여자의 진입 장벽을 높이고 공동체 파편화를 초래하며, 기존의 신뢰 기반 협업 구조를 위협하고 있습니다.
- AI로 기여를 만드는 비용은 낮아졌지만 검토 비용은 줄지 않아, 오픈소스 유지관리자들이 외부 기여를 제한하거나 차단하고 있음
- 과거에는 상당한 분량의 패치가 기여자의 노력과 선의를 가늠하는 신호였지만, AI 생성 코드가 그 신호를 무너뜨리면서 낯선 기여자를 신뢰하기 어려워짐
- curl의 버그 바운티 종료부터 Ladybird와 Hono의 외부 PR 차단까지 대응은 다양하지만, 공통된 문제는 기여를 평가할 여력 자체가 부족해졌다는 것임
- AI 리뷰와 저품질 PR, 허구의 보안 보고서가 쌓이면서 사람 사이의 대화와 협업이 묻히고, 신규 기여자가 배우며 공동체에 들어오던 통로도 좁아지고 있음
- 소스는 공개하되 기여는 초대받은 사람만 하는 작은 신뢰 집단으로 바뀔 수 있음. 유지관리자를 보호하는 선택이지만, 낯선 사람도 기여하며 배우고 소속감을 얻던 통로가 사라짐
오픈소스는 코드만의 문제가 아니었음
- 독학 개발자 James Ross에게 오픈소스는 학습과 경력의 토대였음
- 다른 사람의 코드를 읽고, 미숙한 질문에도 유지관리자의 설명을 들으며 배웠음
- 게임 서버를 수정하던 관심은 직업으로 이어졌고, GitHub는 흩어져 있던 사람들이 한 공간에 모인 듯한 경험을 줬음
- 계속 참여하게 한 것은 라이선스, 다운로드 수나 별보다 사람 사이의 교류였음
- README의 오타를 고쳤을 때 받는 감사, 지구 반대편에서 도착한 버그 수정, 더 나은 API를 함께 찾아가는 이슈 토론이 있었음
- 2014년 PointDNS의 Node.js 클라이언트에서 큰 DNS 영역의 응답을 제대로 처리하지 못하는 오류를 첫 PR로 수정함
- 두 시간 뒤에는 파일 거의 모든 줄을 건드리는 정리 PR도 보냄
- 유지관리자는 다음 날 아침 별도의 문답이나 체크리스트 없이 두 PR을 병합함
- 낯선 사람이 보낸 300줄의 변경을 받아준 경험이 소속감을 만들어 줌
- PR은 단순한 코드 변경이 아니라 “당신의 프로젝트를 써봤고, 더 낫게 만들고 싶다”는 뜻이었음
- 리뷰는 “당신의 기여를 알아봤으니 함께 해보자”는 응답이었음
- 이런 신뢰의 교환이 수없이 반복되며 오늘날의 인터넷을 만들었음
노력이 더는 선의의 신호가 되지 못함
- 당시의 요청받지 않은 대규모 정리 PR은 오늘날이라면 에이전트가 작성한 변경으로 의심받아 닫힐 수도 있음
- Flask-SocketIO 유지관리자 Miguel Grinberg에게는 요청받지 않은 PR 자체가 경고 신호가 됨
- Ladybird의 공개 PR 접수 중단에서도 같은 문제가 드러남
- 큰 패치는 큰 노력을 뜻하고, 그 노력은 선의를 가늠하는 합리적인 신호였음
- AI가 그 가정을 무너뜨림. 변경 분량만으로는 사람이 얼마나 고민하고 이해했는지 알 수 없게 됨
생성된 텍스트에 묻히는 사람의 대화
- 사람이 작성한 PR에도 자동 생성 메시지가 연달아 붙음
- AI 리뷰가 변경 내용을 되풀이하고, 다른 봇은 미리보기 배포를 게시하며, 또 다른 봇은 요청하지 않은 다이어그램과 해설을 추가함
- 봇이 다른 봇에 응답하기도 하며, 사람이 검토할 무렵에는 실제 대화가 생성된 텍스트에 묻힘
- 더 나쁜 경우에는 존재하지 않는 문제를 고치는 PR, 그럴듯하지만 완전히 틀린 수정과 허구의 취약점 보고서가 들어옴
- 이력서에 넣을 기여 기록을 쌓으려고 수백 개 저장소에 이런 PR을 대량 제출하는 계정도 있는 것으로 보임
- 잡음이 늘면서 즐겨 지켜보던 저장소의 알림을 끄게 됨
- 10년 넘게 남아 있던 첫 PointDNS PR에도 무의미한 댓글과 깨진 이미지가 달림
- 봇인지 사람인지 알 수 없으며, 그 구분조차 어려워졌다는 사실이 문제임
기여를 평가할 여력부터 묻게 되는 유지관리자
- 저품질 AI PR도 기여처럼 보이므로 읽어야 한다는 부담을 만듦
- 검토하고 오류를 설명하는 시간은 실제 개발, 가족과의 생활과 수면에서 빠져나감
- 프로젝트마다 대응은 다르지만 외부 기여를 제한하는 방향이 확산되고 있음
- curl은 유효한 보고서 비율이 5% 미만으로 떨어지면서 금전적 버그 바운티를 종료함
- Ghostty는 저노력 AI 기여로 나쁜 기여가 10배 이상 늘었다며 정책을 강화함
- tldraw는 외부 PR을 자동으로 닫기 시작했고, 수십 개 Python 프로젝트의 터전이던 Jazzband는 운영을 종료함
- OpenJDK, Godot과 COSMIC도 LLM 생성 기여나 자율 에이전트에 제한을 둠
- 10월 1일 Sindre Sorhus는 AI를 이유로 모든 저장소의 외부 PR을 비활성화함
- 지난 10년간 JavaScript를 작성했다면 그의 코드를 실행했을 가능성이 높을 만큼 널리 쓰이는 개발자의 결정임
- 유지관리자는 이제 기여가 좋은지뿐 아니라 좋은지 알아볼 비용을 감당할 수 있는지부터 판단해야 함
- 자신의 프로젝트와 시간, 정신적 여유를 지키기 위한 합리적인 선택임
- 하지만 같은 선택이 누적되면 오픈소스는 다른 모습이 됨
Hono를 성장시킨 통로를 Hono가 닫음
- Yusuke Wada는 Hono에서도 외부 기여자의 PR을 비활성화함
- Hono는 외부 PR 없이 지금의 위치에 오를 수 없었던 프로젝트임
- @usualoma가 만든 빠른 HTTP 라우터 RegExpRouter도 외부 기여에서 시작됨
- 그 기여자는 4년 뒤에도 참여하고 있지만, 이제 프로젝트는 그가 처음 들어왔던 문을 닫아야 함
- Wada는 지금 시대에는 PR이 작동하지 않는다며 다른 방식의 기여를 요청함
- 외부 기여로 성장한 프로젝트가 외부 기여를 막아야 하는 상황은 위선보다 상실감에 가까움
PR을 유명하게 만든 플랫폼이 PR을 끄는 기능을 만듦
- GitHub도 생성 비용은 내려갔지만 검토 비용은 내려가지 않았음을 인정함
- 이후 PR 접수 중단, 사용자별 열린 PR 수 제한, 협업자만 이슈를 만들도록 하는 설정과 스팸 PR 보관 기능을 추가함
- PR을 유명하게 만든 플랫폼이 한 해 동안 PR을 제한하고 끄는 방법을 구축한 셈임
- 일부 프로젝트는 다른 호스팅 환경으로 이동함
- Zig는 Codeberg로 이전했고, 자체 Forgejo나 Gitea를 운영하는 사람도 늘고 있음
- 프로젝트의 이슈, 역사와 참여자가 흩어지면 별도 계정과 새로운 탐색 경로가 필요해짐
- 공동체가 더 파편화되고, 낯선 기여자가 우연히 찾아올 가능성도 낮아짐
AI는 비용을 없애지 않고 다른 사람에게 옮김
- AI 사용 자체를 중단하자는 이야기는 아님
- Ross도 매일 코드 작성과 리뷰에 AI를 쓰고, 이 글의 메모 정리에도 도움을 받았음
- 작업이 빨라졌고, 때로는 더 좋은 결과도 얻었음
- 문제는 AI의 비용을 0으로 여기기 쉽지만 실제로는 비용이 이동한다는 데 있음
- PR을 만드는 데 10초, 제대로 검토하는 데 30분이 걸린다면 원하는 것이 있는 사람의 일이 거절해야 하는 사람에게 넘어감
- 거절해야 하는 쪽은 대개 이미 여력이 부족한 자원봉사자임
- AI는 기여를 저렴하게 만들었지만 유지관리를 저렴하게 만들지는 않았음
초대받아야 기여할 수 있는 오픈소스
- AI PR 금지는 유지관리자를 보호할 수 있지만 둔탁한 수단임
- AI로 좋은 테스트 하나를 작성한 사람과 에이전트를 수천 개 저장소에 돌린 사람을 함께 막음
- 기여자의 정직함이나 제대로 작동하지 않는 생성물 탐지에 의존함
- 소스는 공개하되 기여는 초대받은 사람만 하는 작은 신뢰 집단이 새로운 형태가 될 수도 있음
- 그 방식이 나을 수도 있고, 예전 인터넷에 대한 향수가 섞여 있을 수도 있음
- 하지만 낯선 유지관리자에게 떨리는 마음으로 300줄의 코드를 보내던 초보 개발자는 그 문을 통과하지 못함
- 그런 사람이 들어올 수 없게 되면 실제로 잃는 것이 있음
- 해결책은 모르지만, 예전에 느꼈던 그 감각이 그리움