저자: 마이클 루카스, 역 서성용
필자는 마침내 『FreeBSD』의 집필을 마치고 (Absolute BSD, 몇 달 후 No Starch Press에서 출판 예정), 약간의 휴식을 취하고 있다. 나는 메일링 리스트의 질문에 답변하기 시작했고, 사람들에게 FAQ를 참조하라고 하였다. 필자는 지난 1997년에도 같은 질문에 답변했던 것이 기억난다. 그리고 같은 질문을 1998년도에도 받았던 것으로 기억한다. 이러한 질문들은 당연히 지금쯤은 FAQ에 이미 올라와 있어야 한다. 그렇지 않은가?
그런데 실제로는 FAQ에 없다. 이 시점에서, 필자에게는 두 가지 선택의 기회가 있다. 첫째는 doc@FreeBSD.org에게 보낼 신랄한 메시지를 작성해 FAQ 관리자의 지식, 기술, 등에 의구심을 표현함으로써 실망감을 분출하는 것이다. 다른 곳에서는 절대 사용할 수 없는 언어를 사용하면서 넋이 나가버리기 때문에, 정말 충분히 신랄한 이메일 메시지는 작성하는데 그렇게 많은 시간이 필요하지는 않다. 아주 잠시면 된다. (과연 "이가 꾄(pedicular)"과 같은 단어를 실제로는 얼마나 자주 사용하겠는가?) 많은 사람들이 이 문제에 대해 고민을 하는 동안 필자는 이것이 다소 즐거운 취미꺼리가 될 수 있음을 발견했고, 완전히 다른 사항을 선택하기로 했다. 완전히 다른 사항이란 문제를 수정한 후 패치를 제출하는 것이다.
FreeBSD 문서화 도구를 사용하는 법 습득이 실제로는 그렇게 어렵다고 볼 수 없다. 필자는 이전의 컬럼에서 이것을
두 페이지에 나누어 다루었다. FAQ에서 원하던 변경사항을 만들었으며 그것을 시험하기 위한 FAQ를 만들어
send-pr로 작성한 것을 제출했다.
커미터에게, PRs(Problem Reports)에서 패치를 가져오는 것은 성가신 아주 하찮은 일로 보일수 있다. 공헌(contribution)이 확실히 평가되기는 하지만, 그들은 반드시 읽혀져야 하고, 평가되고, 시험되어야 한다. 코드를 받아들임으로써, 커미터는 변경사항이 옳다고 말한다. 만약 패치에 잘못된 점이 있다면, 혹평을 받을 것이다. 만약 충분히 유용하고 정확한 PRs를 제출한다면, 결국은 어떤 커미터가 코드를 처리하는데 지쳐서 그것들을 떠맡을 수 있는지를 물어볼 것이다. 이 과정은 여러 가지 목적이 있다. 결국 FreeBSD 공동체는
일을 하는 사람들로 이루어져 있다. 커미터에게 작업은 유용하고 정확한 패치를 생성하는 것으로 구성된다. 만약 시종일관 정기적으로 훌륭한 패치를 만들지 못한다면, 커밋 접근을 주는 것은 의미가 없다. 지금이 그런가? 또한 send-pr 기법은 당신이 FreeBSD 팀에서 작업을 잘 하는지 알아보는데 유용하게 사용된다. 수 십 개의 PRs를 제출할 때까지, FreeBSD 팀과 조화를 이루어 일을 잘 하거나 또는 어떤 팀이라도 함께 할 수 없음을 이해할 것이다. 직접-커밋 접근은 명백한 다음 과정이거나 명백하게 나쁜 조처, 둘 중 하나일 것이다.
그래서 나는 한동안 기쁘게 PRs를 제출했다. 수 십개의 PRs를 제출한 후, -doc 커미터 중 한 명이 내가 커밋 비트를 원하는지를 묻는 이메일을 보냈다. 필자는 아니라고 했다. 커미터들은 많은 일을 할 수 있는 능력이 있다. 그들은 저장소나 업그레이드 과정을 파괴할 수 있으며, 혹은 수 천 명의 사람들이 문제해결을 위해 긴 밤을 지새도록 만드는 에러를 처리할 수도 있다. 나는 특히 FAQ에 가장 관심이 있는데, 이곳은 온갖 실마리가 가득한 곳으로 새로운 사용자들이 가장 먼저 확인하는 곳이다. 거기에서 에러는 확실히 잘 보인다. 학창시절 내내 "다른 사람과 잘 놀기"에 필자가 실패했음은 말할 것도 없다.
그러나 십여 개의 PRs를 제출하고 난 후, 커미터들의 작은 모임이 결성되어 내가 커밋 비트를 필요로 한다고 말했다. 그들은 내가 커밋 비트를 원한다고 주장했다. 내 생활은 하나라도 없으면 불완전하다. 얼마나 오랫동안 내 PRs로 그들을 채우려고 노력했던가? 어쨌든, 나는 내 자신부터 설득되도록 했다. 심각한 의무이자 정말 지독하게 멋진 일이다. 그럼 이제부터는 FreeBSD 커미터의 비밀스러운 생활을 간단히 살펴보자.
커미터가 되는 것은 정말 간단하다. FreeBSD의 각 부분은 커미터를 승인하는 것을 책임지는 누군가가 있다. 핵심 팀은 소스 코드 커미터를 승인한다. portsmgr 팀은 ports 커미터를 승인한다. Nik Clayton은 doc 커미터를 승인한다. 필자의 경우에는 Bruce Mah가 Nik에게 교섭해서 커밋 비트를 발행하도록 요청했다. Nik은 동의했고 나에게 다양한 정보를 묻는 멋진 폼 레터를 보내서 그가 FreeBSD 시스템에 내 계정을 설정할 수 있게 했다. 그는 또한 Bruce가 필자의 선도자임을 비준했다.
아마도 새로운 커미터가 되는 가장 중요한 부분은 선도자일 것이다. 선도자는 당신이 일하는 FreeBSD 코드 트리의 같은 부분에서 일하는 숙련된 커미터이다. 그는 당신의 질문에 답하고, 패치를 검사하고, 알아야 할 규칙과 정책을 지적하는 등, 일반적으로 당신을 돌본다. 선도자가 당신 작업의 한가지 면에라도 만족할 경우, 그는 당신을 느슨하게 풀어줄 것이다. 몇 달이 후면 당신은 선도자의 필요성을 보다 적게 느낄 것이다. 예를 들어 Bruce는 처음엔 필자의 패치 전부를 검사했다. 그는 FreeBSD 도구 사용법을 가르쳐주는 과제를 주었다. 이를테면 GNATS에 대해 배우기 위해 자신의 PRs를 닫는 것과 같은 것 등이 그 예가 될 수 있다. 그는 내가 다른 사람들의 작업을 파괴하지 않고도 일을 할 수 있다고 결정했기 때문에 그는 나를 풀어주어서 그가 변경사항을 검사할 필요 없이 변경사항을 만들어낼 수 있었다.
만일 필자가 압박 당하고 있다면, 그때는 필자와 Bruce 모두에게 나쁜 영향을 미칠 것이다. 바보처럼 보이고, 선도자를 당황케하고, 내 자신의 문제를 고쳐야 하는 것을 제외하고 실제적인 형벌은 없다. 현재 Bruce는 내가 요청하지 않는 한, 나의 패치를 검사하지 않는다 - 그는 내가 어떤 짓도 하지 않을 것으로 신뢰받을 수 있다고 생각한다. 하지만 그는 여전히 나에 대해 책임을 지고 있다.(불쌍한 사람)
Bruce가 필자에게 처음 하라고 말한 것은
FreeBSD Committers Guide를 보라는 것이었다. 이것은 프로젝트가 어떻게 돌아가고, 필자가 따라야 할 규칙과 실제로 CVS 커밋을 만들 수 방법을 논하고 있다. 만약 커미터가 되는 것을 진지하게 생각해본 적이 있다면, 그들이 어떻게 일을 하는지를 알기 위해 이것부터 읽어 두는 것이 좋다.
필자와 선도자가 안정을 찾자, Nik는 사용자이름과 SSH 키를 요구했다. 사용자이름은 간단하다. 누군가가 사용하지 않는 내가 원하는 아무 이름이면 된다. 나는 현재 mwlucas@FreeBSD.org를 사용하고 있다. 하지만, SSH 키는 약간의 학습이 필요하다. FreeBSD 서버들은 사용자이름/암호 인증을 사용하지 않고, 대신 SSH로 공개키 암호화를 사용하기 때문이다. 필자는 SSH 키를 생성해야 했는데, 이는
identity와
identity.pub 파일로 구성되어 있다. 필자는 잠시동안 SSH를 사용했는데, 그렇게 성가신 일은 아니었다. 물론 지금 아니면 배울 시간은 없다. 그렇게 생각하지 않는가?
ssh-keygen(1)을 이용해서 SSH 키 조합을 생성할 수 있다.
# ssh-keygen
Generating public/private rsa1 key pair.
Enter file in which to save the key (/home/mwlucas/.ssh/identity):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/mwlucas/.ssh/identity.
Your public key has been saved in /home/mwlucas/.ssh/identity.pub.
The key fingerprint is:
06:39:96:50:15:3b:55:ff:f3:71:fb:9b:12:e5:e0:99 mwlucas@pedicular.blackhelicopters.org
#
모든 것에 대해 기본값을 취할 수 있지만, passphrase는 입력해야 한다. passphrase는 공백을 포함하는 훨씬 긴 암호이다. 나의 passphrase는 대략 80 글자 정도이며, 문자나 숫자, 특수문자를 모두 포함한다. 그래서 위의 명령은 필자에게
~.ssh/identity와
~.ssh/identity.pub 파일을 만들어준다.
identity 파일은 비밀 열쇠로 필자에 의해서만 읽혀져야 하고 엄중하게 보호되어야 한다.
identity.pub 파일은 공용키이고, 원하는 시스템은 어떤 것이든 가져갈 수 있다. 시스템이 비밀 키, 공개 키, 그리고 passphrase를 결합할 때 identity 키는 "풀리고" 나는 주 FreeBSD 소스 저장소 서버에 접속하도록 허락된다. 그래서 필자는
identity.pub 파일을 Nik에게 보냈고, 그는 필자의
freefall.FreeBSD.org 홈 디렉토리의
.ssh/authorized_keys에 저장했다. 그가 그것을 한 번 하고 난 후 필자는 대부분이 사람들이 "FreeBSD" 그 자체로 인식하고 있는 시스템에 로그인 할 수 있었다.
# ssh freefall.freebsd.org
Enter passphrase for RSA key "mwlucas@pedicular.blackhelicopters.org":
Last login: Sat Jan 5 14:00:21 2002 from cc806427-a.stcl1
Copyright (c) 1980, 1983, 1986, 1988, 1990, 1991, 1993, 1994
The Regents of the University of California. All rights reserved.
FreeBSD 4.4-STABLE (FREEFALL) #2: Sun Nov 25 15:58:20 PST 2001
Welcome to Freefall
Unauthorized access is strictly prohibited.
Report any problems/issues to admins@freebsd.org
NOTE: .forward files do not work. To forward your mail login to
hub.freebsd.org and create a /var/forward/yourusername file that
contains a forwarding address.
freefall~;
여기서 필자의 심장이 놀라서 쿵쾅거리고 있음을 인정해야만 한다. FreeBSD 세계에 참여한지 수 년이 지난 후, 신비한 "freefall" 이 내 앞에서 Tut 왕(역자주: 투탄카멘)의 무덤처럼 열렸다. 이것을 Bruce에게 말했고, 그는 자기만 그렇게 느낀 것이 아니어서 기쁘다고 했다.
그 결과 여기까지 왔다. 그렇다면 이제는?
나는 FAQ 패치를 조금 더 가지고 있었다. 첫째로 나는 Bruce에게 그것들을 평가하기 위해 보냈다. 그가 승인을 하면,
scp(1) 명령을 이용해서 freefall로 업로드했다. 커미터 가이드에 있는 지시를 따르면서, 나의 홈 디렉토리에서 FAQ의 사본을 검사하고,
patch(1)을 가지고 diff를 적용했다. 마지막으로,
cvs diff -c 와
cvs status를 실행하여 나의 FAQ 지역 사본이 나의 패치를 제외한 모든 면에서 최신인지를 확인했다. 마지막으로, 커미터에게 그들의 평판을 주는 무서운 명령을 입력했다.
cvs commit
필자가 자주 이용하는 텍스트 편집기가 전형적인 CVS 로그 메시지의 템플릿과 함께 떠오른다. 필자의 첫 번째 commit 은 약간 이상하기는 했다. 하지만 그것은 FreeBSD 표준이 커밋 메시지를 템플릿이 그것을 집어넣는 파일의 끝이 이 아닌 파일의 첫머리에 넣었기 때문이다. 편집기를 한번 종료하자, 필자의 변경사항들은 저장소에 합쳐져서 커밋 메시지가 cvs-all@FreeBSD.org로 보내졌다.
필자는 이제 자신을 엘리트 중의 한 명이라고 생각한다. 필자의 힘이 사람들에게 삶과 죽음을 결정짓는 정도는 아직 아니지만, 삶을 훨씬 어렵게 만들 수는 있다. (이 기사들이 허용하는 잠재적인 손상이 충분하지 않은것처럼!) 물론 내가 정말 멍청한 짓을 한다면, 다양한 분야에 있는 다른 FreeBSD 사람들이 나에게 아주 날카로운 대화를 던질 것이다. (날카로운 것들에 대해 말하자면, 칼과 깨진 병)
당신도 얼마든지 이렇게 할 수 있다. 만약 당신이 괜찮은 패치를 제출하고, FreeBSD 팀과 잘 일 할 수 있다면, 커밋 비트를 제공받을 것이다. 만약 커밋 비트을 받아들이지 않고서, 패치를 계속 제출한다면, 누군가가 억지로 당신을 강요하게 될 것이다. 만약 PRs을 제출하지 않으면, 커밋 비트를 얻을 수 있는 방법이 없다. 커미터들은 거의 보상을 받지 못한채 그 일을 하는 사람이다. 필자가 처음 겪었던 당황스러움에도 불구하고, 나는 그들 중의 한 사람이 된 것이 자랑스럽다. 이제 프로젝트 작업이 형편없는 것이 아니기를 기대하자.
마이클 루카스(Michael Lucas)는 미시간주 디트로이트에서 아내와 애완동물을 키우면서 살고 있다. 현재 Great Lakes Technologies Group에서 네트워크 아키텍처로 근무하고 있다.