공개: 쓸 수 있는 것이 된다는, 수수한 일

이름을 가지는 것은, 이용할 수 있는 것과 같지 않다. 사적인 실험을 세계에 여는 것은, 언어 설계를 전혀 포함하지 않는 다른 종류의 일이다 —— 라이선스, 지속적 통합, 문서, 영어로의 전환, 조직, 잠정적 구문 하이라이트. 공개는, 없이는 못 낸다/첫인상/미뤄도 됨으로 계층화되었다 —— 언어가 설파하는 것과 같은 '필요한 것을 낸다'는 규율을, 그 공개 자체에 겨눈 것이다.

merepublic-releaseopen-sourcetoolinglanguage-design

언어는 정체성을 가지고 있었다 —— 이름, 메타포, 네 글자의 매니페스토. 아직 공적인 존재는 가지고 있지 않았다. 이름을 가지는 것은, 이용할 수 있는 것과 같지 않고, 그 간극을 메우는 것은, 언어 설계를 거의 포함하지 않는 일이다: 라이선스, 지속적 통합 설정, 남이 따라갈 수 있는 문서, 작업 언어의 영어로의 전환, 살 조직, 파일의 폴더가 아니라 언어로서 나타나는 길. 이 Part의 마무리 회는, 그 수수한 일에 대한 것이고, 그리고 그것을 제대로 하는 것이야말로, 그것을 시험할지도 모르는 낯선 이에 대한 존중이 실제 어떻게 보이는가에 대한 것이다.

공개를 계층화하기

공개 전의 일은, 언어 자신이 세워지는 것과 같은 방식으로 정리되었다: 최소의 정직한 판이 먼저, 다른 모든 것은 미뤄. 태스크는 세 계층으로 나뉘었다 —— 없이는 못 낸다, 첫인상에 크게 효한다, 미뤄도 괜찮다 —— 그것은 그저, ’필요한 것을 낸다’는 규율을, 코드가 아니라 공개에 겨눈 것이다.

없어선 안 될 것은, 그 부재가 공개를 단지 거칠게 하는 것이 아니라 무책임하게 하는 것이었다. 라이선스, 코드를 읽는 누구나, 그것으로 무엇을 해도 되는지를 알 수 있도록. 지속적 통합, 빌드가 통과하고 테스트가 통과한다는 주장을, 방문자가 신뢰로 받는 것이 아니라 검증할 수 있도록. 모든 페이지 에서 최신으로 된 문서 —— 튜토리얼, 레퍼런스, 변경 이력 —— 현 상태에 대해 거짓말하는 docs는 없느니 못하기 때문에. 그리고 영어로의 전환, 오픈 소스 프로젝트는 대부분 영어를 읽는 세계와 마주하기에, docs의 작업 언어는 영어로 옮기고, 일본어는 master로 남기는 것이 아니라 번역으로 유지되었다.

첫인상의 계층은, 조직과, 리포지터리를 public으로 만드는 행위였다 —— 진짜지만, 서둘러도 살아남을 수 있는. 그리고 미뤄진 계층이 더 흥미롭다. 그것이 무엇을 세우기를 거부했는가 때문에.

일부러 세우지 않은 것

공개에서 두드러진 누락이, 패키지 매니저였다. 그것은 언어가 “가져야 할” 부류의 것이고, 뚜렷이 빠졌다. 이유는 ’필요한 것을 낸다’는 규율을 태연히 말한 것이다: 패키지 매니저가 봉사할 adoption이 아직 없고, 그래서 그것을 세우는 것은, 존재하지 않는 사용자를 위한 인프라를 세우는 것이었다. 정직한 임시 방편 —— 표준 라이브러리에 기대고, 필요하면 git URL로 import한다 —— 은 거의 아무 비용도 없고, 진짜 수요가 나타나는 순간에 교체될 수 있다. 패키지 매니저를 먼저 세우는 것은 노력으로의 투기다; 그것을 미루는 것은, 수요의 형태를 아직 모른다고 인정하는 것이다.

