본문 바로가기

Code.D IT 강좌/ETC

소스코드와 오픈소스



소스 코드(Source code)란 무엇일까?


소스 코드 또는 원시 코드란 컴퓨터 소프트웨어(프로그램)를 프로그래밍 언어로 기술한 글을 말합니다. 몇 줄, 또는 수백만 줄의 텍스트로 구성되어 있습니다. 보통 우리가 이용하는 프로그램들은 소스 코드를 컴파일 하여 개발합니다.


프로그래머가 특정한 컴퓨터 소프트웨어(프로그램)를 만들 때는 설계도가 필요합니다. 이러한 설계도로 비유할 수 있는 것이 바로 소스 코드입니다. 소스코드로 만든 프로그램을 실행하려면 프로그래머는 컴퓨터가 이해할 수 있는 기계어로 번역을 해야 합니다. 소스코드는 사람이 읽을 수 있는 형태이지만 컴퓨터가 이해하지는 못합니다. 따라서 기계어로 번역을 해줘야 하는데 그 첫 번째 단계가 컴파일러라고 하는 컴퓨터 프로그램을 이용하여 소스코드를 목적코드로 만들어 주는 것입니다.




소스코드(Source code)와 목적코드(Object code)?



소스코드와 목적코드에 대해 알아보기 이전에 컴파일러에 대해 알아보도록 하겠습니다. 컴파일러는 해석기, 번역기라는 뜻으로 어떤 프로그래밍 언어로 쓰여진 소스 파일을 다른 프로그래밍 언어로 옮기는 번역 프로그램을 말합니다. 소스코드와 목적코드는 프로그램이 컴파일러에 의해 컴파일 되기 '이전'과 '이후'버전을 가리킵니다. 소스코드는 컴파일 되기 '이전'버전, 적코드는 컴파일 되기 '이후'버전이라고 생각하시면 이해하기가 쉬울 겁니다. 




오픈소스(Open source)란?


소프트웨어 또는 하드웨어의 제작자의 권리를 지키면서 누구에게나 무상으로 소스코드를 공개하여 일반인들이 사용하고 수정할 수 있도록 만든 것입니다. 프로그래머는 오픈소스를 활용한 2차적인 프로그램을 창작할 수도 있으며, 심지어 상업적인 용도로 사용하기도 합니다. 또한 글꼴과 같은 데이터에도 개발모델로서 적용되는 경우가 있습니다.




오픈소스가 단순히 free라는 것을 의미하나요?


일반적으로 경제적인 관점에서의 free라는 것만을 의미하는 것이 아닙니다. free라는 의미보다는 기술을 공개하여 공개적인 협업이라는 의미에 더욱 가치가 있는 것이지요. 오픈소스의 정신은 기술을 대중들에게 공유하여 그것을 바탕으로 서로 발전해 나가는 것을 원하는 것입니다.




오픈소스 소프트웨어 라이선스


오픈소스 소프트웨어는 소스코드가 공개되어 있어 누구나 접근할 수 있는 것은 맞지만, 소스코드를 사용하는 이용자는 그에 따른 법적 책임도 뒤따릅니다. 반드시 그 소프트웨어의 개발자가 규정한 라이선스를 읽어 보고 지켜야 합니다. 이를 위반할 경우 라이선스 위반 및 저작권 침해가 발생하고, 이에 대한 법적인 처벌을 받게 됩니다. 일반적으로 오픈소스 소프트웨어 라이선스는 기본적으로 사용자의 자유로운 사용, 수정, 배포를 보장하고 있습니다.


아래를 한번 살펴보도록 하겠습니다. 라이선서(Licenser)는 라이선스를 부여하는 자이며 라이선시(Licensee)는 라이선스를 받는 자를 뜻합니다.


- 라이선시는 해당 오픈소스SW를 자유롭게 사용할 수 있습니다.

- 라이선시는 해당 오픈소스SW를 자유롭게 복제할 수 있으며, 일정한 조건하에 재배포할 수 있습니다.

- 라이선시는 해당 오픈소스SW를 자유롭게 수정하여 사용할 수 있으며, 일정한 조건하에 수정된 내용을 재배포할 수 있습니다.

- 라이선시는 해당 오픈소스SW의 소스코드를 자유롭게 획득하고 접근할 수 있습니다.




독점SW 라이선스에서 규정된 의무사항과 비교하면 오픈소수SW 라이선스가 요구하는 내용은 결코 어렵지 않으며, 이를 잘 이해하고 준수하면 독점SW보다 훨씬 비용을 절감할 수 있습니다. 또한 몇몇 라이선스만이 독자 개발한 소스코드의 공개를 요구하고 있기 때문에 이를 잘 분석한 후 사용한다면 문제 발생 소지는 거의 없다고 봐야할 것입니다.


따라서 오픈소스SW를 다운로드 받아 개발에 적용할 때에는 반드시 라이선스의 요구 사항을 확인하여야 합니다. 자체 판단이 불가능할 경우에는 전문가에게 조언을 의뢰하여 개발 시작 전 해당 라이선스의 요구 사항과 오픈소스SW의 사용 목적을 확실히 분석하여야 합니다. 이렇게 하는 것만으로도 충분히 올바르게 활용할 수 있으며, 나중에 발생할 수 있는 문제들을 사전에 차단할 수 있습니다.


※ 참고사항

오픈소스SW 라이선스 종합정보시스템(OpensourceSW License Information Systems) - '라이선스 소개'