오픈소스 라이선스 정리

오픈소스 라이선스 정리

오픈소스 라이선스 정리

소프트웨어를 개발하다 보면, 오픈소스는 자연스럽게 접하게 된다.
처음에는 마냥 무료인 줄 알고 가져다 쓰던 오픈소스애도 여러종류가 있고 지켜야 하는 부분에 대해 법적인 책임을 지지 않기 위해 남겨둔다.

오픈소스 라이선스 고려사항

오픈소스 라이선스 비교 표를 보면서 어떠한 해당사항과 주의해야 하는 사항이 있는지 참고한다.
참고 : 오픈소스 라이선스 비교 표

복제, 배포, 수정의 권한허용

해당 소스코드를 복제하고 배포하고 수정할 수 있다.

배포시 라이선스 사본첨부

라이선스의 소스코드를 배포한다면 라이선스 사본을 배포하여 해야 한다.

저작권 고지사항 또는 Attribution 고지사항 유지

코드의 상단에 삽입되어 있는 원작자의 저작권 고지사항을 지우면 안된다.
다만, 네트워크를 이용한 서비스의 경우 배포로 보지 않기 때문에 의무사항 자체가 발생하지 않는다.

배포시 소스코드 제공의무와 범위

해당라이선스의 소스를 사용하여 개발할 경우, 개발 된 소스코드를 사용자에게 제공해야 하는지에 대한 의무와 범위이다.

  • Work Based on the Code

    • 제공의무: 원 저작물의 소스코드를 원본 그대로, 혹은 수정하여 새로운 SW에 포함하였을 경우
    • 제공범위: 원 저작물의 소스코드가 포함되어, 파생 저작물로 인정되는 범위내의 모든 소스코드
    • GNU GPL, GNU AGPL 등
  • Derivative Work

    • 제공의무: 원 저작물의 소스코드를 수정하여 사용한 경우 제공의무가 존재하며, 수정 없이 그대로 사용하였을 경우에는 소스코드를 제공하지 않아도 됨
    • 제공범위: 원 저작물을 사용함에 있어 수정을 거쳤다면, 원 저작물의 소스코드에서부터 존재하던 파일을 모두 공개해야 하며, 파생 저작물의 저작자가 추가적으로 생성한 부분에 대해서는 공개하지 않아도 됨
    • GNU LGPL, NASA Open Source Agreement, Simple Public License 등
  • O 혹은 O(표준버전)

    • 비명시적으로 소스코드의 제공을 요구
    • Artistic License에서 표현하고 있는 "O(표준버전)"는, '표준버전’의 소스코드를 제공해야 함을 의미하며, 따라서 '수정버전’의 소스코드는 공개하지 않아도 됨
    • Artistic License(Standard Version), Qt Public License, Frameworx License 등
  • File

    • 제공의무: 원 저작물의 소스코드를 원본 그대로, 혹은 수정하여 새로운 SW에 포함하였을 경우
    • 제공범위: 원 저작물을 사용함에 있어 수정을 거쳤다면, 원 저작물의 소스코드에서부터 존재하던 파일 중, 수정된 부분을 포함하는 파생 저작물을 모두 공개해야 하며, 파생 저작물의 저작자가 추가적으로 생성한 파일에 대해서는 공개하지 않아도 됨
    • Mozilla Public License, Common Development and Distribution License, Sun Public License 등
  • Module

    • 제공의무: 원 저작물의 소스코드를 원본 그대로, 혹은 수정하여 새로운 SW에 포함하였을 경우
    • 제공범위: 원 저작물을 사용함에 있어 수정을 거쳤다면, 원 저작물의 소스코드에서부터 존재하던 파일 중 수정된 부분을 포함하는 모듈을 모두 공개해야 하며, 파생 저작물의 저작자가 새로이 생성한 부분 중 기존 모듈에 해당되지 않는 부분에 대해서는 공개하지 않아도 됨
    • Eclipse Public License, Common Public License, Adaptive Public License 등
  • File Derivative Work

    • 제공의무: 원 저작물의 소스코드를 수정하여 사용한 경우 제공의무가 존재하며, 수정 없이 그대로
      사용하였을 경우에는 소스코드를 제공하지 않아도 됨
    • 제공범위: 원 저작물의 소스코드에서부터 존재하던 파일 중 수정된 부분을 파일 단위로 공개해야
      하며, 파생 저작물의 저작자가 추가적으로 생성한 파일에 대해서는 공개하지 않아도 됨
    • Reciprocal Public License
  • Module Derivative Work

    • 제공의무: 원 저작물의 소스코드를 수정하여 사용한 경우 제공의무가 존재하며, 수정 없이 그대로
      사용하였을 경우에는 소스코드를 제공하지 않아도 됨
    • 제공범위: 원 저작물의 소스코드에서부터 존재하던 파일 중 수정된 부분을 모듈 단위로 공개해야
      하며, 파생 저작물의 저작자가 추가적으로 생성한 부분 중 기존 모듈에 해당되지 않는 부분에
      대해서는 공개하지 않아도 됨
    • Computer Associates Trusted Open Source License
  • Accompanying Software

    • DB SW나 DB SW를 사용하는 동봉된 SW에 대하여, 완전한 소스코드를 구할 수 있는 방법을
      첨부하기를 요구
    • Sleepycat License

출처 : https://www.olis.or.kr/consulting/projectHistoryDetail.do?bbsId=2&bbsNum=604

조합저작물 작성 및 타 라이선스 배포허용

조합저작물을 작성해서 타 라이선스로 바꾸어 배포에 대한 허용 여부.

