본문으로 건너뛰기

성당과 시장 리뷰

· 약 23분
조준철
HandStack 개발자

모든 사람들이 개발자일 필요는 없지만, 코드를 들여다 볼 줄 알면 적어도 손해 볼 일은 없기 때문에 전공이 아니더라도 소프트웨어 개발 학습을 권장 한다. 코드는 컴퓨터와 소통을 하기 위한 언어이자, 말이 통하지 않는 사람들과 소통할 수 있는 유일한 도구이기 때문이다.

에릭 레이먼드의 성당과 시장은 사회초년생이었던 나에게 많은 영향을 주었다.

어느 정도였냐면 인터넷 기반 기업들의 주가가 급격히 상승하면서 거품이 형성되었던 닷컴 버블 시기에 국내 기업들도 미래 먹거리를 위한 비전과 그에 따른 R&D 보다 단지 눈먼 돈을 벌기 위해 너도 나도 무리한 일정과 기능 검토 없이 프로젝트 수주와 기업 투자를 위한 임직원들의 월화수목금금금이 일상 이었던 2000년 당시 SI 신입 시절 한창 바빴을 시기였다.

연예나 취미도 모르는 집과 회사 밖에 몰랐던 내가 리차드 스톨만이 국내에 방한하여 연세대학교에서 강연한다는 소식에 지금은 아니겠지만 당시에는 업무 시간에 세미나 가는 것이 일반적인건 아니어서 월차내고 무슨 예긴지도 모를 GNU 에 대한 강연을 들으러 찾아 갈 정도 였다.

우리가 알고 있는 모든 직업에는 나름의 역사가 있고, 대부분의 경우 직업군에 필요한 기초, 심화 이론을 정립해둔 공학적 접근방식의 선구자들이 있다. 개인적으로 소프트웨어 공학에서 기억이 남는 선구자는 3명인데 놀랍게도 모두 2025년에도 현역으로 활동중이다.

만약 소프트웨어 개발을 하는 분들중에 다음의 3명의 이름을 처음들어 봤다면, AI와 구글 검색으로 재미있는 일화들을 찾아 볼 수 있을 것이다.

  • Linux 운영체제의 커널과 Git 개발자 "리누스 토발즈"
  • Windows 11 운영체제의 핵심인 NT 커널 개발자 "데이비드 커틀러"
  • GitHub 의 오픈소스 윤리를 공유하는 "리차드 스톨만"

최근 100년 사이에 인류의 문명 발전은 인간에게 적응할 시간도 없이 너무 빠르게 발전하고 있다는 것을 보여주는게 아닐까 싶기도 하고, 앞으로의 세대들이 받아들일 지식의 양이 어마어마 하다는 것은 웬지 안타깝기 까지하다.

이 글은 내가 왜 개발이 재미있고, 오픈소스로 HandStack 을 만들고 공유하고 있는지, 오래전 읽었던 성당과 시장을 글을 다시 읽어보며 아직 읽어 보지 않았던 소프트웨어 개발자 분들에게 공유하고픈 내용과 나름의 첨삭을 해본 잠시 읽어볼 만한 추천글이다.

해커 문화의 짧은 역사

1960년대와 1970년대의 해커 문화를 형성한 프로그래머들은 MIT 인공지능 연구소와 같은 곳에서 활동하며, 유닉스와 같은 초기 운영체제를 개발하고, 아르파넷(인터넷의 전신)을 구축하는 데 기여한 인물들이다.

이 시기의 프로그래머들은 오늘날의 오픈소스 운동의 기초를 다졌다고 할 수 있다. 즉, 해커는 컴퓨터가 대중화되지 않고, 먹고 사는 게 힘들었던 시대에 컴퓨터 시스템을 능숙하게 다루고, 시스템을 개선하거나 혁신하며 얻은 지식들을 별다른 대가 없이 공유하는 소수의 엘리트 그룹을 일컫는 단어이다.

본래 "해킹" 이라는 의미가 해커의 일상적인 문제를 푸는 개인적인 해결책을 찾는 것에서 부터 시작되어, 그 문제가 많은 해커들에게 공감받고 해결책이 널리 퍼지게 되는 것을 미덕으로 생각하는 것으로 받아들여졌던 당시에는 얼마나 아름다운 활동이었는지 생각하게 된다.

