36. 그놈(GNOME) 데스크탑의 시작

1994년 미겔(Miguel de Icaza)은 멕시코 씨티에 위치한 멕시코 국립 대학에서 수학을 공부면서, 대학 전산실에서 시스템 관리자로도 일하고 있었다.

어느날 친구로 부터 GNU 프로젝트에 대한 이야기를 듣는다.

“리차드 스톨만이라는 사람이 만든 프로젝트인데, 운영체제 커널 부터 모든 유틸리티와 응용 애플리케이션을 자유 소프트웨어로 만드는 프로젝트야. 소소코드가 공개되고 무료로 사용할 수 있으며 고쳐서 재배포도 가능하다고 하네”
“그래? 컴파일러도 있어?”

“당연하지. GCC(GNU C compiler)가 있어.”
“잘됐다. 이번에 전산실에 새로 들어온 썬 스팍 워크스테이션에 GCC를 설치해야겠어. 솔라리스 운영체제에는 C 컴파일러가 기본으로 포함이 안되어 있어서, 따로 사야돼.”


“솔라리스에 모든 GNU 툴을 설치할 수 있구나. 무료고 게다가 소스코드가 공개되어 있고, 자유롭게 배포가 가능하다니⋯ 정말 자유 소프트웨어로 OS 부터 모든 툴을 만든다면 정말 대단할 것 같아.”

(GNU Manifesto를 읽으면서..)

“나도 뭔가 만들어봐야겠어. 유닉스에는 도스에서 쓰던 노턴 커맨더 같은 도구가 없는 것 같군. 내가 하나 만들어봐야겠어. 이름은 미드 나이트 커맨더(Midnight Commander)!”


미드 나이트 커맨더 (출처: 위키피디아)

1994년 미겔은 미드 나이트 커맨더 프로젝트를 시작하고, 현재까지도 다른 사람들이 프로젝트를 이어 받아 계속 업데이트하고 있다.

이후 그의 관심은 리눅스로 향했고, 리눅스 RAID 디바이스 드라이버에 기여를 시작했다.

그리고 나서, 리눅스 커널을 다른 CPU에 포팅하는 것에 관심을 갖게 된다.

데이비드 밀러(Dave S. Miller)라는 친구가 리눅스를 썬 스팍 머신에 포팅하고 있네. 나도 전산실에 있는 스팍 머신에 리눅스를 설치해봐야겠다.


“앗! 커널 패닉이…”

“드디어, 패치 완성. 코드 리뷰를 부탁해야겠다.”


“제가 스팍용 리눅스 커널 패치를 하나 만들었습니다. 한번 봐주세요.”

“물론이죠. 그런데, 궁금한게 있어요. 리눅스 RAID쪽에 기여를 하고 있는데, RAID 디바이스가 있어요? 그 장비가 비싼데 어느 회사에서 도움을 주나요?”


“사실 RAID 디바이스는 없고요. 제가 소프트웨어로 에뮬레이터를 하나 만들었습니다. 이를 기반으로 RAID 디바이스 드라이버를 만들고 있지요.”

“이 친구 대단한데, 미드 나이트 커맨더도 개발하면서 리눅스 RAID 디바이스 드라이버도 만들고, 게다가 하드웨어를 에뮬레이션 하다니..”

리눅스 RAID 작업을 마친후, 여름 방학 동안 리눅스 커널을 SGI 워크스테이션에 포팅하는 기회를 갖게 된다.

“안녕하세요, 당신이 썬 스팍에 리눅스 커널을 포팅하는 것을 봤어요. MIPS에도 리눅스 커널 포팅이 가능한가요? 가능하면 실리콘 밸리에 있는 오피스에 와서 SGI 워크스테이션에 리눅스 커널을 포팅해주면 좋겠습니다.”


“리눅스 커널도 포팅하고 돈도 벌고 실리콘 밸리 구경도 할 수 있겠구나.”

실리콘 밸리에서 일하던 어느날 KDE 프로젝트 소식을 접하게 된다.


“누군가 GNU 리눅스를 위한 데스크탑 프로젝트를 시작했군. 모든 코드를 GPL로 릴리즈한다고? 대단한데.”


“RMS, KDE 프로젝트 대단한 것 같아요. 우리도 지원을 해야합니다”


