GitHub에는 훌륭한 프로젝트들이 많습니다. 그리고 이런 프로젝트는 대부분 그 소스 코드가 공개되어 있습니다. 이렇게 소스 코드가 공개되어 있는 프로젝트를 **'오픈 소스 프로젝트(open source project)'**라고 하는데요. ‘오픈 소스’가 뭘까요? 간단히 설명하자면 프로그램의 소스 코드가 대중에 공개된 상태일 때 오픈 소스라고 합니다. 오픈 소스라는 용어의 의미는 그것이 생겨난 역사적 배경을 살펴보면 좀더 잘 이해할 수 있습니다.
아주 오래 전에 프로그램이라고 하는 건 그 소스 코드를 공개하고, 공유하고, 그 원리를 아는 사람이 모르는 사람에게 가르쳐주는 게 당연한 존재였습니다. 하지만 컴퓨터 프로그램 시장이 발전하면서 특정 회사가 어떤 프로그램을 만들고 그 사용료 등을 받는 것이 일반화되기 시작했는데요. 이런 변화와 함께 프로그램의 소스 코드들은 점점 그 프로그램을 만든 회사만 갖고 있고 공개되지 않기 시작했습니다. 그러니까 내가 고객으로서 어떤 회사의 프로그램을 쓰더라도 그 프로그램의 소스 코드를 볼 수는 없게 된 겁니다.
하지만 이런 움직임에 반해 1983년 ‘리차드 스톨만(Richard Stallman)’이라고 하는 MIT의 연구원이 '자유 소프트웨어 운동'이라는 걸 시작했습니다. 아주 오래 전 소스 코드를 공유하던 문화로 돌아가자는 취지의 운동이었는데요. 그는 곧이어 '자유 소프트웨어 재단(Free Software Foundation)' 이라는 걸 세우고 이러한 운동을 조직화했습니다. 자유 소프트웨어 재단에서 소프트웨어는
는 정신이 강조되었고, 그러한 정신에 부합하는 프로그램들이 그 운동 속에서 많이 만들어졌습니다. 그 중 대표적인 프로그램은 바로 'GNU 리눅스'라고 하는 운영체제입니다. GNU 리눅스에 대한 이야기는 유닉스 커맨드 토픽의 이 영상을 참고하세요.
그런데 이런 자유 소프트웨어(Free Software)라는 명칭에 대해서는 그 의미가 확실하지 않다는 몇몇 논란이 있었고, 이러한 성격의 소프트웨어를 가리키기 위한 다른 용어로 ‘오픈 소스 소프트웨어’가 제시되었습니다.(자유 소프트웨어와 오픈 소스 소프트웨어가 조금은 다르다고 보는 의견도 있지만 여기서는 일단 같다고 보겠습니다.)
이런 역사적 흐름을 거쳐 오픈 소스 소프트웨어라는 개념이 생기고 정착하게 된 것인데요.
요즘 여러분이 들어봤을 수도 있는 유명한 오픈 소스 소프트웨어에는
등이 있습니다. 많은 유명 프로그램들이 사실은 이런 오픈 소스 프로젝트로 개발되고 있는 경우가 꽤 많습니다.
하지만 오픈 소스라고 해서 사용할 때 항상 아무런 제약이 없는 것은 아닙니다. 왜냐하면 사실 오픈 소스에도 다양한 종류의 라이센스(open source license)들이 있기 때문입니다. 예를 들어 어떤 오픈 소스 라이센스 중에는