컴퓨터 네트워크 (13), Opensource License

2022. 6. 15. 20:26강의 내용 정리/컴퓨터 네트워크

728x90
반응형

Opensource License


1. Ice break

1) Free? Open? Law?

- Law: 법규

- Opensource: 공개되어있는 것으로 이를 어디까지 볼 수 있는가

- Free: 과거 일부 회사가 폐쇄적으로 한 것에 대한 반기로 자유를 의미한다. 소스코드를 볼 수 있는 자유, 이를 공유하는 자유에 대한 얘기가 나온다.

 


2. Class

1) 오픈소스 국내외 사례

(1) NC soft

- 돈을 관리하는 소프트웨어를 오픈소스로 하고 있다.(딜링 소프트웨어) 2015년 클라우드 네이티브 프로그래밍에 참여했고, 이를 다룬 기사이다.

- 서버에서는 오픈소스를 매우 많이 사용한다. 따라서 이를 이해하는 것은 매우 중요하다.

- nc soft도 본인이 만든 것을 오픈소스로 공개한다. 회사에서도 이를 장려한다. 커뮤니티 활동도 장려한다.

- 내부적으로 깃허브를 사용한다. 

- 지식재산: 라이센스

- 가능하면 오픈소스를 많이 사용하는 것이 중요하다.

 

(2) 삼성전자

- 삼성 오픈소스 컨퍼런스

- 삼성전자는 SW 중 90%를 오픈소스로 가져다가 쓴다.

- 조직문화를 바꾸는 것과, 기여하는 것도 중요하게 생각한다.

- 리눅스 파운데이션과 함께할 정도로 의미가 있다.

- 폐쇄적이고 보수적일 수 있는 삼성전자도 이를 많이 하고 있다.

 

(3) 현대자동차

- 리눅스 재단의 프로젝트에 2019년에 가입했다. 

- 오픈소스를 점차 늘려가고 있다.

 

(4) 한국 오픈소스 프로젝트 순위

- Toast: nhn 엔터테인먼트가 만들었다.

- 그 외 여러가지가 있다.

- 타이젠: 삼전이 만든 운영체제로 크로미움 운영체제이다. 웹 어플리케이션만 띄울 수 있다. 삼전 가전기기엔 많이 퍼진다.

 

(5) 뮌헨

- 국립 공립 기관은 리눅스 운영체제로 돌렸다. 윈도우즈를 쓰다가 리눅스로 돌아갔다.

- 오픈소스 리눅스를 비영리목적으로 쓰는 것은 전세계적인 추세이다. 

 

(6) MS

- 올해 윈도우즈10 위에서 우분투가 돌아간다. GUI 기반 리눅스도 돌아간다. 

- 온라인으로 진행됐는데, 리눅스를 원래 지원하기로 했는데 더 강하게 GPU 향상, GUI 인터페이스도 지원한다.

 

=> 업종과 무관하게 국내외적으로 오픈소스를 매우 많이 사용하고 있고, 이는 기업 문화로 자리잡았다. 비즈니스를 한다고 하더라도 이를 고려하는 것이 좋다. dart나 자바스크립트와 같은 네이티브 앱을 사용해 웹 베이스드로 사용하는 것이 좋을 것 같다. 이에 따라 라이센스를 지키는 것도 중요하다.

 

2) Open source software?

(1) 정의

- source: 소프트웨어의 소스코드 형태

- open: freedom

- freedom은 다음과 같다. 소스코드를 볼 수 있는 자유, 그것을 실행할 수 있는 자유, 필요하다면 이를 수정해서 사용할 수 있는 자유, 다른 사람들에게도 수정된 소프트웨어를 공유해서 함께 누릴 수 있는 자유

- 이는 소프트웨어를 개발하는 문화고, 모델이다. 누군가가 의제를 제기하면 관심있는 사람들이 모여서 자발적으로 생태계를 구축해서 만든다. 이를 의미있게 사용하는 집단이 있고, 사용자가 커지면서 더 많은 사람이 들어오는 선순환 구조가 있다. 이에 따라 모델이라고 한다.

- 함께 교류하면서 집단지성을 발휘하는 철학으로 본다.

- 오픈소스 소프트웨어는 영리목적의 회사들이 사용하고 있다. 이러한 것들을 포함해서 라이센싱 모델이 발전한다.

 