해커 문화는 순수한 형태에서 시작되어 많은 프로그래머들에게 영향을 주었으나, 1980년대부터 소프트웨어 산업이 상업화되면서 많은 소프트웨어가 독점적으로 개발되고 배포되었고, 이는 공공의 이익을 위한 해커들이 자유롭게 소프트웨어를 수정하고 공유하는 문화를 약화시켰다.

그래서 몇몇 해커들이 값 비싼 소프트웨어의 정품 라이선스 기능을 무력화하여 재배포하거나 기업의 시스템에 침투하여 데이터를 훔치는 사건이 증가하면서, 정부와 기업들은 보안 강화를 위해 다양한 법적 규제를 만들고 해커 활동을 제한하며 일부를 범죄로 간주하게 만들었다.

그렇게 대중들에게 점차 해커 문화의 순수성이 약화되고, 다양한 목적과 동기를 가진 사람들이 해커 활동에 참여하게 되면서, 인터넷의 보편화와 기술의 복잡성으로 인해 해커 문화는 더 이상 초기의 형태에서 벗어나 다양한 방향으로 변화하게 되었다.

마지막 해커 "리처드 스톨만"

1980년대에 소프트웨어 산업이 상업화되면서 해커 문화가 점차 사라지기 시작했을 때, MIT 인공지능 연구소에서 활동하며 현재 까지도 자유 소프트웨어 운동을 주도하는 인물인 리처드 스톨먼의 해커 정신은 다음과 같이 요약된다. 이로 인해 그는 종종 "마지막 해커"라고 불린다. (성당과 시장의 저자 에릭 레이먼드는 이 표현을 좋아하지 않는듯하다.)

  • 자유 소프트웨어: 소프트웨어가 사용자에게 자유롭게 사용, 수정, 배포될 수 있어야 한다고 주장한다. 이를 위해 그는 GNU 프로젝트와 자유 소프트웨어 재단(FSF)을 설립하고, GNU 일반 공중 사용 허가서(GPL)를 작성했다.

  • 공유와 협력: 소프트웨어 개발자들이 서로의 코드를 공유하고 협력하는 문화를 중요하게 생각한다. 그는 소프트웨어가 독점적으로 사용되는 것을 반대하며, 모든 사람이 소프트웨어의 혜택을 누릴 수 있어야 한다고 믿는다.

  • 해커 윤리: 해커들이 기술적 도전을 즐기고, 창의성을 발휘하며, 시스템을 개선하는 것을 중요하게 여긴다. 그는 해커들이 단순히 시스템을 침해하는 것이 아니라, 시스템을 더 나은 방향으로 발전시키는 역할을 해야 한다고 생각한다.

이러한 해커 정신은 오늘날 오픈 소스 소프트웨어 운동의 기초가 되었으며, 많은 개발자들에게 영감을 주고 있고, 다양한 프로젝트의 기본 사상으로 자리 잡고 있다.

리처드 스톨먼은 2006년 11월에 한국을 방문하여 연세대학교에서 GNU 프로젝트와 자유 소프트웨어, 그리고 GPLv3에 대한 최신 동향을 주제로 강연을 진행했다. 당시 한국 사회에서 강연을 하는 것은 정장이나 격식을 중요하게 생각했었지만, 그는 청바지를 입고 강연을 했다. 그의 편안한 복장과 말투는 자유 소프트웨어 운동의 정신을 잘 반영하는 모습이었다.

그때 강연에 통역도 없고 영어도 몰라서 리차드 스톨만의 강연이 무슨 내용인지 잘은 모르지만 옆에 앉아 있던 외국 개발자가 GNU 를 한국 개발자들이 (지엔유)로 발음하는 것을 (그누~) 로 발음해야 한다는게 기억에 남는다.

초기의 공개 유닉스

1990년 초, 독점적 유닉스를 "해킹" 하려는 10여 년간의 해커 그룹의 노력이 실패로 끝났다는 것이 IT 업계에 공식적인 뉴스로 언급되며, 이제 개인의 기술 영웅주의가 끝났으며, 소프트웨어 산업과 초기 인터넷이 점점 더 마이크로소프트와 같은 거인에 의해 지배된다는 것을 보도했다.

