OPENSTEP : 오픈스텝
넥스트가 내놓은 마지막 운영체제 OPENSTEP

하드웨어 사업에서 철수한 NeXT는 NEXTSTEP의 뛰어난 객체지향 개발 환경을 특정 컴퓨터와 운영체제에 가두지 않고 Windows NT와 Solaris를 비롯한 여러 플랫폼으로 확장하려 했다. 그 결과 탄생한 것이 OPENSTEP이다. 외형만 보면 NEXTSTEP의 이름을 바꾼 것처럼 보였지만, 그 안에는 기업용 응용 프로그램 시장을 겨냥한 NeXT의 새로운 전략이 담겨 있었다.

[그림1] NEXTSTEP에서 시작된 Workspace와 Dock, Services, Project Builder, Interface Builder, Application Kit, Foundation Kit 등의 기술은 OPENSTEP에서 운영체제와 하드웨어의 경계를 넘어설 수 있는 형태로 정리됐다.
NeXT Computer는 1993년 하드웨어 사업에서 철수한 뒤 소프트웨어 회사로 변신하기 시작했다. 1995년에는 회사 이름도 NeXT Software로 바꾸고, 워크스테이션 제조사가 아닌 객체지향 개발 도구와 기업용 소프트웨어 전문 회사로 방향을 전환했다.
이 과정에서 NeXT는 Sun Microsystems와 함께 NEXTSTEP의 객체지향 기술을 운영체제와 분리한 새로운 응용 프로그램 개발 규격을 추진했다. 이것이 바로 ‘OpenStep’이었다.
OpenStep은 특정 운영체제의 이름이 아니라 Application Kit, Foundation Kit, Display PostScript와 같은 객체지향 프레임워크를 여러 플랫폼에서 구현하기 위한 API 규격이었다. NeXT는 이 규격을 기존 Mach·BSD 기반 운영체제에 적용하고, 대문자로 표기한 ‘OPENSTEP’이라는 이름으로 제품화했다.
OPENSTEP 4.0은 1996년 7월에 등장했다. 이후 4.1을 거쳐 1997년에는 마지막 버전인 OPENSTEP 4.2가 발표됐다. 사용자 인터페이스는 NEXTSTEP과 거의 같았지만, 내부 구조와 개발 환경은 OpenStep 규격에 맞게 재정비됐다.
OPENSTEP은 일반 사용자 시장보다 기업과 개발자를 겨냥한 운영체제였다. 특히 Windows NT와 Solaris에서도 NeXT의 객체지향 개발 기술을 활용할 수 있게 되면서, NEXTSTEP이 가지고 있던 제한적인 하드웨어 기반과 부족한 시장 규모를 극복하려 했다.
OpenStep과 OPENSTEP의 차이
OpenStep과 OPENSTEP은 표기만 다른 같은 이름처럼 보이지만, 엄밀하게는 서로 다른 의미를 가지고 있었다.
‘OpenStep’은 NeXT와 Sun Microsystems가 공동으로 정의한 객체지향 응용 프로그램 개발 규격이었다. 반면 ‘OPENSTEP’은 NeXT가 OpenStep 규격을 실제 운영체제와 개발 도구로 구현한 제품명이었다.
OpenStep 규격은 1994년에 공개됐으며, 운영체제에 종속되지 않는 객체지향 응용 프로그램 계층을 목표로 했다. 핵심 구성 요소는 사용자 인터페이스를 담당하는 Application Kit, 문자열과 컬렉션·파일·프로세스 등의 기본 기능을 제공하는 Foundation Kit, 화면과 인쇄를 동일한 방식으로 처리하는 Display PostScript였다.
개발 언어로는 Objective-C가 사용됐다. NEXTSTEP에서 사용되던 Project Builder와 Interface Builder도 OpenStep 개발 환경의 중요한 구성 요소였다.
개발자는 Interface Builder에서 버튼과 메뉴, 텍스트 필드 등의 화면 요소를 배치하고, 이를 Objective-C 객체와 연결할 수 있었다. 화면을 구성하는 작업과 프로그램의 동작을 작성하는 작업을 명확하게 나눌 수 있었기 때문에 복잡한 기업용 응용 프로그램도 비교적 빠르게 개발할 수 있었다.
오늘날에는 시각적인 인터페이스 설계 도구와 객체지향 프레임워크가 흔하지만, 1990년대 중반만 해도 이러한 개발 방식은 상당히 진보적인 것이었다.
크로스 플랫폼 개발 환경으로 다시 태어나다
OPENSTEP의 가장 큰 변화는 NeXT의 객체지향 기술을 NeXT 운영체제 밖으로 확장했다는 점이었다.
OPENSTEP 제품군의 중심에는 독립된 운영체제로 작동하는 ‘OPENSTEP for Mach’가 있었다. 이 제품은 NEXTSTEP과 마찬가지로 Mach 커널과 BSD UNIX를 기반으로 했으며, Motorola 68000 계열과 Intel x86, SPARC 기반 컴퓨터에서 사용할 수 있었다.
이와 별도로 Windows 환경을 위한 ‘OPENSTEP Enterprise’가 제공됐다. Windows NT와 Windows 95에서 OpenStep 기반 응용 프로그램을 개발하고 실행할 수 있는 프레임워크와 개발 도구를 제공하는 제품이었다.
Windows 자체를 대체하는 운영체제는 아니었다. 사용자는 Windows용 Microsoft Word와 같은 프로그램을 그대로 사용하면서, Project Builder와 Interface Builder를 실행해 OpenStep 응용 프로그램을 개발할 수 있었다.
Sun Microsystems는 Solaris에서 동작하는 OpenStep 환경을 개발했다. Solaris OpenStep은 NeXT의 Application Kit과 Foundation Kit, 개발 도구를 Solaris 환경에 결합한 제품이었다. 기존의 CDE나 OpenWindows 응용 프로그램과 함께 사용할 수 있도록 설계됐으며, 기업은 UNIX 시스템을 유지하면서 OpenStep 기반 소프트웨어를 개발할 수 있었다.
이처럼 OpenStep 규격은 하나의 소스와 개발 방식을 여러 운영체제에서 활용하는 것을 목표로 했다. 모든 프로그램이 수정 없이 완벽하게 실행되는 것은 아니었지만, 운영체제마다 응용 프로그램 전체를 처음부터 다시 개발해야 했던 당시 환경에서는 상당히 매력적인 접근이었다.