수정내용 고지

오픈소스를 수정한 경우 수정사항에 대해 고지를 해야한다. -> 어떻게?

명시적 특허라이선스의 허용

특허권자의 허락을 받지 않더라도 오픈소스를 무료로 사용이 가능한지에 대한 여부.

라이선스가 특허소송 제기시 라이선스 종료

라이선 시(licensee - 권리를 부여받은사람)에게 특허소송을 제기 할 경우 라이선스가 종료된다.(대표적인 라이선스 : GPL / LGPL)

이름, 상표, 상호에 대한 사용제한

저작자 및 기여자의 이름·상표·상호를 홍보목적으로 사용가능한지에 대한 제한.

보증의 부인

일반적으로 상용SW는 제품에 문제가 있을 경우 일정 기간AS 등을 통해 제품 보증을 해준다.
오픈소스SW 라이선스는 이러한 보증을 해주지 않는 다는 의미이다.

책임의 제한

해당 코드를 사용하면서 사고 등이 발생하였을 경우 저작권자가 이를 책임지지 않는 다는 의미.

라이센스 종류

GPL 라이센스 (소스코드 공개 필요 O, 동일한 라이센스 적용 O, 상업적이용 O)

GNU라고도 불리는 이 라이센스는 리눅스 커널에 기본 라이센스로 채택되면서 개발자 사이에선 유명한(악명높은) 라이센스가 됐다… 이 라이센스는 오픈소스의 철학에 기초해서 만들어진 것이기 때문에 ‘자유를 누린 만큼 너의 코드도 공개해!’ 원칙을 가지고 있다. 이 라이센스를 이용해서 만든 소프트웨어는 동일한 GPL 라이센스를 사용해야하고 모두 코드를 공개해야 한다. ‘내가 얘네 썼는지 어떻게 알겠어’ 하면서 무시할 수도 있지만 이미 판례를 통해 법적인 효력까지 갖춘 라이센스이기 때문에 사용할 때는 신중해야 한다. 자세한 내용은 나무위키 전염성 조항 참고하면 좋다. 리눅스 커널 기반 안드로이드 폰 제조사들이 다른 코드는 몰라도 리눅스 커널 소스코드는 공개할 수 밖에 없는 것은 GPL 라이센스 덕분이다.

BSD 라이센스 (소스코드 공개 필요 X, 동일한 라이센스 적용 X, 상업적 이용 O)

BSD는 자유 소프트웨어 저작권의 한가지로 BSD계열(미국 캘리포니아 대학 버클리에서 개발한 운영체제인 유닉스)에서 주로 채택하고 있는 라이센스다. 규정은 앞서 언급한 GPL과 확연하게 다른데 이 오픈소스 라이센스를 가진 코드는 자유롭게 사용할 수 있고 소스코드를 공개 하지도 않아도 되며 돈받고 팔아도 된다. BSD에서 눈여겨 볼 만한 것은 다루는 것은 누구나 자신의 용도로 사용할 수는 있지만 이 소프트웨어를 사용해서 발생 가능한 모든 리스크와 손해는 본인이 책임지도록 하고 있다. 책임 도피형 라이센스다.

MIT 라이센스 (소스코드 공개 필요 X, 동일한 라이센스 적용 X, 상업적 이용 O)

라이센스 이름에서 추측할 수 있듯이 매사추세스 공과대학에서 만든 소프트웨어 라이센스다. BSD를 기초해서 만든 라이센스라 거의 규정은 똑같다. 소스코드를 공개할 필요도 없고 동일한 라이센스를 적용할 필요도 없으며 이 소프트웨어를 사용해서 발생할 수 있는 손해에 대해서도 책임을 지지 않는다는 것 까지 동일하다. BSD 계열의 소프트웨어에서 일반 소프트웨어로 옮겨오기 위해 만든 라이센스 정도로 생각하면 될 것 같다.

Apache 라이센스 (소스코드 공개 필요 X, 동일한 라이센스 적용 X, 상업적 이용 O )

아파치(Apache) 소프트웨어 재단에서 자체적으로 만든 라이센스다. 안드로이드 프레임워크쪽의 대부분의 라이브러리가 이 라이센스 규정을 따르고 있다. BSD와 거의 규정이 동일해 소스코드를 공개할 필요가 없다. 차이점이 있다면 Apache 라이센스는 특허권 측면에서 좀더 완성도를 높여서 Apache 라이센스로 출원한 특허에 대해서는 소스코드 사용자에게 특허의 무제한적 사용을 허가한다는 규정을 담고 있다. 즉 어떤 소프트웨어가 아파치 라이센스를 채택해서 배포했다면 그 소프트웨어가 특허출원이 되어 있어도 사용자에게 특허 사용료를 요구할 수 없다는 뜻이다. 나무위키에 따르면 소스코드를 무료로 공개해놓고 그걸 빌미 삼아 특허권 소송을 제기하는 더티한 플레이를 막기 위한 규정이라 한다. 이런 법적인 안전장치까지 있어서 개발자들이 가져다가 쓸 때 가장 선호하는 라이센스 중에 하나인 것 같다.

좀 더 자세한 내용은 라이선스 가이드를 참고하자.

출처: https://selfish-developer.com/entry/오픈소스-라이센스-정리 [아는 개발자]

donaricano-btn

댓글

이 블로그의 인기 게시물

[IOS] AppDelegate는 뭐하는 녀석이지?

[git] git의 upstream과 origin 헷갈리는 사람 손!

[git] Github 이슈 라벨(issue labels)