다행히 1993년 후반에서 1994년 사이에 언론과 해커 들 사이에서 눈에 띄지 않고 진행된 작은 일이 해커 문화를 아주 다른 방향으로 이끌고 생각지도 못한 성공을 거두게 되는데, 그것이 현대 대부분의 IT 시스템의 근간으로 사용되는 리눅스이다.

1991년에 헬싱키 대학생 리누스 토발즈는 자유 소프트웨어 재단의 도구를 이용해 386 기계를 위한 공개 유닉스 커널을 개발하기 시작했고, 완전히 자유롭고 재배포 가능한 소스로 구성된 유닉스인 리눅스를 개발하는 것을 중점으로 진행했다.

당시 해커 들은 운영체제처럼 복잡한 소프트웨어는 비교적 작고 잘 구성된 엘리트 모임에 의해 주의 깊게 조정되며 개발돼야 한다고 믿고 있었는데, 리눅스는 처음부터 인터넷에 의해서만 조정되는 수많은 자원자에 의해 우연히 해킹되었다.

품질은 엄격한 표준이나 독재로 이루어지지 않았으며, 매주 릴리스 되었고 며칠 안에 수백 명의 사용자(개발자)들로 부터 피드백을 받았고, 리누스 토발즈도 훗날 당시 주요 커널 소스코드를 이메일로 주고 받으며 수작업으로 일일이 코드를 병합했던게 제일 힘들었다고 언급하니 당시 그의 개발 방법은 기존 개발 방식과는 완전히 다른 방식으로 발전한 것을 알 수 있다.

그런 면에서 리눅스의 가장 중요한 특징은 기술적인 것이 아니라 사회적인 것이었다. 당시 국내와는 다르게 초기 리눅스는 찰스 다윈의 진화론에서 중요한 개념인 다윈주의적 적자생존의 선택을 할 수 있게 하는 단순하지만 파격적인 전략에 의해 개발자들이 지속해서 변화를 관리했다. 이에 대한 것은 에릭 레이먼드도 동의하는 글을 쓰며 리눅스의 성공을 설명했다.

성당과 시장

성당과 시장은 리눅스의 역사가 제시한 놀라운 소프트웨어 공학 이론을 신중히 검토해 보려고 진행한 페치메일 오픈소스 프로젝트의 경험을 바탕으로 작성한 에릭 레이먼드의 개발 이론이다.

그의 이론은 근본적으로 서로 다른 개발 방식의 용어로 사용되는데, 상업용 소프트웨어의 독점적 개발 방식인 "성당" 모델과 오픈소스 기반의 규칙과 제한이 없는 "시장" 모델을 가리킨다.

