애플의 오픈소스 정책

sugarlessgirl의 이미지

얼마전에 사용할 컴퓨터로 맥미니를 구입하면서 맥에 대한 관심이 크게 늘었습니다.
부트캠프로 XP만 사용할 목적으로 구입했는데, 맥OS X 가 굉장히 매력적이더군요.
맥의 화려함과 독창적인 사용자 인터페이스도 꽤나 매력적이었지만,
가장 맘에 들었던건 UNIX/X11의 지원과 Quartz 와 Cocoa 같은 빠방한 API 지원이었습니다.
하지만 한가지 아쉬운 점이 있습니다.
Linux/OpenSource 쪽의 프로그램들은 거의 문제없이 맥OS 에서 사용이 가능하지만,
맥OS 의 Quartz 나 Cocoa 같은 API 를 사용한 프로그램은 Linux/OpenSource 쪽에서 전혀 사용할 수가 없습니다.
Cocoa같은 경우는 GNUStep 과 거의 호환이 된다고 하지만,
Cocoa Framework는 UI의 생성은 XCode의 Interface builder라는 녀석이 담당하고, 이녀석이 구질구질하게 UI 코드를 생성하는게 아니라, nib 라는 확장자의 파일을 생성하게 됩니다.
문제는 nib 파일의 포맷을 애플이 공개하지 않았다는 것이고, Cocoa Framework는 이 nib파일을 사용하지 않고 무식하게 일일이 UI 코드를 작성하는 방법을 지원하지 않습니다. (직접 NSApplication 객체를 만들면 가능할 수 있을지도 모르겠습니다.)
즉, Cocoa 프로그램은 맥OS 의 XCode로만 작성이 가능합니다.-_-;
(참고로, GNUStep 쪽에서 nib 파일을 분석하고 있다는 군요)
설령 Cocoa 쪽의 문제가 해결된다고 하더라도 Quartz 나 QuickTime 같은 API를 사용한다면, 다른 플랫폼으로의 이식이 굉장히 어려워집니다.

애플의 Darwin 이 BSD 커널 코드를 썼다고, Quartz 나 Cocoa 같은 API를 공개할 필요는 없겠지만,
애플이 OpenSource를 '지원'한다는 표현을 쓰는지는 모르겠습니다만은,
별로 써먹을데도 없는 darwin이나 webkit같은 것들을 제외하면 딱히 OpenSource 쪽에 기여한 것도 없는 것 같은 애플의 OpenSource 정책은 과연 무엇을 위한 것인지 심히 의심스럽습니다.

맥OS는 저에게 있어서는 정말 멋진 운영체제입니다.
애플이 화려한 디자인과 CEO의 말빨로 사용자에게 사기를 치는건지는 몰라도, MS처럼 악당역활을 하 있는 것도 아닙니다.
맥미니를 가격에 포함된 맥OS의 비용도 아깝다는 생각이 들지도 않습니다.
하지만 쓰면서 내내 찝찝한 이 기분은 뭘까요...

소타의 이미지

특정 운영체제에 종속적인 API는 얼마든지 많지요 ㅎㅎ
오픈소스 소프트웨어가 모든 OS에 호환되어야 한다는 제약도 없구요

Mac OS X는 커널은 Mach 마이크로커널입니다. 시스템이 BSD죠..
애플의 오픈소스에 대한 지원은 많습니다. gimp print, khtml 등 유명한것도 많죠 ㅎㅎ
애플은 오픈소스 소프트웨어의 지원을 위해 코코아나 카본 라이브러리를 상세하게 오픈하는 방법외에 네이티브하게 X윈도우를 지원해버렸죠. 이미 많은 추상화 레벨의 라이브러리들이 나와있습니다. 뭔들 못만들까요 ㅎㅎ

애플의 오픈소스 지원 정책은 간단합니다. 소스코드를 감출일이 있다면 BSD라이센스, 오픈해도 된다면 어떤 종류든지 필요한건 맞게 고쳐서 맥 사용자가 쓰기 편하게 만듭니다. 그리고 가능하면 그 결과를 다시 돌려주지요

sugarlessgirl의 이미지

좋은 말씀 감사합니다,
제 귀가 얇은 건지.. 또 소타님의 말씀을 들으니 좋게 보이는군요.. -_-;;

sangu의 이미지

애플이 공개한 bonjour를 GNOME이 avahi (또는 howl)를 통해서 사용하고 있습니다.

참고 :
http://developer.apple.com/opensource/internet/bonjour.html
http://avahi.org

그리고 GCC ChangeLog를 보시면 apple.com 메일을 심심치 않게 보실수 있습니다.

Scarecrow의 이미지

Richard Stallman wrote:
Consider GNU Objective C. NeXT initially wanted to make this front end proprietary; they proposed to release it as .o files, and let users link them with the rest of GCC, thinking this might be a way around the GPL's requirements. But our lawyer said that this would not evade the requirements, that it was not allowed. And so they made the Objective C front end free software.
from http://www.gnu.org/philosophy/pragmatic.html

리차드 스톨만 wrote:
GNU Objective C의 경우도 있습니다. NeXT사는 처음에 이 프론트 엔드를 상업용으로을 만들려고 했습니다. 그들은 이것을 .o 파일의 형식으로 발표하고 사용자들이 GCC와 연결하도록 제안했습니다. 그들은 이것이 GPL의 요구에 맞는 방법이라고 생각했습니다. 그러나, 우리 변호사는 GPL하에서 그것이 허용되지 않는 것이라고 했습니다. 그래서 그들은 Objective C 프론트 엔드를 자유 소프트웨어로 만들었습니다.
출처: http://www.gnu.org/philosophy/pragmatic.ko.html

자세한 내막은 모르겠지만 위의 글에서 인용된 부분을 참고하면 처음에 Obj-C 컴파일러는 소스가 공개안되는 커널모듈처럼 목적파일 형태로 배포(판매)하려고 했습니다. Obj-C 컴파일러를 사용하고자 하는 사용자가 직접 그 목적파일을 GCC의 다른 부분과 링커로 링킹하여 완전한 실행파일로 만들게 한 후 사용하게 하려고 했습니다. 하지만 GPL에 걸려서 Obj-C 컴파일러를 GPL로 공개해야만 했습니다.

추가로 nib과 관련하여 재미난 소개를 해주어 구글링 해보니 다음과 같은 블로그도 발견할 수 있었습니다.
GNUStep은 소리소문없이 꾸준히 발전하고 있었군요. ^^
http://heronsperch.blogspot.com/2006/08/nib-encoding-now-working-in-gnustep.html

결과적으로 Obj-C 컴파일러만 공개되고
기본 라이브러리나 nib같은 파일형식은 공개가 안되었으니
GNUStep같은 프로젝트가 생긴거라고도 할 수 있겠네요.

뭐 지금의 애플은 그 경우와 비교해보면 피드백을 잘 하고 있다고 생각됩니다. ^^

시그너쳐: ./configure --prefix=/usr; make; sudo checkinstall