오픈소스와 민주주의

Node.js

Node.js 와 io.js

얼마전 Node.js 진영에 재미있는 일이 있었다. 여러모로 욕을 잡숫고 계시던 Node.js 리드 디벨로퍼 TJ Fontaine 선생님께서 드디어 하차했다는 것인데 이는 Node.js 의 개발 및 릴리즈를 책임졌던 Joyent 가 Node.js Foundation 에 독재적인 가버넌스 모델을 포기하고 열린 가버넌스 모델로 선회했다는 것을 뜻한다.

가장 큰 영향을 끼친건 단연 io.js 의 존재라고 보는데, io.js 는 Node.js master branch 를 fork 하여 오픈 가버넌스 모델로 개발이 진행되고 있던 것으로, 일종의 Node.js 클론이라고 간주할 수 있을 것 같다. Node.js 의 개발 로드맵을 그대로 따라가면서, 빠른 릴리즈와 활발한 참여로 Node.js 를 강력하게 위협하고 있었다. 여기까지 읽으면 io.js 와 호환성 이런걸 생각하게 되겠지만, 사실상 새로운 버젼 같은 느낌으로 Node.js 모듈의 대부분을 그대로 사용할 수 있었다.

그런데 재밌는 것은 JavaScript Today 에서 Node.js 진형의 변화를 이야기한 기사에서 io.js 와의 벤치마크 결과도 함께 실었는데, 13% 가량 io.js 가 퍼포먼스 면에서 앞서고 있다는 점이다. 이러한 것들이 Node.j s 진형에 큰 영향을 주었을 것이라고 쉽게 생각할 수 있다. 더딘 릴리즈 속도와 독점적인 가버넌스 구조에 반발하여 분리된 프로젝트가 이제 원래 프로젝트를 뛰어넘고 있는 것이다.

사실 여기까지만 봐도 그동안 오픈소스 커뮤니티에서 일어나는 일을 생각해볼때 그다지 새로운 현상은 아니었다. 가장 인상적이었던 것은 io.js 에서 다시 Node.js 와 합치는 것을 논의하고 있다는 점이다. 이 논의는 다소(?) 폐쇄적인 방식으로 진행되었는데 io.js 에 기여한 개발자들만 논의에 참가할 수 있었다. 그리고 이 논의의 결론은 Node.js 와의 재혼으로 결정되었다.

어떻게 재혼할 수 있었나?

그렇다면 독재적인 Node.js 의 분리와 성공적인 오픈 가버넌스 형태의 재결합은 어떻게 이루어질 수 있었을까? 이런 좋은 결과가 있을 수 있던 배경이 몇가지 있었다고 생각한다.

  1. 자유롭게 복제 및 릴리즈가 가능한 오픈소스
  2. 시스템과 기술을 아는 사람들이 공유하고 기여하는 구조
  3. 기여하지는 않으나 옮겨갈 준비가 된 많은 사람들
1. 자유롭게 복제 및 릴리즈가 가능하다

Git 은 버젼 관리 소프트웨어로 쉽게 말하면 소스 코드를 주제별로 (실제로는 매우 복잡하게 돌아가지만) 패키징 해서 문제가 생길때 간단하게 복구할 수 있도록 한다고 보면 크게 틀릴 것 같진 않다. 물론 당연히 Git 을 몇줄로 정의하는 것은 어려운 일이고 자세한 내용은 이곳에서 참조하면 된다. Git 의 장점중에 하나는 쉽게 코드를 복제 할 수 있다는 것인데 특히 fork 라는 기능을 활용하게 된다. 원본 저장소에서 fork 를 하게 되면 해당 코드는 나의 저장소에 복제되고, 어떤 문제점 등을 수정해서 해당 코드를 사용할 수 있다. 그 이후 내가 만든 코드를 그대로 다른 사람들이 사용할 수 있게 릴리즈 하거나, 다시 pull-request 를 통해 원본 저장소에 통합을 요청할 수 있고 이를 원본 저장소에서 허락하면 코드는 합쳐지고 원본 저장소의 내용이 업데이트 된다. 나도 더 쉽게 설명하고 싶다!

Git fork diagram

이는 상당히 중요한 점을 시사한다고 생각한다. 현대 국가의 국민들은 사실상 시공간적인 제약으로 인해서 국적 취득의 자유를 갖고 있진 못하다. 세상이 인터넷을 통해서 연결되어 있다고는 하나 결국 현재 체류지에서의 법적 의무와 권리에 묶여있는 이상 내가 원하는 나라에 가서 사는 것은 현실적으로 어려운 일이다. 미국이나 캐나다 시민권을 취득하기 위해 노력하는 사람이 얼마나 많은가? 국적을 자유롭게 바꿀 수 있고 혹은 새로운 국가를 만들어 낼 수 있다면, 우리는 훨씬 더 합리적으로 정치 제도를 선택할 수 있으며, (어차피 온라인에서는 국경이라는 의미가 매우 희박하므로) 새로운 제도를 시험할 수 있을 것이다.

2. 시스템과 기술을 알고있는 사람들의 참여

하지만 자유로운 제도를 선택하고 만들어낼 수 있다고 해서 그것이 항상 의미있는 결과를 가져오진 않을 수 있다. 이 때 중요한 것은 구성원의 자질이다. io.js 가 만들어지고 다시 Node.js 로 합쳐질 수 있던 이유 중 가장 결정적인 것은 io.js 의 성능이 Node.js 를 뛰어넘고 있었기 때문이다. 그리고 그렇게 될 수 있던 이유에는 io.js 에 기여한 사람들이 그 오픈소스 커뮤니티의 성격을 잘 이해하고 있었고(물론 의식하지 않았을 수는 있지만), 오픈소스 프로젝트에 기여할 만큼 기술을 알고 있었던 점이 크게 작용했을 것이라고 생각한다.

