신기하고 멋진 GNU 세상

일반입력 :2004/10/10 00:33

지디넷코리아

어떤 소프트웨어가 자유 소프트웨어인지 아닌지를 구분하는 것은 언뜻 보기에 쉬워 보인다. 그리고 사실 대다수의 경우 손쉽게 구분할 수 있기도 하다. 하지만 특정 라이브러리를 사용하거나 프로그래밍 언어, 환경을 사용해서 작성한 소프트웨어의 경우에는 해당 라이브러리나 언어의 라이선스가 어떻게 되는가가 중요한 변수로 작용한다. 그리고 우리 주위에서 가장 쉽게 볼 수 있는 ‘자유 소프트웨어를 작성하기에 문제가 있는’ 언어로 자바를 들 수 있다. 자바가 어떤 문제가 있는지는 지난 멋진 GNU 세상 에서도 수차례 언급을 했지만 이번 호에서는 jMax를 둘러싼 여러 문제들을 이야기함으로써 더욱 구체적으로 이 문제를 짚어 보기로 한다. 멋진 GNU 세상 제49호를 찾은 것을 환영한다. 지난달 컬럼을 소개하지 못한 것에 대해 독자들에게 사과한다. 불행히도 독일 리눅스 매거진이 지난 호의 '자유 소프트웨어 노트북' 부분을 삭제한 이후 이 잡지사와 멋진 GNU 세상 간에 약간의 문제가 발생했다. 이 문제 때문에 감정이 많이 상했고 이로 인해 지난 달 글을 쓸 수가 없었다. 하지만 열띤 논쟁 끝에 이와 같은 사실은 하나의 역사로 기록될 것이고, 다시는 일어나지 않을 것이라는 결론을 맺었다. 창조적 문제해결 능력 알고리즘, Skidbladnir이번 호의 첫 번째 이야기는 Skidbladnir 프로젝트이다. 이것은 몇몇 사람들에게 단어의 직접적인 의미처럼 동시에 이상하게 생각하는 이름일 수도 있다. 개발자인 Lars Brand는 이 프로젝트를 '컴퓨터를 돕는 새로운 기술에 대한 정보와 프로그램을 가지고 있는 도구상자'라고 설명하고 있다. 이 프로젝트의 배경은 아마도 잘 알려지지 않았지만 대부분의 독자들이 관심이 있듯이, Lars가 그것을 지원하기 때문에 이 프로젝트가 해체되지는 않을 것이다. Skidbladnir의 과학적 배경은 '창조적 문제 해결 이론'으로 알려져 있다. 약자로는 영어권에서는 TIPS, 독일어, 러시아어 권에서는 TRIZ로 알려져 있는 이 이론은 1946년 당시의 군대에서 특허 기술관이었던 Altschuller 교수가 발표했다.Altschuller 교수가 Stalin에게 이 이론의 초안에 대해 제안하는 편지를 보냈을 때 그는 바로 감옥에 가게 되었고, 의심스러운 주제라는 점 때문에 캠프로 수송됐다. 그가 감옥에 있는 동안 그는 다른 과학 분야에 있는 매우 많은 교수들을 만났고, 그 사람들은 그가 많은 다른 군법에 대한 지식을 취합하는데 도움을 줬다. 그의 60대 후반부터 70대 중반까지 바라지 않았던 감옥살이를 끝내면서 그의 과학적 업적에 대해 기금을 모으기 위해 과학 소설(SF 소설)로써 그의 결과를 출판하기 시작했다. TIPS 이론은 과학 분야에서의 규율이나 산업분야에서 독립적이고 추상적인 문제들과 그것들에 대한 해결책들이 항상 반복되어서 사용된다는 원리에 기반을 두는데 약 4만개의 특이한 성공적인 특허들을 분석해 볼 때 이것들 모두가 개략적으로 단지 40개의 다른 해결 원리에 기본을 둔다는 것을 발견할 수 있었다.이 이론의 또 다른 기본 원리는 기술 시스템의 발전이 특정한 경향을 따르고 있으며, 그 중요한 혁신은 종종 다른 분야에서 과학적 결과의 유입을 필요로 한다는 것이다. 이것이 의미하는 것은 문제 해결 전략의 추상화(틀)를 만들 수 있다는 것인데 자주 사용되는 예로 "각 변의 길이가 1m인 무거운 강철 상자는 크레인이나 밧줄 또는 그와 유사한 도구들을 사용하지 않고도 깊은 창고에 옮길 수 있다. 상자는 절대로 던져져서는 안된다. 10분 안에 3가지의 적절한 해답을 제시하시오"라는 문제가 있다. 이것을 풀기 위한 가장 잘 알려진 소프트웨어 관련 프로젝트는 아마도 TechOptimizer일 것이다. 이것은 이 분야의 모든 다른 응용 프로그램들과 마찬가지로 독점권을 가지고 있고 매우 높은 가격을 갖고 있다. Skidbladnir는 현재 이 역할을 자유 소프트웨어로써 제공하고자 하고 있다. 설치도구를 포함해서 이 프로젝트는 기술적인 모순들을 해결하기 위한 기본적인 원리를 포함하는 andax와 웹-브레인스토밍(회의에서 여러 가지 의견을 내 놓고 최선책을 결정하는 일)에 대한 250개의 사용 가능한 효과들이 있는 perplexus로 구성되어 있다. 아직까지는 이 프로젝트 자체로는 완벽하지 않고 또한 편리하지 못하다. 뿐만 아니라 효과 데이터베이스가 Lars가 하고자 했던 것처럼 그리 크지는 않다. 특히 매우 효율적인 연결을 허용하는 효과들 간의 네트워킹이 확장되어야 한다. 다음의 사항들이 이것에 대한 매우 간단한 예를 제공한다.