[그림2] Windows에서 실행되는 OPENSTEP Enterprise. Windows용 프로그램을 사용하면서 Project Builder와 Interface Builder를 이용해 OpenStep 응용 프로그램을 개발할 수 있었다.

[그림3] Solaris OpenStep의 인터페이스. NeXT와 Sun Microsystems는 OpenStep 규격을 이용해 객체지향 개발 환경을 Solaris로 확장했다.
NEXTSTEP의 인터페이스를 그대로 계승
OPENSTEP for Mach의 인터페이스는 NEXTSTEP 3.3과 거의 동일했다. 이 때문에 일반 사용자의 입장에서는 제품 이름만 NEXTSTEP에서 OPENSTEP으로 바뀐 것처럼 보이기도 했다.
파일과 응용 프로그램의 관리는 Workspace Manager가 담당했다. Mac OS의 Finder와 비슷한 역할을 하는 프로그램으로, 그 중심에는 File Viewer가 있었다.
File Viewer는 Browser, Icon, Listing의 세 가지 보기 방식을 제공했다. Browser 보기는 폴더의 계층을 여러 개의 열로 펼쳐 보여줬으며, Icon 보기는 파일과 폴더를 48×48픽셀 크기의 아이콘으로 표시했다. Listing 보기는 파일 이름과 정보를 목록 형태로 보여줬다.
File Viewer의 위쪽에는 자주 사용하는 파일과 폴더를 올려놓는 Shelf가 있었다. 화면 오른쪽에는 자주 사용하는 응용 프로그램을 등록하는 Dock이 배치됐다. 파일이나 응용 프로그램을 Dock과 Shelf에 드래그해 등록하고, 필요할 때 바로 실행하거나 열 수 있었다.
OPENSTEP이 설치된 디스크에는 일반 응용 프로그램을 모아 둔 NextApps, 시스템 관리 도구가 들어 있는 NextAdmin, 개발 도구와 문서를 담은 NextDeveloper 등의 디렉터리가 마련돼 있었다.
Workspace의 메뉴 팔레트에는 정보, 파일, 편집, 디스크, 보기, 도구, 윈도우, 서비스, 가리기, 로그아웃 등의 메뉴가 있었다. 일반적인 응용 프로그램의 메뉴도 화면 위쪽의 고정된 메뉴 막대가 아니라 각각 독립된 메뉴 패널로 표시됐다.
메뉴 패널은 사용자가 원하는 위치로 옮길 수 있었으며, 자주 사용하는 하위 메뉴를 떼어내 화면에 계속 표시하는 Tear-off 메뉴도 지원했다. 넓은 화면에서 여러 프로그램을 동시에 사용하는 워크스테이션 환경에 적합한 방식이었다.
13개 항목으로 구성된 Preferences
OPENSTEP의 Preferences는 시스템의 주요 설정을 그래픽 인터페이스에서 변경할 수 있게 해주는 프로그램이었다.
Preferences에는 언어와 지역, 시계, 암호, 키보드, 마우스, 모니터, 사운드, 서체, 메뉴, 서비스, 전문가 설정, 로그인 윈도우, 전원 관리 등에 해당하는 13개의 설정 항목이 준비돼 있었다.
일반적인 UNIX 운영체제에서는 시스템 설정을 변경하기 위해 명령어를 입력하거나 설정 파일을 직접 수정해야 하는 경우가 많았다. OPENSTEP에서는 자주 사용하는 설정을 아이콘과 버튼으로 구성된 Preferences에서 변경할 수 있었다.
사용자 계정은 NextAdmin 디렉터리에 있는 UserManager를 통해 관리했다. 네트워크 설정에는 SimpleNetworkStarter 등의 관리 프로그램이 사용됐다. 여러 사용자가 하나의 컴퓨터에 각자의 계정으로 로그인할 수 있었으며, 사용자별로 작업 환경과 설정을 보관할 수 있었다.
OPENSTEP은 UNIX의 강력한 기능을 숨기지 않으면서도 그래픽 사용자 인터페이스를 통해 보다 쉽게 다룰 수 있도록 했다. 이것은 복잡한 시스템 관리 기능과 사용자 친화적인 데스크탑 환경을 결합하려 했던 NeXT 운영체제의 중요한 특징이었다.