같은 절제가 구문 하이라이트에도 적용되었다. 새 언어를 제대로 인식시키는 것 —— 에디터와 코드 호스트 에서의 그 자신의 색 배합 —— 은, 그저 선언할 수 있는 것이 아니다; 언어를 인식하는 플랫폼은, 언어가 쓰이는 것으로 넘는 임계를 가지고, 쓰여야 할 문법을 가진다. 그래서 그동안, 파일은 기존 언어의 하이라이터를 빌리도록 표시되었다 —— 잠정적임에 정직한 잠정적 조치, 진짜 인식이 진짜 사용에서 따르도록 맡기면서, 코드를 읽는 데 충분할 만큼의.

신뢰야말로 실제의 성과물이다

체크리스트에서 한 걸음 물러서면, 그 안의 패턴은 하나다: 없어선 안 될 항목의 거의 전부가 신뢰의 신호다. 라이선스는 명시된 허가 —— 언어 자신의, 주변적으로 맡기는 것이 아니라 솔직히 말하는 선호의, 법적 대응물. 통과하는 CI 배지는, “내 머신에서는 돈다”와 “내 것이 아닌 머신에서 도는 것을 당신이 볼 수 있다”의 차이다. 최신의 문서는, 읽는 것이 얻는 것이라는 약속이다. 이 중 어느 것도 언어의 feature가 아니다; 그 전부가, 낯선 이가 그 프로젝트를, 한 시간 들일 만큼 진지하게 받을 수 있는 이유다. 수수한 잡무는, 바로, 환대다 —— 자신을 위해 세운 것을, 남에게 내밀어지는 것으로 만드는 일.

그리고 공개와 언어 사이에, 이름 붙일 가치가 있는 조용한 일관성이 있다. 라이선스는 지금 모든 것을 못 박는 것이 아니라 미래의 선택지를 예약한다; 패키지 매니저는 보이는 수요를 기다린다; 하이라이트는 그 자신을 얻을 때까지 빌린다. 그 저마다가, 설계가 몇 번이고 한 같은 수다 —— 알았을 때 커밋하고, 모르는 것은 미루고, 어느 것이 어느 것인지에 정직하라. 프로젝트가 공이 되는 방식은, 그것이 세워진 방식과 운을 맞춘다고 판명된다.

사적인 실험에서 공적인 것으로

라이선스가 자리 잡고, 테스트가 public에서 초록으로 돌고, docs가 최신이고 영어이고, 리포지터리가 그 자신의 조직 아래에서 열려, 언어는 이 Part가 다룬 선을 넘었다. 그것은 “내가 매달리고 있는 것”이기를 그치고, 발견되고, 읽히고, 시험할 만큼 신뢰되고, 그리고 —— 진짜 시험 —— 앞선 어느 Part에도 함께 있지 않았던 누군가에 의해, 그 위에 세워질 수 있는 무언가가 되었다.

인식은, 물론, 공개로 주어지지 않는다; 그것은, 그 뒤에 일어나는 것에서 쌓이거나, 쌓이는 데 실패한다. 하지만 문은 열렸고, 그것이 이 Part의 일의 전부였다. 도는, 셀프 호스트하는, 이름 붙여진, 문서화된, 라이선스된 언어가, 이제 공에 존재한다.

그것은, 공에서 살아 있는 언어가 늘 다음으로 마주하는 물음을 세운다: 그것은 무엇을 키우는가? 쓸 수 있는 것은 시작이고, 끝이 아니며, 이 언어가 문을 연 뒤에 손을 뻗은 첫 실질적인 것은, 언어가 그 원칙을 배반하지 않고 더할 수 있는 가장 어려운 feature 중 하나였다 —— 한 번에 여럿을, 안전하게, 보장을 지킨 채 돌리는 것. 다음, Part VII가 열린다: 병행 처리.

← Back to Mere: 언어를 만들다