유닉스 BSD 4.3이 1위…혁신의 ‘디딤돌’

2, 3위는 IBM의 시스템 R과 게놈연구소의 유전자 배열 소프트웨어가 차지

지금까지 개발된 소프트웨어 프로그램 중에서 가장 결정적이며 반론의 여지가 없고 불변의 가치를 갖는 소프트웨어에는 과연 어떤 것들이 있을까? 두말할 필요없이 역사상 가장 위대한 소프웨어 1위는 세계에 가장 큰 영향을 끼친 유닉스 BSD 4.3이다. 물론 상업적으로 더 큰 성공을 거둔 다른 유닉스 버전도 있다. 하지만 BSD 시스템이 계속 누적되어 발전되어 온 과정을 감안해볼 때, BSD 4.3이 가장 중요한 혁신의 '디딤돌'이 되었다는 것을 알 수 있다. 2위와 3위는 IBM의 시스템 R과 게놈연구소의 유전자 배열 소프트웨어가 차지했다. <편집자>

혈기왕성한 대부분의 기술자들은 무엇이 가장 위대한 소프트웨어라고 생각하는가에 대한 질문에 즉각 답변을 내놓겠지만 진정 훌륭한 소프트웨어가 무엇인지 시간을 두고 평가한다면 선택하기가 그리 쉽지만은 않을 것이다.
필자가 알고 있는 가장 중요한 프로그램 중의 하나는 정식 소프트웨어가 아니다. 2차 세계대전 기간에 독일의 텔레타이프 암호를 해독하는데 사용되었던 콜로서스(Colossus)가 개발되기 전에는 연합군이 메시지를 해독하는데 6시간 이상 걸렸으며 그 의미를 파악하고 결론에 도달한 다음 군대에 명령을 내리는데 하루 이상이 걸렸었다. 콜로서스를 통해, 연합군은 독일 군대의 영국 해협에서의 움직임을 포착할 수가 있었고 드와이트 아이젠하워는 노르망디 상륙작전을 감행할 수 있었다.
붐(Boolean) 연산 실행을 위해 1944년에 개발된 콜로서스는 1초에 약 5,000자를 종이 테이프를 통해 공급할 수 있었다. 논리는 문자 그대로 기계에 적용되었으며, 아마도 이 콜로서스가 역사상 가장 위대한 소프트웨어가 아닐까 싶다.

비약적이고 탁월해야 하며 채택되어야
그렇다면, 어디에서부터 출발해야 할까? 먼저 소프트웨어를 위대하게 만드는 요인이 무엇인지 기준을 정하는 것이 좋을 것이다. 뛰어난 프로그래밍은 역사적인 상황 및 배경과 관련해서만 판단될 수 있다. 비약적이어야 하는 것은 물론 기술적으로 탁월해야 하며 이전에는 불가능했던 것을 실행해야 한다. 또한 현실 세계에서 채택되어야 한다. 콜로서스는 오랫동안 지속되어온 기계적인 프로세스를 전자식으로 바꾸어놓았으며(초기 컴퓨터 형태), 암호화된 텔레타이프의 해독을 가속화함으로써 매우 귀중한 서비스를 제공했다. 콜로서스가 역사를 만든 것이다.
위대한 프로그래밍의 또 다른 대표적인 사례는 IBM의 360 시스템이다. 이 소프트웨어는 1964년에 최초의 범용 컴퓨터 운영체제로 개발되었다. 현재 우리가 소프트웨어에 대해 사실로서 받아들이고 있는 것의 상당 부분 즉, 간단한 디자인이 복잡한 것보다 낫다는 것과 여러 집단의 프로그래머들보다는 몇몇의 숙련된 프로그래머들이 성취력이 탁월하다는 생각은 프레데릭 브룩스의 저서인 'The Mythical Man-Month'에 잘 나타나있다. 브룩스는 거대한 소프트웨어 프로젝트가 시작되기 전에 얼마나 많은 일들이 잘못되고 있는지 이미 알고 있었다. 그는 실제로 IBM이 실행하던 프로젝트를 전부 혹평했으며, 잠재적인 실패 요인이 너무나 많다고 비난했다. 이것이 IBM이 그를 책임자로 지목한 이유가 아닐까 생각한다.
IBM의 판단은 현명했다. 결과적으로, 다양한 애플리케이션을 동시에 구동할 수 있는 최초의 컴퓨터가 등장하게 되었으니 말이다. 이는 IBM의 메인프레임의 모태가 되었으며, 370 시리즈와 z시리즈로 진화하는데 시초가 되었다. 지금까지도 그러한 시스템은 여전히 브룩스의 360 운영체제와 호환되고 있다. 이 시스템이 위대한 소프트웨어로 지목 받는 또 다른 이유는 '다리'를 가졌기 때문이다. 쉽게 폐기처분 당하지 않는다.

