Yo-mi 2023. 8. 31. 03:25

오픈소스 라이선스: 소프트웨어를 출시하고 사용할 때 신경 써야 할 중요한 부분

오픈소스의 정의

배포된 소스코드를 자유롭게 복사, 수정, 사용, 재배포 할 수 있는 소프트웨어를 뜻한다.

 

오픈소스 선택 시 고려사항

품질: 기능(우리가 원하는 기능이 있는가?), 성능, 호환성(얼마나 수정해야 하는가?) 등 오픈소스의 품질은 오픈소스를 선택하는 데 가장 중요한 요소다. 개발자 입맛에 따라 오픈 소스가 만들어지므로 오픈소스의 클래스, 메소드들이 다 다르다. github에서의 sta, fork수(정성적 정량 수치)로 오픈소스의 완성도를 가늠할 수 있다. 오픈소스를 사용하려는 기술 조직은 당연히 충분한 기능과 성능 검증을 수행한 후 제품/서비스에 도입해야 한다.

 

커뮤니티: 오픈소스가 얼마나 사용자를 보유하고 있는지, issue 관리는 이루어지고 있는지, 지속적으로 업데이트를 하는 지 등, 지속가능한 오픈소스를 선택해야 한다.

 

문서화: 문서화가 잘 되어있으면 기업이 도입하는 데 수월하다. 설명이 잘 되어 있는 것을 선택한다.

 

보안 취약점: 사용하려는 오픈소스의 버전이 보안 취약점이 있는지 확인 후 사용해야 한다. 보안은 OS 보안, 네트워크 보안, 웹 보안으로 나뉘는데 웹 보안이 가장 문제가 많다. CVE 사이트에서 사용하려는 오픈소스 보안 취약점을 체크해라.

 

라이선스: 오픈소스를 “재배포 시” 준수해야 할 의무사항을 요구한다. 가장 간단한 의무인 고지 의무부터 가장 복잡한 의무인 소스 코드 공개 의무까지.

GPL: 관련된 모든 소스코드를 공개(가장 강력한 라이센스)

 

 

오픈소스와 법적 책임

라이선스를 지키지 않으면 사용 권리가 박탈되고 제품을 판매할 수 없다. 또한 수익을 능가하는 돈을 내야 할 수도 있다. 기업 이미지에 큰 손실을 끼친다. 법적 소송에 연루될 수 있다.

 

 

오픈소스도 저작권 지식 재산권 존재

!!!!!!!!소스코드가 공개 되도 오픈소스 라이센스가 없으면 오픈소스가 아님!!!!!!!

 

 

오픈소스 라이선스의 주요 의무 사항

1. 저작권 표시 및 라이선스 고지: 가장 약한 라이선스, 소스 코드 파일 상단에 주석을 달거나 README 파일 안에 고지한다.

2. 소스코드 공개

3. 재배포시 동일 라이선스 적용: “Copyleft”

2,3을 동시에 요구하는 라이센스: GPL

오픈소스를 사내에서 테스트 용도로 사용한다면, 의무사항은 부과되지 않는다.

OSI: 오픈소스에 해당하는 라이선스의 최소한의 기준을 정의 해놓고 이 정의에 따라 오픈소스 라이선스를 인증함.

 

아무 조건 없이 사용 가능한 라이선스

Creative Commons Zero

The Unlicense: 아무런 제한을 걸지 않는 라이선스(아무런 제한을 걸지 않아도 라이선스를 등록 해야한다.)

수월하게 사용 가능한 라이선스(Permissive License)

오픈소스 라이선스의 고지 의무가 있는 라이선스

Ex) BSD, JSON License, MIT License, Microsoft Public License, Python Software Foundation License, Independent JPEG Group License

주의가 필요한 copyleft 라이선스

GPL은 재배포 시 소스코드 공개를 요구한다. +Create commons attribution.

이러한 오픈소스는 설계 단계에서부터 build 시 자사 소프트웨어와 통합되지 않고 runtime에도 독립된 프로세스로 동작되도록 해야한다.

GPL-3.0 같은 경우에는 제품을 배포하기 위해 소스 코드뿐만 아니라 설치 정보를 함께 제공해야 한다.

Weak Copyleft

LGPL: 메모리를 공유하는 방식인 Dynamic Linking 방식은 봐준다.

별도의 실행 파일을 통신으로 하면 GPL 라이선스를 겪지 않을 수 있다. LGPL Library 부분만 소스 코드를 공개하면 되고, 결합하는 코드는 공개를 하지 않아도 된다.

+apple, mozilla, eclipse

 

static linking: 코드가 링킹되어 하나의 실행 파일안에 링킹되어 있을때, 99개중 1개가 GPL 라이선스면 배포 시 100개가 모두 GPL이 걸리는 것이다.