아니야, 문제가 있어. 결과물이 자유소프트웨어가 될 수 없어.


“그렇군요. Qt가 독점 소프트웨어네요.”(34화 참고)


“음.. 트롤테크가 지금은 Qt 소스 코드도 공개하고 KDE 공동체와 좋은 관계를 갖고 있지만,나중에 회사가 인수되거나 하면 계속 Qt 코드를 지금처럼 공개할지, KDE와 어떤 관계를 가져갈지 알 수 없잖아?”

자유 소프트웨어 진영은 트롤테크에 Qt 소스코드를 GPL로 공개할 것을 요구했다. 하지만, 사업을 하는 트롤테크 입장에서 누군가 Qt를 코드를 포크해서 새로운 사업을 진행해도 막을 방법이 없었기 때문에 쉽게 결정할 수 없었다.

“더 이상 트롤테크의 결정을 기다릴 수가 없네. 결국, 우리에게는 두가지 선택지가 있군. Qt의 자유 소프트웨어 버전을 만들거나, 새로운 리눅스 데스크탑을 만들어 GPL로 공개하는 것.”

“새롭게 리눅스 데스크탑을 만든다면 어떤 툴킷을 써야할까?”
“GIMP에서 사용하는 Gtk+ 툴킷을 써볼까?”

Gtk+ 툴킷은 원래 GIMP에서만 사용하기 위해 만든 위젯이였다. 하지만, 별도로 다른 애플리케이션을 만드는데 사용할 수 있도록 설계되었다.

“프로젝트 이름은 GNOME (GNU Network Object Model Environment). MS의 ActiveX과 같은 컴포넌트를 모델을 기반으로 데스크탑을 만들어봐야지.”

1997년 8월 17일, 미겔은 그놈 프로젝트의 시작을 정식으로 발표한다.

“저는 오늘 여러분께 그놈 프로젝트 시작을 알립니다. 이 프로젝트는 CDE와 KDE와 비슷하지만, 완전히 자유소프트웨어로 개발됩니다. 위젯으로 Gtk+를 사용할 것이고, 다른 프로그래밍 언어에서도 사용할 수 있도록 API 바인딩을 제공할 예정입니다.”

“왜 KDE를 사용하지 않지요?”

“KDE는 훌륭한 프로젝트입니다. 실력있는 해커가 참여하고 있고 좋은 결과물을 만들어냈지요. 안타깝게도 그 결과물은 자유 소프트웨어가 아닌 독점 소프트웨어인 Qt 툴킷을 기반으로 구현되었습니다. 이는 KDE 소프트웨어를 배포하려는 사람들에게 법적인 문제를 제기합니다.


“대신에 Qt의 자유 소프트웨어 버전을 만들면 되지 않을까요?”

“지금까지 작성된 KDE 프로젝트 코드 라인수 보다 Qt 라이브러리가 더 많습니다. 이는 Qt 라이브러리를 다시 작성하는 일이 프로젝트 자제를 만드는 것 보다 더 노력이 필요하다는 것을 의미합니다. 게다가 Qt는 C++하고 Python만 지원하지만, Gtk+는 C, Scheme, Python, C++, Objective-C 및 Perl에서 사용될 수 있습니다.”


“그렇다면 그놈 프로젝트가 사용할 소프트웨어 라이선스가 뭔가요?”

“대부분의 GNU 소프트웨어가 그렇듯이, 그놈 프로젝트에서 개발한 소프트웨어는 GNU GPL을 따르고, 라이브러리는 GNU LGPL의 조건에 따라 릴리스될 것입니다.


“당신이 모든 것을 바닥 부터 만들건가요?”

아닙니다. 우리는 프로젝트 가이드 라인을 준수하면서 가능한한 GNU 프로그램의 기존 코드를 최대한 재사용하려고 노력할 것입니다. 또한, 일관되면서 편리한 사용자 인터페이스를 제공하는 것도 하나의 프로젝트가 될 것입니다. 물론, KDE의 코드도 재사용 할 계획입니다.


“오~ 그놈 프로젝트라… 깔끔하게 GPL로 라이선스를 정리했군. 구미가 당기는데..”

리눅스 커널 해커인 알랜 콕스(Alan Cox)도 초기 그놈 프로젝트가 자리를 잡는데, 많은 기여를 한다. 회사로서는 레드헷도 그놈 프로젝트에 참여한다.