선거가 민주주의를 구제할 수 있는가?

민주주의에서 선거제도가 갖는 문제점이 종종 나타나고는 하는데, 우리나라의 예만 들어도 약 5천만이 인구가 겨우 10명 내외의 사람 중 한명을 선출하게 된다. 게다가 현대 법, 사회제도는 그 실상을 파악하기가 매우 어렵다. 우리에게 직접적으로 영향을 끼치는 규칙이 나오기까지 헌법(까지 가는 일은 별로 없겠지만), 법률, 상위법, 시행령, 시행규칙까지.. 참 복잡도 하다. 그러다보니 국회에서 국회의원들이 하고 있는 일들을 직접적으로 어떤 영향이 끼칠지 이해하는 것은 상당히 어렵고, 실제로 영향을 미치지 못하는 경우도 많다.

그러다보니 현실 정치와 법규에 대해서 이해는 커녕 관심 조차 없는 것이 대부분이다. 물론 나도 이해못한다 정치에 관심없는 사람들이 가장 손쉽게 투표하는 방법이 인기인에게 투표하는 것이다. 나는 그 나라의 정치 수준은 얼마나 많은 연예인들이 당선되는가를 보면 알 수 있다고 생각하고, 이 당선된 연예인들의 의정활동을 추적해보면 좀 더 확실하게 판단될거라고 믿는다.

반면 io.js 가 fork 되고 기존 Node.js 라는 정치 제도에 실망한 사람들이 빠르게 유입되었고 덕분에 단기간에 Node.js 를 뛰어넘을 정도로 성장할 수 도 있었다. 이는 io.js 의 기여자들이 이미 Node.js 에 많은 기여를 했던 사람들이었기 때문이라고 생각한다. 정치 제도의 지정한 발전과 성장을 위해서는 그 방식을 이해하고 기여할 자격이 있는 사람들의 애정과 참여가 필수적인 것이다.

3. 기여하지는 않아도 옮겨갈 준비는 되어있다

여기까지만 들으면 철인정치나 과두정에 대한 옹호로 들리기 쉽다. 나 스스로는 그러한 정치체제를 선호하지만 하지만 실상은 조금 다른 것 같다. io.js 의 기여자는 약 130여명 정도 된다. 대단한 숫자라고 볼 수도 있겠지만 Node.js 의 1/4 에도 못미치는 것인데, Node.js 의 기여자 조차도 Node.js 커뮤니티 전체와 비교해 봤을때는 극히 적다. 개발 언어나 프레임워크에서 가장 중요한 것 중에 하나를 커뮤니티로 꼽는다. 아무리 간결한 개발 언어라도 아무리 뛰어난 성능을 자랑하는 프레임워크라도 결국 커뮤니티가 없으면 성장할 수 없다.

야 이렇게 처잘거면 내가 할게

즉, 커뮤니티는 Node.js 소스코드에 직접적으로 기여하지는 않을수는 있으나 그것을 사용하고 혹은 플러그인(실제로는 Module이나 Package로 불리지만)을 만들어 배포하는 등 간접적으로 기여하는 사람들까지 포함하게 된다. 정치에 직접적으로 참여하진 못하지만, 선거를 통해서 간접적으로 기여하는 사람들의 존재가 그것이다. 문제는 우리는 국적을 바꾸기 어렵기 때문에, 결국 더러워도 이 정치제도에 속하는 사람일 수 밖에 없다는 점이다.

민주주의와 오픈소스

따지고 보면 오픈소스 커뮤니티 만큼 민주주의의 장점이 극대화 된 케이스도 찾기 힘들다고 생각한다. Linux 의 성공을 떠나, 좋은 케이스가 너무나 많기 때문에 열거하는 것 조차 불가능할 정도다. 특히 WWW이 보급되고 Github 와 같은 소스 공유 플랫폼이 출현하면서 오픈소스 커뮤니티는 꽃을 피우고 있다. 소프트웨어를 떠나 이제 하드웨어에서도 오픈소스는 대세로 자리잡았는데, 어찌보면 현실세계의 정치, 사회제도가 배워야할 점이라고 생각한다.

요즘엔 국민이 국가에 우선한다는 것이 무색하다

현대 사회는 너무나 다각화되어 이제 연결되어있지 않은 분야이 없다고 할 정도로 복잡하게 얽혀있다. 하나의 신소재를 개발하면 국방, 산업, 제조 등 여러 분야에 영향을 끼치게 되고, 이러다보니 어떤 위원회 소속 국회의원이 실제로 다뤄야하고 고려해야하는 요소가 너무나도 다양하다. 말로는 시민의 정치 참여를 권한다고 하면서도, 실상은 결국 시민이 참여할만한 태두리를 만들어 놓는데서 그치고 있다. 뭔놈의 국가기밀이 그렇게 많은지, 국가에 앞서 국민이 있다는 것이 민주주의의 기본일텐데 국민이 몰라야만 할 것들이 어찌 그렇게나 있을수 있는가? 그래서 이번 Node.js 의 소식이 반갑다. 오픈소스 커뮤니티는 국적없는 세상에서 무엇이 이뤄질 수 있는지, 가능성을 보여주고 있다. 이제 오픈 국적이 필요한 시대가 되지는 않았는지 반문해 본다.