리눅스가 Open Source로써 성공할 수 있었던 이유

리눅스의 시작

리누스가 “Just for fun” 취미로 만들었던 OS Linux. 지금은 세상을 돌아가게 하는 가장 커다란 OS 중 하나입니다. 생각해보면 참 대단한 역사를 가지고 있는 것 같아요. 시작은 교육용 Unix인 Minix의 대안으로 취미 삼아 만든 OS가 지금은 전세계에서 가장 많이 사용하는 OS가 되었죠. 시작은 작았으나 이렇게 거대한 공룡이 되기까지는 참 많은 우여곡절이 있었을거라고 생각해요.

리눅스의 진짜 시작

linux kernel git repositories : https://git.kernel.org
linux kernel github : https://github.com/torvalds/linux

위 링크된 페이지는 리눅스 커널 소스를 볼 수 있는 페이지입니다.
많은 개발자 분들에게 github이 친숙하기 때문에 한번 쭉 훓어볼까요?
생각보다(?) github에 익숙하신 분들에게는 친절하지 못하다고 느낄 수 있습니다.

README.md도 단순명료합니다.

현재 git master의 commit 수는 약 97만개 정도군요. 생각보다 적다구요? 사실은 이는 리눅스 커널 2.6.12-rc2 버전 이후부터의 commit 수 입니다. 아쉽게도 torvalds의 github에서는 리눅스의 첫번째 커밋을 볼 수가 없어요. 대신 다른 분이 리눅스 0.01 버전을 kernel.org의 ftp를 통해 올려둔게 있는데
https://github.com/zavg/linux-0.01
바로 위 repository 입니다.

리눅스 커널이 오픈소스로 성공할 수 있었던 이유는 여러가지가 있을 수 있겠지만 제가 생각하는 가장 첫번째 이유는 바로 Documentation에 있다고 생각해요.

https://github.com/zavg/linux-0.01/blob/master/init/main.c

리눅스 0.01 커널 버전의 main 코드를 살짝 맛보실까요?

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
void main(void)/* This really IS void, no error here. */
    {/* The startup routine assumes (well, ...) this */
    /*
     * Interrupts are still disabled. Do necessary setups, then
     * enable them
     */
       time_init();
       tty_init();
       trap_init();
       sched_init();
       buffer_init();
       hd_init();
       sti();
       move_to_user_mode();
       if (!fork()) {/* we count on this going ok */
           init();
       }
    /*
     *   NOTE!!   For any other task 'pause()' would mean we have to get a
     * signal to awaken, but task0 is the sole exception (see 'schedule()')
     * as task 0 gets activated at every idle moment (when no other tasks
     * can run). For task0 'pause()' just means we go check if some other
     * task can run, and if not we return here.
     */
     for(;;) pause();
   }

코드를 보시면 마치 하나의 글을 읽고 있다는 느낌이 들지 않나요? 저기 간단한 void main 선언부만 보더라도 에러가 나지 않는다고 친절하게 설명을 붙여두었어요. 그리고 현재의 리눅스에는 어마어마한 Documentation이 있습니다.

https://github.com/torvalds/linux/tree/master/Documentation

이게 리눅스 문서들이에요. 엄청나게 많죠? 지금은 솔직히 다 보기는 힘들겠지만 정작 개발자들이 디바이스 드라이버를 만든다던지 특정 코드를 고쳐야한다던지 할때에는 여기 Documentation보다 좋은 설명을 인터넷에서 찾기가 힘들어요.

오픈 소스를 성공시키고 싶다구요?

바로 리눅스를 따라하면 됩니다! Documentation은 소통의 중심이고 오픈 소스를 돌아가게 만드는 정말 중요한 포인트입니다. 앞으로 개발하면서 Documentation을 재미있게 남기면서 개발해보자구요!

comments powered by Disqus