“리눅스 서버 솔루션을 제공하는데, 데스크탑 솔루션이 없어서 고민이였는데, 다행히 그놈 데스크탑이 라이선스 문제도 해결해니, 자 우리도 개발에 참여한다.”

이외에도 많은 해커들이 그놈 프로젝트에 기여를 하기 시작한다.

Gtk+ 역시 크로스 플랫폼을 지원하기 때문에 그놈 프로젝트의 탄생은 Qt에게 위협이 되었다. 결국, 트롤테크는 1998년 QPL 라이선스를 발표했다.


QPL를 통해 KDE 애플리케이션의 재배포 문제를 해결했지만, 여전히 자유 소프트웨어 진영을 만족시킬 수 없었다.

“QPL?, 너무 늦었어. 그놈 데스크탑 1.0이 곧 나올꺼야.”

그놈 데스크탑 0.3 출처: A Brief History of GNOME, GUADEC, 2017

1998년 9월 0.3 버전을 출시한다.

1999년 10월, 미겔은 레드헷 창업자 밥 영의 도움으로 넷 프라이드맨(Nat Friedman)과 함께 그놈 애플리케이션을 개발하는 헬릭스 코드(Helix Code)라는 회사를 창업한다.

에벌루션의 이메일 클라이언트(출처: 위키피디아)

Gnumeric (출처: 위키피디아)

여기서 엑셀과 호환되는 지뉴메릭(Gnumeric)과 아웃룩과 호환되는 에벌루션(Evolution)을 개발한다. 이 회사는 많은 그놈 프로젝트 해커를 고용해서 개발을 지원했고 이는 그놈 프로젝트가 안정적으로 발전하는데 도움을 준다.

1999년 8월 매킨토시 초기 개발자로 유명한 앤디 헤르츠펠트가 세운 Eazel이라는 회사는 그놈 데스트탑용 파일 관리자인 노틸러스를 개발한다. 회사는 나중에 문을 닫았지만, 노틸러스는 현재까지도 그놈 데스크탑에서 사용되고 있다.


“매킨토시 데스크탑 개발 경험을 그놈에 쏟아 부었죠.”

또한 썬 마이크로시스템즈도 GNOME Accessbility 프로젝트를 시작한다.

마침내 그놈 공동체는 1999년 9월 그놈 데스크탑 1.0을 출시한다.


그놈 데스트탑 1.0 (출처: 위키피디아)

결국, 트롤테크는 2000년 Qt에 GPL 라이선스를 추가한다. 하지만, 이는 너무 늦은 대처였고, 결과적으로 오픈소스 데스크탑은 GNOME과 KDE 공동체로 분열되고, 데스크탑 전쟁이라고 부를 만큼 서로 경쟁하게 된다.

  • C vs. C++
  • 미국 & 남유럽 vs. 북유럽
  • 해커 vs. 기업
  • GTK+ vs. Qt

이후, 미겔은 회사 이름을 Ximian으로 변경하고 닷넷 프레임워크(.Net Framework)의 오픈소스 버전인 모노(Mono)를 개발한다. Ximain은 그놈 재단 멤버로 그놈 프로젝트를 후원했고, 데스트탑 리눅스 콘서시엄 멤버이기도 했다. 이후 2003년 4월 노벨에 인수됐지만, 노벨을 인수한 Attachmat Group에서 모노팀을 해고하자, 미겔은 팀을 이끌고 2011년 Xarmarin이라는 회사를 설립하고 모노 개발을 지속한다. 2016년 MS는 Xamarin을 인수하고 공식적으로 모노를 통해 리눅스용 닷넷 프레임워크를 지원하기 시작한다.


그놈 데스크탑 3.0 (출처: gnome.org)

현재 그놈 데스크탑은 레드헷에서 주요 개발팀을 이끌고 있고 그놈 공동체와 개발하고 있다. 현재 3.0 버전이 나와 있으며 레드헷, 우분투, 페도라 등 여러 리눅스 배포본에서 사용하고 있다.

참고

34. 오픈소스 GUI 툴킷 Qt와 KDE 프로젝트의 시작

Qt의 시작