[그림4] OPENSTEP의 Preferences는 시스템의 주요 설정을 13개 항목으로 나눠 제공했다. 전문적인 UNIX 명령을 사용하지 않아도 기본적인 시스템 환경을 설정할 수 있었다.
진정한 멀티태스킹 환경
OPENSTEP은 Mach 커널과 BSD UNIX를 기반으로 선점형 멀티태스킹과 메모리 보호 기능을 제공했다.
여러 응용 프로그램이 동시에 실행되고 있어도 운영체제가 각 프로그램에 CPU 사용 시간을 나눠줬다. 하나의 응용 프로그램에서 문제가 발생하더라도 다른 프로그램이나 운영체제 전체에 미치는 영향을 줄일 수 있었다.
당시의 클래식 Mac OS도 여러 프로그램을 함께 실행할 수 있었지만, 프로그램이 스스로 CPU 사용 권한을 넘겨주는 협력형 멀티태스킹 방식을 사용했다. 특정 프로그램이 응답하지 않으면 시스템 전체가 느려지거나 멈추는 일이 발생하기도 했다.
OPENSTEP에서는 여러 패키지를 설치하면서 다른 프로그램으로 작업하거나, 네트워크를 통해 파일을 전송하는 동안 개발 도구를 사용하는 등 여러 작업을 보다 안정적으로 동시에 처리할 수 있었다.
가상 메모리와 다중 사용자 환경, 네트워크 서비스, 원격 로그인과 같은 UNIX 기능도 기본적으로 활용할 수 있었다. OPENSTEP은 데스크탑 운영체제의 편리한 그래픽 인터페이스와 워크스테이션용 UNIX의 안정성을 함께 갖춘 운영체제였다.

