사람들에게 감정을 불러일으키는 소프트웨어를 만들라
(rapha.land)- 개인용 코드 에디터 Boo를 개발한 작성자가, 프로젝트를 잠시 중단하고 새 프로그래밍 언어를 만드는 이유를 설명
- Boo는 인간 중심 키보드 내비게이션과 LSP 대체 시스템을 갖춘 Rust 기반 에디터로, 상용화보다는 개인 사용 목적
- 반복적 개발 과정이 창의성을 떨어뜨린다고 보고, 영감을 주는 소프트웨어를 만드는 즐거움을 중시
- 레고 블록 조립과 젤다의 전설: 브레스 오브 더 와일드를 예로 들어, 기억에 남는 창작물의 중요성을 강조
- 성공 공식을 따르기보다 자신의 흥미와 배움 중심의 개발 철학을 유지하며, Boo를 향후 자신이 만든 언어로 다시 작성할 계획
Boo 프로젝트와 개발 동기
- Boo는 작성자가 자신을 위한 코드 에디터로 만든 프로젝트로, 대중적 성공보다는 개인적 효용에 초점
- Boo는 인간-키보드 내비게이션 기능을 갖추고, LSP(Language Server Protocol) 대신 더 빠르고 OS 부담이 적은 시스템을 사용
- 현재 일상 업무에 사용할 수 있을 정도로 동작하지만, 공개 소스로 배포할 계획은 없음
- Boo와 Rio Terminal은 모두 Rust로 작성되었으며, 유사한 구조와 배포 과정을 가짐
- 이러한 유사성이 반복적 작업으로 느껴져 개발의 즐거움을 감소시킴
창작과 영감의 관계
-
레고 블록 놀이를 예로 들어, 매번 다른 형태를 만들 수 있는 자유로움이 창작의 즐거움임을 설명
- 같은 부품을 반복적으로 사용하는 대신, 외부 요소를 더해 새로운 결과를 만드는 과정이 흥미의 핵심
- 프로그래밍이 반복적일수록 “와우” 효과를 주는 창작물이 나올 가능성이 줄어듦
- 영감을 받아야 영감을 주는 소프트웨어를 만들 수 있다는 점을 강조
기억에 남는 소프트웨어의 예시
-
젤다의 전설: 브레스 오브 더 와일드를 예로 들어, 게임을 하지 않던 사람들까지 콘솔을 구매하게 만든 완성도를 언급
- 플레이 후에도 오래 기억에 남는 경험을 제공하는 작품의 힘을 강조
- 이러한 수준의 정성을 들여 만든 소프트웨어가 사람들에게 감정적 인상을 남긴다고 설명
Boo 중단과 새로운 언어 개발
- Boo는 사업 목적이 아닌 취미 프로젝트로, 수익이나 마감 기한이 없음
- VS Code 같은 대형 프로젝트를 만들 의도도 없으며, 억지로 진행하지 않음
- 영감이 돌아올 때 다시 이어가기 위해 Boo를 일시 중단하고, 현재는 자체 프로그래밍 언어를 개발 중
- 장기적으로 Boo를 이 언어로 다시 작성할 계획
개발 철학과 태도
- 새로운 언어 개발은 많은 작업이지만, 작성자는 이를 즐거운 학습 과정으로 인식
- 바이너리와 컴파일러에 대한 이해를 넓히며, 자신만의 속도로 진행
- 외부의 성공 공식이나 조언을 따르기보다, 자신의 사고방식과 흥미를 중심으로 개발을 지속
- 이 글 자체도 Boo를 사용해 작성되었음
Hacker News 의견들
-
오늘 일어나 커피를 마시고 가족이 잠들어버려서 오후가 자유로웠다는 글을 보고, 도대체 가족과 시간대가 어떻게 다른지 궁금해졌음. 오후에 자는 가족이거나, 저녁에 일어나 하루를 시작하는 사람일지도 상상해봄
- 혹시 그의 다른 취미가 마취인가 하는 농담을 해봄. 낮잠 자는 아이가 있을 수도 있겠지만, 그래도 자유시간이 고작 두 시간 정도일 것 같음
- 가족과 시간을 보내지 않는 걸 즐기는 듯한 태도가 조금 이상하게 느껴짐. 그걸 축하할 일은 아닌 것 같음
- “Breath of the Wild” 같은 예시를 든 걸 보면, 마치 다른 차원의 블로그 글을 읽는 기분이 듦
- 아마 스페인일지도 모름. 그들의 전설적인 시에스타 때문일지도
-
“이 에디터는 나를 즐겁게 하기 위해 존재한다”는 말이 신선하게 느껴짐. 요즘은 모든 사이드 프로젝트가 오픈소스나 SaaS로 발전해야 한다는 압박이 있는데, 그게 오히려 창의성을 죽이는 경우가 많음. Boo나 Rio 같은 실험적 프로젝트는 이런 자유에서 나오는 것 같음
- 오픈소스는 좋지만, 패치 요청은 받지 않고 그냥 코드만 공개하는 것도 괜찮다고 생각함
- 요즘은 오픈소스나 SaaS보다 더 나아가, 모든 게 엔터프라이즈급 규모로 가야 한다는 분위기가 더 심각하다고 느낌. 작은 언어, 실험, 셀프호스팅, DIY 정신이 오히려 반문화가 되어버림
- “나를 즐겁게 하기 위해 존재한다”는 말에 공감함. (Emacs)
-
“나 자신을 위해 만들었다”는 말은 많은 예술가들의 방식임. Tolkien도 그랬고, 대부분은 자신을 위해 만들다가 나중에 세상에 보여줌. 하지만 대개는 아무도 관심을 안 가지거나, 사후에야 주목받음. 그래도 상관없음. 중요한 건 상상력을 외부로 표현하는 인간의 본능임
- 나도 내 캔버스 라이브러리를 그런 마음으로 만들었음. 시를 웹사이트에 새롭게 표현하고 싶어서 시작했는데, 어느새 10년 넘게 내 여가를 차지하게 됨. 결과물은 이 시 페이지에 있음
- 예전에 분노에 차서 쓴 이메일이 친구의 제안으로 지역 신문에 기고문(op-ed) 으로 실렸던 적이 있음. 내 글을 누군가 신경 써줬다는 게 기뻤음
- 진짜로 자신을 위해 만든다면, 남의 시선을 신경 쓰지 않아야 함. 나도 예전엔 “다른 사람은 뭐라고 생각할까” 고민했지만, 진짜로 나를 위해 만들기 시작하니 느낌이 완전히 달라졌음
- 예전엔 예술가가 자신의 비전을 추구하려면 후원자(patron) 가 필요했음. 지금은 후원이 민주화됐지만, 대신 클릭 수가 생계를 좌우함. 부자 후원자가 사라지고, 대신 암호화폐나 AI에 돈이 몰리는 게 아쉬움
- “사후에야 주목받는 예술가”라니, 한쪽 귀가 없는 네덜란드 화가가 떠오름
-
프로그래밍이 반복적이면 ‘와우’ 요소가 줄어듦. 하지만 yt-dlp처럼 다양한 사이트를 지원하는 프로젝트는 예외임. 수많은 데이터 파서를 만드는 건 지루하지만, 결과적으로 “어디서나 작동하는” 느낌을 줌
-
나는 사람들에게 감정을 느끼게 하는 소프트웨어를 만듦 — 주로 분노를. 결국 소프트웨어는 무관심을 받거나, 사람들이 불평할 만큼 사용되는 두 종류뿐임
- 예를 들어 Microsoft Teams나 Office 365는 분명 감정을 불러일으키지만, 기쁨은 아님
- DRM 소프트웨어도 마찬가지임. 특히 Sony BMG 루트킷 사건 같은 경우는 전설적임
- 나도 매일 부딪히는 문제를 해결하려다 만든 도구들이 가장 좋은 품질을 냈음. 너무 일찍 일반화하려 하면 오히려 느려지고 품질이 떨어짐
-
Emacs와 Emacspeak는 나에게 엄청난 감정을 줌. 전체가 하나의 매뉴얼 같고, C-h m만 눌러도 모든 명령이 바로 나옴. 숨겨진 게 없고, HTML 문서 뒤질 필요도 없음. 안 되면 Codex로 고쳐서라도 내가 원하는 걸 해냄
-
이상적인 경우, 소프트웨어 개발은 장인정신(craft) 으로 다뤄져야 함. 목공처럼 유용하면서도 예술이 될 수 있음. 하지만 많은 프로젝트는 개발자를 공장 노동자처럼 취급함. 품질보다 양을 중시하는 문화가 문제임.
동시에 소프트웨어를 예술로만 보는 것도 실용적이지 않음. 코드의 목적은 감상이 아니라 동작이니까. 그래도 “장인정신이 깃든 소프트웨어”라는 말이 어색하게 들리는 게 아쉬움- 목공도 결국 앉기 위한 의자를 만드는 것이지, 보기 위한 건 아님. 그런데 왜 소프트웨어는 장인정신으로 보지 않는지 모르겠음
-
Meta, Google 같은 FAANG도 이미 사람들에게 감정을 느끼게 하는 소프트웨어를 만들었음 — 분노, 우울, 때로는 기쁨까지. 하지만 선의로 시작한 기술이 어떻게 왜곡될 수 있는지 보여줌. “지옥으로 가는 길은 선의로 포장되어 있다”는 말처럼, 선을 추구하다 악을 낳는 경우가 많음.
Knuth의 말을 인용하자면, “수천 명의 컴퓨터 과학자가 자유롭게 하고 싶은 걸 하게 하라”는 게 진보의 원동력임. Bell Labs가 그랬듯이, 탐구의 자유가 중요함.
요즘은 최적화에 집착하면서도 수학적으로는 서툴고, 결국 탐험을 멈춘 사회가 되어버림. 그래서 발전이 느려졌다고 생각함- “고양이를 몰고 싶다면, 스스로 고양이가 되어야 함”이라는 내 말이 있음. 천재들을 이끌려면 그들처럼 되어야 함. 혼자서 여러 역할을 감당해야 할 때도 있음
-
Casey Muratori와 Jonathan Blow에게서 배운 습관인데, 나도 나만의 작은 세계를 만드는 걸 좋아함. 내가 유일한 사용자이자 대상인 프로젝트들임. 마감도 없고, 요청도 없고, 런타임도 없는 순수한 즐거움의 공간임
- “자신만의 세계를 만들었다”는 말이 혹시 가상의 지리적 세계를 뜻하는지 물어봄. Tolkien이나 Stevenson도 그렇게 시작했음
- 하지만 Blow나 Casey는 오랫동안 결과물을 내지 못함
-
요즘 대부분의 소프트웨어가 나에게 강한 감정을 불러일으킴
- 특히 node_modules를 보면 화가 남. Electron 기반 앱을 보면 “우리가 어디서 잘못됐을까” 하는 생각이 듦. 데스크톱에 모바일 UI를 얹는 것도 싫음