dynamic linking: 별도 파일(dll)로 존재하여 필요할 때 메모리에 올려 사용

 

GPL: static,dynamic 둘다 소스코드 공개, 재배포시 동일 라이선스 적용

lGPL: dll은 봐주는 약화된 GPL

GPL우회법: 별도 프로그램 두개로 만들어서 '통신'으로 연결함

 

사용 제한 라이선스

네트워크에서는 gpl보다도 agpl이 더 강력하다. 서버에 agpl의 오픈소스가 있다면 배포하지 않아도 함께 링크되어 동작하는 다른 소프트웨어의 소스코드까지 agpl로 공개해야 한다. 회사의 핵심 서버 프로그램까지도 공개해야 하는 위험이 있다.

광고 조항 포함 라이선스도 있다.

 

소스코드 제공 의무 유형

GNU GPL, GNU AGPL: 모든 소스 코드를 공개해야함

GNU LGPL, NASA: static하게 연결된 모든 걸 열어라(파생 작업물)

Mozila, Sun public license: 코드가 아닌 파일 공개, 파일 단위로 열어라, 다는 아님.

이클립스: 모듈 단위(함수, 함수의 변형된 형태 공개), 다는 아님.

~ : 수정된 부분만 파일 단위로 공개

~ :모듈(함수의 수정된 부분만 모듈 단위로 공개)

 

Apache: 고지의무

GNU GPL

카피레프트, 자유 소프트웨어 재단에서 만든 라이선스, 배포하는 경우 무조건 GPL로 공개해야 한다. Dynamic Linking을 해도 GPL 라이선스.

별도의 실행 파일을 두개로 만들어서 통신으로 연결하면 GPL 라이선스를 겪지 않을 수 있다.

EX) 리눅스 커널, 워드프레스

GNU AGPL(server)

서버에 agpl의 오픈소스가 있다면 배포하지 않아도 함께 링크되어 동작하는 다른 소프트웨어의 소스코드까지 agpl로 공개해야 한다.

Ex) 몽고DB

 

GNU LGPL

좋은 자유 소프트웨어 제품이 더 많이 쓰이고 표준이 되도록 유도하기 위해 단순한 라이브러리, 모듈 링크를 허용한 라이선스.

EX) 모질라 파이어폭스

 

MIT License

MIT에서 소프트웨어 공학도들을 돕기 위해 개발한 라이선스. 가장 느슨한 조건을 가진 라이선스 중 하나이다. 고지의무를 가진다.

EX) 부트스트랩, Backbone.js, jQuery

 

BSD License

버클리의 캘리포니아 대학에서 배포하는 라이선스다. 공공의 몫으로 돌려주자는 의미가 강하다. 저작권 표시 조건 외에는 제약이 없다.

EX) Nginx

 

 

주의가 필요한 copyleft 라이센스

가장 강력함!

GPL이 여기 속함

 

Creative common 라이센스, 뒤에 붙는 레벨에 따라 다름!

지적 재산권을 명시하면서도 사용을 허용함

 

기능정의 후 개발 전 관련 라이센스 등을 다 확인

 

weak copyleft:

LGPL: DLL에 대해서 완화해준다.(약간 완화됨)

이클립스: lgpl에 속하는 오픈소스

소스코드 말고도 설치 정보등의 사용자 제품에대한 정보도 공개해야함

다이나믹 link에대해서 dll은 봐줌(PPT 참조)

대부분의 법적 절차는 '기간'이 치명적임

그 정도 기간이면 웬만한 스타트업은 못버티고 사라짐

 

사용 제한 라이선스

GNU affero : 옾소가 들어간 서버가 인터넷 서비스 -> 이건 재배포에 해당하니까 코드 공개

따라서 많은 기업들이 금지함

광고를 포함한 라이선스 : 요구사항 준수가 어려워 대부분 사용을 금지함

 

대표적인 오픈소스 라이선스

 

[GPL이 무서운 이유]

내가만든 실행파일에 GPL 라이선스 포함되면 전부 공개

 

static link,Dynamic linking: 동일한 메모리를 공유하면 전부 해당됨

 

몽고DB: Affero GPL(통신으로~ 소스코드 다운가능해야함)

 

LGPL: 분리되어 있는 경우, 봐줌(라이브러리,모듈 링크를 허용함)

정적링크는 소스코드와 앱의 오브젝트 코드도 공개해야함

 

Mozilla Public License(MPL)

개발자 편향적(GPL과 반대)

소스코드와 실행파일의 저작권을 분리함!

실행파일은 내꺼

 

MIT License

가장 느슨, 법적 고지문을 카피해서 포함하는 형태면 충분

bootstrap,angular.js

 

Berkeley Sw Distribution (BSD)

라이센스 및 저작권 표시하면 끝