IBM 메인프레임의 모태가 된 IBM 360
IBM 360이 역사상 가장 위대한 소프트웨어 중의 하나라는 것에 모든 사람들이 동의하고 있다. 위대한 것은 오랜 역사적인 관점에서 볼 때 평가하기가 쉽다. 하지만 현재로 다가올수록 가장 위대한 소프트웨어를 지목하기가 어려워진다.
하지만 콜로서스부터 현재에 이르기까지 개발된 소프트웨어 중 가장 위대한 것들을 꼽아보기로 하자. 필자는 소프트웨어 전문가인 제임스 럼버를 비롯해, 미국 컴퓨터학회(ACM)의 스튜어트 펠드먼 의장, 벤처 캐피털리스트인 앤 윈블라드와 게리 모겐슬러, 웹 사이트 프로그래밍 소프트웨어(PHP 3.0) 저자인 지브 수라스키와 앤디 굿맨즈, 그리고 내 동생 월리의 조언을 받았다. 하지만 소프트웨어의 목록은 필자가 작성한 것이다.
필자는 MIT 연구진에 의해 개발된 아폴로 우주선의 유도 시스템에 언제나 놀라움을 금치 못하고 있다. 1969년에, 이 시스템은 아폴로 11호를 달에 보냈으며, 달 착륙선을 분리시킨 다음 달 표면에 착륙시켰으며, 세 명의 우주비행사들을 지구로 귀환시켰다. 그것도 레이시온(Raytheon) 컴퓨터에 탑재된 아주 극소량의 메모리(8Kb를 실행)만을 가지고 기능을 발휘한 것이다. 당시의 메모리로는 현재 프린터 드라이버 실행도 어렵다. 또한 왕복선을 다시 진입시킬 때 시스템 오류 발생의 경우 재부팅하기에도 시간이 충분하지 않았다. 당시에는 물론 윈도우도 이용할 수가 없었다.

스프레드시트의 진가를 발휘한 것은 MS 엑셀
아폴로 유도 시스템은 아마도 기술 전문가들에게는 '지루한' 소프트웨어처럼 보일 것이다. 훨씬 더 복잡한 내비게이션 시스템이 현재 사용되고 있으니 말이다. 이 시스템은 잘 알려진 알고리즘을 토대로 하고 있지만 필자에게는 여전히 로켓 과학과도 같다. 위대한 소프트웨어는 잘못될 수 있는 모든 것들을 올바르게 인도한다는 점에서 감탄사가 절로 나오게 한다.
아폴로 우주왕복선 시스템이 비교적 단순해서 동의하기가 어렵다는 사람들이 있다면 그들은 훨씬 복잡한 시스템이어야만 가치가 있다는 것인지 궁금하다. 한 예를 들어보자. BAE Automated Systems 소프트웨어의 경우 덴버 국제 공항에서 화물을 처리하도록 개발되었다. 하지만 1993년 10월 첫 서비스 개시일에 많은 화물들을 분실하거나 잘못된 방향으로 보냈으며, 일부는 컨베이어로 보내졌다. 그 결과 덴버시는 공항 개장을 16개월이나 늦춰야만 했다. 공항 개장의 지연으로 인해 덴버시가 입은 피해 금액은 하루에 110만 달러에 달했다.
이처럼 복잡한 소프트웨어의 실패 사례는 얼마든지 있다. 이미 우리의 삶이 그러한 소프트웨어의 실패로 점철되어 있다고 해도 과언이 아니다. 미국 연방항공국(FAA)은 효과적인 항공 교통 관제 시스템 구축을 위해 수십억 달러를 한번도 아닌 세 번이나 투자했다. 이미 구축해놓은 것의 절반 이상을 뒤엎었는데, 금액으로 환산하면 1억4,400만 달러에 해당되며, 여전히 이따금씩 정지되거나 고장을 일으키고 있다. 위대한 소프트웨어? 필자는 아폴로 유도 시스템을 고집하겠다. 소프트웨어가 성공작으로 평가받기 위해서는 개발 목적을 충실히 이행해야 한다.
이러한 자명한 이치는 최초의 스프레드시트 소프트웨어인 비지칼크(VisiCalc)에도 적용된다. 비지칼크는 개인용 컴퓨팅의 파워를 입증했기 때문에 위대하다는 평가를 받을만하다. 이 소프트웨어는 기업들에게 방대한 양의 데이터를 분석하고 다룰 수 있는 능력을 제공했다. 하지만 비지칼크는 그 비약적인 개념에도 불구하고 그 자체로서는 위대한 소프트웨어가 아니었다. 오류투성이에다 투박하며 사용자가 원하는 많은 일들을 처리할 수가 없었다. 스프레드시트의 진가를 발휘한 것은 비지칼크도, 로터스 1-2-3도 아닌 마이크소프트 엑셀이다. 엑셀은 스프레드시트의 파워를 확장했으며 기업에게 방대한 계산 툴을 제공해주었다. 엑셀 스프레드시트는 현재까지 확장판으로 계속 등장하고 있으며 거의 모든 사람들이 사용하고 있다.

