2019년 3월 11일 월요일

소프트웨어공학, 시작은 라이선스부터..





안녕하세요, 오늘은 오픈 소스 소프트웨어에 대해 알아보려고 합니다.
먼저, 오픈 소스 소프트웨어는 무엇일까요? 누구나 공유가능한 소스? 
어쩌면 이 말은 맞을 수도 있고, 틀릴 수도 있습니다. 
지금부터 그 자세한 내용을 알아보겠습니다.

오픈소스 SW 하면 스톨만,
스톨만 하면 GNU, 
GNU하면 유닉스,
유닉스 하면 리눅스.

GNU는 지식을 같이 공유하자는 뜻입니다. GNU는 이런 말도 있습니다.

GNU is not Unix.

즉, 돈을 받고 팔지 않겠다는 말입니다.
GNU PROJECT 라고 하면 GNU를 사용한 프로젝트이죠.

그렇다면 FSF에 대해서 아시나요?
FSF(Free Software Foundation)의 약자 입니다. 
이 지식을 공유한다는 재단은 스톨만이 설립하였습니다.
여러분이 아시는 copyleft와 일맥상통합니다.

또한, OSS(Open Source Software)은 저작권이 없고 라이선스 형태로 존재 합니다.
운전면허증을 Driving Licence라고 하죠? 네 맞습니다. 
바로 그 라이선스 입니다. 사용 허가권이죠.

그렇다면 OSI(Open Source Initiative)도 알아봅시다.
Eric Raymond가 설립하였습니다.
이 사이트에는 여러 라이선스들이 버전별로 나열되어 있는 것을 확인 할 수 있습니다.
참고로, Open Source Initiative는 기관명이고, 
Open Software Initiative는 프로젝트명입니다.


open source initiative에 대한 이미지 검색결과

독점 소스 소프트웨어와 오픈 소스 소프트웨어는 
[성당과 시장]이라는 책으로도 비유가 됩니다.
성당은 성스럽게, 시장은 복잡하게.
성당이 곧 독점 소스 SW이고, 시장은 오픈 소스 SW입니다.

아니, 소프트웨어공학에 대해 이야기하는데 웬 갑자기 독점, 오픈 소스?
라고 하실 수도 있겠지만 소프트웨어의 세계에서
이 지식공유의 개념은 매우 중요합니다.




GPL에 대한 이미지 검색결과




그에 대해 자세한 이야기를 시작하자면, 먼저 GPL부터 알아야 합니다.
GPL이란 오픈소스 라이선스입니다. 2007년 6월에 정식버전이 발표가 되었죠.
GPL은 General Public License의 약자 입니다.
1989년 GPL 1.0버전의 FSF에서 만들어졌습니다.

이 라이선스는 지식 공유 정신을 아주 잘 물려받았고 
가장 많이 사용되면서 사용하기 위한 조건이매우 엄격하기로 유명합니다.

여기서 문제~!
GPL라이선스가 붙는 소스를 갖다 써서 제품을 만들었습니다.
이 제품은 팔 수 있을 까요?
정답은, YES!입니다.

단, 가져다 쓴 소스코드는 공개해야합니다. 그리고 자신이 쓴 코드도 
GPL라이선스에 따라 공개되며 다른 사람이 가져다 사용할 수 있습니다.
그렇다고 모든 사람에게 공개되는 것은 아닙니다.
배포대상(수취인)이 아니면 소스를 공개할 의무는 없기 때문입니다.

GPL을 사용할 때에는 SW를 배포하는 경우 저작권을 표시하고,
보증책임이 없다는 표시 및 GPL에 의해 배포 된다는 사실을 명시해야합니다.
이 말은 대부분의 라이선스에 해당하는 말입니다. 
또한, 보증책임이란 그 소스를 사용하는 중 받을 수 있는 불이익을 뜻합니다.

또한, SW를 수정하거나 새로운 SW를 링크시키는 경우 
GPL에 의해 소스코드를 제공해야 합니다. 
즉, GPL을 따르는 오픈소스를 가져와 일부를 고쳐서 사용했을시에도 
코드를 공개해야 한다는 말입니다.

