GNU 프로젝트와 리눅스

HOJIN JUNG·2023년 3월 12일
0

Linux

목록 보기
1/4
post-thumbnail

The Linux Story 의 첫 번째 이야기 입니다. 총 4가지의 이야기로 구성되어있고, 이번 포스팅에서는 리눅스의 등장배경과 GNU Operating System 에 대해 설명합니다. 차근차근 이해하며 읽기 쉽게 번역하는 것을 목표로 합니다.

🚪 들어가기에 앞서

오늘날 개발자들에게는 오픈 소스는 천성과도 같다. 우리는 날로 발전하는 개발자 커뮤니티를 가지고 있고, 수십만 명의 개발자는 오픈 소스 코드에 매일 기여하고 있다. 과거 실제 존재하지도 않았고 아마 존재하지 않았을지도 모르는 이 개발자 커뮤니티는 Richard Matthew Stallman(RMS)*의 철학이 아니었다면 이런 성장을 이루지 못했을 것이다. 스택오버플로우(Stackoverflow)와 같이 오픈소스 문제해결법을 사용하지 않고 프로그램을 작성한다고 생각해보자. 🤯 OMG!

  • Richard Matthew Stallman: GNU 프로젝트와 Open Software의 창시자


1. GNU 프로젝트

우리가 오픈 소스를 생각할 때 가장 먼저 떠올리는 사람은 리누스 토발즈(Linus Tovalds)다. 리누스 토발즈리눅스를 만들었고, 오늘날 대부분의 서버들이 사용하는 커널을 설계했다.

그 이전엔 리차드(RMS)라는 개발자가 있었으며, 1985년부터 무료 소프트웨어 라는 개념을 진척시켰다. 리처드는 GNU Operating System를 통해서 무료 소프트웨어 운동을 위한 합법적, 기술적, 철학적 재단을 만들었다. 그의 기여가 없었다면 리눅스나 오픈소스가 오늘날 존재하는 형태로 발전하지 않았을지도 모른다.

GNU 비하인드 스토리

리차드는 MIT AI Lab에 1971년 합류하여, 당시 프로그래밍을 사랑하는 사람들이 만든 조직인 hackers에 들어갔다. 1970년대와 80년대는 리차드가 MIT AI Lab에서 AI와 프로그래밍에 관련한 연구를 하였던 때이다. 이 시간동안 리차드는 Unix OS와 같이 소유권이 명확한 소프트웨어와 관련해 좋지않은 경험을 하였다.

그가 작동하고 고치길 원했던 일부 코드가 잠겨있었기 때문에, 요구사항을 코드에 반영할 수 없었다. 비록, 그가 변경하고자 하는 부분이 소프트웨어를 소유한 회사에 이득이 되는 것이었지만, 회사는 소스 코드에 접근하는 것을 거절했다. 그러한 상황이 소유권이 있는 소프트웨어에 대한 생각에 대한 불쾌감을 일으켰고, 그는 지적 소유권과 소프트웨어에 대한 아주 깊은 적대감을 키우게 되었다. 그러한 보복으로 Free Software Foundation을 설립하게 되었다.

1984년 리처드는 MIT를 그만두고 본격적으로 GNU Operating System에서 일하기 시작했다. 여기서 GNU란, 두문자 그대로 해석될 수도 있지만, 쪼개어서 보자면 "Gnu's Not Unix" 를 상징한다. 유닉스와 같은 운영체제를 만들되, 유닉스와 달리 소유권이 없는 GNU 를 만들겠다는 것을 의미한 것이다.


초기 계획

리차드가 처음 의도했던 것은 무엇이었을까? 유닉스는 운영체제로서, 다양한 프로그램들로 구성되어있다. 리차드는 우선 각 프로그램들을 대체하는 프로그램을 만들기 시작했고 그와 함께 합류할 수 있는 소프트웨어 개발자들을 초빙했다.

1991년까지 유닉스의 대부분의 구성요소를 다시 다른 프로그램으로 만들었으며 여기에는 C 컴파일러, 디버거, 문서 편집 프로그램, 메일함 등이 포함되어있다. GNU OS의 가장 중요한 것은 무료 소프트웨어라는 점이었다. 여기서 무료 소프트웨어란, 사용자가 마음대로 연구, 복사, 변경, 발전, 배포시킬 수 있는 자유를 가지고 있다는 것을 의미한다. 무료 소프트웨어는 가격이 아니라 자유의 문제였던 것이다.

오픈소스는 현 시대에서 흔한 개념입니다. 오픈 소프트웨어가 익숙하지 않았던 1990년대만 하여도, 개발자에게 소프트웨어를 바꾸고, 연구할 자유는 제한적이었습니다. 리차드가 무료 OS를 만들었다는 것이 의의 있는 것이 아니라 이전에 없었던 "자유", 즉, 이전에 만들어진 무언가를 고려하기에 앞서, 선택할 수 있는 기회 를 제공했다는 점이 멋지다 느껴졌습니다. 리차드는 "free software"에서 "free" 를 무료가 아닌 자유 라고 의도한 것 같습니다.