AI소프트웨어는 위대한 것과는 거리있어
인공지능(AI) 분야에는 당연히 위대한 소프트웨어들이 대거 포진하고 있을 가능성이 높을 것이다. 한때 AI는 사람들과 대화를 나누고 우리가 모르는 것을 가르쳐주며 이성도 있고 끝없이 데이터를 처리할 수 있는, 인간과 유사한 지능을 가져야 하는 쪽으로 개발되었다. 현재 AI의 결과는 어떤가? 기교는 잔뜩 부렸지만 지능은 충분하지 않다.
AI 연구에서 파생된 신경망(Neural nets)은 전세계에서 사용되고 있는 자동 지문 인식 시스템을 만들어냈다. 이것은 훌륭한 패턴 비교라 할 수 있지만 실제로 지능이 있다고 판단할 수는 없다.
지금까지 개발된 AI 애플리케이션 중에서 최초의 진정한 비약적인 소프트웨어는 추론엔진(inference engine)이다. 추론엔진은 사용자가 입력하는 사실이나 가설을 바탕으로 새로운 사실이나 가설을 도출하거나 원인의 진단을 내려주는 시스템이다. 이러한 컴퓨터는 상황을 비교해 판단을 내릴 수 있다. 예를 들어 환자의 체온이 38도에 육박할 경우, 입력된 규칙에 따라 세균에 의한 감염이 원인이라고 판단할 수 있다. 그 중에서도 마이신(Mycin) 의료 진단 시스템은 징후에 따라 환자의 세균 감염을 정확히 판명할 수 있다. 비전문의들보다 훨씬 낫다. 하지만 실제 사용되고 있는 사례는 없다. 기계의 오작동이나 오진이 발생할 경우 법적인 소송에 휘말릴 가능성이 높기 때문이다.
필자가 좋아하는 AI 패키지는 IBM의 딥블루(Deep Blue) 프로그램으로, 체스 세계 챔피언 개리 카스파로프와의 대국을 승리로 이끈 소프트웨어이다. 카스파로프는 딥블루가 뒤에서 사람들의 도움을 받았다고 불평했는데, 그것은 사실이었다. IBM 프로그래머들은 게임 사이사이에 딥블루를 수정해 카스파로프의 게임 스타일에 적응하도록 바꾸었다. 이 때문에 필자는 딥블루를 가장 위대한 소프트웨어의 후보에서 제외시켰다. IBM 프로그래머들의 행위는 규칙에 위반되지는 않았지만 그렇게 하지 말았어야 했다. 딥블루와는 달리 카스파로프는 자기의 두뇌회로를 '수정'할 수가 없었기 때문에 공정하지 못한 게임이었다.
AI 소프트웨어는 매우 인상적이지만 가장 위대한 것과는 다소 거리가 있다.

