모질라 프로젝트의 과거와 미래 (Open Sources 2.0)

권순선의 이미지

요즘 O'reilly에서 작년에 출간된 Open Sources 2.0을 읽고 있습니다. 1999년에 처음 출간된 Open Sources의 업데이트판이라고 보면 될텐데 오픈소스 2.0이 웹 2.0만큼의 반향(?)은 일으키지 못하고 있는 듯 하여 조금 안타깝군요. :-)

오픈소스에 관련된 여러 사람들의 에세이들을 모은 것인데 시간이 날 때마다 제가 읽은 내용에 대한 정리도 할 겸 해서 블로그로 올리겠습니다. 오늘은 그 첫번째로 Mozilla Foundation의 Mitchell Baker가 쓴 "The Mozilla Project: Past and Future"입니다.

다들 아시겠지만 모질라의 원형은 넷스케이프입니다. 90년대 말 한참 넷스케이프와 인터넷 익스플로러 간에 벌어졌던 '브라우저 전쟁'을 기억하시는 분들은 1998년에 넷스케이프 사가 넷스케이프 브라우저를 오픈소스로 개발하기로 결정한 것이 얼마나 대단한 사건이었는지도 기억하실 것입니다. 이 글은 그때 이후로 지금까지 넷스케이프 -> 모질라 -> 파이어폭스로 이어지는 진화 과정과 소프트웨어 개발 과정, 그리고 그 사이에 있었던 소프트웨어 프로젝트 관리에 얽힌 여러가지 이슈들에 대한 기록입니다.

제가 흥미있게 읽었던 부분은 넷스케이프 개발에 관련하여 기존 넷스케이프 개발자들과 경영진들에게 오픈소스 개발 철학을 이해시키고 그에 맞는 개발 형태를 갖출 수 있도록 하는 것이 얼마나 힘들었던가에 대한 회고였습니다. 회사의 일반적인 개발 방식에 익숙해져 있던 개발자들에게는 모든 개발 관련 이슈들을 공개하여야 한다는 점과, 넷스케이프 직원이라도 코드에 쓰기 권한을 모두 가져서는 안된다는 점, 그리고 작성한 코드를 실제로 반영하기 전에 엄격한 코드 리뷰 과정을 거쳐야 한다는 점 등에 대해 초창기에 많은 시행착오를 겪었다고 합니다. 초기 단계에서는 개발 자체를 오픈소스로 하더라도 거의 대부분의 개발이 기존의 넷스케이프 개발자들에 의해서 이루어졌을 테니까요. 경영진을 이해시키는 것은 더더욱 쉽지 않았던 모양입니다. 당연하겠지요. 기존 넷스케이프 경영진의 이해를 구해야 했던 것은 개발의 주체를 mozilla.org라는 별도의 중립적인 조직으로 이관했어야 하는 점과, 소프트웨어의 릴리즈 주기나 시기를 경영진이 명령하는 것이 아니라 mozilla.org에서 결정하도록 해야 오픈소스 개발 모델의 장점을 살릴 수 있다는 점을 이해시키는 것이 쉽지 않았다고 합니다.

그러한 여러가지 어려운 점들을 모두 극복하는 과정은 결코 쉽지 않았고, 기존 넷스케이프 코드를 고치고, 렌더링 엔진 등 핵심 모듈들을 재작성하면서 2002년 모질라 1.0 릴리즈, 그리고 2004년 모질라 파이어폭스 릴리즈 등이 이루어질 때까지 매우 오랜 기간을 수많은 시행착오를 겪으면서 지금의 상태에 이르게 되었다고 합니다.

그리고 2006년 현재... 모질라 재단은 초기 AOL 등의 기부와, 검색엔진들과의 전략적 제휴 프로그램 등을 통해 재정적으로 안정화가 이루어지면서 풀타임 스탭들을 고용하여 계속 개발 작업을 진행하고 있고 최근에는 모질라 닷컴도 설립되어 활동 영역이 확대되고 있습니다.

처음 넷스케이프가 모질라를 오픈소스화하기로 했을 때 지금과 같은 성공을 예측한 사람은 많지 않았을 것입니다. 저 역시 개인적으로는 1998년 이후 몇년 동안 모질라 얘기가 거의 나오지 않는 것을 보고 모질라 프로젝트가 죽었다고 생각해 왔었으니까요. 모질라는 처음에 릴리즈되었던 코드 사이즈나 프로그램의 복잡도 등 거의 모든 면에서 매우 관리하고 개발하기에 어려움이 큰 프로젝트였음이 분명한데, 오랜 시간 동안 잘 관리되어 지금의 상태에 이른 것을 생각해 보면서 프로젝트 관리자의 능력과 중요성에 대해서도 다시한번 생각해 보는 계기가 되었습니다.

댓글

hey의 이미지

번역판이 나오면 저도 읽고싶군요. ^^ 재밌겠습니다.
폴 그래엄의 분류에 따르면 "위대한 해커(영웅 해커)"는 종종 있어도, "위대한 관리자"들에 대한 이야기는 잘 알려지지 않은 것 같아요. 우리 업계에 "잘 관리된 프로젝트"라고 불릴만한 것이 거의 없거나 대부분 업계 비밀이기 때문일지도 모르겠습니다.

전 위대한 해커가 아니기 때문에 거기에 관심이 많아요. 위대하지 않은 사람들이 모여서 위대한 업적을 이루는 일에 말이죠.

May the F/OSS be with you..



----------------------------
May the F/OSS be with you..


iolo의 이미지

위대한(?) 관리자에 대한 책도 있습니다.
지금은 절판됐지만.. "싸우는 프로그래머"라는 기괴한 번역제목(원제: Show Stoppers)으로 외면 받았던, 데이빗 커틀러에 대한 책이지요.
군대시절 휴가나와서 읽었는데... 꽤 잼있었어요.
커틀러가 빌드를 망가뜨린 개발자의 방문을 발로 걷어차서 뽀개 놓았는데, 그 개발자가 커틀러에게 그 문짝을 생일 선물로 줬다나~ 머래나~

----
the smile has left your eyes...

----
the smile has left your eyes...

keizie의 이미지

* http://kldp.org/node/24380
* http://kldp.org/node/49799

가 첫째 둘째로 나오더군요. -_-;

lacovnk의 이미지

어디선가, "코드를 재작성하는 유혹"을 뿌리치지 못하고 재작성하느라 시간을 많이 쓴 프로젝트의 예로 모질라를 든 것을 보았습니다. 혹시 앞뒤 사정을 알고 계신 분이 있나요? :)

hey의 이미지

조엘이 한 말이죠, 그 글 때문에 차니님의 미움을 많이 받았습니다. ^_^

May the F/OSS be with you..



----------------------------
May the F/OSS be with you..


댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.