페치메일 오픈소스 프로젝트의 기회를 얻기 위한 에릭 레이먼드가 무에서 유를 만드는 게 아닌 기존의 오픈소스 프로젝트에서 본인의 니즈와 가장 가까운 프로젝트를 이어 받기 위해 언급한 교훈은 현대 사회에서 개발 중인 개발자 들에게도 크게 다르지 않게 적용될 수 있을 것 같다.

  • 모든 좋은 소프트웨어는 개발자 개인의 가려운 곳을 긁는 것으로부터 시작된다. (소프트웨어 개발자들은 너무나 자주, 단지 돈 때문에 그들이 필요하지도 않고 좋아하지도 않는 프로그램을 만드는 데 시간을 쓰고 있다. '내가 원하는 것과 가장 가까운 프로그램은 무엇일까?')
  • 좋은 프로그래머는 어떤 프로그램을 만들어야 할지 안다. 위대한 프로그래머는 어떤 프로그램을 다시 만들어야 할지 그리고 재사용해야 할지 안다. (위대한 프로그래머의 중요한 특징 중 하나는 건설적인 게으름이다. 완전한 무에서 시작하는 것보다는 부분적으로나마 좋은 해결책에서 시작하는 게 대부분 더 쉽다.)
  • 갖고 있는 것을 버릴 계획을 세우라. 언젠가는 버리게 될 것이다. (프레더릭 브룩스, 『맨먼스 미신』 11장 중에서)
  • 적절한 태도를 갖고 있으면, 흥미로운 문제가 당신을 찾아갈 것이다.
  • 프로그램에 흥미를 잃었다면, 프로그램에 대한 당신의 마지막 의무는 능력 있는 후임자에게 프로그램을 넘겨주는 것이다. (한 가지 문제는 후임자가 적임자라는 것을 어떻게 입증할 수 있느냐 하는 것이었다.)
  • 사용자를 공동 개발자로 생각하면 코드가 다른 어떤 방법보다 빠른 속도로 개선되며 효율적으로 디버깅할 수 있다.
  • 일찍 발표하고 자주 발표하라. 그리고 사용자의 소리에 귀를 기울여라.
  • 충분하게 많은 베타 테스터와 공동 개발자가 있으면, 거의 모든 문제는 빠르게 파악될 것이고 쉽게 고치는 사람이 있게 마련이다.
  • 자료구조를 훌륭하게 만들고 코드를 멍청하게 만드는 것이 그 반대 경우보다 훨씬 잘 작동한다.
  • 베타 테스터를 가장 중요한 자원으로 여긴다면 그들은 정말 가장 중요한 자원이 되어준다.
  • 좋은 아이디어를 생각해 내는 것 다음으로 중요한 일은 사용자가 알려준 좋은 아이디어를 깨닫는 것이다. 때로는 이편이 더 나을 수도 있다.
  • 종종 가장 충격적이고 혁신적인 해결책은, 당신 자신이 문제에 대해서 가지고 있는 개념이 잘못돼 있다는 것을 깨닫는 것에서 나온다.
  • 설계에서 완벽함이란 더 이상 추가할 것이 없을 때 이루어지는 것이 아니라 더 이상 버릴 것이 없을 때 이루어진다.
  • 어떤 도구든지 기대하는 방법으로 쓸모가 있어야 하지만 정말 위대한 도구는 사용자가 전혀 기대하지 않았던 용도에 알맞게 된다.
  • 재미있는 문제를 풀어보고 싶다면, 자신에게 재미있는 문제를 찾아 나서는 것부터 시작하라. (가장 뛰어난 해킹은 해커의 일상적인 문제를 푸는 개인적 인 해결책부터 시작된다.)

에릭 레이몬드는 리누스 토발즈의 가장 영리하고 중요한 해킹은 리눅스 커널을 만든 것이 아니라 리눅스 개발 모델을 만든 것이라고 평가한다.

성공적인 시장 방식 개발을 위한 선행 조건은 프로젝트가 공개되는 시점에 메인 개발자의 자질과 코드가 어떤 상태인지가 중요하다. 처음부터 시장 방식으로 개발할 수 없다는 것은 자명하다. 테스트, 디버깅, 개선은 시장 방식으로 할 수 있다. 하지만 프로젝트를 시장 방식으로 시작하기는 매우 어렵다.

프로젝트에 합류를 하는 개발자는 어느 정도 기본적인 수준의 설계와 코딩 기술은 물론 필요하지만, 시장 방식 프로젝트를 시작하려고 심각하게 생각하는 사람이라면 그런 정도는 적어도 넘어섰으리라고 기대한다.

개발 시장은 다른 직업에 비해 분명히 다른 점이 있는데 개발자들 사이에 평판에 대한 미묘한 압력을 사람들에게 가한다. 그래서 지속적으로 따라갈 경쟁력이 없는 사람은 개발 프로젝트를 시작하지 않게 된다. 이것은 그때나 지금이나 잘 들어 맞는 것 같다.

반드시 개발자 공동체가 초기에 실행하고 테스트할 수 있는 장난감이 필요하다. 공동체를 만들기 시작할 때 제시해야 하는 것은 그럴듯한 장래성이다.

프로그램이 특별히 잘 동작할 필요는 없다. 조잡하거나, 버그투성이여도 되고, 완성되지 않고 문서가 형편없어도 상관없다. 하지만 한 가지 확실하게 해야 할 것은 잠재적인 공동 개발자들에게 이것이 머지않은 미래에 정말 괜찮은 무언가로 진화할 수 있다는 것을 이해시키는 일이다.

더 많은 이야기

이 글의 성당과 시장의 일부를 언급한 내용이다. 성당과 시장은 무료 도서이며 다음의 URL 에서 epub, pdf 문서를 다운로드 할 수 있다.

https://www.oss.kr/oss_guide/show/64be57d5-5919-4069-9643-13827b7c69c3