웹은 위대한 소프트웨어 목록에서 제외
필자에게 브라우저는 벙어리와 같은 '장애를 가진' 단말처럼 보인다. 연구소 사서인 동생 월리는 모자이크(Mosaic)가 최초의 그래픽 브라우저로, 웹을 기술 분야에서 인간의 실생활로 옮겨놓은 것에 큰 의미가 있다는 데에 높은 점수를 주어야 한다고 필자를 납득시켰다. 모자이크의 '조상'인 고퍼(Gopher)의 경우는 아슬아슬하게 후보에서 제외되었으며, 버튼을 클릭해 웹 페이지의 앞 뒤 페이지로 이동할 수 있게 한 최초의 브라우저인 ViolaWWW 역시 간발의 차이로 제외되었다.
모자이크는 주소창과 마우스 기반의 포인트 및 클릭, 멀티미디어 파일 디스플레이, 하이퍼링크 등을 창으로 결합해 클라이언트가 인터넷의 정보 서버와 완벽하게 연계할 수 있도록 해주었다. 모자이크는 상단의 툴 바를 비롯해 풀 다운 메뉴 방식을 사용해 넷스케이프 네비게이터와 인터넷 익스플로러, 파이어폭스 등의 '모태'가 되었다(익스플로러의 창에서 상단 메뉴 바에 있는 도움말(H)을 클릭해보라. 그런 다음에 인터넷 익스플로러 정보(A)를 클릭하면 모자이크를 토대로 하고 있다는 정보를 확인할 수 있을 것이다). 기술적인 탁월함은 부족할지 몰라도 새로운 장을 열어주었다는 점에서 높은 평가를 받을만하다.
월드와이드웹(WWW) 자체에도 똑같이 말할 수 있을까? 팀 버너스리가 창시한 WWW은 하이퍼텍스트 연결, 보편적인 리소스 로케이터, HTML 페이지 디스플레이 등을 개발해 전세계에 매우 큰 영향을 미쳤다. 하지만 WWW은 TCP/IP 네트워크 프로토콜과 BIND(Berkeley Internet Domain) 도메인 네임 서버(DNS)에 의존하는 기존의 아이디어를 그대로 차용한 것이다. 따라서 웹은 위대한 소프트웨어 목록에서 제외되었다. 하지만 대중화의 기반을 마련했다는 점은 부인할 수가 없는 사실이다.

구글, 검색엔진 분야에서 단연 1위
조금 더 현대로 오면, 구글이 위대한 소프트웨어의 한 자리를 차지하게 될 것이다. 구글보다 먼저 개발된 라이코스를 비롯해 디지털 이큅먼트(Digital Equipment)의 알타비스타나 다른 검색 엔진들도 있다. 하지만 구글은 검색 결과에 페이지 순위를 매기는 구조를 채택해 검색 엔진을 통해 생성된 수많은 페이지를 활용 빈도에 따라 계층적인 분류를 제공했다. 모겐텔러 벤처스(Morgenthaler Ventures)의 모겐텔러는 "논문의 가치는 그 논문이 다른 논문과 각주에 얼마나 많이 언급되었는가에 따라 결정된다. 구글은 이를 웹에 적용시켰다"고 말했다. 구글은 또한 귀중한 정보 구조의 툴을 수많은 사용자들로 이동시켰다. 이 때문에 위대한 소프트웨어로 선정되었다.
필자는 썬의 자바 언어가 이미 존재하던 전통적인 C 언어의 파생 언어 정도로만 생각했었다. 하지만 자세하게 알아본 결과 내 생각이 틀렸다는 것을 알게 되었다. 자바는 클라이언트에서 가상머신(VM)을 구현해 코드가 네트워크를 통해 이동하고 PC가 머신 자체에 대해 잘 모르더라도 목적지인 PC에서 구동할 수 있도록 해준다. 자바는 미리 컴파일된 소스 코드의 형태인 중간 단계의 바이트 코드의 사용을 정립해 클라이언트에 도착한 것처럼 머신 코드를 해석한다. 이를 통해 휴대가 가능해지고 성능이 향상될 수 있다. 자바는 외부에서 받은 프로그램을 보호 영역인 샌드박스에 가둔 뒤 작동시켜 프로그램의 폭주나 바이러스의 침투로부터 방어한다.
이러한 네트워크 지향적인 기능으로 인해, 자바는 초기 인터넷 시대에 기업에서 적극 도입될 수 있었다. 마이크로소프트는 버추얼 스튜디오 닷넷을 개발할 때 자바를 상당수 채용했다. 자바는 지속적으로 확장되어 왔으며, 가장 위대한 소프트웨어로 꼽히는데 손색이 없을 것이다.

