일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- Spring Boot
- 인터넷의이해
- Machine Learning
- LINUX MASTER
- ICT멘토링
- C언어
- Github
- rnn
- cloud
- colab
- OSS
- Powershell
- GoogleDrive
- 고등학생 대상
- Rocky Linux
- VSCode
- 국가과제
- Database
- KAKAO
- Docker
- 크롤링 개발
- Python
- git
- ChatGPT
- 코딩도장
- suricata
- Resnet
- API
- Spring
- Kubernetes
- Today
- Total
코딩두의 포트폴리오
OSS - 01_공개SW 라이선스 본문
오픈소스SW(OSS, Open Source Software)
오픈소스 SW란?
저작권 존재 But 저작권자가 소스 코드를 공개하여 누구나 자유롭게 사용, 복제, 배포, 수정, 활용할 수 있는 소프트웨어
오픈소스 SW (Copyleft) vs 비공개 소프트웨어
공통점
- 저작권은 작성과 동시에 저작권자에게 귀속됨
- 오픈소스 sw와 비공개 sw는 모두 저작권이 존재
차이점
- 오픈소스 sw - 소스 코드 공개 -> 누구나 자유롭게 사용,복제,배포,수정,활용할 수 있는 권리를 사용자에게 부여
- 비공개 sw - 소스 코드 비공개 -> 사용자가 자유롭게 사용,복제,배포,수정,활용 금지 / 사용에 대한 대가 요구
상용 소프트웨어
- 수익 창출을 목적으로 만들어진 SW 제품
- 소스 코드 공개 X - 유료로 제품 판매
- 소크 코드 공개 O - 오픈소스 sw 라이선스를 적용하여 듀얼 라이선스 정책 펼치기도 함
OSS의 활용분야
- 운영체제 - 리눅스 계열 OS, 안드로이드(모바일)
- 데이터베이스 - Cubrid DB, MySQL, MariaDB, postgreSQL
- 클라우드 컴퓨팅 및 빅데이터 - 아마존 AWS, 구글 클라우드, 하둡, R
오픈소스SW 발전과정
80년대 - 리처드 스톨만이 설립한 FSF에 의한 자유 SW 운동이 시초
90년대 인터넷 보급과 함께 리눅스가 오픈소스로 널리 보급
OSI (Open Source Initiative)
- 오픈소스의 의미와 오픈소스 라이선스로 허용할 수 있는 라이선스의 정의 OSD(Open Sourece Definition)을 관리하는 기관 - 오픈소스 SW의 활성화와 인증 담당
- OSI가 인증한 SW 라이선스에 OSI 인증 마크 부여 - 대략 80개, 라이선스들은 각각 다른 요구 사항과 조건 가짐
OSI의 10가지 오픈소스SW 정의
- 자유 배포 - 재배포 사용자에 대한 제한X, 재배포SW에 별도 라이선스 비용 징수X
- 소스코드 공개 형태로 배포
- 2차적 저작물을 만들고 배포 가능
- 소스코드 수정 제한 But 자유 배포 허용
- 개인, 단체에 대한 차별 금지
- 사용 분야에 대한 제한 금지
- 별도 승인, 양도 없이 라이선스 배포 가능
- 라이선스 적용상의 동일성 유지
- 다른 라이선스의 포괄적 수용
- 라이선스의 기술적 중립성
오픈소스SW 라이선스 공통 개념
라이선스
사용권, 사용허가
오픈소스SW 저작권자가 사용자에게 자신의 저작물에 대한 사용을 허락하는 명문화된 문서
오픈소스SW의 사용 형태
복제 - 오픈소스SW를 수정하지 않고 있는 그대로 사용하는 것
수정 및 결합 - 그 이외의 사용 형태, 이슈가 많이 발생
사용범위
오픈소스SW를 수취하고 실행만 하는 경우, 라이선스 의무사항이 발생 X
다만, 오픈소스SW를 유상이든 무상이든 배포를 경우에 다양한 라이선스 의무사항이 발생
주요 의무사항
소스코드 공개의 의무, 무상 특허 권리 허용의 의무, 사용 및 변경 사용에 대한 고지의 의무가 있음
소스코드 공개 의무가 발생될 경우, 공개 방법이나 라이선스 간의 양립성에 대한 추가 검토 필요
오픈소스SW 라이선스 분류
가장 많이 사용되는 10가지 라이선스 - 88% 정도 차지 (1.Apache / 2.MIT / 3.GNU ......)
OSCI 순위 상위 5개 회사의 라이선스 사용
코드 공개여부, 범위에 따라 나뉘어짐
- 퍼미시브(permissive) 계열 - 62%
- 카피레프트(copyleft) 계열 - 위크 카피레프트: 6% / 스트롱 카피레프트: 20%
퍼미시브(permissive) 계열
사용자에게 광범위한 사용권한 부여하는 오픈소스SW 소프트웨어 계열의 라이선스
기본적으로 저작권 및 라이선스 사용 고지 정도만 요구
Apache, BSD, MIT 등이 대표적인 퍼미시브 라이선스
카피레프트(Copyleft) 계열
소스코드 공개 및 원저작물을 기반으로 만들어지는 파생저작물도 동일한 라이선스로 공개
소스코드 공유의 개념 즉, 프리소프트웨어 계열의 라이선스
- 위크 카피레프트 계열 - 수정 부분 포함하는 코드에 대한 공개를 요구하는 라이선스들로서 MPL, EPL, LGPL 등
- 스트롱 카피레프트 계열 - 결합된 모든 코드에 대한 동일조건의 소스코드 공개를 요구하는 라이선스로 GPL, AGPL 등
SW 라이선스 분류
오픈소스 라이선스와 특허의 상호작용
- 특허 포함 - 소프트웨어 사용자가 특허 침해 소송의 위험 없이 소프트웨어를 사용할 수 있도록 보장
- 특허 보호 - 소프트웨어 사용자가 특허 침해 소송을 제기할 경우 라이선스에서 제공하는 권리를 상실
- 특허 위험 - 소프트웨어가 특허를 침해할 수 있는 기술을 구현할 경우, 사용자는 특허 소유자로부터 침해 청구를 받음
소스코드 공개 여부에 따른 라이선스 비교
지식재산권의 종류
특허, 디자인, 저작권, 영업비밀, 상표, 실용신안
소프트웨어 지적재산권
모든 SW는 저작권, 특허권, 상표권, 영업비밀 이 4가지 법적 장치를 통하여 보호 받음
저작권(copyright)
- 창작물에 대하여 창작자(저작자)가 자동으로 취득하는 권리
- 창작의 결과물을 보호하며, 창작과 동시에 권리가 발생
- 저작권이 있는 저작물은 저작권자의 허락이 없이는 누구도 해당 저작물을 사용, 복제, 베포, 수정할 수 없다.
저작권 등록 절차
특허권(patent)
- 발명에 관하여 발명자(특허권자)가 갖는 독점 배타권
- 저작권과는 달리 일정한 방식으로 출원해야 하며, 심사를 통과한 후 등록되어야만 권리가 발생
- 특허기술을 사용하기 위해서는 반드시 특허권자의 허락을 얻어야 함
- 특허받은 방식을 구현하는 소프트웨어라면 프로그래밍 언어에 상관없이 특허권의 범위에 속함
특허권 취득 절차 - 특허청
상표권(trademark)
- 상표권자가 지정상품에 관하여 그 등록상표를 사용할 독점적인 권리
- 일정한 절차에 따라 등록하여야 효력이 발생
- 상표를 사용하기 위해선 반드시 상표권자의 허락을 얻어야 함 - 그렇지 않으면 상표권 침해
영업비밀
- 공개되지 않은 소스코드는 영업비밀로서 보호를 받을 수 있다.
- But 일단 공개 시 보호받기 어려움, 영업비밀을 알지 못하고 사용한 제3자에게 법적 문제를 삼을 수 없다.
특허권 vs 저작권
컴퓨터 H/W와 S/W의 지식재산권의 보호
특허법에 의한 권리 보호
- 컴퓨터 H/W와 S/W 모두 권리 보호 가능
- S/W는 데이터구조 또는 저장매체 형태로 제한적 권리범위
저작권법과 컴퓨터 프로그램보호법에 의한 권리 보호
- S/W의 프로그램 소스 코드에 대한 권리 보호
- 특허보다 그 권리보호 범위가 제한적
특허 vs 영업비밀 중요
S/W 기술 보호에 특허가 선호되는 이유
- 일반적으로 특허가 영업비밀에 비해 보호범위가 넓다
- 특허권의 권리범위를 결정하는 청구범위의 전략적 작성 및 수정 가능
- 특허권의 상대적으로 짧은 보호기간은 신기술의 life-cycle을 고려할 때 문제 X
- '비밀'로 유지되는 것이 적절할 경우 영업비밀이나 저작권 활용
소프트웨어 라이선스
- 소프트웨어에 대한 독점 배타권을 가진 권리자는 다른 사람들이 해당 소프트웨어를 사용, 배포하는 것을 허락
- 상용 소프트웨어 라이선스의 주된 내용은 권리자가 사용자에게 라이선스 부여 -> 사용자는 그 대가 지급
오픈소스 라이선스
오픈소스에도 지적재산권 존재 -> 권리자 허락 없이 함부로 사용 시 소송 당할 수 있음
광범위한 라이선스 / 사용자가 자유롭게 복제,배포,소스코드 수정 허용 / 의무사항 요구
저작권, 개발자 및 기여자 정보 표시
대부분의 오픈소스 라이선스는 개발자 또는 기여자에 관한 사항, 저작권에 관한 사항을 제품에 표시 혹은 포함
코드를 수정한 경우 수정한 정보의 표시
이용자가 소스코드 수정 시 수정한 사람, 수정 일자 등 수정에 관한 내용 포함 -> 원본과 구별 필요
라이선스 정보의 제공
많은 오픈소스 라이선스들 -> 이용자들이 오픈소스에 관한 권리 잘 이해할 수 있도록 배포자가 해당 라이선스 사본 함께 첨부할 것 요구
동일한 라이선스로 재배포할 것
라이선스에 따라 큰 차이를 보이는 부분은 '카피레프트'에 관한 부분 -> 제대로 된 공유에 목적을 둠
GPL을 대표로 하는 카피레프트 라이선스들은 이용자들이 소프트웨어 수정 후 배포 시 -> 수정된 소프트웨어 또한 동일한 라이선스로 배포할 것 요구
소스코드의 제공
카피레프트 조항 포함하는 라이선스 경우 -> 소프트웨어어 배포 시 소스코드까지 함께 배포 요구
GPL 라이선스 (Copyleft 계열)
GPL 라이선스
초창기 가장 많은 오픈소스SW가 채택하고 있는 라이선스
다른 오픈소스SW 라이선스에 비해 의무사항 엄격
GPL 2.0 라이선스 주요내용
SW 배포 시 저작권 표시
SW "배포" 시 공유 강제
GNU General Public License v2.0
서로 다른 라이선스를 가진 오픈소스SW를 사용할 때 발생할 수 있는 양립성 문제와 SW특허 문제에 대처하기 위해
GPL 3.0 발표 -> GPL 2.0과의 차이점(추가된 부분)
GNU General Public License v2.0 vs GNU General Public License v3.0
GPL로 배포된 소프트웨어 수정, 새로운 SW에 정적 링크, 두 개의 모듈이 동일한 실행 파일에 포함되어 있을 경우
-> 해당 파일에 포함된 모든 소스는 GPL이 적용
동적 링크 방식으로 공유주소영역에서 링크되어 실행되도록 설계된 경우
-> GPL SW와 함께 링크되어 실행되는 SW에도 GPL이 적용되므로 소스코드를 제공해야 함
LGPL 라이선스 (less) (Weak copyleft 계열)
FSF가 GPL보다 소스코드 공개 정도를 다소 완화된 형태로 사용할 수 있도록 만든 라이선스
기업에게 오픈소스SW를 장려하기 위해 만듦
GNU General Public License v2.0 vs GNU Lesser General Public License v2.1
LGPL 라이선스 주요내용
SW를 배포하는 경우 저작권 표시, 보증책임이 없다는 표시 및 LGPL에 의해 배포됨
LGPL 라이브러리 일부 수정 시 수정한 라이브러리 소스코드 공개
라이브러리에 응용프로그램을 링크할 경우 해당 응용프로그램 소스 공개 필요 X
특허의 경우 GPL과 동일
LGPL 라이브러리를 정적 링크 시 요구사항
LGPL 라이브러리의 소스코드 공개 할 뿐 아니라, 애플리케이션의 오브젝트 코드 또한 공개해야 함
<사례> LGPL인 JAVA 라이브러리(Jar) 사용
Q: LGPL인 Jar 파일을 import하여 사용(동적 링크 사용)하려고 함. 이때 소스코드 의무사항은?
A: JAVA의 JAR 파일을 import = 동적 링크 생성 (유사 동작) 이므로 애플리케이션의 소스코드 공개 필요 X
LGPL 라이브러리를 동적 링크 시 요구사항
LGPL 라이브러리의 소스코드 공개
But, 애플리케이션의 소스코드나 오브젝트 코드는 공개 필요 X
BSD 라이선스(Permisive 계열)
소스코드를 공개하지 않아도 되는 대표적인 오픈소스SW 라이선스
자유 개발 수정, 배포 가능
BSD 라이선스 주요내용
소프트웨어를 배포하는 경우 저작권 표시
수정 프로그램에 대해 소스코드 공개 요구 x -> SW 무제한 사용 가능
프로그램 바이너리 형태로 재배포 할 경우 -> 저작권 표시
GNU General Public License v2.0 vs BSD 3-Clause
Apache 라이선스(Permisive 계열)
아파치 웹서버를 포함하는 아파치 재단(ASF)의 모든 SW에 적용되는 라이선스
BSD 라이선스와 비슷하여 소스코드 공개 등의 의무가 발생 X
Apache 라이선스 주요내용
"Apache"라는 이름에 대한 상표권 침해하지 않아야 함
SW 배포 시 저작권 표시, 보증책임 없다는 내용 표시
수정프로그램에 대한 소스코드 공개 요구 X -> 상용 SW 무제한 사용 가능
GNU General Public License v2.0 vs Apache License 2.0
MPL 라이선스
Netscape 브라우저의 소스코드를 공개하기 위해 개발된 라이선스
공개하여야 할 소스코드의 범위가 GPL에 비해 훨씬 명확
MPL 라이선스 주요내용
SW 배포 시 저작권 표시, 보증책임 X
MPL 코드 수정 부분 다시 MPL에 의해 배포
MPL 코드 + 타 코드 결합 프로그램 제작 시 -> MPL 코드 제외한 결합 프로그램 소스코드 공개 필요 X
소스코드를 적절한 형태로 제공 시 -> 실행파일에 대한 라이선스는 MPL이 아닌 다른 것으로 선택가능
GNU General Public License v2.0 vs Mozilla Public License 2.0
MIT 라이선스(Permisive 계열)
MIT를 기원으로 하는 소프트웨어 라이선스 중 가장 대표
대표적 소프트웨어로 X 윈도 시스템(X11)
반드시 오픈소스로 배포 규정 X
BSD 라이선스 기초로 작성된 BSD 계열 라이선스
여러 가지 라이선스 중 매우 제한이 느슨한 라이선스
GNU General Public License v2.0 vs MIT License
AGPL(Affero GPL) 라이선스
코드가 단순히 서버에서 운용된다는 사실만으로도 해당 코드가 공유되어야 함
GNU Affero General Public License v3.0
주요 오픈소스 라이선스의 특징 비교
'Open Source Software' 카테고리의 다른 글
OSS - 07_Git 고급 (0) | 2024.04.21 |
---|---|
OSS - 05_원격 저장소와 GitHub & Git (0) | 2024.04.14 |
OSS - 04_Git 설치 & 기본 (0) | 2024.04.13 |
OSS - 03_버전관리시스템과 Git (0) | 2024.04.07 |
OSS - 02_OSS 활용 (0) | 2024.04.02 |