1990년 하바드 노드(Haavard Nord)와 아이릭 참베(Eirik Chambe-Eng)는 노르웨이 공과대학에서 전산학을 공부하는 대학원생이였다.

“아이릭, 나하고 프로그램 하나 개발 안할래?”
“뭔데?”

“초음파 사진을 저장하는 데이터베이스 애플리케이션을 개발하려고 하는데, 유닉스, 매킨토시, 윈도에서 실행되어야해.”
“그러면, UI를 전부 따로 만들어되잖아. 나 맥 프로그래밍 안해봤는데..”

“나도 알아, 그래서 크로스 플랫폼을 지원하는 UI 툴킷을 만들어보는거야. C++ 사용해서 객체지향 기반으로 새로운 디스플레이 시스템을 만드는거지.”

두 사람은 이 때 부터 C++으로 GUI 툴킷 개발을 시작한다.

“바닥 부터 모든 UI 위젯(Widget) 만든다는 생각을 하니까 정말 흥미진진한데..”

“드디어 개발이 끝났네.”

“우리가 만든 GUI 툴킷(Toolkit)이 유닉스, 맥, 윈도에서 다 실행되는데, 이제 뭘하지?”
“좀 더 위젯(widget)을 추가해서 완성도 높은 애플리케이션 프레임웍(Framework)으로 발전시키면 따로 팔 수 있을 것 같아. PC에서도 윈도3.1이 이제 많이 사용되잖아. 앞으로는 GUI시대가 올거야.”

“하지만 제대로 만들려면 우리둘이서 전업으로 몇년 이 일을해야할 것 같은데..”
“ㅎㅎ 방법이 있겠지.”

1994년 3월 4일 하바드와 아이릭은 Quasar Technologies라는 회사를 차리고 본격적으로 개발에 몰두한다. (나중에 Trolltech로 회사 이름을 변경한다)

“툴킷 이름을 뭘로 할까?”
“글쎄, Qt 어때? 난 알파벳 중에 Q가 제일 이쁜 것 같아. 뒤에 toolkit에 t를 붙이는 거지. Xt를 따라해서 Qt?”

어느날 모교 교수로 부터 전화가 왔다.

“하바드군 자네가 창업을 했다고 들었네, 내가 아는 분이 소프트웨어 개발을 원하는데 가능한가?”

“물론이죠 교수님”

“드디어 첫 고객이 생겼어. 하지만, 이런식으로는사업을할수는없지. Qt를 알릴 좋은 방법은 없을까?”
“우리 Qt를 소스 코드와 함께 공개하면 어떨까? Qt로 만든 앱 코드를 공개하면 무료로 사용하도록 하는거지, 상업적으로 사용할 때만 돈을 받으면 되지.”

1995년 5월 20일 Qt 0.90 버전이 sunsite.unc.edu 에 업로드되었고, 6일 후에 comp.os.linux.announce에 그 사실을 알렸다. 이것이 바로 Qt의 첫번째 공개 릴리스였고, Qt Free edition 라이선스로 공개되었다. 이 라이선스는 비록 소스코드는 공개되었으나, 재배포를 허락하지 않아 자유 소프트웨어 재단(FSF)가 정의한 자유 소프트웨어 정의와는 호환되지 않았고, 이 문제는 1.45버전까지 계속된다.

“Qt를 공개했지만 10개월이 되도록 상업용 라이선스를 하나도 못팔았네..”
“몇년째 아내 수입으로 버티고 있는데, 큰일이군.”

“Qt라고 들어봤어? 새로운 UI 툴킷이 나왔는데, C++로 만들었어.. 윈도와 리눅스를 지원하고 있지. Visual C++ MFC랑 비슷해.”
”뭐라고? 리눅스도 된다고? 라이선스가 어떻게 되? 소스는 공개되어 있나?”

“라이선스가 약간 애매해. 소스 코드는 공개되어 있는데, 상업용 소프트웨어를 만들 때는 로열티를 내야 하고, 코드를 공개하는 소프트웨어를 만들면 무료로 사용할 수 있어.”

1996년 3월, 유럽 우주국(the European Space Agency)이 Qt의 두번째 고객이 된다.

“드디어 두번째로 Qt 라이선스를 파는구나.“

1996년 Qt 1.0이 출시되고 그해말, Qt가 1.1이 될때까지 18개의 라이선스를 판매한다.