객체 지향적인 사용자 인터페이스 적용한 맥 OS
DTP(desktop publishing)와 같이 보다 사용자에 초점을 맞춘 소프트웨어는 어떨까? DTP는 컴퓨터나 레이저 프린터 내부에서 디지털로 이미지를 생성하는 어도비 시스템즈의 포스트스크립트(PostScript)에 의해 구현되었다. 어도비는 팔로알토에 위치한 제록스의 연구 센터(PARC)에서 개발된 전문가용 식자(typesetting) 시스템을 단순화해 포스트스크립트에서 원활하게 구동하도록 개발했다. 이를 통해 DTP가 보편화될 수 있었다. 훌륭한 업적을 이루긴 했지만 위대한 소프트웨어라 부르기엔 다소 미흡하다.
제록스의 연구센터에 대해 좀더 알아보자. 애플의 매킨토시는 제록스의 PARC에서 개발된 알토 시스템을 토대로 개발되었다. 알토는 최초의 창으로 된 인터페이스와 최초의 마우스, 최초의 통합된 그래픽 사용자 인터페이스가 탑재되어 있었다. 하지만 시장에 출시되지는 않았다. 이후 애플이 다시 설계한 것이 시장에 큰 영향을 미쳤다. 필자는 뉴욕의 컴퓨터 상점에서 매킨토시를 처음 보았을 때의 느낌을 결코 잊을 수 없을 것이다. '로켓 과학'과 같은 느낌을 받았으며, 그러한 성능은 과거에 한번도 본 적이 없었으며 믿을 수가 없었다. 맥은 객체 지향적인 컴퓨팅 능력을 사용자 인터페이스에 적용시켰으며 모든 이들을 매료시켰다. 최초의 맥 운영체제를 위대한 소프트웨어로 선정할 수밖에 없는 이유이다.

모리스 웜도 위대한 소프트웨어
기술은 일상 생활에 스며들어 많은 것들을 바꾸어놓고 있다. 다음 후보는 싫어하고 짜증스러운 소프트웨어이지만 위대한 소프트웨어로 선정하지 않을 수 없는 것이다. 1988년에 모리스(Morris) 웜은 인터넷에 침투해 대학 서버를 감염시키고 업무를 중단시켰다. 웜 제작자인 코넬(Cornell) 대학생인 로버트 모리스는 자신이 그 웜을 만들었기 때문에 인터넷이 얼마나 큰지를 측정할 수 있지 않았냐고 반문한다. 그것은 맞는 얘기이긴 하다.
대부분의 소프트웨어와 마찬가지로, 모리스 웜은 이론적으로 하나 또는 두 개의 목표 환경에서만 구동했지만 네트워크에 새로운 개념을 등장시켰다. 웜은 센드메일(Sendmail)의 버퍼 부하의 취약점을 공략해 서버에서 서버로 감염되면서 자체적으로 확산되었다. 당시에는 유닉스와 센드메일, 핑거(Finger)나 그 밖의 시스템에 얼마나 많은 백도어가 있고 시스템간 방어 수단의 차이가 어느 정도인지 확인할 수가 없었다. 모리스 웜은 또한 자가 복제를 하면서 서버로의 확산이 가속화되었다.
소프트웨어의 일종인 이러한 침입자는 비약적인 것이었으며, 인터넷의 반사회적인 측면을 부각시킴으로써 세간의 이목을 집중시켰다. 전세계가 네트워크를 통해 연결되었지만 한 순간도 주의를 게을리해서는 안 되는 계기를 마련한 것이 바로 웜의 출현이었다. 모리스에게 경의를 보낸다. 모리스 웜은 위대한 소프트웨어로 선정되었다.
아메리칸 에어라인(American Airlines)의 사브르(Sabre) 시스템은 소프트웨어가 비즈니스의 전술적인 수단에서 전략적인 수단으로 진화할 수 있음을 증명한 위대한 소프트웨어이다. 사브르는 고객의 여행에 대한 요구 사항과 여행사에서 이용 가능한 항공권을 비교해볼 수 있는 기능을 갖고 있었다. 이러한 항공권 목록에는 경쟁사의 항공권도 포함되어 있었지만 아메리칸 에어라인의 항공권은 경쟁사보다 저렴하게 구성되어 있었다. 이 시스템은 아메리칸 에어라인과 여행사의 시간과 비용을 절감해주었으며, 시장 점유율을 높여주었다. 아메리칸 에어라인은 검색 화면에서 자사를 제일 앞쪽에 보이게 함으로써 고객의 선택 빈도를 높였다. 아메리칸 에어라인은 이를 '스크린의 과학'이라고 불렀지만 미국 정부는 이를 독점행위로 규정하고 반독점법 마련에 나선 계기가 되었다.

