Samba 오픈 소스 파일 공유 소프트웨어의 제작자 Andrew Tridgell이 이 소프트웨어를 만들게 된 과정과 자유 소프트웨어 개발의 힘을 설명합니다.
이 ZDNet Australia 특별 보고서에서 오픈 소스 파일 공유 소프트웨어 Samba의 제작자 Andrew Tridgell은 자신이 어떻게 이 소프트웨어를 작성하게 되었는지 설명합니다. 이 소프트웨어는 그에게 2003년 ICT 부문에서 Bulletin 잡지의 Smartest 100 상을 안겨주었습니다.

저는 이론물리학 우등 학위를 위해 제안된 간섭계 기반 중력파 관측소의 컴퓨터 시뮬레이션을 만들었습니다. 그것은 무척 재미있는 일이었습니다. [편집자 주: 어떤 사람들에게는 그랬을지도 모릅니다] 하지만 박사 과정에서는 조금 다른 일을 하고 싶었습니다. 그래서 이리저리 알아본 끝에 Australian National University (ANU)의 컴퓨터 과학 연구소에서 자동 음성 인식을 공부하게 되었습니다. 연구에서는 흔히 그렇듯이, 제 작업에서 나온 정말 참신한 아이디어들은 원래 프로젝트와는 한참 동떨어져 있었습니다. 그래서 몇 년 뒤에는 제 연구가 향하는 방향을 반영하기 위해 주제를 바꾸게 되었습니다. 제 논문은 데이터를 효율적으로 정렬하고 전송하는 방법에 관한 것이었으며, 아마 가장 잘 알려진 성과는 파일을 효율적으로 원격 갱신하기 위한 'rsync 알고리즘'의 개발일 것입니다.
저는 이 알고리즘의 자유 구현체를 rsync라는 오픈 소스 애플리케이션으로 공개했습니다. 특히 UNIX 공동체에서 이것이 매우 널리 쓰이게 되었다는 사실은 제게 엄청난 기쁨을 주었습니다.
Samba가 시작된 방식은 소프트웨어 공학에서 미루기의 힘을 보여 주는 증거입니다. 1991년, 저는 음성 인식 분야의 박사 과정을 밟고 있었는데 Digital의 "Wind-X"(나중에 "Excursion"으로 이름이 바뀜)라는 프로그램의 베타 테스트 기회가 생겼습니다. 많은 박사 과정 학생처럼 저는 눈앞에 나타난 어떤 딴짓에도 기꺼이 빠져들었습니다. 그래서 베타 테스트 프로그램에 등록하고 Wind-X를 평가하기 시작했습니다. 이것은 Unix 서버의 X-Windows 애플리케이션을 Windows PC에 표시할 수 있게 해 주었습니다.
당시 저는 Windows 데스크톱과 학과의 Sun4 서버 사이에서 파일을 공유하기 위해 PC-NFS라는 프로그램을 사용하고 있었습니다. 1991년에 Windows로 네트워킹을 해 보셨다면 운영체제가 제공하는 단일 스택을 쓰는 대신, 각 공급업체가 저마다 TCP/IP 구현체를 갖고 있었다는 것을 기억하실 것입니다. PC-NFS와 Wind-X도 예외가 아니었습니다. 즉, 둘은 함께 존재할 수 없었고, 그 결과 Wind-X를 테스트하는 동안에는 더 이상 Windows와 Sun Unix 서버 사이에서 파일을 공유할 수 없었습니다.
Wind-X에는 자체 파일 공유 시스템인 "Pathworks"가 포함되어 있다는 것을 알게 되었습니다. 하지만 그것은 Sun 서버에서는 작동하지 않았고 Digital의 자체 운영체제에서만 작동했습니다. 당시에는 Ultrix와 VMS였습니다. Pathworks가 사용하는 프로토콜은 그리 어렵지 않게 알아낼 수 있을 것이라 생각했습니다. 그래서 Wind-X를 평가하면서도 Sun 서버를 계속 사용할 수 있도록, 우리 Sun 서버용 Pathworks 호환 서버를 만들기 시작했습니다. 저는 정말로 미루기라는 벌레에 심하게 물린 상태였습니다!
Windows 데스크톱과 로컬 Ultrix Pathworks 서버 사이를 오가는 데이터를 대량으로 캡처한 뒤, 프로토콜을 알아내기 위해 몇 시간이고 들여다봤습니다. 그 뒤 밤샘 프로그래밍을 일주일 정도 한 끝에 아주 조잡한 최초 버전의 "SunOS용 Pathworks 서버"를 완성했습니다. 완전히 영감이 떠오르지 않는 순간, 저는 그것을 "server 0.1"이라고 불렀습니다. 정말 좋은 코드라고 할 수 없었고, 당연히 신뢰성도 높지 않았습니다. 하지만 중요한 것은 제가 그것을 세상에 무료로 공개하기로 결정했다는 점입니다. 그것이 오늘날 Samba로 알려진 것의 원래 토대였습니다.
제가 Linux를 처음 들은 것은 Dan Shearer가 1992년 11월에 제게 편지를 보냈을 때입니다. 그는 제 자유 "Pathworks 서버" 프로그램에 관해 물었고, Linux 토론 그룹에서 제 프로그램에 관심을 보인 사람이 있었다고 알려 주었습니다. 저는 그에게 Linux에 관해 물었고, 곧 완전히 빠져들었습니다. 제 개인 PC에서 내부 구조를 직접 만져 볼 수 있는 완전한 운영체제가 있었던 것입니다. 저는 그때부터 줄곧 열성적인 Linux 사용자이자 개발자였습니다.
처음 "server"를 무료로 공개했을 때 저는 GPL을 사용하지 않았습니다. 대신 "이 소프트웨어는 사용자의 책임하에 사용하십시오"라는 간단한 문구를 덧붙이고 그뿐이었습니다. 어차피 누군가 이것을 사용하고 싶어 하리라고는 전혀 기대하지 않았기에, 라이선스 조건은 중요해 보이지 않았습니다.
Linux를 사용하기 시작한 뒤, 이것이 GNU GPL이라는 훨씬 더 복잡한 라이선스로 공개되었다는 것을 알게 되었습니다. 처음에는 제대로 이해하지 못했지만, 곧 자유 소프트웨어 개발에 얼마나 좋은지 깨닫게 되었습니다. GPL을 이해하기 시작하자 Samba의 라이선스를 그것으로 바꾸었습니다. 그렇게 하지 않았다면 Samba가 지금과 같은 성공을 누리지는 못했을 것이라고 저는 거의 확신합니다.
제가 1991년 크리스마스 무렵에 작성한 첫 코드 조각은 제대로 된 네트워킹 소프트웨어에 필요한 세심한 주의 없이 만들어진, 정말 형편없는 프로그래밍 결과물이었습니다. Samba가 성공할 수 있었던 것은 자유 소프트웨어 운동과 함께하는 공동체 개발 과정 덕분이었습니다. 점점 늘어나는 사용자들로부터 코드 기여, 건설적인 비판, 버그 보고, 격려를 받으면서 저는 Samba를 매우 조잡한 시작점에서 전 세계 거의 모든 대기업이 사용하는 무언가로 발전시킬 수 있었습니다.
Samba가 존재해 온 기간 동안 본질적으로 같은 일을 하는 여러 독점 소프트웨어 제품이 다양한 회사에서 개발되었습니다. 그중에는 자금력이 풍부하고 경험 많은 개발자가 많은 회사도 있었습니다. 독점 제품들은 결코 같은 성공을 누리지 못했으며, 그 이유는 단지 가격 때문만은 아닙니다. 오픈 소스 개발은 Samba를 고품질에 기능이 풍부한 소프트웨어로 만들었습니다. 단순히 "저렴해서" 좋은 선택인 것이 아닙니다.
자유 소프트웨어와 소스 코드 공유는 비교적 새로운 독점 소프트웨어라는 개념보다 더 긴 역사를 지니고 있습니다. 많은 사람은 컴퓨팅 시대가 시작되었을 때 학계가 학술지와 과학적 협업을 통해 아이디어를 공유하듯 다른 사람과 소스 코드를 공유하는 것이 그저 자연스러운 일로 여겨졌다는 사실을 알지 못합니다.
불행히도 일부 사람들은 소프트웨어를 "쌓아두는" 방식으로 부를 축적할 수 있다는 것을 발견했고, 독점 소프트웨어 시대가 탄생했습니다. 대부분의 사람이 생각하지 않는 것은 이 새로운 소프트웨어 개발 방식이 사회에 남긴 막대한 비용입니다. 이제 수많은 프로그래머가 설계가 좋지 않은 소프트웨어 조각들을 다시 만들고 있으며, 그 대부분은 결국 버려져 영원히 사라질 것입니다.
Richard Stallman 같은 사람들의 선구적인 노력 덕분에 자유 소프트웨어 공동체는 소스 코드를 공유하는 것이 표준이고 부를 축적하는 일은 덜 중요한, 오래된 소프트웨어 개발 방식에 다시 생명을 불어넣고 있습니다. 그 결과 인터넷의 기본 구성 요소를 이루고 컴퓨팅의 거의 모든 영역에 닿는 소프트웨어 집합이 만들어졌습니다.
좋은 점은 저 같은 많은 프로그래머가 자유 소프트웨어를 개발하면서도 여전히 충분히 좋은 생계를 유지할 수 있다는 것입니다. 자유 소프트웨어가 가져다주는 이점을 이해하고 소프트웨어를 더 개선하는 데 최고 수준의 보수를 지불할 의향이 있는 회사가 많기 때문입니다. 독점 개발 방식 외에는 아무것도 생각하려 하지 않는 회사를 제외하면, 이로써 거의 모두가 이득을 볼 수 있습니다.
Samba의 첫 버전은 상업적으로 판매할 만큼 좋지 않았습니다. 또한 자유 소프트웨어 공동체의 도움과 GNU 프로젝트가 제공한 훌륭한 개발 도구 모음 없이는 그것을 지금의 수준에 가깝게 발전시킬 수 없었을 것입니다. 가능했더라도 그러고 싶지 않았을 것입니다. 공동체 기반 개발이 훨씬 더 만족스럽기 때문입니다.
저는 올해 1월 California주 San Jose의 Almaden 연구소에서 연구원으로 IBM에 합류했으며, Canberra에서 원격으로 일하고 있습니다. 그들을 위해 하는 일은 여러 면에서 지난 몇 년간 다른 여러 회사에서 해 온 일과 꽤 비슷합니다. 저는 Samba의 개선을 돕습니다. IBM에서 맡은 일의 큰 차이는 연구 중심 환경 덕분에 다음 달 제품 마감일을 맞추는 문제를 그다지 걱정하지 않고도 훨씬 더 야심 찬 프로젝트를 맡을 수 있다는 점입니다.
제가 함께 일하는 IBM Canberra의 그룹은 학계를 떠난 뒤 첫 직장에서 함께 일했던 사람들과 거의 정확히 같은 그룹입니다. 단지 이제 우리는 모두 다른 회사에서 일할 뿐입니다. 1999년에 저는 San Francisco에 기반을 둔 Linuxcare라는 작은 신생 회사에 합류했고, Canberra에서 정말 재능 있는 Linux 개발자 그룹을 만드는 데 도움을 주었습니다. 우리는 그 그룹을 "OzLabs"라고 불렀습니다. 그 그룹의 거의 모든 사람은 이제 IBM에서 일하며, 그곳은 일하기에 환상적인 곳입니다.
저는 다른 프로그래머와 원격으로 일하는 데 매우 익숙합니다. Samba 팀은 전 세계에 흩어져 있고 많아야 1년에 한두 번 만납니다. 그래서 지구 반대편에 있는 누군가와 프로그래밍 프로젝트를 진행하는 일이 제게는 완전히 자연스럽습니다.
현재 저는 Samba 버전 4를 작업하고 있습니다. 이것은 개발 초기 시절부터 남아 있는 Samba의 부실한 구조 일부를 정리하기 위한 상당히 대규모의 재작성입니다. 또한 델타 압축과 관련된 여러 비 Samba 프로젝트, 예를 들어 rsync, 그리고 요즘 모든 사람의 전자우편을 범람시키는 SPAM의 물결에 맞서기 위한 새로운 알고리즘도 작업하고 있습니다. 할 일은 언제나 많습니다!