(2) 소프트웨어 종류

- Proprietary software: 누군가가 만들어서 소유권이 있거나 회사 내에서 사용된다. 이는 유출되지 않는다. 

- Commercial software: 돈을 주고 판매하기에 배포할 때 대부분 오브젝트 코드(컴파일을 통해 기계어로 만듦)를 배포한다. 사람들은 이를 쓸 수 있으나 수정 및 재사용은 불가능하다. 만약 소스코드를 배포할 수밖에 없으면 어떤 식으로든 라이센스를 방어할 수 있는 수단을 만든다. C, C++은 대부분 상업용으로 많이 사용되었다. 

- 최근에는 스크립트 언어가 많아서 이를 바이트로 번역하는 것이 어렵다. 따라서 이를 통해 상업용으로 배포하기보단 비즈니스를 위한 용도로 사용되는 것이 많다.

 

(3) 오픈소스의 다른 이름

- Free software

- Copyleft: 카피라이트(저작권)에 빗대어 저작권을 요구하지 않는 행위를 의미한다.

- Community software: 커뮤니티 에디션이라는 의미와 동일한데 이는 무료로 다운 받아서 오픈소스 개발자들이 사용할 수 있도록 한다. 커뮤니티에 의해 만들어지고 커뮤니티에 의해 쓰여지는 소프트웨어이다.

- Pubilc software: 퍼블릭은 공적 자산(공공)이라는 의미로, 모두 함께 활용하며 공익에 이바지하는 소프트웨어를 의미한다. 누구나 사용할 수 있다.

 

(4) Shared Source

- 오픈소스를 사용하는 사용자나 기업, 정부, 대학 등이 점점 많아진다.

- 대학에서 쓰는 것을 오픈 소스로 만들거나 이를 내보내거나 커리큘럼에 이를 포함해 이를 가르치는 등 점점 늘어난다. 

- ISV, IHS: 인디펜던트 소프트웨어(하드웨어) 벤더로 소프트웨어를 만드는 회사, 하드웨어를 만드는 회사를 의미한다. 이들도 점점 오픈소스를 많이 사용한다. such as 레드헷

 

3) Who makes it?

(1) 누가 오픈소스를 만드는가

i) Hackers (not crackers)

- 컴퓨터 내부 시스템이나 프로그래밍에 전문적인 지식을 가지고 문제를 푸는 사람

ii) Hacker notables

- 리처드 스토먼

- 리누스 

- 브루스 페렌스: 오픈소스 소프트웨어 선언문

- 에릭 레이먼드: 성당모델은 좋은 모델이 아니다.(가둔 모델로 처음에만 공개), 시장모델(처음부터 끝까지 공개한다.)

cf) Crackers

- 우리가 일반적으로 아는 네트워크와 운영체제의 문제점을 파악해서 이를 망가트리는 사람들, 해커는 이를 리드미 등등 남겨서 알려준다.

 

4) How is it Developed

"Given enough eyeballs, all bugs are shallow"

Eric Raymond


(1) Scratching an itch

- 가려운 곳을 긁는다.

- 부족하거나 빠져있는 기능을 개발하고 다른 사람과 공유한다.

 

(2) Collaborative development

- 협업을 한다. 

 

(3) Peer review

- 서로 각자 만든 것을 봐주고 개선할 여지가 있는지 리뷰를 해준다.

- pair programming: 한사람은 개발하고 한사람은 코멘트하는 것을 반복한다. 

 

(4) Centralized decision-making

- 누군가 커밋한 것에 대해 머지하는 권한이 중앙집중형으로 있다.

 

(5) Forking

- 브랜치를 따는 것으로 확대, 재생산을 의미한다.

 

 

 

 

4) Is it new?

- 과학의 결과물을 만드는 것이 중요하기에 프로그램을 짜면 과학자들 간에는 공유를 했다. 프로그램을 공유하는 문화는 지속화되어왔다.

- 연구 결과를 공유하게 하기 위해 최초의 웹 브라우저인 Netscape를 오픈소스 개념으로 내보낸다. 

- 이후 비즈니스가 탄생하여 웹이 비즈니스의 수단이 되었다. 이에 따라 1990년대부터 오픈소스 라이선스 문제가 발생했다.

- 오픈소스 소프트웨어는 단어가 없었을 뿐이지 오래된 철학이다. 

 

