LLM 코딩 확산이 오픈소스 생태계에 'Lisp 저주'를 재현한다는 경고
- Lisp 저주는 Lisp이 너무 강력하고 유연해 개발자마다 맞춤 해법을 만들고, 재사용 가능한 라이브러리와 중앙 프레임워크가 자리 잡지 못하는 현상이며, 저자는 LLM 보조 코딩이 Java 같은 생태계에서도 같은 결과를 낳는다고 본다
- 첫 번째 효과는 오픈소스 라이브러리 사용자가 줄어 유지보수자에게 돌아가는 피드백이 줄어드는 것이며, 프롬프트 한두 개와 20분 대기, 몇 달러어치 토큰이면 해결되는 상황에서 문서를 읽고 남의 API 결정을 받아들일 이유가 사라진다고 저자는 짚는다
- 두 번째 효과는 새 오픈소스 라이브러리 생성 정체이며, 오픈소스에서 어려운 부분은 코드 구조화, 호스팅, 아티팩트 저장소 배포, 버저닝, 하위 호환성 같은 유지보수인데 생성이 쉬우면 모듈화해 공유할 이유가 없어진다
- 두 효과는 서로 증폭해서, 새 기술을 통합할 라이브러리가 줄면 개발자가 더 자기 해법을 생성하는 쪽으로 기울고 결국 오픈소스 협업이 줄고 개발이 더 외로운 작업이 된다고 저자는 전망한다
- 저자는 성숙한 라이브러리 대신 생성 코드를 택하는 태도를 'Not generated here'라 부르며 'Not invented here'의 다른 버전이라고 비판한다
Hacker News 의견들
저주라고 부르기엔 좀 과장인 듯. 모든 언어가 스펙트럼 위에 있고 C 같은 언어도 커뮤니티 주도 생태계라 라이브러리 의존도가 다를 뿐임. Lisp만의 문제가 아님.
개발 과정 자체가 언어를 확장하는 언어라면 다 해당되는 얘기임. 바벨 저주의 현대판이지. 결국 한 사람만 이해하는 완벽한 언어가 남음.
척 무어가 항상 모든 걸 다시 구현하던 게 떠오름. 장단점이 있고 저주라고 부르는 건 꽤 강한 의견임.
그냥 밈 아님? 90년대에 Lisp 인기가 꺾이던 시절 리스퍼들이 만든 설명 틀 같은 거고, 이름 붙여놓으면 'Lisp이 너무 좋아서 실패했다'로 보임. 이름 논쟁은 실제 문제에서 벗어나게 함.
이건 파편화임. slop 이후로 기여를 안 받는 저장소가 늘고 사람들이 각자 포크를 유지함. 나도 그렇게 함. 코드가 싸졌으니 세상 끝은 아니지만 사용자는 포크를 짜맞춰야 해서 좀 짜증남.
핵심은 코드를 인간 사이 의사소통 매체로 볼지, 문제를 푸는 추상 기계로 볼지임. 문제 해결이 목적이면 Lisp 저주는 논리적 귀결이지만 과장됐음. Closer MOP, UIOP, ASDF, Bordeaux Threads 같은 좋은 라이브러리도 많음.
적어도 암호 라이브러리는 직접 만들면 안 됨. 숫자 라이브러리도 마찬가지고. 수십 년 다듬어진 코너 케이스 처리를 한 생애에 못 따라감. 결국 '내 목적에 더 견고한 걸 만들 수 있나'인데, 된다고 하는 사람은 필요한 수고를 과소평가함.
장점도 있음. 소프트웨어 단일문화를 막아서 전 지구적 웜을 막아줌. 모든 사이트가 프로토콜을 직접 구현하면 버그는 있어도 이웃과 똑같은 버그는 아님.
모든 Lisp 개발자가 자기 시간 라이브러리랑 HTML DOM 라이브러리를 만든다고? 아님. 이건 신화임.
2010년쯤에 그래프 라이브러리들이 복잡하고 부적합해서 커먼리습으로 자기 작은 라이브러리를 짧게 만들어 끝냈다는 글이 기억남. Lisp 방언이 계속 늘어난 것도 유명하고.
나도 2월에 같은 우려를 씀. 성숙한 라이브러리를 한 번 검색하는 것보다 맞춤 소프트웨어를 만드는 게 쉬워지면 어떻게 되나 싶었음.
외부 의존성이 줄어드는 건 좋음. Claude가 Lucide 아이콘 SVG를 출처 표기 붙여서 코드베이스에 복사해 넣더라. 몇 개만 써서 그렇다는데 괜찮았음.
취약점이 다양해지는 건 오히려 긍정적임. PHP 공유 버그 하나로 웹사이트 70%를 털 수 있는 구조가 아니게 되니까, 블랙햇이 사이트를 하나씩 노려야 함.
몇 년 전 ChatGPT 시절에 AI가 아주 잘 설계된 API를 추천하면서 코드까지 줬는데 그게 존재하지 않았음. 환각이었지. 근데 지금은 '그 라이브러리 만들어줘'라고 하면 됨.
LLM 이전에도 거의 모든 작업에서 성숙한 라이브러리보다 맞춤 소프트웨어가 쉬웠음. 새로 생긴 문제가 아님.
결국 몇 년 뒤에 유지 못할 쓰레기더미를 고치려고 사람을 고용하게 됨. LLM은 이걸 가속해서 몇 년이 몇 달이 될 수도 있고.