도둑으로부터의 보호 - GNU General Public License

무료 소프트웨어가 공짜 음료를 의미하는 것이 아님에도 불구하고, 사람들은 무료로 오픈된 소스를 자기 입맛에 바꿔 수정한 뒤, 배포하고 소유권을 주장할 수 있다. 만약 무료 소프트웨어가 누군가에 의해 소유권이 있는 소프트웨어로 전락한다면, 무료 소프트웨어 운동에 대한 철학을 위배하는 것이다. 이를 막기위해 리차드는 "CopyLeft"와 "CopyRight" 개념을 도입하였다. GNU General Public License라는 자격증명을 가진 무료 소프트웨어는 수정되어 배포되더라도, 그 수정된 버전 역시 GNU 라이센스 안에서 무료 소프트웨어의 철학을 위배해서는 안된다.



2. 미완성 커널 - Missing Kernel

GNU 프로젝트는 OS를 만들기 위한 필수적 도구키트를 개발하는 것으로 시작했다. 도구란 문서 편집기, C 컴파일러, 디버거 등과 같은 필수적 소프트웨어를 의미한다. 이러한 프로그램들 아래에 놓여져 있는 커널을 만드는 것이 첫 의도였지만, 결국 완벽한 OS를 만드는 것으로 GNU 프로젝트가 변경되었다. 전체 도구키트를 1990년대에 완성하였지만, 여전히 유닉스 커널을 사용한다는 단점이 있었다. 여기서 리누스 토발즈가 뛰어든 것에서 리눅스 커널의 역사가 시작된다.

Monolithic VS Microkernel

GNU 프로젝트가 커널 개발을 위한 필수 도구를 가지고 있었다 할지라도, 리누스 토발즈는 GNU 프로젝트에서 사람들이 이전에 발전시키지 않았던 커널을 발전시킨 사람이다.

리누스 토발즈는 헬싱키 대학교에서 자신이 사용하던 컴퓨터를 위한 비슷한 환경(SunOS)을 사용하는 리눅스를 만드는 아이디어에 앞서, 첫 아이디어로 커널을 만드는 것에서 시작하였다. SunOS는 유닉스 기반의 Sun Microsystem들에 의해 구성된 OS 이다.

리누스 토발즈는 monolithic 커널을 개발하였다. 여기서 monolithic(모놀리식)은 micro kernel들을 하나로 합친 거대한 커널을 의미한다. 리누스 토발즈는 마이크로 커널들보다 더 빠르게 동작하는 하나의 커널을 만들었다. 마이크로 커널은 비동기적으로 동작하는 작은 서비스였기에 발전이 어렵고, 시간을 많이 소비한다는 단점이 있었다. 리처드는 리누스 토발즈가 개발한 커널이 시간적 측면에서 더 빠르다는 것을 인정했기에 GNU Operating System의 일부로 리눅스 커널을 도입하기로 결정하였다.

MSA에서 모놀리식과 마이크로를 많이 접하였습니다. 이 개념이 본 글에서도 등장하여 흥미로웠습니다.
"마이크로"가 각각의 작은 프로그램(서비스) 처리를 의미한다면, "모놀리식"이란 각기 비동기적으로 처리하던 작은 프로그램을 하나로 합쳐 처리하는 것을 의미합니다.



3. GNU와 리눅스의 관계

리누스 토발즈는 리처드와 같은 철학을 가지고 있었다. 리눅스와 GNU 프로젝트는 아주 끈끈한 관계를 가지고 있다고 볼 수 있다. GNU 운영체제는 리눅스 커널을 차용하였기에 더욱 발전할 수 있었고, 리누스 토발즈는 GNU 프로젝트에 참여한 개발자들이 만든 오픈소스 C 컴파일러가 있었기에, 리눅스를 개발할 수 있었기 때문이다.

그럼에도, 리누스 토발즈는 GNU 프로젝트와 별개로 리눅스 프로젝트를 시작하였습니다. 다음 포스팅에서는 리눅스가 인기가 있을 수 밖에 없었던 이유를 다루겠습니다.



🔠 살펴볼 문장과 단어

문장

  • The community had it not been for the philosophies of Richard Matthew Stallman(RMS)
    : RMS의 철학이 있었기 때문이라는 강조의 의미로 'had it not been for 명사' 가 사용되었다.
    : RMS라는 철학이 있었기 때문에 그 커뮤니티가 있을 수 있었다. 라는 뜻으로 해석하였다.

단어

  • ingrained: (습관)이 깊이 배어든; 천성의
  • preached: ~을 전도하다
  • proprietor software: 소유주가 있는 소프트웨어
  • tweak the software: (최고의 성능을 발휘할 수 있도록)소프트웨어를 개조하다.
  • apparatus: (몇가지 도구로 된) 장비
profile
근거를 가지고 앞으로 나아가는 엔지니어

0개의 댓글