오픈소스에 대한 이해를 만화로 쉽게 할 수 있는 블로그가 있어서 원작자 님의 허락을 얻고 공유합니다. 공유를 허락해주신 원작자님에게 감사 드립니다.
원작자 : https://joone.net/


IT 기술은 하루가 다르게 변화 발전해왔다. 하지만, 유닉스 만큼은 만들어진 40여년이 지났지만, 그 철학과 코드는 유닉스를 모태로 한 운영체제에 살아있다.

안드로이드에서 사용되는 리눅스 커널과 아이폰과 맥에서 사용되는 맥OS도 그 중 하나이다.

이 외에 유닉스 호환 운영체제인 미닉스도 유닉스의 설계 철학을 따라 만들어졌다. (더 자세한 가계도는 위키피디아를 참고)

“어떻게 유닉스는 지금까지도 사용되고 있을까?”

그 해답을 찾기 위해서는 유닉스 철학을 알필요가 있다. 물론, 처음 유닉스를 만들때는 거창한 철학 이런거는 없었다.  굳이 물어본다면,

“간단하고 멍청하게 하자” [1]

“아니, 농담이 아니라 진짜 철학을 설명해주세요.”

“그냥 만들었는데…”

켄 톰슨(Ken Thompson)으로 부터 유래된 유닉스 철학은 최소화되고 모듈화된 소프트웨어 개발 방식에 대한 개발 문화의 기준과 철학적 접근 방식을 말한다. 이는 유닉스 선두 개발자들이 얻은 경험을 근간으로 하고 있다[1].

“그래도 잘 모르겠네.”

공식적으로는 1978년 더글러스 맥클로이(Doug McIlroy)에 의해 문서화되었다[1].

  1. 각 프로그램이 하나의 일을 잘 할 수 있게 만들 것. 새로운 일을 하려면, 새로운 기능들을 추가하기 위해 오래된 프로그램을 복잡하게 만들지 말고 새로 만들 것.
  2. 모든 프로그램 출력이 아직 잘 알려지지 않은 프로그램이라고 할지라도 다른 프로그램에 대한 입력이 될 수 있게 할 것. 무관한 정보로 출력을 채우지 말 것. 까다롭게 새로로 구분되거나 바이너리로 된 입력 형식은 피할 것. 대화식 입력을 고집하지 말 것.
  3. 소프트웨어를, 심지어는 운영 체제일지라도 이른 시기에 수주에 걸쳐 이상적으로 시도해가며 설계하고 만들 것. 어설픈 부분을 버리고 다시 만드는 것을 주저하지 말 것.
  4. 프로그래밍 작업을 가볍게 하기 위해, 심지어 우회하는 방법으로 도구를 만들고 바로 버릴지라도 어설픈 도움 보다는 도구 사용을 선호할 것.

그리고 나중에서 피터 사루스(Peter H. Salus)가 다시 한번 요약하였다.[2]

  • 한가지를 일만 잘 하는 프로그램을 만들 것.
  • 다른 프로그램 함께 동작할 수 있는 프로그램을 만들 것.
  • 텍스트 스트림을 처리할 수 있는 프로그램을 만들 것. 왜냐면, 그것이 범용 인터페이스이기 때문이다.

이처럼, 유닉스는 마치 레고 블록 처럼 프로그램간의 입출력을 서로 연결해서 내가 원하는 기능을 쉽게 만들도록 하였다. 무엇보다도 어셈블리어가 아닌 C언어와 같은 고급 언어(high level language)로 만들어져 다른 컴퓨터로 이식이 쉬웠다.

“물론, 또 다른은 이유가 있는데, 그것은 불법복제? 이 이야기는 기회가 되는데로 나중에 이야기하기로…”

“비밀” (유닉스 소스코드가 담긴 테이프)

[1] https://ko.wikipedia.org/wiki/유닉스_철학
[2] https://en.wikipedia.org/wiki/Unix_philosophy

번호 제목 글쓴이 날짜 조회 수
공지 오픈소스 이야기 게시판 이용안내 [3] Kevin 2018.04.13 25
24 허태준 - 가장 의미 있고 즐거운 개발 file Kevin 2018.04.22 22
23 + 인가요? More 인가요? [1] 세벌 2018.04.20 17
22 깃허브가 직접 깃허브에 오픈한 오픈소스 가이드 [4] file PEACH 2018.04.19 35
21 오픈 소스 역사 게시판인가요? [2] 세벌 2018.04.14 44
20 오픈소스에 대한 다큐멘터리 Revolution OS [1] file Kevin 2018.04.13 39
» 유닉스 철학 - 함께 동작할 수 있는 프로그램을 만들 것 [3] Kevin 2018.04.13 35
18 해커문화의 탄생 [1] Kevin 2018.04.13 31
17 BSD 유닉스 6화 – 자유로의 투쟁 [2] Kevin 2018.04.13 32
16 BSD 유닉스 5화 – TCP/IP 개발 [1] Kevin 2018.04.13 22
15 BSD 유닉스 4화 – CSRG(Computer Systems Research Group) 결성 [1] Kevin 2018.04.13 21
14 BSD 유닉스 3화 – BSD 유닉스 시작 [1] Kevin 2018.04.13 20
13 BSD 유닉스 2화 – vi 에디터의 탄생 [1] Kevin 2018.04.13 27
12 BSD 유닉스 1화 – UC 버클리로 간 유닉스 코드 [1] Kevin 2018.04.13 25
11 라이온스 교수의 유닉스 해설서 [1] Kevin 2018.04.13 19
10 리차드 스톨만과 자유소프트웨어 이야기 [1] Kevin 2018.04.13 20
9 GNU Project - ‘GNU’s Not Unix [1] Kevin 2018.04.13 33
8 자유 소프트웨어 재단을 아시나요? [1] Kevin 2018.04.13 26
7 리눅스 생존 가이드 (리눅스 데스크탑 적응기) [2] file 행복한펭귄 2017.01.25 6735
6 리누스 토발즈 강연 The mind behind linux 행복한펭귄 2017.01.19 5102
loginbox
아직 회원이 아니세요? MEMBER JOIN