Skip to content

Instantly share code, notes, and snippets.

@channprj
Last active September 19, 2023 10:43
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save channprj/e069049ac574bd88356cd61add8618ad to your computer and use it in GitHub Desktop.
Save channprj/e069049ac574bd88356cd61add8618ad to your computer and use it in GitHub Desktop.
퇴근길에 @lqez 님 트윗을 보고 갑자기 영감을 받아 작성해봤습니다. 이미 유행 한참 지난 밯망희 깎던 노인쓰,,,

바닐라 스크립트로 오픈소스 깎던 노인

벌써 3~4여 년 전이다. 내가 개발자로 취직한 지 얼마 안 되어 테헤란로 쪽에서 일할 때다. 퇴근하며 트위터 타임라인을 훑어보는 와중에, 재미있는 트윗을 발견하여 정독하던 중이었다. 스타벅스 앞을 지날 즈음, 그 곳에는 바닐라 자바스크립트로 오픈소스를 깎던 노인이 있었다. 마침 유용할 것 같은 프로젝트라 오픈소스 패키지로 받아 쓰려고 부탁을 했다. 버전을

"좀 빨리 올려 줄 수 없습니까?"

했더니,

"마이너 버전 릴리즈 하나 가지고 에누리하겠소? 비싸거든 다른 오픈소스 받아서 쓰시우."

대단히 무뚝뚝한 노인이었다. 낯선 도메인이라 PR 을 보내지는 못하고 그저 잘 깎아나 달라고 이슈에 👍 이모지를 찍었다. 그는 잠자코 까만 화면에서 열심히 깎고 있었다. 처음에는 빨리 깎는 것 같더니, 저물도록 이리 돌려 보고 저리 돌려 보고 굼뜨기 시작하더니, 마냥 늑장이다. 내가 보기에는 그만하면 다 됐는데, 자꾸만 더 깎고 있었다. 인제 다 됐으니 그냥 릴리즈 해달라고 해도 통 못 들은 척 대꾸가 없다. 프로젝트 데드라인이 빠듯해 왔다. 갑갑하고 지루하고 초조할 지경이었다.

"더 깎지 않아도 좋으니 그만 릴리즈 해주십시오."

라고 했더니, 화를 버럭 내며,

"끓을 만큼 끓어야 밥이 되지, 생쌀이 재촉한다고 밥이 되나."

한다. 나도 기가 막혀서,

"사용할 사람이 좋다는데 무얼 더 깎는다는 말이오? 노인장, 외고집이시구먼. 프로젝트 데드라인이 다가온다니까요."

노인은 퉁명스럽게,

"다른 오픈소스 받아서 쓰시우. 난 릴리즈 안 하겠소."

하고 내뱉는다. 지금까지 기다리고 있다가 다른 걸 쓸 수도 없고, 프로젝트 데드라인은 어차피 틀린 것 같고 해서, 될 대로 되라고 체념할 수밖에 없었다.

"그럼, 마음대로 깎아 보시오."

"글쎄, 재촉을 하면 점점 거칠고 늦어진다니까. 코드란 제대로 짜야지, 대충 짜다가 버그나면 되나."

좀 누그러진 말씨다. 이번에는 수정하던 것을 git stash 해놓고 태연스럽게 고양이를 쓰다듬고 있지 않은가. 나도 그만 지쳐 버려 구경꾼이 되고 말았다. 얼마 후에야 테스트 코드를 이리저리 돌려 보더니 다 됐다고 릴리즈 해준다. 사실 다 되기는 아까부터 다 돼 있던 코드다.

막차를 놓쳐서 타다를 타고 가야하는 나는 불쾌하기 짝이 없었다. 그 따위로 오픈소스를 해 가지고 GitHub Trending 에 올라 갈 턱이 없다. 사용자 본위가 아니고 제 본위다. 그래 가지고 테스트는 또 엄청 돌린다. 모-던 에디터도 4차 산업혁명도 모르고 vim 만 쓰는 불친절하고 무뚝뚝한 노인이다. 생각할수록 화증이 났다. 그러다가 뒤를 돌아다보니 노인은 태연히 허리를 펴고 위워크타워의 LED 로고를 바라보고 섰다. 그 때, 바라보고 섰는 옆 모습이 어딘지 모르게 노인다워 보였다. 부드러운 눈매와 수염에 내 마음은 약간 누그러졌다. 노인에 대한 멸시와 증오도 감쇄(減殺)된 셈이다.

다음날 출근해서 회사 master 브랜치에 PR 을 보냈더니 팀장님은 완벽한 코드라고 야단이다. 인터넷에 돌아다니는 소스들보다 코드 퀄리티가 참 좋다는 것이다. 그러나 나는 전의 것이나 별로 다른 것 같지가 않았다. 그런데 사수의 설명을 들어 보니, 코드가 너무 복잡하면 수정사항을 작성하다 버그가 잘 발생하고 같은 라인수라도 힘이 들며, 코드가 너무 간결하거나 추상적이면 다른 사람이 이해하기 쉽지 않고 헤먹기 쉽단다. 요렇게 꼭 알맞은 코드는 좀체로 만나기가 어렵다는 것이다. 나는 비로소 마음이 확 풀렸다. 그리고 그 노인에 대한 내 태도를 뉘우쳤다. 참으로 미안했다.