5) Who used it?

(1) First: hackers

(2) 수많은 사람들

- 인터넷을 제공하는 단체, 리눅스 사용하는 곳, IT 기업들, 인터넷을 매개로 비즈니스를 하는 단체, 공익/정부 단체 등, 여러 국가

(3) Who does not use it much (yet?)

- 데스크탑은 리눅스가 못퍼지는 분야이다. 이에 따라 아직 많이 사용하지 않는다.

- 회사 내에 오픈 소스를 잘 다루는 사람이 없거나 오픈소스를 사용하지만 개발에는 참여하지 않는 상황에서 필요한 기능을 구현해야할 필요가 있을 때 직접 개발할 수 있는지(인하우스)를 보고 이를 할 수 없다면 해결책이 나오지 않을 수 있다. 상용 서비스를 도입한다면 그쪽에 부르면 되기에 굳이 필요는 없다.

- 상용서비스로 출시해도 되는지 모르는 경우가 많다. 무슨 오픈 소스를 썼는지 모를 수 있어서 라이센스를 어길 수 있다는 걱정이 있을 수 있다.

- 위의 경우들에 대해서는 오픈소스를 사용하기 쉽지 않다.

 

6) Open source software as a business

"Think free speech not free beer"

Richard Stallman


 

- 일종의 문화로서 퍼져나간다. 또한 여러 비즈니스로서 활용이 된다.

- 누군가의 요청에 따라 커스터마이징하고 기술 비용을 받을 수 있다.

- 하드웨어가 좋다면 이에 대한 소프트웨어가 오픈소스가 된다면 하드웨어를 많이 판매할 수 있다.

- 오픈소스를 활용할 경우 품질을 보장하는 경우 비용을 받을 수 있다.

- Dual: 커뮤니티 에디션은 마음대로 사용할 수 있지만 기능의 제한이 있어서 이를 다 사용하고싶다면 커머셜 버전(엔터프라이즈 에디션)을 사용한다. 초반에는 오픈소스로 공개, 이후 비즈니스로 전환 가능

- 원하는 추가 기능을 추가해줘서 비용을 받을 수 있다.

- 스폰서십을 받는 경우도 있다. 리눅스 파운데이션을 사용해야하니 이를 유지하기 위해 스폰서가 있다.

- 티셔츠와 광고를 파는 경우도 있다.


3. Licensing: the Force behind open source

"To stay free, software must be copyrighted and licensed"

1) Licensing 개요

- Free와 Open은 다음과 같은 의미를 가지고 있다. Public domain이 아니다. 이는 내 마음대로 사용한다는 의미가 아니다. 처음에는 공짜로 하다가 상용화한다면 이는 오픈소스가 아니다. 상용 소프트웨어의 기능을 제어하는 Shareware와 freeware는 오픈소스가 아니다.

- 라이센싱은 다양한 제한을 지키는 경우에는 자유롭게 사용할 수 있다. 또한 법정 시비에 대한 리스크를 개발자에 대해 부가하지 않도록 보호한다. 

 

 

2) Licensing models

(1) GNU GPL

- 가져다가 수정한 것을 모두 열어야한다.

- 사용, 수정, 배포 등이 자유롭지만 수정해서 배포한다면 GNU GPL 라이센스를 해야한다. 이에 따라 모두 공개해야한다. 회사에서는 고민스러운 라이센스가 될 수 있다.

- Viral 라이센스로 카피 래프트의 의미를 가지고 있다.

- 그냥 쓸 때는 문제가 없지만 수정을 한다면 이를 뿌려야하고, 이를 가지고 돈을 벌 때는 문제의 여지가 있을 수 있다.

- 리처드 스톨만이 만들었다.

 

(2) BSD-style license

- 버클리 대학 등에서 만들어진 경우에는 사용, 수정, 배포가 자유롭다. 이때 상용 서비스를 하더라도 무리없이 사용하는 경우가 많다. 개발자를 방어하기 위해 책임도 지지않는다.

- 대신 고지 의무가 있다. (어떤 오픈 소스를 사용했는지 고지한다.)

- 다시 말해 고지만 한다면 사용, 수정, 배포가 자유롭고 상용 서비스를 해도 상관없지만 문제가 발생했을 때는 오픈소스 개발자가 책임을 지지 않는다.

- 누구나 편하게 사용할 수 있다.

 