[그림5] OPENSTEP for Mach에서 여러 패키지를 동시에 설치하는 모습. Mach와 BSD에 기반한 선점형 멀티태스킹은 여러 작업을 안정적으로 처리할 수 있게 했다.
객체지향 개발 환경의 완성
OPENSTEP의 진정한 가치는 데스크탑 인터페이스보다 개발 환경에서 더욱 뚜렷하게 나타났다.
Project Builder는 프로그램의 소스 코드와 이미지, 인터페이스 파일, 프레임워크를 하나의 프로젝트로 관리하는 도구였다. Interface Builder는 프로그램의 윈도우와 메뉴, 버튼 등의 화면 요소를 시각적으로 제작하고 객체 사이의 관계를 연결하는 역할을 했다.
개발자는 처음부터 모든 기능을 직접 작성하는 대신 Application Kit과 Foundation Kit에 포함된 객체를 조합해 프로그램을 만들 수 있었다.
Application Kit은 윈도우와 메뉴, 버튼, 텍스트 입력, 이벤트 처리, 인쇄 등 그래픽 응용 프로그램에 필요한 기능을 제공했다. Foundation Kit은 문자열과 배열, 사전, 파일, 날짜, 알림, 프로세스 사이의 통신 등 응용 프로그램의 기반이 되는 기능을 담당했다.
Framework라는 형태로 관련 클래스와 자원을 하나로 묶어 배포할 수 있다는 것도 중요한 특징이었다. 개발팀은 공통 기능을 프레임워크로 제작해 여러 프로젝트에서 다시 사용할 수 있었다.
이러한 구조는 프로그램의 개발 시간을 줄이고 유지·보수를 쉽게 만들었다. 특히 복잡한 데이터와 네트워크를 다루는 기업용 응용 프로그램을 개발할 때 큰 효과를 발휘했다.
기업용 데이터베이스를 객체로 다루다
NeXT가 OPENSTEP을 통해 공략하려 했던 핵심 시장은 금융기관과 통신사, 제조업체를 비롯한 대규모 기업이었다.
기업용 프로그램은 여러 데이터베이스와 서버, 사용자 인터페이스를 연결해야 했기 때문에 개발 과정이 복잡했다. 데이터베이스의 표와 열을 프로그램의 객체 구조에 맞게 변환하는 작업도 개발자가 직접 처리해야 했다.
NeXT는 이를 해결하기 위해 Enterprise Objects Framework, 줄여서 EOF를 제공했다. EOF는 관계형 데이터베이스에 저장된 정보를 Objective-C 객체와 연결해 주는 객체 관계 매핑 기술이었다.
개발자는 데이터베이스에 접근하는 반복적인 코드를 일일이 작성하지 않고, 고객이나 주문, 상품과 같은 정보를 객체로 다룰 수 있었다. 데이터베이스 구조와 프로그램의 사용자 인터페이스도 시각적인 도구를 이용해 연결할 수 있었다.
EOF는 OPENSTEP의 객체지향 개발 환경을 기업의 실제 업무 시스템과 연결하는 중요한 기술이었다. NeXT가 단순한 운영체제 회사에서 기업용 소프트웨어 회사로 전환하는 데에도 핵심적인 역할을 했다.
OPENSTEP의 날개, WebObjects
NeXT의 기업용 전략을 가장 잘 보여준 제품은 WebObjects였다.
WebObjects는 데이터베이스와 연결된 동적인 웹 응용 프로그램을 개발하고 운영하기 위한 서버 소프트웨어였다. 단순한 HTML 문서를 제공하는 것을 넘어, 사용자의 요청과 데이터베이스 정보에 따라 내용이 달라지는 웹사이트를 만들 수 있었다.
WebObjects Builder에서는 웹페이지의 구성 요소를 시각적으로 배치하고, 이를 서버의 객체와 연결할 수 있었다. Project Builder와 Enterprise Objects Framework도 함께 사용됐다.
개발자는 OPENSTEP에서 사용하던 객체지향 개발 방식을 웹 서버에도 적용할 수 있었다. 이미 만들어 놓은 비즈니스 로직과 객체를 다시 활용할 수 있었으며, 데이터베이스와 웹페이지 사이의 연결 작업도 줄일 수 있었다.
WebObjects는 1996년 정식으로 판매되기 시작했다. 금융기관과 통신사, 전자상거래 업체 등 대량의 데이터를 다루는 기업이 주요 고객이었다. NeXT는 OPENSTEP과 WebObjects를 앞세워 인터넷과 인트라넷용 기업 소프트웨어 시장을 공략했다.
OPENSTEP이 데스크탑과 클라이언트 응용 프로그램을 위한 개발 환경이었다면, WebObjects는 그 객체지향 기술을 웹 서버까지 확장한 제품이었다.
뛰어난 기술과 제한된 시장
OPENSTEP은 기술적으로 뛰어난 운영체제였지만, 일반 사용자 시장에서는 큰 성공을 거두지 못했다.
가장 큰 문제는 부족한 하드웨어 지원이었다. OPENSTEP for Mach는 NeXT의 Motorola 68000 계열 컴퓨터뿐 아니라 Intel x86과 SPARC 시스템에서도 사용할 수 있었지만, 실제로 지원되는 그래픽 카드와 네트워크 카드, 저장장치는 제한적이었다.
특히 Intel PC는 제조사마다 하드웨어 구성이 달랐기 때문에 설치할 수 있는 컴퓨터를 선택하는 일이 쉽지 않았다. 대중적인 운영체제로 성장하려면 다양한 장치를 지원하는 드라이버가 필요했지만, NeXT의 시장 규모만으로는 충분한 제조사 지원을 얻기 어려웠다.
응용 프로그램의 수도 Windows나 Mac OS와 비교하면 많지 않았다. OPENSTEP은 뛰어난 Mail과 TextEdit, Digital Librarian, Preview 등의 기본 프로그램과 강력한 개발 도구를 제공했지만, 일반 사용자가 필요로 하는 사무용·교육용·게임 소프트웨어는 부족했다.
가격과 사용 환경 역시 개인 사용자보다는 기업과 전문 개발자에게 맞춰져 있었다. NeXT도 OPENSTEP을 대중적인 개인용 운영체제로 판매하기보다 기업용 응용 프로그램 개발과 WebObjects 사업을 위한 기반으로 활용했다.
결국 OPENSTEP은 많은 개인 사용자를 확보한 운영체제가 아니라, 소수의 개발자와 기업이 높은 생산성을 얻기 위해 선택하는 전문적인 플랫폼으로 남았다.
NeXT의 마지막 운영체제
OPENSTEP은 NeXT가 독립된 회사로서 완성한 마지막 운영체제였다.
NEXTSTEP에서 시작된 Workspace와 Dock, Services, Project Builder, Interface Builder, Application Kit, Foundation Kit 등의 기술은 OPENSTEP에서 운영체제와 하드웨어의 경계를 넘어설 수 있는 형태로 정리됐다.
상업적으로 OPENSTEP의 판매량은 크지 않았지만, 완성도 높은 객체지향 프레임워크와 빠른 응용 프로그램 개발 환경은 업계의 주목을 받았다. 특히 차세대 운영체제 개발에 어려움을 겪고 있던 Apple에 OPENSTEP은 이미 실제 제품으로 검증된 대안이었다.
1996년 12월 Apple은 NeXT 인수 계획을 발표했다. 이듬해 인수가 마무리되면서 OPENSTEP과 NeXT의 개발팀은 Apple의 차세대 운영체제 계획에 편입됐다.
OPENSTEP은 여기서 사라진 것이 아니었다. NeXT라는 이름으로 개발된 마지막 운영체제는 다음 단계인 Rhapsody의 토대가 되며 새로운 변화를 맞이하게 된다.
참고 자료: OpenStep Specification, OpenStep Introduction
KMUG 애플에 대한 모든 것.
Apple 케이머그 김영권
https://kmug.com
KMUG 케이머그에서 더 알아보기
구독을 신청하면 최신 게시물을 이메일로 받아볼 수 있습니다.