위대한 소프트웨어 TOP 3
이제 1위부터 12위까지의 후보들을 순위별로 정리해볼 차례이다. 가장 위대한 소프트웨어를 역순으로 4위까지 선정해보면 다음과 같다.

12. 모리스 웜
11. 구글 검색 순위
10. 아폴로 유도 시스템
9. 엑셀 스프레드시트
8. 매킨토시 OS
7. 사브르 시스템
6. 모자이크 브라우저
5. 자바 언어
4. IBM 시스템 360 OS
이제 1위~3위까지의 소프트웨어를 선정할 차례이다.
3위는 게놈연구소의 유전자 배열 소프트웨어가 차지했다. 모겐텔러는 "거대한 소프트웨어 시스템은 아니지만 기술적인 측면에서만 본다면 10점 만점에 10점을 받을 것"이라고 말했다. 게놈연구소의 배열 시스템은 DNA가 2만 개의 인간의 유전자로 구성되어 있다는 것을 규명했으며, 인간의 유전자와 배열 분석을 파악하는 엄청난 발전을 거두었다. 모겐텔러는 "이 소프트웨어는 유전학을 10년 이상 앞당겼다"고 평가했다. 이제 우리는 아프리카에서 인류의 진화 과정을 추적할 수 있는 툴을 갖게 되었다. 인간 게놈은 인종간 유전적인 차이가 어느 정도인지 밝혀주었다. 또한 이 소프트웨어는 질병의 원인과 유전적인 상관 관계도 규명해주었다. 유전자 배열 소프트웨어를 제외하고는 위대한 연구와 위대한 소프트웨어가 그처럼 긴밀하게 연결되어 있던 경우가 거의 없었다.

2위는 관계형DB인 IBM의 시스템R
2위로 선정된 소프트웨어는 데이터의 상관 관계를 제시한 관계형 데이터베이스인 IBM의 시스템 R이다. 1970년대에 에드거 코드는 수학의 집합론을 데이터 저장장치와 검색에 적용시켰다. 관련 인자들을 조합해 추상적인 개념을 도출해내는 것이다. 예를 들어, 파란색과 흰색, 빨강색의 조합은 프랑스 국기를 나타내는 색깔이 된다. 집합론을 사용하는 관계형 데이터베이스는 별도로 저장되거나 지정되지 않고도 관련 인자를 찾아낼 수 있다. 또한 특정 식별자만이 설정해놓은 규칙에 따라 즉석에서 모든 관련 요인을 새로 구성할 수도 있다.
시스템 R을 비롯해 그 뒤를 이어 개발된 DB2, 마이크로소프트 SQL 서버, 사이베이스, PostgreSQL, MySQL 등은 데이터의 상관 관계를 짚어내는데 탁월한 성과를 보이고 있다. 관계형 데이터베이스는 고객에 대한 데이터 집합을 저장하고 특정 고객의 쇼핑 형태를 알아내기 위해 다른 데이터 집합을 검색할 수 있다. 이러한 데이터는 수집되자마자 데이터베이스로 들어가며, 데이터베이스는 데이터의 숨겨진 부분에서 상관관계를 찾아낸다. 관계형 데이터베이스와 SQL 액세스 언어는 거의 불가능했던, 사람들의 생각을 읽어내는 기능을 구현했다는 평가를 받고 있다. 필자는 시스템 R이 구동하기에 매우 원활하며 확장성도 뛰어나고 수많은 데이터를 처리할 수 있는 유용성을 확보했다는 점에서 높은 점수를 주었다.

