요약
NetBSD가 새 사용자를 위해 48KB짜리 편집기 atto를 기본 시스템에 넣었습니다.
NetBSD 재단이 마스토돈에서 알린 소식입니다. 개발 버전인 -current의 기본 시스템(운영체제와 함께 설치되는 구성 요소)에 vi와 xedit 말고 다른 선택지가 생겼습니다.
왜 중요한가
- vi의 모드 전환에 익숙하지 않은 새 사용자도 추가 설치 없이 파일을 고칠 수 있습니다.
- 크기가 작아 복구 시스템(고장 난 시스템을 고칠 때 쓰는 최소 환경)에도 넣을 수 있습니다.
- 다만 vi를 대체하지는 않습니다. 재단은 답글에서 표준 편집기는 vi라고 못 박았습니다.
핵심 내용
- atto는 입력 모드와 명령 모드를 나누지 않는 화면 편집기로, 재단은 nano, pico, xedit, Emacs에 빗댔습니다.
- 단축키는 Emacs와 비슷합니다. Ctrl-x Ctrl-s로 저장하고 Ctrl-x Ctrl-c로 끝냅니다.
- 작은 크기에도 UTF-8 편집과 여러 버퍼, 창 분할을 지원합니다.
- 주로 휴 바니가 만들었고, 앤서니 하우의 공개 도메인 코드에서 출발했습니다.
- 매뉴얼에는 "atto is not the standard editor"라는 문구가 있고, 재단은 편집기 전쟁을 시작하자고 농담했습니다.
HN 반응
- 일부 이용자는 atto의 목표가 작은 Emacs 구현이라며 초보자용이라는 설명을 반박했고, 운영자는 제목에서 그 표현을 뺐습니다.
- nano도 초보자에게 어렵다는 불만과 도움말이 충분하다는 반론이 맞섰고, OpenBSD의 mg보다 atto로 옮기겠다는 사용자도 있었습니다.
중요한 맥락이라고 생각해서 최상위 댓글로 올립니다. README 어디에도 "초보자 친화적(beginner-friendly)"이 목표라는 말은 없습니다. 제가 보기에 그건 해커뉴스, 아니면 이 글을 올린 사람이 붙인 설명입니다. README에는 "beginner"도 "friendly"도 나오지 않고, 목표는 "2000줄이 안 되는 C 코드로 만든, 가장 작으면서도 제 기능을 하는 Emacs"입니다.
누군가 Atto를 nano/pico와 비슷한 물건이라고 잘못 소개했고, 그래서 애초에 그런 용도로 만든 게 아닌 걸 두고 댓글들이 깎아내리고 있는 것 같습니다.
글 올린 사람입니다. 저는 공지 내용을 그대로 풀어 쓴 것뿐입니다.
BSD와 vi라는 맥락에서는 초보자 친화적이라고 불러도 무리가 없다고 생각합니다. 다만 제목에는 넣지 않는 편이 나았을 수도 있겠네요.
여기서 말하는 새 사용자가 꼭 초보자일 필요는 없다고 봅니다. CLI 기반 컴퓨터를 쓰는 데는 능숙하지만 BSD는 처음인 사용자가 대상이겠죠.
말씀하신 글에 이런 문장도 있기 때문입니다.
"삽입 모드와 편집 모드가 나뉜 텍스트 편집기에 익숙하지 않은 사용자를 위한 것이며, UTF-8 텍스트 편집을 지원합니다."
다만 "메뉴가 보이지 않는 편집기에는 익숙한데 vi는 모르는" 집단이 그렇게 클지는 잘 모르겠습니다.
초보자가 nano에서 무슨 일이 벌어지고 있는지 제대로 안다는 건 상상이 안 됩니다.
새 시스템에서 nano/pico로 떨어질 때마다 매번 많이 헷갈립니다. 도움말 메뉴를 쓰려면 ^-X가 Ctrl-X이고 M-X가 Alt-X라는 걸 알아야 합니다. 왜 "저장(Save)"이 아니라 "Write Out"일까요? 그리고 "Write Out" 하면 DOS 형식으로 저장할지 Mac 형식으로 저장할지 묻고, 덧붙이기(Append)나 앞에 붙이기(Prepend) 옵션도 나옵니다(그게 뭘 하는 건지도 잘 모르겠습니다).
메모장이나 워드에 익숙한 사람에게는 완전히 괴상한 물건입니다.
파일 없이 nano를 실행하면 화면 아래쪽에 안내 문구가 나옵니다. [ Welcome to nano. For basic help, type Ctrl+G. ]
'Ctrl + G'를 누르면 도움말 페이지로 이동하는데, 거기에 이런 내용이 있습니다. "단축키는 다음과 같이 표기합니다. Control 키 조합은 '^'로 표기하며, Ctrl 키를 누르거나 Esc 키를 두 번 눌러 입력할 수 있습니다. Meta 키 조합은 'M-'로 표기하며, 키보드 설정에 따라 Alt, Cmd, Esc 키 중 하나로 입력할 수 있습니다."
사용자에게 문서를 읽거나 쓰는 프로그램의 동작 방식을 배우라고 강요할 수는 없지만, 이 정도면 합리적인 시도입니다.
다들 역사를 모르기 때문입니다.
nano는 (늘 그렇듯 비대한) Pico의 GNU 복제품이었습니다. 존재 이유라고는 한때 유행했던 GPL 자유(freedumb) 타령밖에 없습니다. UX는 Pico를 그대로 베꼈고요.
Pico는 독립된 편집기로 개발된 게 아니라 Pine 메일 리더에 내장된 편집기였습니다. 키 바인딩이 그렇게 이상한 것도 메일 클라이언트의 UX를 따랐기 때문입니다.
Pico는 PIne COmposer의 줄임말이었습니다.
vi와 emacs가 형편없었는데 누구도 더 나은 걸 만들 필요를 느끼지 않은 탓에, Pico는 간단한 범용 편집기가 됐습니다.
사용자들은 이미 깔려 있다는 이유로 메일 클라이언트의 편집기를 다른 용도로 쓰기 시작했습니다. 90년대 대학의 Sun 장비에는 거의 다 이메일을 읽으려고 Pine이 깔려 있었으니까요.
만든 사람은 워싱턴 대학교에서 IMAP을 발명한 바로 그 사람입니다.
nano의 Rust 복제품이 나올 날이 기다려지네요. 그러면 한 바퀴 다 돈 겁니다.
편집기 쓰는 법을 배우려고, 아니 뭐든 배우려고 역사 강의부터 파고드는 사람은 없습니다.
그런 사람은 괴짜인데, 네, 제가 그렇습니다. 하지만 보통 사람이 그렇게 배우길 기대하지는 않습니다.
요즘은 GPL이 줄어들 게 아니라 더 필요합니다. AGPL이 필요하고, 아마 곧 안티-LLM-GPL도 필요하겠죠.
좀 더 설명하겠습니다.
90년대에 대학을 다녔다면, Pico가 인기를 끈 이유는 터보 너드가 아닌 평범한 사람들도 유닉스 호스트에서 간단한 텍스트 파일을 가끔 편집할 수 있어야 했기 때문입니다.
이미 Pine으로 메일을 읽고 있었는데, 메일을 보낼 때 익숙해진 키 바인딩을 그대로 쓰는 편집기를 안 쓸 이유가 없었죠.
Joe 편집기는 1991년으로 거슬러 올라가는데, pico, emacs, wordstar 복제품인 jpico, jmacs, jstar가 하드 링크로 함께 들어 있었습니다.
참고로 이 부분을 조금 개선하려는 시도는 있었습니다. nano v8.0 릴리스 노트입니다.
그러니 nano를 /usr/bin/editor로 심볼릭 링크하고 기본 $EDITOR로 지정하면 이제 기본적으로 CUA 비슷한 바인딩을 쓰게 됩니다.
기본으로 켜 두면 좋을 기능은 아직도 많습니다. .nanorc를 들여다보신 적이 있는지 모르겠지만, 구문 강조나 줄 번호 같은 것도 켤 수 있는데 전부 기본값이 꺼져 있을 뿐입니다.
저는 nano를 쓰지 않지만, 자세히 들여다보니 기능이 의외로 많아서 깜짝 놀랐습니다. Vim이나 Emacs 수준은 아니어도 예상보다는 훨씬 낫습니다. 우연히 Reddit /r/unixporn에서 nanorc를 "라이스(rice)"한 사람을 보고 호기심이 생겼습니다.
그래도 터미널에서 CUA 스타일 편집기를 쓰고 싶은 대부분의 사람에게는 nano보다 micro가 더 잘 맞는다고 생각합니다.
바보 같은 질문일 수도 있는데, 새 바인딩을 쓰려면 그 심볼릭 링크를 통해 nano를 실행해야 하나요, 아니면 링크가 존재하기만 해도 되나요? 후자라면 nano가 자기 자신을 가리키는 심볼릭 링크를 찾으려고 모든 디렉터리를 뒤져야 할 텐데요. 특정 파일을 가리키는 심볼릭 링크를 전부 알아내려면 파일 시스템 전체를 확인하는 수밖에 없지 않나요?
링크를 통해 실행해야 하고, nano는 argv[0]만 확인해서 판단하는 걸로 알고 있습니다. Vim도 마찬가지입니다.
vi라는 심볼릭 링크로 실행하면 vi 호환 모드로 들어가고,evim으로 실행하면 갑자기 모드 없는 텍스트 편집기처럼 동작하며,vimdiff로 실행하면 diff 모드로 들어갑니다.알겠습니다. 위 제목에서 초보자 친화성이라는 말은 뺐습니다. 그래도 흥미로운 글입니다!
저는 pico를 깎아내릴 생각이 전혀 없어요. 리눅스 배포판에 패키지로 들어간 소프트웨어를 pico로 짰거든요. 그리고 [방/메일링 리스트/포럼]에서 제일 똑똑한 사람이 되고 싶다는 욕심은 아주 오래전에 버렸고요.
방에서 제일 똑똑한 사람이 되는 게 대체 무슨 의미가 있나요? 아무것도 못 배울 텐데요!
그뿐만이 아니에요. 영화 <이디오크러시>가 눈앞에서 실시간으로 펼쳐지는 것 같고, 주변 사람들이 이성적이고 공감할 줄 아는 인간보다는 원숭이에 가까워 보이는 기분이 계속 들거든요. 지치고, 외롭고, 사람을 무기력하게 만들어요. 그러다 나보다 훨씬 똑똑한 사람들이 있다는 걸 깨닫고 그 사람들은 어떤 기분일지 궁금해지죠.
하우스 M.D.에서 배달 기사가 사실은 천재였는데, 행복해지려고 DXM을 남용해서 일부러 머리를 둔하게 만들던 에피소드가 생각나네요.
"지혜가 많으면 번뇌도 많고, 지식을 더하는 자는 근심을 더하느니라."
사람은 가끔 자기 자존심을 세우려고 비합리적인 짓이나 앞뒤가 안 맞는 행동을 하기도 해요. 아주 뛰어난 사람들도 그럴 때가 있고요.
맞아요. 자기가 방에서 제일 똑똑하다 싶으면, 더 똑똑한 방을 찾아가야 하죠.
아니면 가르치는 법을 배우든가요.
대부분의 사람은 배우고 싶어 하지 않습니다(특히 실제로 실력이 늘 만큼 열심히 배우려고 하지는 않습니다).
맞습니다. 같이 일해 본 주니어 개발자 중에는 자기가 방에서 제일 똑똑하다고 믿는 사람이 많았습니다. 일은 잘하는데 자만심이 너무 커서 적응하지도, 새로운 지식을 받아들이지도, 새로운 패러다임을 고려하지도 못하더군요.
배우려면 어느 정도 겸손함이 필요합니다. 자기가 모든 걸 아는 건 아니라는 사실을 받아들여야 하니까요.
학생이 스스로 배우고 싶어지게 만드는 건 로켓 과학이 아니에요. 그저 보기 드문 기술일 뿐이죠.
로켓 과학이 아니라면 어떻게 하는 건가요?
저는 90년대 후반부터 한 15년 동안 pico나 nano를 일상적인 유닉스 코딩 편집기로 썼습니다. 아무 문제 없었어요. vi는 못 견디겠고 emacs는 굳이 쓸 이유를 모르겠더라고요. 저는 생각하는 것보다 타자가 빨라서, 텍스트 편집이 병목이 된 적이 없었고 그래서 정교한 자동화에 공들일 가치를 느끼지 못했습니다.
pico/nano를 그만 쓴 건 제 편집기를 직접 만든 뒤였는데, 거기에는 pico의 인터페이스 디자인을 노골적으로 훔쳐 썼습니다.
"삽입 모드와 편집 모드가 나뉜 텍스트 편집기에 익숙하지 않은 사용자를 위한"[0]이라는 문장은 "초보자 친화적"이라고 해석할 수도 있겠죠(좀 억지로 눈을 가늘게 뜨고 봐야 하긴 하지만요).
[0] https://man.netbsd.org/atto.1
OpenBSD에도 확장은 안 되는 Emacs 스타일 편집기 mg(1)가 있습니다.
https://man.openbsd.org/mg
언급이 안 보여서 빠짐없이 하려고 적어 둡니다.
저는 mg를 써 봤고 대체로 쓸 만하다고 생각합니다. 거의 모든 환경에서 제 기본 편집기입니다.
다만 코드는 엉망입니다. 일부러 알아보기 어렵게 지은 식별자(예:
cursorOffset대신w_doto), 중복된 함수(예:vtputc()는vtpute()동작의 엄밀한 부분집합입니다), 그 밖에도 이상한 선택이 많습니다(예: 만들어질 당시 이미 Big5와 ShiftJIS가 있었는데도 1바이트 == 1문자 == 1열이라는 가정이 깊이 박혀 있습니다).몇 년 전에 mg에 UTF-8 지원을 추가해 보려다 사실상 포기했습니다.
아마 저는 atto로 갈아타게 될 것 같습니다.
글쎄요, 커서를 "dot"이라고 부르기도 하잖아요.
mg 코드베이스를 만지기 전에는 그런 말을 들어 본 적이 정말 한 번도 없습니다.
GNU Emacs에서 M-: (dot) RET를 실행해 보세요.
제 생각에 이 별칭은 80년대에 "point" 대신 "dot"을 쓰던 다른 Emacs 계열에서 Lisp 코드를 옮겨 오려고 만든 것 같습니다. 어느 쪽인지는 끝내 알아내지 못했습니다. mg는 Lisp를 돌리지 않으니 mg는 아닙니다.