국내 많은 소프트웨어 회사나 연구기관의 오픈소스에 대한 열정은 무료 코드에만 국한되며, 오픈소스 커뮤니티 활동에 깊이 참여하는 경우는 거의 없습니다. 우리는 오픈소스에 대해 항상 이용은 많이 하고 기여는 적으며, 국내에서 시작된 일정한 영향력이 있는 오픈소스 프로젝트는 완전히 없는 것은 아니더라도 아마도 극히 드물 것입니다. 우리는 그토록 인색하여, 현재 사용 중인 오픈소스 프로젝트에 대해서도 개발과 테스트 자원을 쉽게 “낭비”하지 않습니다. 저는 운 좋게도 자유 소프트웨어의 정신적 지도자급 인물인 Richard Stallman의 강연을 두 번 들은 적이 있습니다. 그는 특히 “Free is not free”를 강조했습니다. 자유는 무료가 아닙니다. 마찬가지로 오픈소스는 자유(Free)이지 무료(Free)가 아닙니다. 아마도 모두가 거리낌 없이 마음껏 오픈소스의 무료 만찬을 즐길 때, 오픈소스의 진정한 힘은 자유이지 무료가 아니라는 것을 완전히 잊고 있을 것입니다.

오픈소스란 무엇인가?
간단히 말해, 오픈소스는 세 가지 측면의 내포를 포함합니다:
첫째, 오픈소스는 프로젝트(Project)입니다. 프로젝트로서 더 많은 관심 있고 열정적인 기술적, 비기술적 사람들의 참여를 유치하기 위해, 오픈소스는 종종 독특하고 유연한 프로젝트 조직 방식과 개발 프로세스를 가지며, 이 점은 회사와 완전히 다릅니다. 물론 일반적으로 말해, 하나의 오픈소스 프로젝트는 종종 하나 또는 여러 회사가 주도하지만, 다른 조직, 회사, 독립 개발자의 참여를 절대 배제하지 않습니다. 오픈소스 프로젝트의 관리 팀은 대부분 민주적인 방식으로 선출됩니다.
둘째, 오픈소스는 커뮤니티(Community)입니다. 커뮤니티로서 오픈소스는 개발자, 테스터, 기부자, 사용자에게 메일링 리스트, 포럼, IRC 및 다양한 회의로 구성된 교류 플랫폼을 제공합니다. Open Source의 Open은 개방된 코드뿐만 아니라 개방된 교류 플랫폼이기도 합니다. 상호 존중의 원칙을 바탕으로 기술적, 개발적, 테스트적, 사용적, 관리적 거의 모든 문제가 논의 대상이 될 수 있습니다. 모두가 함께 아이디어를 내고 방법을 찾아 각 방면에서 오픈소스에 힘을 보탭니다.
마지막으로, 오픈소스는 제품(Product)입니다. 많은 경우 오픈소스가 발표하는 제품은 사용자 요구를 충족시키기 어렵습니다. 그래서 관련 라이선스(License)를 위반하지 않는 조건 하에, 일부 회사가 이를 커스터마이징하여 자신의 제품이나 솔루션으로 변신시킵니다. 물론 일부 회사는 오픈소스 발전에 피드백하기도 합니다. 이것은 상호 윈윈의 선순환입니다. 거의 모든 오픈소스 프로젝트에 관련 제품 발표가 있습니다. 이러한 예는 헤아릴 수 없이 많습니다. Linux의 제품화가 가장 고전적인 예이며, Linux 제품화가 없었다면 Linux 오픈소스의 번성도 없었을 것이라고 할 수 있습니다. 다른 예로 Eclipse의 다양한 파생 제품이 있습니다. 그리고 OpenOffice.org의 분열과 쇠퇴는 아마도 그 제품화가 충분하지 않고 좋지 않았기 때문일 것입니다. 우리 이 신비로운 나라에서, 한 절정으로 똑똑한 원사가 국외 오픈소스 프로젝트를 극한까지 발휘하여 국가 자연과학 1등상을 받았다고 합니다. 경이롭고, 인정하지 않을 수 없습니다.
중요한 것은, 오픈소스는 자유의 세계라는 점입니다. 사람들은 자유롭게 커뮤니티에 가입하거나 탈퇴할 수 있고, 자유롭게 다양한 문제를 논의하고 다양한 제안을 발표할 수 있습니다. 개발자는 자유롭게 오픈소스 코드와 기술을 배울 수 있고, 사용자는 자유롭게 오픈소스 제품을 사용할 수 있습니다. 개방된 코드가 있으면, 오픈소스 코드와 제품의 라이선스를 위반하지 않는 조건 하에 자유롭게 오픈소스 제품의 기능을 다시 쓰고, 삭제하고, 추가할 수 있습니다. 회사와 조직도 자유롭게 오픈소스 코드와 기술을 이용하고, 자유롭게 오픈소스 제품을 판매할 수 있습니다. 위에서 말한 것처럼, 오픈소스는 회사의 제품화 참여를 장려합니다. 모두가 나를 위해, 내가 모두를 위해, 이것이 아마도 오픈소스 자유의 진정한 의미일 것입니다. 하지만 이것은 너무 아름다워서, 믿기 어려울 정도로 아름답습니다. 현실로 돌아오면, 자유의 비전이 아무리 매혹적이더라도, 하나의 오픈소스 프로젝트/커뮤니티의 성패는 결국 민심 사기에 달려 있습니다. 자유의 힘으로도 여전히 사람들의 참여 열정을 불러일으킬 수 없다면, 이 오픈소스 커뮤니티/프로젝트 존재의 이유와 가치는 크게 의심받을 것입니다.
반면, 더 중요한 것은, 어떤 이는 오픈소스 자체가 무료 비즈니스 모델이라고 주장하는데, 이 말은 헛되지 않습니다. 이것은 마치 인터넷 회사가 불같이 연출하고 있는 무료 비즈니스 모델과 같습니다. 예를 들어, 우리는 매번 Google 검색에 비용을 지불하지 않지만, 우리의 검색 행위는 빅데이터의 일부로 결국 Google의 광고 수익으로 전환됩니다. 충분히 많은 사용자를 확보하는 것이 이 비즈니스 모델이 성공할 수 있는 핵심입니다. 마찬가지로, 오픈소스 프로젝트의 소스 코드와 최종 제품은 무료이고, 개방되어 있으며, 자유롭게(임의로가 아니라) 사용될 수 있습니다. 오픈소스 비즈니스 모델은 재단을 통한 기부, 사용자에게 기술 지원 서비스를 제공하고 비용을 청구하는 것을 포함합니다. 또한 많은 회사가 오픈소스 프로젝트 제품화를 하면서 오픈소스에 직접 개발과 테스트 자원을 기여하는데, 이것도 사실 일종의 후원 행위입니다. 물론 위에서 말한 것처럼, 많은 무료 사용자의 지원을 받아야만 이 오픈소스 비즈니스 모델이 성공할 수 있습니다.
기업이 오픈소스에 참여하는 이점
오픈소스의 무료 혜택만 보고 오픈소스 자유의 힘을 무시하는 것은 순수히 공리적 관점에서도 절대 단견입니다. 현재 오픈소스를 사용하는 회사에게 적극적으로 오픈소스 커뮤니티 건설에 참여하면 적어도 다음 두 가지 측면에서 이익을 얻을 수 있습니다:
첫째, 오픈소스에 대한 기여가 많을수록 영향력이 커져 좋은 광고 효과를 낳습니다. 오픈소스를 통해 자신의 기술, 제품, 솔루션을 더 잘 보여주고 사용자의 신뢰를 얻을 수 있습니다.
둘째, 실력이 충분히 강해 오픈소스 프로젝트의 개발 방향을 주도할 능력이 있다면, 오픈소스 커뮤니티의 자원을 더 잘 모아 자신의 제품을 완성할 수 있고, 이것이 회사에 가져다주는 이점은 말할 필요도 없습니다. 프로그래머에게 오픈소스 참여의 가장 큰 이점은 기여로 얻는 성취감입니다. IBM에서 일할 때, 제가 있던 제품 라인 Symphony는 OpenOffice.org 기반 오피스 제품군이었습니다. 당시 저는 롤백 폰트(rollback font) 빠른 매칭 알고리즘을 개발했습니다. 사용자가 텍스트에 지정한 폰트가 시스템에 없을 때, 이 알고리즘은 시스템에서 가장 적합한 대체 폰트를 빠르게 찾을 수 있어, 텍스트 렌더링 속도를 크게 높이고 텍스트 표시 품질을 개선할 수 있습니다. 저는 이 알고리즘을 성공적으로 OpenOffice.org에 제출했습니다. 사용자가 OpenOffice.org로 문서를 열어 편집할 때마다 이 알고리즘이 실행될 수 있다는 것을 잘 알고 있어, 성취감이 저절로 생겼습니다. 물론 안타깝게도 OpenOffice.org는 분열되었습니다. 하지만 libreoffice.org는 여전히 계속 존재합니다.
사실 국내 프로그래머가 오픈소스에 참여하는 것을 막는 중요한 이유는 기술 능력의 제한이 아니라 영어 수준의 제한입니다. 그렇게 많은 해 영어를 배웠지만, 4-6급 자격증을 받았더라도, 배운 그 벙어리 영어가 전혀 쓸모없다는 것을 알게 됩니다. 언어가 통하지 않아 소통이 원활하지 않은 것은 어려운 문제이지만, 외부의 알 수 없는 세계와 통제할 수 없는 변화에 대한 두려움이 낳는 안주하려는 나태함의 장애보다는 훨씬 작습니다. 저는 여기서 개인의 영어 수준을 높이는 방법을 논의하려는 것이 아니라, 뜻이 있는 곳에 길이 있다는 것을 강조하고 싶을 뿐입니다. 출세하려는 프로그래머가 마음이 충분히 열려 있고, 미지의 영역에 호기심과 동경으로 가득 차 있다면, 영어는 절대 정복할 수 없는 요새가 아닙니다. 게다가 국내 프로그래머가 가장 걱정하는 것은 듣기와 말하기지만, 대부분의 경우 오픈소스 커뮤니티는 서면 메일로 소통합니다.
오픈소스에 참여하는 방법
마지막으로, 다음 몇 가지는 오픈소스에 뜻이 있는 친구들에게 참고가 됩니다:
첫째, 거의 모든 오픈소스 커뮤니티는 초보자에게 입문 가이드(Getting Started Guide)를 제공하며, 자세히 읽으면 불필요한 우회를 피할 수 있습니다.
둘째, 커뮤니티와 대담하게 상호작용하세요. 무엇이 궁금하면 혼자 골똘히 생각하지 말고 대담하게 질문하세요. 아무리 간단해도 항상 열정적인 사람들이 답해 줄 것이며, 누구도 당신을 비웃지 않을 것입니다. 물론 소통할 때 상대방을 존중해야 합니다. 메일에 기본적인 예의를 포함하고, 다른 사람의 도움에 감사를 표해야 합니다. 동시에 다른 사람을 돕는 것도 잊지 마세요.
셋째, 오픈소스 개발은 어느 정도 자유스러운 산만함이 있고, 너무 엄격한 계획이 없습니다. 그래서 때로는 자신의 요청이 빠른 응답과 충족을 받지 못한다고 느낄 수 있습니다. 주의할 점은 자신이 제출한 버그가 반드시 인정받는 것은 아니고, 자신이 제출한 코드가 반드시 수락되는 것은 아니라는 것입니다. 이런 상황을 만나면 이치를 분명히 말하고 감정적으로 행동하지 마세요.
넷째, 일부 오픈소스 프로젝트의 코드 품질은 정말 감탄할 수 없는데, 아마도 개발에 참여한 프로그래머의 수준이 고르지 않고 감독이 엄격하지 않아서일 수 있지만, 모두 그런 것은 아닙니다. 저는 종종 농담으로 OpenOffice.org 코드의 일부 함수가 너무 길어서 이 끝에서 저 끝이 보이지 않는다고 말했던 것을 기억합니다. 괴델 불완전 정리는 러셀과 화이트헤드가 《수학 원리》에서 제시한 수론과 유사한 어떤 형식 시스템이든, 아무리 강해도 불완전하며, 항상 잘 구성된 G 명제가 있어 참임도 증명할 수 없고 거짓임도 증명할 수 없다고 지적합니다. 그래서 어떤 형식 시스템도 수론 나아가 수학의 모든 성질을 완전히 기술할 수 없습니다. 이것은 물론 완벽한 결론은 아니지만, 다른 한편으로는 수학 진리의 발겴이 여전히 수학자들의 창조적인 총명함에 달려 있음을 의미하며, 잃은 것도 있고 얻은 것도 있다고 할 수 있습니다. 크게 말하면, 인생에는 항상 너무 많은 아쉬움, 고통, 부조리, 이별, 번뇌, 허영, 근심, 방황, 상심, 실연, 평범함, 뜻은 크나 재주는 적음, 재주는 있으나 만나지 못함, 백부미의 공허함, 키 작고 못생기고 가난한 고통 등이 있습니다. 반대로 바로 이 나쁜 면이 좋은 면을 더 소중하게 반영해 주며, 불완전해야만 완전을 이룰 수 있습니다. 이것이 철학적 사변의 역설입니다. 많은 사람의 힘을 모아 개발한 오픈소스 컴퓨터 프로그램도 마찬가지입니다. 그러니 모든 일에 인내가 필요하고, 가면서 아끼세요.
다섯째, 이론적으로 말해, 하나의 소프트웨어 기능을 구현하려면, 처치-튜링 논제에서 계산 가능한 범위 내라면, 모두 컴퓨터 프로그래밍 언어로 표현할 수 있습니다. 이 점에서 아무리 뛰어난 알고리즘과 프로그램이라도, 사실 넘을 수 없는 기술적 난관은 없습니다. 기술은 항상 간단하다고 할 수 있으며, 자신이 할 수 있는 것은 다른 사람도 할 수 있고, 반대도 마찬가지입니다. 하지만 예술은 무한하여, 에셔 같은 회화 수준이나 바흐 같은 음악 수준에 도달하려면, 못하면 못하는 것입니다. 물론 컴퓨터 프로그래밍도 예술로 볼 수 있어, Donald Ervin Knuth의 명저 《컴퓨터 프로그래밍의 예술》(The Art of Computer Programming)이 보여주는 기술처럼, 프로그램의 품질과 알고리즘의 성능은 확실히 상하 고하의 차이가 있습니다. 결론적으로, 회사와 개인 모두 모든 것을 보물 단지처럼 여길 필요가 전혀 없으며, 조상 대대로 전해 내려오는 무공 비법이나 한약 비방처럼 엄밀히 보관하고 보호하여, 이렇게 하면 나는 가지고 있고 다른 사람은 가질 수 없다고 생각하면, 크게 잘못된 것입니다. 그래서 많은 경우, 오픈소스에 대한 기여는 회사의 경쟁력을 해치지 않고, 오히려 회사의 경쟁력을 강화합니다.
여섯째, 다섯 번째와 반대로, 독립 프로그래머로서도 당신이 속한 회사의 지식재산권 정책을 충분히 이해해야 하며, 절대 회사 독점 지식재산권 코드를 오픈소스 커뮤니티에 제출하지 마세요.
(주: 이 글은 단락 구분 조정이 있음)
转载请注明:开发者关系 »