유닉스가 역사상 가장 위대한 최고의 소프트웨어
이제 '넘버원'을 밝힐 차례가 왔다. 역사상 가장 위대한 최고의 소프트웨어는 바로 유닉스이다.
벨 연구소는 유닉스 운영체제의 개발을 지원한다고 공공연히 알리고 있지만 후원금을 내본 적이 한 번도 없으며, 벨 연구소의 경영진들은 이러한 사실에 대해 전혀 알지도 못하고 있다. 벨 연구소는 운영체제에 대한 새로운 개념을 위해 멀틱스(Multics)라는 멀티벤더 프로젝트를 통해 개발자들을 장려했었다. 하지만 이 프로젝트가 유명무실해지자 벨 연구소에 참여했던 켄 톰슨은 개인용 멀틱스 버전을 개발하기로 결정했다고 펠드먼이 전했다(펠드먼은 AT&T 유닉스 프로젝트에서 서열 일곱번째 개발자였으며, 현재 미국 컴퓨터학회의 의장이다).
최고의 전설적인 소프트웨어인 유닉스는 자체적으로 생명력을 얻은 개개인의 소산물이다. 톰슨은 16 또는 32킬로바이트 메모리를 가진 DEC의 PDP7 미니컴퓨터에서 유닉스의 제1버전을 개발했다. 펠드먼은 "유닉스는 많은 제약 속에서 개발되었다"면서, "메모리도 없었고 CPU 파워도 없었다. 현재의 손목시계에 있는 메모리나 CPU가 그보다 많다는 사실에 놀라울 따름"이라고 말했다.
이후 운영체제 개발에서 톰슨은 메모리의 공간을 비워두기 위해 컴퓨터의 RAM에서 디스크로 블록 데이터나 페이지를 이동시켰다. 다시 필요하게 될 때에는 운영체제가 디스크로 이동해 메모리로 불러들인다. 이러한 방식을 통해, 적은 메모리를 가진 소형 컴퓨터에서 큰 운영체제도 구동이 가능하다. 그의 운영체제는 또한 여러 명이 사용할 수 있었다. 처음 개발 당시 한 명밖에는 사용할 수 없어 연산 시간이 오래 걸렸다. 이에 반해 톰슨의 Unics(Uniplexed Information and Computing System)은 두 명이 동시에 컴퓨터를 사용할 수 있었다.
컴퓨터 과학 연구 그룹(Computer Science Research Group)이 Unics의 소식을 듣고 차용하고 싶어했다. 이 그룹의 요청에 따라, 톰슨과 그의 동료인 데니스 리치는 시스템에 대한 텍스트 포맷을 추가해주기로 합의해 PDP 11/20이 탄생했다. 이러한 '거래'를 통해 유닉스 텍스트 프로세싱이 이루어지게 되었다. Unics가 Unix로 되었으며 C 언어로 다시 개발되어 AT&T에 의해 유닉스 시스템 III가 시장에 등장했다.
유닉스 시스템 III이 의심할 여지 없이 거의 가장 위대한 소프트웨어이긴 하지만 조금만 더 살펴보자.

