Q & A

GitHub 또는 인터넷에 있는 모든 C 언어 소스 파일을 가져다 쓸 수 있나요?

공개된 C 언어 소스 코드를 가져다 쓰더라도 자신이 프로그램을 실행하고자 하는 운영체제 맞는 소스 코드를 사용해야 합니다. 만약 Windows에서 실행할 프로그램을 작성하는데 리눅스용 소스 코드를 가져와서 사용하려고 해도 컴파일이 잘 되지 않을 것입니다. 왜냐하면 각 운영체제별로 API(Application Programming Interface)가 다르기 때문입니다.

다른 운영체제용으로 작성된 프로그램을 현재 운영체제에 맞게 고치는 작업을 포팅(porting) 또는 이식이라고 하는데 초보 때는 쉽지 않은 작업입니다. 나중에 실력이 쌓이면 도전해보세요.

보통은 프로그램을 실행하고자 하는 운영체제에 맞는 소스 코드를 찾아서 사용하면 됩니다. 현재 대부분의 오픈 소스는 다양한 운영체제에서 사용할 수 있도록 만들어져 있습니다. 또는, 운영체제 고유의 API를 사용하지 않고 순수하게 알고리즘만으로 작성된 소스 코드는 운영체제에 상관없이 사용할 수 있습니다.

  • 예) 암호화 알고리즘, 압축 알고리즘 등

오픈 소스를 상업적으로 사용한다면 반드시 소스 코드를 공개해야 하나요?

오픈 소스 라이선스는 크게 GPL 계열과 BSD 계열 두 종류로 나뉩니다. GPL 계열은 상업적으로 사용했을 때 소스 코드를 함께 공개해야 하며 BSD 계열은 공개하지 않아도 됩니다. 이들 라이선스는 다양한 파생 라이선스가 있습니다.

  • GPL: 프로그램을 사용했을 때 소스 코드와 함께 판매하거나 무료로 배포해야 합니다. 수정한 부분 역시 공개해야 하며 GPL 라이선스를 따라야 합니다.
  • LGPL: 프로그램을 사용했을 때 소스 코드를 공개하지는 않아도 됩니다. 단, 소스 코드를 수정했을 때는 수정한 부분을 공개해야 합니다.
  • BSD: 프로그램을 사용하거나 소스 코드를 수정해도 소스 코드를 공개할 의무가 없습니다. 따라서 상업적으로 사용했을 때 소스 코드를 공개하지 않아도 됩니다.
    • BSD 계열 라이선스: Apache, MIT

GPL 라이선스를 따르는 대표적인 오픈 소스는 리눅스 커널입니다. 리눅스 커널은 소스 코드를 사용 또는 수정했을 때 반드시 소스 코드를 공개해야 합니다.

오픈 소스 라이선스는 조건이 매우 다양하고 복잡합니다. 더 자세한 내용은 위키피디아의 오픈 소스 라이선스 비교 페이지나 정보통신산업진흥원의 공개SW 라이선스 가이드를 참조하세요.