◆ 발광물질은 자외선을 가시광선으로 바꾸어 준다.◆ finite ground/spread 금속은 발광효과를 방해한다. ◆ 엔진의 움직이는 부분이 고장나기 전에 금속 조각이 엔진의 오일에 포함된다
이 세 가지 사실을 합치면 매우 쉽게 오일에 발광물질을 추가하는 것이 엔진이 고장나기 시작하기 전에 발광물질로 인해 고장시기를 예측할 수 있도록 해주므로 언제 엔진의 문제가 될 수 있는 부분을 교체해야 하는지를 결정하는 것이 가능하다는 아이디어가 나오게 된다. 실제 상황들은 종종 훨씬 더 복잡하고, 큰 데이터베이스가 필요한데 이 데이터베이스를 구축하는 작업은 꽤나 지루한 일일 것이다. 또한 데이터베이스에 들어가는 내용들은 철저하게 기술적인 문헌과 결합되어 있어야만 한다. Skidbladnir는 Perl, PHP, MySQL로 작성이 되었고 GPL를 따르고 있다. 독점 프로젝트들과 비교한다면 Skidbladnir는 아직 크게 내세울 만한 기능을 갖고 있지는 않지만 이미 소프트웨어 효과들은 포함을 하고 있으며 아마도 이 분야에서는 처음일 것이다.여러분의 도움은 어떤 형태로든지 환영한다. 특별히 피드백을 주고자 하는 개발자들과 사용자들이 필요하며 또한 효과와 실생활 문제들로의 접근과 관련된 더 많은 데이터들을 보내 주면 매우 감사할 것이다. 긴 기간동안의 중간쯤에 Lars는 자유 소프트웨어가 이 분야에서 예외적으로 성공적일 것이라고 확신을 했다. 왜냐하면, TIPS와 자유 소프트웨어 모두 지식을 보존하고 그것을 사용가능하게 하는 동일한 아이디어를 기반으로 하기 때문이다.이 생각과 방법을 모든 사람들에게 유용하게 만드는 것은 백과사전과 매우 유사하게 지원의 가치면에서 매우 중요한 프로젝트인 것 같다. 부가적인 효과로써 이 프로젝트는 이 분야에서 시장 장벽을 감소시킨다. 왜냐하면 많은 실력 있는 사용자들이 독점 솔루션을 사용할 수가 없기 때문에 이 프로젝트가 기술 분야를 다시 부흥시키는데 도움을 줄 수 있다. 이 분야와 관련된 사람들과 관심이 있는 사람들 누구나 둘러보는 것을 추천하며 또한, 배경에 대한 좀더 많은 정보는 웹에 올려 있다. 과학자를 위한 스크립트 언어, Lush이번 호의 두 번째 프로젝트는 더욱 과학적 용도로 만들어졌지만 용도가 제한적이진 않다. Lush는 큰 수나 그래픽을 많이 사용하는 과학자, 실험가 및 기술자들을 위해 만들어진 객체지향 프로그래밍 언어이다. Lush는 설계에 있어 세 가지 각각 다른 프로그래밍 언어의 강점을 결합하고자 했다. 사실 Lush는 세 가지 프로그래밍 언어를 하나로 만들었다.
◆ 동적 인터프리터로 자동적인 자투리 모으기와 유연한 자료형을 가진 유사 LISP 언어이다. ◆ 두 번째는 lexical, 컴파일 언어로, 문법은 같지만 유연한 자료형은 지원하지 않는다. ◆ 세 번째는 C 언어로, Lush 문법과 섞여 쓰이거나 하나의 함수로 쓰일 수도 있다.
Lush는 1987년부터 개발되어 왔다. 처음에는 'SN'이란 이름의 신경망 시뮬레이션을 위한 스크립트 언어였으나 시간이 지나 컴파일러를 갖춘 완전한 프로그래밍 언어로 개발되었다. 이 개발에 있어 주역은 미국 뉴저지주 Holmdel의 벨 연구소(앞으로는 AT&T 연구소), 프랑스 파리의 Neuristique S.A., 그리고 미국 뉴져지주 프린스턴의 NEC 연구소 등이다. 그 후 Lush/SN은 AT&T의 내부 연구 및 개발 프로젝트를 위해 몇 년간 사용되었고, 참여자들은 결국 GPL에 의해 배포하고, Lush를 자유 소프트웨어로 하는데 동의하기에 이르렀다.현재 프로젝트는 멋진 GNU 세상의 질문에 답해준 Yann LeCun과 Fu Jie Hang, Patrice Simard, Patrick Haffner, Yoshua Bengio, Pascal Vincent, Jean Bourrelly, Xavier Drancourt 및 Secil Ugurel 등과 같이 전 세계의 자원자들로부터 쏟아지는 지원을 담당하는 미국 NEC 연구소의 Leon Bottou에 의해 관리되고 있으며, 자원 신청은 언제든 환영하고 있다.Lush는 처음엔 과학자, 연구자 및 학생들을 위한 Matlab-대체용 자유 소프트웨어로 개발되었지만 모든 용도의 언어로 사용될 수 있다. C와의 쉬운 통합 덕분에 Lush는 스크립트 및 편리한 GUI 응용 프로그램의 분산된 기능체들의 통합에 있어 좋은 선택이다.Lush의 통합성은 GNU 과학 라이브러리(GSL, 멋진 GNU 세상 제35호 참조), OpenGL/GLU/GLUT, ALSA, Video4Linux 및 IVL(Intel Vision Library) 등과 같은 기존의 라이브러리들과의 통합을 굉장히 쉽게 한다. GSL을 지원하는 데에 있어 Lush와 파이썬을 비교해 보면 Lush가 약 4000여개의 함수들을 지원하는 데 비해 파이썬은 현재 수백 개 정도만 지원하고 있을 뿐이다. Lush의 문법은 Perl보다 쉽고 Scheme보다 배우기 쉽다. 그리고 Octave나 Matlab과 비교해 본다면 Lush가 상황에 따라 15배에서 300배 정도 빠르다.이런 장점들이 Lush를 흥미롭고 가치있게 만드는 것 같다. Lush는 이미, Lush 홈페이지에서 찾아 볼 수 있는 간단한 달착륙선 화면보호기와 같은 게임에 사용되고 있다. Lush는 C로 만들어졌으며, GNU/리눅스, 솔라리스, Irix 그리고 OpenBSD에서 동작했으나, 2003년 2월부터 Cygwin에서 사용 가능하다. 프로젝트의 문제점 중 하나는 컴파일러의 디자인이 10년 이상 된 것이라 몇 가지 이상하고 유연하지 못한 부분이 있다는 점이다. 그래서 컴파일러 개정작업이 프로젝트의 할일 목록에 들어가 있다. 또한 할일 목록에는 문서화 시스템에 대한 개선과 좀 더 많은 라이브러리에 대한 지원이 포함되어 있다. Lush에 템플릿 장치를 추가하는 것 역시 중기적인 계획에 포함되어 있다. 추가적으로 Mac OS X로의 포팅에 자원자들이 노력하고 있다. Lush에 자동으로 포함될 수 있도록, C/C++ 헤더 파일의 자동화된 파서에 대한 프로젝트 역시 유용할 것이다.만약 여러분이 미국에 살고 있다면 Lush와 간접적으로 만났을 수도 있다. NCR의 몇몇 ATM들은 자동으로 예치된 수표를 읽는 DSP 프로세서 코드를 Lush가 만들어낸 코드로 사용한다. 고속도로 수표를 읽는 엔진이 Lush로 만들어졌으며, 미국의 수표 중 10% 정도가 이를 통해 거래되고 있다. 전문적인 오디오 사용자를 위한 시도, jMax 멋진 GNU 세상의 지속적인 구독자라면 알고 있겠지만 자유 소프트웨어 재단 유럽 지부는 AGNULA 프로젝트의 파트너이다. 이 프로젝트는 전문적인 오디오 사용자들을 위한 완벽한 자유 소프트웨어 GNU/리눅스 배포판을 만드는 것을 목표로 하고 있다.AGNULA 프로젝트의 또 다른 파트너는 IRCAM(Institut de Recherche et Coordination Acoustique/Musique)인데, 프랑스 파리에 있는 퐁피두 예술 문화 센터의 음악 센터이다. IRCAM에서 작성한 애플리케이션중의 하나는 jMax 인데, 인터랙티브한 멀티미디어 애플리케이션을 위한 그래픽컬 개발 환경이다.오디오 애플리케이션들은 특정 하드웨어를 위해 작성되었고 따라서 매우 플랫폼에 종속적이라는 전통적인 문제점이 있다. 하드웨어의 급속한 발전으로 인해 프로그램은 매 3년마다 새로운 플랫폼을 위해 새로 작성되어야 했고, 그렇지 않으면 이러한 프로그램용으로 작성된 음악은 손실될 위기에 놓여 있었다. 이것이 특정 플랫폼에 구속되지 않는 순수한 소프트웨어 솔루션의 개발 동기가 되었다.jMax에도 영향을 준 이 패러다임은 주파수 생성기, 신호 필터, 이펙터, 입출력 모듈, 슬라이더, DSP, 각각의 앰프와 같은 기본적인 요소들을 합치게 만들고, 그것들을 소위 ‘패치’라 불리는 것으로 합치는 것을 가능케 한다. 이러한 패치들은 각 컴포넌트를 통합하며 매우 복잡한 구조물로 결합될 수 있고, 어떠한 종류와 유형의 디지털 신호 처리, 이펙트 혹은 신디사이저라도 구현하는 것은 일반적으로 가능하다.뮤지션들 사이에 어느 정도 잘 알려진 이 패러다임이 구현된 것 중의 하나는 독점 소프트웨어인 Max이다. 1995년에 jMax는 Max의 플랫폼 독립적인 버전을 만들려는 의도로 시작되었다. 1999년 중반에 jMax는 GPL를 따르는 자유 소프트웨어로 발표되었다.프로젝트에 참여중인 IRCAM jMAX팀은 Franois Dohelle와 Patrice Tisserand를 주축으로 구성되어 있다. Franois는 멋진 GNU 세상의 표준 질문들을 채워 넣기도 했는데, jMax의 주요 장점을 주로 그것의 플랫폼 독립성 GNU/리눅스, Mac OS X 그리고 윈도우에서 작동한다는 장점이 이 패러다임을 구현한 Max나 PD와 같은 다른 것과 비교해서 높은 유연성을 가지고 있는 것이라고 생각하고 있다.주요 장점중의 하나는 역시 jMax가 두 개의 컴포넌트로 구성된다는 점이다. 중앙 컴포넌트는 서버이고 C로 작성된 실시간 엔진이며, 모든 작업을 처리한다. 이것은 GUI를 이용하여 엔진을 실행하고 대체 GUI를 작성하거나 플러그인 환경(LADSPA)에 엔진을 통합하는 것이 가능하다.보통 이 서버는 자바로 작성된 클라이언트를 통해서 제어된다. 자바는 가능한 많은 플랫폼에서 최소한의 문제점만을 보이며 클라이언트가 실행될 수 있도록 하기 위해 선택되었다. 불행히도 자바의 상황은 자유 소프트웨어에 적용하기에 문제가 있다.자바의 의존성자바의 문제는 그것의 기술적인 내용이나 완성에 있지 않다. 비록 몇몇 사람들이 다른 의견을 가지고 있긴 하지만 그러한 문제들은 자유 소프트웨어 측면에서 문제를 일으키지 않는다. 문제의 원인은 자바 그 자체가 어떻게 개발되고 배포되는지에 있다. 본질적으로 널리 퍼져있는 자바 언어가 두 개밖에 없기 때문에 그 둘 모두 독점적이다. 하나는 썬이 개발하는 것이고, 다른 하나는 IBM이 개발하는 것이다. 비록 이것들이 허가비용 없이 배포가 된다 하더라도 그들은 그것들을 자유 소프트웨어로 만드는데 필요한 자유들을 제공하지 않을 것이다.결과적으로 이 플랫폼들에서 동작하는 모든 응용 프로그램들이 심지어는 자유 소프트웨어 허가서를 따르는 소프트웨어들조차 사용자의 자유를 위험에 빠지게 한다. 윈도우에서 동작하는 자유 소프트웨어와 다를 바 없는 상황인 것이다.자유 소프트웨어에서 자바를 완전히 사용할 수 있게 하기 위한 몇몇 시도들과 시작들이 있다(참고자료 http://www.gnu.org/software/java/). 하지만 지배적인 참조 사용은 독점이기 때문에 자유 프로젝트들은 항상 자바의 현재 버전이 바뀔 때마다, 다시 작성해야 할 필요가 생기게 된다. 그리 많지 않은 개발자들이 절대 이길 수 없는 그러한 편중된 경주에 참가하는 것을 좋아할 것이다. 자유 소프트웨어는 불리한 입장에 놓여지게 되고 따라서 더 작은 정도의 기능만이 제공된다.자바 응용 프로그램의 개발자들이 독점 자바 프로그램들의 더 개선된 기능들을 사용할 때 이것들은 보통 자유 소프트웨어 자바 프로그램으로 더 이상 돌아갈 수 없고, 결과적으로 독점 플랫폼에서 의존적이게 된다. 어떤 자유 소프트웨어 운영체제에서 사용될 수 없는 윈도우에서만 동작하는 자유 소프트웨어와 전혀 달라져 버린 소프트웨어인 상황이다. 이것이 정확하게 jMax 클라이언트의 문제다. 그리고 독점 소프트웨어를 AGNULA에 추가하는 것은 모든 파트너들에게 질문 밖의 이야기이기 때문에 AGNULA는 아마도 완전히 작동하는 GUI를 가지고 있는 jMax를 포함할 수 없게 될 것이다.자바의 의존성에 대한 대안, pyMax결국 대안들이 당분간은 문제들을 매우 희망적으로 해결해줄 것으로 보이지 않았기 때문에 더욱 많은 정보는 FSF 유럽 홈페이지에서 볼 수 있다. 이제는 자바 쪽을 완전히 정리하고 클라이언트를 파이썬으로 다시 작성하기로 했다. 파이썬을 선택한 것은 자바에 비교될 수 있는 플랫폼 독립성과 자연스럽게 완전한 자유 소프트웨어가 되어가는 동안 빠른 속도의 개발할 수 있는 것에 영향을 받았다. 하지만 IRCAM이 그 클라이언트를 조만간 작성할 수 있을지는 확실하지 않다. 그래서 IRCAM에서는 jMax용 파이썬 클라이언트를 작성하는 것을 도와줄 지원자를 찾고 있다.Fran is에 따르면 IRCAM은 큰 약속은 할 수 없지만, 파이썬 클라이언트를 작성하는 사람에 대해서는 우선적으로 지원하고 근무 중인 날에는 24시간 안에 응답을 해주기를 보장하고 있다. 만약 이것에 관심이 있다면 jMax 개발자 메일링 리스트를 살펴보길 바란다.이번 달의 멋진 GNU 세상은 여기까지다. 흥미있는 프로젝트가 있다면 알려주기 바란다. 종종 컬럼의 독자들에 의해서 멋진 제안이 이루어지곤 하는데 Stefan Kamphausen의 Lush나 멋진 GNU 세상 로고 등을 예로 들 수 있다. 이러한 제안이나 질문, 의견 등은 메일을 통해 보내주기 바란다.@