“드디어 18개의 라이선스를 팔았어!”
“1.0버전이 나오니까 이제 장사가 좀 되네.”

KDE 프로젝트 시작

독일 출신의 마티아스 에트리히(Matthias Ettrich)는 LyX 프로젝트를 진행하다가, GUI를 만들 목적으로 Qt를 접하게 된다.

“LaTeX는 사용하기 어려우니까 UI만들면 좋을 것 같아. 그런데, 리눅스에서 Qt 툴킷이 쓸만하군, 소스코드도 공개되어 있고, 이걸로 X11기반에 새로운 데스크탑 환경을 만들면 어떨까?”

그는 이러한 생각을 여러 인터넷 뉴스 그룹에 공유했고, 반응은 폭발적이였다.

“저와 함께 Qt로 리눅스 데스크탑을 만들어 볼 사람이 있나요?”

“제가 Qt로 애플리케이션을 만들어 본 경험이 있어요. 동참하고 싶어요.”

“나도”, “Qt 좋아요.”, “윈도 관리자도 만들어요?”, “프로젝트 이름이 뭔가요?”

“이름은 CDE(Common Desktop Environment)에서 가져오지. 그냥 C대신 K을 붙이는거야. 발음이 같으니까. 바로 KDE 프로젝트.”

1996년 이렇게 KDE 프로젝트는 시작된다

“누가 Qt로 리눅스 데스크탑을 만든다고 하는데? 윈도 관리자 부터 응용 앱까지..”
“드디어 사람들이 진정한 객체지향 크로스 프레임웍의 진가를 알아보는군..”

하지만, 이러한 상황에 불편을 느끼는 사람들도 있었다.

“KDE는 왜 자유소프트웨어가 아닌 Qt로 GNU 리눅스용 데스크탑을 만드는거야”

“소스코드만 공개하면 뭐하나? 수정해서 재배포도 못하고. Qt가 GPL과 호환이 안되는데, KDE 애플리케이션을 GPL로 배포하겠다고? 몰상식하군”
“그놈(GNOME) 공동체와 함께 Qt의 자유 소프트웨어 버전을 만들어야겠다.”

Qt 사용을 반대해온 사람들이 그놈 공동체를 만들었고 FSF와 함께 하모니라는 Qt의 자유 소프트웨어 버전을 만들기 시작한다.

“그 이야기 들었어? FSF와 GNOME이 하모니라는 Qt 호환 GUI 툴킷을 만든다는 소식”
“심각한 문제인데, 이 문제를 KDE 프로젝트 리더와 이야기를 해봐야겠어.”

1998년, 결국 두 사람은 이 문제를 해결하기 위해 KDE 프로젝트 리더인 마티아스 에트리히((Matthias Ettrich)를 영입한다. 그리고 Qt의 라이선스는 Qt 2.0 릴리스와 함께 자유소프트웨어 정의와 호환되는 QPL(the Q Public License)를 채택한다. 마침내, 2000년 Qt/X11 2.2부터는 GPL v2로 릴리스되어 GPL 호환 문제를 모두 해결한다.

“Qt도 KDE 커뮤니티를 위해 이제 부터 GPL 라이선스로 공개됩니다.”
“고맙습니다. 이제 자유롭게 Qt를 가지고 GPL라이선스를 가진 애플리케이션을 만들 수 있겠군요.”

하지만, Qt의 이러한 실책은 GNOME과 Gtk+를 탄생시켰고 이후, 리눅스 데스크탑은 GNOME과 KDE로 양분되는 결과를 만들고 만다.

“그래봐야 Qt는 회사 소유잖아”
“아직도 C언어로 UI를 만들어?”

Qt의 현재

Qt 공식 개발도구인 Qt Creator 모습 (출처: 위키피디아)

Qt로 만들어진 LG webOS UI(출처: 위키피디아)

Qt는 Qt Embedded 버전을 만들어, 최초의 리눅스 기반의 스마트폰에 사용되었고, 노키아에서 만든 Maemo 플랫폼블랙베리 10에도 사용되었다. LG webOS도 Qt를 사용하고 있다.

참고

P.S.
다음 만화에서는 Gtk+와 GNOME에 관해서 이야기 나누려고 합니다.