(3) GNU Lesser GPL (LGPL)

- GNU GPL을 약간 완화한 것이다. 

- 공학적으로 라이브러리와 모듈을 수정하지 않고 링크한 경우에는 사용한 것으로 보지만 이를 봐줘서 고지 의무는 없다.

 

(4) AGPL

- 서버에서 사용해서 서비스를 한다면 바깥에서는 볼 수 없기에 이는 공개 의무가 없다. 하지만 사용자와 통신을 직접적으로 한다면 소스코드를 다운받을 수 있게 공개해야한다.

 

(5) Apache License

- 소스코드 공개는 하지 않아도 되지만 고지 의무는 있다.

 

cf) 자료 정리

https://www.bloter.net/newsView/blt201410100005

 

 

3) SCO litigation

- 초기 리눅스에 유닉스 코드를 일부 넣어서 SCO가 고소했고, 재판에서 승소했다. 이후 리눅스는 유닉스의 잔재나 라이센스가 있던 것을 없앴다.

- SCO 고소 사건으로 인해 벌금이 이뤄지고 라이센스가 화두에 올랐다.

- 법률가 입장에서 오픈 소스가 불분명하고, 극단적인 판결이 나와서 시간이 필요했고, 회사 입장에서는 오픈 소스 전담부서를 둬서 라이센스를 확인하고, 이를 연결하고자 했다.

- 또한 법률 쪽에서 오픈소스에 대해 고민을 많이 했다. 결국 기업이나 오픈 소스 단체는 많은 고민을 하게된 사건이었다.

- 이후 개발할 때 오픈 소스를 가져다가 쓸 때 이를 확인하고, 라이센스로 풀어두는 단계가 되었다.

- 사업할 때 쓰는 것과 쓰지 말 것을 구분하는 계기가 되기도 했다.

 


4. 오픈소스 소프트웨어 라이선스 가이드 3.0 키워드 요약

1) SW 지적재산권, 라이선스와 오픈소스 라이선스

- 오픈 소스 라이센스가 무엇인지, 고지의무에 대한 개념 설명이 있다.

- 공개해야하는 것은 공개했다. 

- 각 라이센스별 특징을 공개한 게 있다.

- 사례중심으로 내용이 많이 있다. 특히 안드로이드에 대한 설명도 있다.

 

2) 프로젝트 사례

- BSD, Apache 사례

- 안드로이드 어플리케이션 사례

- 앱스토어에서의 GPL 라이센스 위반사례

- GPL 소스코드를 일부라도 포함하면 GPL이 된다.

- 링킹인 경우에는 공개해야하지만 어디까지 해야하는지가 다를 수 있다. 통신을 하는 경우에는 대부분 고지의 의무가 없다.

- 양립성: 두 개 이상의 오픈소스를 섞는 경우 라이센스간 충돌을 어떻게 해야할지 정리했다.

 

[링킹]

(41 페이지)

- 스태틱 링킹: 실행파일에 들어가있는 경우로 소스코드및 오브젝트 코드를 공개해야한다.

- 다이나믹 링킹:DLL로 실행파일 외부에 있어서 실행할 때 들어간다. ...

 

- 클라우드 컴퓨팅에서의 XaaS를 했을 때 내가 만든게 그 위에 있는 경우

- 예외 조항

- 폰트도 오픈소스가 많은데 이를 잘못 건드리면 큰일난다.

 

3) 라이선스 확인 방법

- 깃허브 내에서는 우리가 만드는 프로젝트는 어떤 라이센스로 할지 정할 수 있고 이에 대한 설명을 볼 수 있다. 누군가가 이를 가져가면 고지 의무에 관한 내용도 들어가게 된다.

 

4) 상담 사례

- 여러가지 사례가 있다.


5. BlackDuck

1) 오픈 소스 라이센스의 사용 순위

- 탑 10은 93%인데, 탑 20은 97%이다. GPL은 전체 소프트웨어 중 53%이다.

- Apache, BSD, MIT는 약 31%이다.

 


6. Summary

- 오픈소스 소프트웨어를 사용하는 경우에는 Contribution을 하는 것도 의무이기에 이를 하는 것도 문화에 기여할 수 있다.

- 깃허브를 사용한다면 라이센스를 선택할 수 있고 관련 내용도 알 수 있기에 좋다.

 

728x90
반응형