인터페이스, 분산, 확장성면에서 BSD가 월등
시스템 III가 진보된 유닉스이긴 하지만 창으로 된 체계나 그래픽 사용자 인터페이스, 분산된 시스템 처리 방법 등 여러 가지 면에서 부족한 점이 많았다. IBM의 대형 컴퓨터 개발에 대한 부담을 덜어주기 위해, AT&T는 적은 비용으로 연구기관과 대학에서 유닉스를 이용할 수 있도록 했다. 일부에서는 인터넷을 통해 소프트웨어를 무료로 다운 받을 수 있게 되면서 오픈 소스 코드가 시작된 것으로 생각하고 있지만 이는 사실이 아니다. 오픈 소스는 유닉스의 초기 배포판에 근원을 두고 있다. 이러한 배포판의 하나가 버클리의 캘리포니아 대학의 버전으로, 한 연구원이 빌 조이에게 카피본을 보내달라고 요청했다. 이것이 최초의 오픈 소스 코드로, 디지털 파일이 아닌 자성 테이프 릴 형태였던 것으로 전해진다. 1977년 조이와 동료 대학원생이 버클리 소프트웨어 디스트리뷰션(BSD)라고 알려진 편집판을 발표했다.
유닉스는 코드를 분리하는 모듈로, 각각 하드웨어 시스템의 일부와 연관되도록 개발되었다. 이러한 특징은 IBM의 운영체제에 비해 개정하기가 훨씬 용이했다. 버클리 대학원생들은 신속하게 변경했다. 그들은 더욱 빠른 파일 시스템과 신뢰성 있는 네트워킹을 추가했다. 버클리 소켓 API를 추가해 데이터를 네트워크의 로컬 디스크로 쉽게 보내도록 했다.
방위 산업체인 볼트 버라넥&뉴먼(Bolt Beranek & Newman)은 당시 국방성연구계획처(DARPA)의 TCP/IP 네트워킹 공식 지정 업체였다. BSD 4.1a에서, 버클리 대학원생들은 자신들의 입맛에 맞게 TCP/IP를 바꾸었다. 1986년 DARPA는 BSD 4.3에서 TCP/IP를 테스트했는데, BBN보다 높은 평가를 받았다.
빌 조이는 1982년에 버클리를 떠나 썬 마이크로시스템즈의 공동 설립자가 된 뒤 BSD를 토대로 SunOS와 솔라리스를 개발하게 된다. 썬과 AT&T는 통합된 시스템 V 릴리즈 4를 개발해 시스템 V 향상을 위해 협력해나갔다. AT&T는 유닉스에 대한 투자비를 회수하기 위해 소프트웨어의 가격을 높였다.
하지만 버클리 대학생들은 쉽게 물러서지 않았다. 그들은 BSD 유닉스를 다시 작성, AT&T 파일을 제거하고 저렴한 인텔 파일에서 구동 가능한 새로운 배포판을 개발했다. 자사의 수익에 악영향을 우려한 AT&T의 유닉스 시스템 연구소는 BSDi를 법원에 제소했으며, 인텔을 위한 버클리 유닉스를 배포했다. 유닉스 시스템 연구소는 BSDi에 대한 제공금지명령을 얻어내었으며 수년동안 인텔 기반의 유닉스를 독점하게 되었다.
하지만 유닉스의 가격이 너무 비쌌기 때문에 MIT 인공 지능 연구소의 리차드 스톨먼은 다른 해결책을 찾아야만 했다. 그는 자신의 동료 연구원들이 발표한 것들과 마찬가지로 소프트웨어 역시 지적 자산이며 무료로 이용할 수 있어야 한다고 생각했다. 그는 프로그래머들이 자신의 소프트웨어를 개발하는데 사용할 수 있도록 GNU라 불리는 일련의 툴을 개발하기 시작했다.

누적 발전되어온 과정 상 BSD 4.3이 1위
이러한 툴은 핀란드 헬싱키의 리누스 토발즈에게도 영향을 끼쳤다. 당시 21세 대학생이었던 토발즈는 자신의 인텔 PC에서 구동이 가능한 유닉스 버전을 찾고 있었다. 그는 GNU 툴을 활용, 리눅스 커널을 개발하는데 사용했다. 리눅스는 인텔 하드웨어에서 BSD를 대체했기 때문에 인기가 높아졌다. 현재, 리눅스는 하이 엔드 시장도 위협하고 있는 존재로 부상하고 있다. 하지만 리눅스는 불완전한 GNU 시스템과 이전 버전의 BSD들을 단순히 복제하고 있을 뿐이다. 이들은 리눅스에 구현된 모든 주요 개념을 개발하고 있다. 이것이 센드메일과 BIND가 시스템 V가 아닌 버클리 유닉스에서 개발되고 있는 이유이다. 또한 윈도우에 TCP/IP를 최적으로 구현하고자 하는 마이크로소프트가 BSD 유닉스를 적용하려는 이유가 여기에 있다. DARPA의 경우 알파넷(Arpanet)을 구축하려 했을 때 기존 프로토콜을 버리고 BSD 유닉스 TCP/IP로 전환하기로 결정했다.
이제 최종 판단을 내려야 한다. 역사상 가장 위대한 소프웨어 1위는 세계에 가장 큰 영향을 끼친 BSD 4.3이다. 물론 상업적으로 더 큰 성공을 거둔 다른 유닉스 버전도 있다. 하지만 BSD 시스템이 계속 누적되어 발전되어 온 과정을 감안해볼 때, BSD 4.3이 가장 중요한 혁신의 '디딤돌'이 되었다는 것을 알 수 있다.Charles Babcock
저작권자 © 컴퓨터월드 무단전재 및 재배포 금지