또한, 목적 및 실행코드 형식으로 GPL을 배포하는 경우,
소스 코드 자체를 함께 배포하거나 
또는 소스코드를 제공 받을 수 있는 방법에 관한 정보를 함께 제공해야 합니다.

소스코드 하나 공유하는데 생각보다 복잡하죠?
세상엔 공짜는 없답니다.^^
여기서 끝이 아니죠~! 가장 중요한 "특허"가 남아 있습니다.
지금 부터는 특허에 대한 이야기를 잠깐 해보겠습니다.




특허에 대한 이미지 검색결과




여러분도 알고 계시다시피, 특허는 지식재산권에 속합니다.
이해를 돋구기 위한 간단한 문제를 소개시켜드리겠습니다.

특허권자 A가 있습니다.
A는 자신이 코드를 개발하여 특허를 냈습니다. 
A가 특허가 있는 코드를 GPL 코드에 가져다 썼습니다. 
이로써 A의 코드에는 A의 특허코드와 GPL 코드가 있게 되었죠.
그런데, B가 A의 코드를 가져다 사용하였습니다.
이럴 경우, B는 A에게 돈을 지불해야 될까요?

정답은 NO!입니다.
A가 특허가 있는 자신의 코드를 GPL코드에 가져다 사용하였다면,
이는 묵시적으로 공개하겠음을 나타낸 것이기 때문입니다.

특허이야기, 재밌지 않나요?ㅎㅎ
두번째 문제가 있습니다. 이번에는 상황이 조금 더 복잡합니다.

A가 정렬알고리즘을 개발해 특허로 냈습니다.
이를 가져다가 B가 C+++언어를 개발하였습니다. 
B가 이 언어를 GPL 로 걸었습니다.
훗날, A가 이 GPL코드를 사용하게 되었는데,
 자신이 특허를 냈던 정렬 알고리즘이 있는 것입니다.
이럴 경우, B가 A의 특허를 가져다 무료로 풀었다고 A가 고발이 가능할까요?

정답은 YES!입니다.
A는 특허를 낸 자신의 코드를 B가 여러 사람에게 아무 대가 없이 공유를 하였기 때문이죠.
그러나 A가 고발을 하여 승소를 하는 순간, B의 GDL 라이선스가 중단이 됩니다.
그렇기 때문에 B가 A에게 그동안 사용한 B의 코드 사용값을 받아낼 수 있게 되기 때문에,
사실상 소송은 무의미 하다고 볼 수있겠지만,
판결의 결과에 따라 이득일 수도 아닐 수도 있습니다.

특허이야기, 생각보다 재밌죠? 
지금부터는 GPL보다 조금 덜 엄격한, 즉 규제를 완화한 라이선스를 소개합니다.
이는 소스코드 "공개" 규제의 완화입니다.

저작권을 표시하고 보증책임이 없다는 표시 및 LGPL에 의해 
배포된다는 사실을 명시하는 것과 LGPL 라이브러리의 일부를 수정하는 경우
 수정한 라이브러리 공개는 GPL과 유사합니다.
LGPL 라이브러리에 응용 프로그램을 링크시킬 경우
 해당 응용프로그램의 소스를 공개할 필요 없는 것은 
규제가 완화 되었다고 볼 수 있습니다.

다음은 LGPL의 라이선스를 소개합니다.






여기서 APACHE 라이선스는 상표권에 대한 조항이 따로 존재합니다.
예를 들어 검색 엔진 포털 서비스(구글, 네이버..)을 AGPL을 사용하여 만들었다고 하면,
검색 엔진 서비스를 받는 사람에게까지 소스를 공개해야 합니다.
다른 라이선스들에 비해 수취인의 범위가 넓죠.

아, 여기까지 오시느라 고생많으셨습니다.
 이것 저것 재밌는 이야기가 많지 않으신가요?ㅎㅎ
다음에는 폭포수 모델/유스케이스 다이어그램에 대해 알아보겠습니다.
감사합니다.




댓글 없음:

댓글 쓰기