CVS 시절부터 내려오는 오픈소스는 혹 컴파일이 안되면 Flag 값을 바꿔서 컴파일하고 헤더파일 등이 누락되어 있으면 저장소에서 찾아 넣고 컴파일하면 좀체로 에러를 내지 않는다. 그러나, 요새 모-던 스크립트 언어는 한번 빌드가 Fail 나기 시작하면 걷잡을 수가 없다. 예전에는 오픈소스로 개발할 때, 깔끔한 최신 배포판으로 잘 받아서 configure, make, make install 해도 설치가 되었다. 이것을 컴파일 빌드라고 한다. 이렇게 하기를 두세 번 한 뒤에 코드를 작성하고 테스트를 통과해야 비로소 빌드하여 릴리즈한다. 이것을 바이너리 릴리즈 라고 한다. 물론 날짜가 걸린다. 그러나 요새는 정말 간단한 기능도 모-던 에디터에서 패키지 인스톨하여 그냥 통채로 받아서 붙여 넣는다. 금방 붙는다. 그러나 leftpadnode-gyp 처럼 왠지 찝찝하다. 그렇지만 요새 남이 잘 알아주지도 않는 것을 며칠씩 걸려 가며 까만 화면에서 컴파일하고 디버딩 할 사람이 있을 것 같지 않다.

코드 저장소만 해도 그렇다. 옛날에는 스타 수는 얼마, 이슈 와 커밋 수는 얼마, 값으로 구별했고, Hacker News 에 올라간 것은 세 배 이상 주목받는다. '구해구트(9H9T)'란 아홉 번 해커뉴스에 올라가고 아홉번 트렌딩 올라간 것이다. 다운로드 받은 코드만 봐서는 다섯 번을 커밋했는지 열 번을 커밋했는지 알 수가 없다. 단지 저장소 스타 수만 믿고 받는 것이다. 신용이다. 지금은 그럴 수 없다. 코드가 어떻든 기프티콘으로 스타 수 펌핑을 하거나 바이럴을 탄다. 옛날 사람들은 트렌딩은 트렌딩이요, 스타는 스타지만, 코드를 짜는 그 순간만은 오직 아름다운 코드를 만든다는 그것에만 열중했다. 그리고 스스로 보람을 느꼈다. 그렇게 순수하게 심혈을 기울여 멋진 코드를 짰다.

이 오픈소스도 그런 심정에서 만들었을 것이다. 나는 그 노인에 대해서 죄를 지은 것 같은 괴로움을 느꼈다. "그 따위로 해서 무슨 GitHub Trending 을 해 먹는담." 하던 말은 "그런 노인이 나 같은 젊은이에게 멸시와 증오를 받는 세상에서, 어떻게 아름다운 오픈소스가 탄생할 수 있담." 하는 말로 바뀌어졌다.

나는 그 노인을 찾아가서 IT회사 기념품에 GitHub Sponsor 라도 등록하며 진심으로 사과해야겠다고 생각했다. 그래서 그 다음 일요일에 모각코 가는 길로 그 노인을 찾았다. 그러나 그 노인이 앉았던 스타벅스 카페에 노인은 있지 아니했다. 나는 그 노인이 앉았던 자리에 멍하니 서 있었다. 허전하고 서운했다. 내 마음은 사과드릴 길이 없어 안타까웠다. 맞은편 위워크 타워의 LED 로고를 바라보았다. 푸른 창공에 날아갈 듯한 위워크 로고 끝으로 흰구름이 피어나고 있었다. 아, 그 때 그 노인이 저 구름을 보고 있었구나. 열심히 코드를 깎다가 유연히 위워크 로고 끝에 구름을 바라보던 노인의 거룩한 모습이 떠올랐다. 나는 무심히 "Code is Poetry!" Wordpress 푸터의 문구가 새어 나왔다.

오늘 모각코에 참가했더니 개발자 트친이 VS Code 로 리액트를 하고 있었다. 전에 시꺼먼 vim 화면에서 jQuery, 마퀴 태그 같은 걸 키보드 쿵쿵 두들기며 짜던 생각이 난다. 순수 바닐라 스크립트를 짠지도 참 오래다. 요새는 의존성 가벼운 스크립트 코드를 보기가 힘들다. grunt 이니 bower 이니 애수를 자아내던 그 개발 도구들도 점점 잊혀진 지 이미 오래다. 문득 3년 전 오픈소스 깎던 노인의 모습이 떠오른다.

Reference

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment