: I saw that the world, the social system that encouraged people to cooperate was being replaced by one in which cooperation was called piracy, and I decided that all I could possibly get by participating in that was money, and that just money was not enough to live for. I had to aim for something more important than that. -- From An interview with Stallman, David Bennahum. See http://memex.org/meme2-04.html
1. Free Software ¶
70년대가 지나면서 80년대로 들어서자 컴퓨터가 점차 개인이 사용할 수 있는 환경이 되었다. 비록 현재처럼 일반인들이 일반적인 목적에서 컴퓨터를 사용하는 사회적 분위기는 아니었지만, 사용자 층이 늘어나면서 그 들 사이에서 독특한 문화가 존재하였다. 특히 이 문화는 인터넷의 Usenet, newsgroup을 통해서 확산되었다. 사용하고 있는 컴퓨터의 운영체제에서 제대로 돌아가는 프린터 드라이버가 문제가 생기면 자신이 개선하거나 새로 만들거나 할 수 있는 사용자들이 생기고 이런 프로그램들은 자연스럽게 서로에게 공유되는 분위기였다.
이런 분위기는 맑스가 이야기했던 것처럼 마치 자본주의가 개화하기 전의 사람들의 노동은 곧 자신의 생활과 같은 분위기였다. 컴퓨터 사용자들은 주로 대학교나 상업적인 회사의 연구원으로 연구생활을 하면서 부가적으로 혹은 필요에 의해서 소프트웨어를 만든다는 생각이 강하였다. 앞서 인터넷 역사에서 언급되었던 인물들에게 연구업적이란 "경제적인 성공"와 연결되는 것이 아닌, 원하는 테크놀로지의 구현과 실현, 그리고 완성되어 가는 기술에 동참하여 더 나은 기술을 만들어가는데 만족감을 느끼는 것과 같았다고 묘사하면 크게 틀린 것이 아니듯이 컴퓨터 사용자들은 초기에 자신들이 과학세계의 (scientific worlds) 일부이며, 자신들이 이루어 놓은 업적이 선행된 업적에 또 다른 하나를 더하는 가치있는 작업이라는 만족하는 경향이 있었다[1]. 즉, 소프트웨어는 곧 돈을 버는 수단이라는 생각은 극히 제한적이었다. 예를 들면, 초기의 Bell labs[2]에서 개발된 Unix 운영체제는 초기에 비용이 지불되지 않는 상품이었다 [3].
1983년 MIT의 Stallman은 [7][8] 자신이 작성했던 프로그램 중 Symbolics사가 고친 부분은 살펴 볼 수 없다는 것, 그리고, Symbolics사가 자신과 주변의 소위 "hacker"라고 불리는 자유스러운 정신을 가진 프로그래머들에게 상업적인 굴레를 씌우는 것에 반대를 하면서 GNU manifesto를 (GNU 강령) 만든다. 이 강령은 소프트웨어는 "굴레로부터 자유롭게 사용되어야 한다[9]"는 뜻을 담고 있으며, copyright라는 상업적인 굴레가 좀 더 나은, 사회에 도움이 되는 software를 제작하거나 사용하는 환경을 (오히려) 해치고 있음을 주장한다. 그는 초안으로 작성된 GNU manifesto [10]를 더 가다듬어 GNU General Public License 를 만들고 free software를 위한 GNU project를 진행하는 한편, Free Software Foundation을 비영리단체로 설립한다.
In 1971 when I joined the staff of the MIT Artificial Intelligence lab, all of us who helped develop the operating system software, we called ourselves hackers. We were not breaking any laws, at least not in doing the hacking we were paid to do. We were developing software and we were having fun. Hacking refers to the spirit of fun in which we were developing software. The hacker ethic refers to the feelings of right and wrong, to the ethical ideas this community of people had -- that knowledge should be shared with other people who can benefit from it, and that important resources should be utilized rather than wasted. Back in those days computers were quite scarce, and one thing about our computer was it would execute about a third-of-a-million instructions every second, and it would do so whether there was any need to do so or not. If no one used these instructions, they would be wasted. So to have an administrator say, "well you people can use a computer and all the rest of you can't," means that if none of those officially authorized people wanted to use the machine that second, it would go to waste. For many hours every morning it would mostly go to waste. So we decided that was a shame. Anyone should be able to use it who could make use of it, rather than just throwing it away. In general we did not tolerate bureaucratic obstructionism. We felt, "this computer is here, it was bought by the public, it is here to advance human knowledge and do whatever is constructive and useful." So we felt it was better to let anyone at all use it -- to learn about programming, or do any other kind of work other than commercial activity. -- Stallman 인터뷰 at http://memex.org/meme2-04.html
이 정신을 기반으로 만들어지고, 세계의 프로그래머들이 동참하여 완성된 대표적인 소프트웨어가 "Linux"이다. 핀란드의 컴퓨터 사이언스 학부의 대학생이던 Linus Torvalds는 자신이 새로 구입한 PC의 운영체제가 만족스럽지 않아[11], 이를 보완하고자 학부시절 중 몰입하여 만들던 프로그램의 소스를 Usenet과 ftp를 사용하여 다른 소프트웨어 프로그래머들에게 소개한 것이 시작이었다. 이렇게 소개된 Linux라는 OS는 곧 세상의 프로그래머들이 동참하는 프로젝트가 되었으며, 현재 Linux에서 그가 작업한 량은 약 2%에 달한다고 한다. 이 2%는 작은 듯 하지만, 프로젝트에 동참한 프로그래머의 숫자를 생각해보면 그 누구보다다 많은 기여를 한 인물이다[12].
Linus Benedict Torvalds Hello everybody out there using minix - I'm doing a (free) operating system (just a hobby, won't be big and professional like gnu) for 386(486) AT clones. This has been brewing since april, and is starting to get ready. I'd like any feedback on things people like/dislike in minix, as my OS resembles it somewhat (same physical layout of the file-system (due to practical reasons) among other things). I've currently ported bash(1.08) and gcc(1.40), and things seem to work. This implies that I'll get something practical within a few months, and I'd like to know what features most people would want. Any suggestions are welcome, but I won't promise I'll implement them :-) Linus (torvalds@kruuna.helsinki.fi) PS. Yes - it's free of any minix code, and it has a multi-threaded fs. It is NOT protable (uses 386 task switching etc), and it probably never will support anything other than AT-harddisks, as that's all I have :-(. -- August 26, 1991
위 인용문의 원문소스
Do you pine for the nice days of minix-1.1, when men were men and wrote their own device drivers? Are you without a nice project and just dying to cut your teeth on a OS you can try to modify for your needs? Are you finding it frustrating when everything works on minix? No more all- nighters to get a nifty program working? Then this post might be just for you :-) As I mentioned a month(?) ago, I'm working on a free version of a minix-lookalike for AT-386 computers. It has finally reached the stage where it's even usable (though may not be depending on what you want), and I am willing to put out the sources for wider distribution. It is just version 0.02 (+1 (very small) patch already), but I've successfully run bash/gcc/gnu-make/gnu-sed/compress etc under it. Sources for this pet project of mine can be found at nic.funet.fi (128.214.6.100) in the directory /pub/OS/Linux. The directory also contains some README-file and a couple of binaries to work under linux (bash, update and gcc, what more can you ask for :-). Full kernel source is provided, as no minix code has been used. Library sources are only partially free, so that cannot be distributed currently. The system is able to compile "as-is" and has been known to work. Heh. Sources to the binaries (bash and gcc) can be found at the same place in /pub/gnu. ALERT! WARNING! NOTE! These sources still need minix-386 to be compiled (and gcc-1.40, possibly 1.37.1, haven't tested), and you need minix to set it up if you want to run it, so it is not yet a standalone system for those of you without minix. I'm working on it. You also need to be something of a hacker to set it up (?), so for those hoping for an alternative to minix-386, please ignore me. It is currently meant for hackers interested in operating systems and 386's with access to minix. The system needs an AT-compatible harddisk (IDE is fine) and EGA/VGA. If you are still interested, please ftp the README/RELNOTES, and/or mail me for additional info. I can (well, almost) hear you asking yourselves "why?". Hurd will be out in a year (or two, or next month, who knows), and I've already got minix. This is a program for hackers by a hacker. I've enjouyed doing it, and somebody might enjoy looking at it and even modifying it for their own needs. It is still small enough to understand, use and modify, and I'm looking forward to any comments you might have. I'm also interested in hearing from anybody who has written any of the utilities/library functions for minix. If your efforts are freely distributable (under copyright or even public domain), I'd like to hear from you, so I can add them to the system. I'm using Earl Chews estdio right now (thanks for a nice and working system Earl), and similar works will be very wellcome. Your (C)'s will of course be left intact. Drop me a line if you are willing to let me use your code. Linus PS. to PHIL NELSON! I'm unable to get through to you, and keep getting "forward error - strawberry unknown domain" or something. -- Oct 6, 1991
위 인용문의 원문소스
Linux 외에 GPL에 참여하여 만들어진, 그리고 널리 사용되는 소프트웨어를 들어보면:
- Operating systems: BSD; Darwin; OpenSolaris
- Compiler: GCC compilers; GDB debugger; C libraries
- Relatonal database management systems: MySQL; PostgreSQL
- 서버: BIND name server; Sendmail mail transport; Apache web server; Samba file server.
- 오피스 형 어플리케이션: OpenOffice
- 웹브라우저: Mozilla; Firefox
- Graphic: GIMP 그래픽에디터
- 출판 (typesetting): TEX, LaTex,
위의 공식은 웹페이지를 통해서 보면 그래픽파일처럼 보이지만 사실은 아래와 같은 내용을 직접 이 위키에 적어 넣은 것이다.
$ \int_0^{2\pi}\sin\ x\ dx $ $ \Large\overbrace{a,...,a}^{\text{k a^,s}}, \underbrace{b,...,b}_{\text{ l b^,s } }\hspace{10} \normalsize\underbrace{\overbrace{a...a}^{\text{k a^,s}}, \overbrace{b...b}^{\text{l b^,s } } }_{\text{k+l elements} } $ $ \Large A\ =\ \large\left( \begin{array}{c|ccc},1,2,3\\\hline1,a_{11},a_{12},a_{13}\\ 2,a_{21},a_{22},a_{23}\\3,a_{31},a_{32},a_{33}\end{array}\right) $ . . . .
set pm3d splot x*x+y*y
----
- [1] 리누스의 자서전적인 책 참조
- [2] Bell labs의 역사에 대해서는 http://en.wikipedia.org/wiki/Bell_Labs 을 참조.
- [3] Unix는 그러나 소스를 고치거나 새로 부가하는 등의 작업이 허락되지는 않았다. 소스가 공개되어 있으면서도 Unix와 똑같은 기능을 하는 프로그램들을 원하는 사람들이 많이 있어으며 이들이 현재의 오픈소스와 같은 운동과 분위기를 만들었다.
- [4] 오리지날 IBM PC에 관한 정리는 IBM Personal Computer를 참조
- [5] 이를 IBM PC compatible이라고 불렀으며, 오늘 날 사람들이 PC라고 부르는 개인용 컴퓨터를 말한다.
- [6] I saw that the world, the social system that encouraged people to cooperate was being replaced by one in which cooperation was called piracy, and I decided that all I could possibly get by participating in that was money, and that just money was not enough to live for. I had to aim for something more important than that. -- From An interview with Stallman, David Bennahum. See http://memex.org/meme2-04.html
- [7] http://www.stallman.org/ 참조
- [8] 그에 대한 정보는 Richard_Stallman를 참조.
- [9] Free는 자유라는 의미를 뜻하지 무료 혹은 공짜를 뜻하는 것은 아니다.
- [10] http://www.gnu.org/gnu/manifesto.html 참조
- [11] 토발즈는 새로운 PC와 함께 새로운 OS를 구입하였는데 이것이 Minix였다. 그는 후에 모듈형 철학을 가지고 개발된 Minix의 단점으로 생각하고 모듈형을 피한 OS인 Linux를 제안하게 되는데, 이것이 Usenet에서 flaming을 부르게 된다. 그러나, 아이로닉하게도 그가 OS개발을 위해서 바이블과 같이 참조하였던 것이 Minix의 저자가 쓴 책이었다.
- [12] Torvalds는 사회주의자였던 아버지와 집안 분위기에 의해서 자연스럽게 GNU GPL에 참여하게 되었지만, 프로젝트 참여를 강요하는 type의 RMS (Stallman은 이렇게 불리길 원한다)와는 자세한 부분에서 의견을 달리하는 면이 있다. Linux가 gnu/Linux라는 이름을 갖지 않게 된 것도 이런 이유 때문이기도 하다.
- [13] 좀 더 자세한 리스트는 http://directory.fsf.org/ 참조.