"자유 소프트웨어"의 두 판 사이의 차이
leejia1222 (토론 | 기여) |
|||
(다른 사용자 한 명의 중간 판 5개는 보이지 않습니다) | |||
1번째 줄: | 1번째 줄: | ||
− | '''자유 소프트웨어'''(free software)는 복사와 사용, 연구, 수정, 배포 등의 제한이 없는 소프트웨어 혹은 그 통칭이다. '''프리 소프트웨어'''라고도 하며, 간략히 '''자유 S/W''', '''프리 S/W'''라고도 한다. | + | '''자유 소프트웨어'''(free software)는 복사와 사용, 연구, 수정, 배포 등의 제한이 없는 [[소프트웨어]] 혹은 그 통칭이다. '''프리 소프트웨어'''라고도 하며, 간략히 '''자유 S/W''', '''프리 S/W'''라고도 한다. |
==개요== | ==개요== | ||
− | 소프트웨어의 수정 및 수정본의 재배포는 인간이 해독 가능한 | + | 소프트웨어의 수정 및 수정본의 재배포는 인간이 해독 가능한 [[프로그램]]의 [[소스 코드]]가 있어야만 가능하며, 소스 코드는 일반 공중 허가서 등의 [[라이선스]]를 통하거나, 혹은 드물지만, 퍼블릭 [[도메인]]을 통하여 공개된다. 자유 소프트웨어를 이해하기 위해선 먼저 자유에는 일정한 책임이 따른다는 사실을 알아야 한다. 자유 소프트웨어는 자유롭게 이용할 수 있는 소프트웨어를 말하지만, 해당 소프트웨어의 사용 조건이 무엇인지, 출처는 어디인지 밝히고 사용해야 한다. 개인이 자유롭게 사용한다고 하더라도, 재생산되거나 재배포 될 가능성을 배제할 수 없기 때문이다. 즉, 남이 만든 소프트웨어를 사용하는 대신 최소한의 조건을 이행하겠다는 조건 하에 자유 소프트웨어를 사용할 수 있다. 자유 소프트웨어 개발자들은 [[웹]] 브라우저나 [[오피스]] 제품군 혹은 [[멀티미디어]] 플레이어 등 거의 대부분의 [[데스크톱]] [[애플리케이션]]들을 자유 소프트웨어로 만들어냈다. 그러나 많은 영역에서 개인 사용자를 위한 자유 소프트웨어들은 경쟁 독점 소프트웨어들에 비해 미미한 시장 점유율을 지닌다.<ref name=“위키백과”>〈[https://ko.wikipedia.org/wiki/%EC%9E%90%EC%9C%A0_%EC%86%8C%ED%94%84%ED%8A%B8%EC%9B%A8%EC%96%B4 자유 소프트웨어]〉, 《위키백과》</ref> 자유 소프트웨어가 가진 자유를 크게 4가지로 볼 수 있다. 먼저 프로그램을 어떠한 목적을 위해서도 실행할 수 있는 자유, 이웃을 돕기 위해 프로그램을 복제하고 배포할 수 있는 자유가 있다. 세 번째로, 프로그램의 작동 원리를 연구하고, 이를 자신의 필요에 맞게 변경시킬 수 있는 자유가 있어야 하는데, 이러한 자유를 위해서는 소스 코드에 대한 접근이 선행되어야 한다. 마지막으로 프로그램을 향상시키고 공동체 전체의 이익을 위해서 다시 환원시킬 수 있는 자유가 있어야 한다. 이러한 자유를 위한 조건은 앞의 조건과 동일하게, 소스 코드에 대한 접근이 선행되어야 한다는 것이다.<ref>〈[https://wogns3623.github.io/intro2.html 2.자유 소프트웨어]〉, 《깃허브》, 2016-03-20</ref> |
+ | |||
+ | ==역사== | ||
+ | 1950년대부터 1970년대까지의 [[컴퓨터]] 사용자들은 대부분의 소프트웨어를 자유롭게 이용할 수 있었다. 사람들은 종종 소프트웨어를 서로 공유했고, [[하드웨어]] 제조사들은 하드웨어를 편리하게 사용할 수 있게 하는 소프트웨어들이 제작되는 것을 기꺼워했다. 1970년대부터 1980년대에 소프트웨어 산업이 복제권을 법적으로 적용하기 시작하여, 사용자들이 소프트웨어를 연구하거나 수정하지 못하도록 바이너리 형태로만 배포하는 기술적 방법들이 사용되곤 했다. 1983년에, [[리처드 스톨만]]은 컴퓨터 산업의 이러한 변화에 저항해 GNU 프로젝트를 시작했다. 1984년에는 GNU [[운영 체제]]의 개발이 시작되었으며, 1985년 10월 자유 소프트웨어 재단(FSF)이 설립되었다. 그는 [[카피레프트]]를 주장하며, 자유 소프트웨어의 정의를 모두가 자유롭게 사용할 수 있도록 디자인된 소프트웨어로 소개하였다. 1991년에는 핀란드에서 [[리누스 토르발스]]가 [[리눅스]]를 발표하였고, 이것이 GNU 프로젝트에 통합되면서, 자유 소프트웨어 커뮤니티가 활성화되기 시작했다.<ref name=“위키백과”></ref> | ||
==특징== | ==특징== | ||
− | 자유 소프트웨어는 완전히 무료 혹은 최소한의 금액만을 받고 자유롭게 배포되어야 하며, 자유 소프트웨어를 통한 비즈니스 모델들은 대게 고객 지원이나 커스터마이징 등을 통한 것들이다. | + | 자유 소프트웨어는 완전히 무료 혹은 최소한의 금액만을 받고 자유롭게 배포되어야 하며, 자유 소프트웨어를 통한 비즈니스 모델들은 대게 고객 지원이나 커스터마이징 등을 통한 것들이다. 대부분의 자유 소프트웨어들이 온라인에서 무료로 제공되거나, 오프라인에서 적당한 가격으로 배포되는데, 이것이 필수적인 것은 아니다. 간혹 자유 소프트웨어와 무료 소프트웨어를 같은 의미로 보는 경우가 있는데 자유 소프트웨어는 무료 소프트웨어일 수도 있고, 아닐 수도 있다. 1990년대 후반에 자유 소프트웨어 대신 [[오픈 소스]] 소프트웨어라는 용어가 많이 사용되기 시작했다. 하지만 [[자유 소프트웨어 재단]]은 자유로운 사용을 강조하는 대신 기술적인 면에 치우친 용어라는 점에서 “자유 소프트웨어”라는 용어를 사용할 것을 권장했다.<ref name=“위키백과”></ref> 자유 소프트웨어와 오픈소스 소프트웨어는 같은 소프트웨어를 지칭하기도 하지만, 바라보는 관점에서 차이가 있다. 오픈 소스는 개발 방법론으로, 오픈 소스의 철학은 실용적인 관점에서 소프트웨어를 어떻게 잘 만들 것인가를 고려하는 것이다. 이에 비해 자유 소프트웨어는 사회적 운동으로, 윤리적 명령으로서 사용자에게 주어진 자유를 기본적으로 중요하게 생각한다. 대부분의 오픈 소스 소프트웨어는 자유 소프트웨어이기도 하지만, 일부 오픈 소스 라이선스는 수정된 버전을 만들어 개인적으로 사용할 수 없게 하여, 사용자의 자유를 침해하기도 한다.<ref>joone, 〈[https://foss-story.blogspot.com/2016/03/blog-post.html 만화로 나누는 오픈소스 이야기]〉, 《블로거》, 2016-03-20</ref> |
− | |||
− | == | + | ==GNU 프로젝트== |
− | + | GNU는 “GNU’s not UNIX.”의 약자로, 원래의 문장 안에 자신이 이미 들어 있는 재귀 약자이다. 스톨만은 GNU를 그누로 읽을 것을 제안했다. 1983년 9월 27일 유즈넷(usenet) net.uniw-wizard 그룹을 통해 세상에 알려졌다. 스톨만은 “GNU” 선언문을 비롯한 여러 글들을 작성하여, 초기 전산 공동체에 지배적이었던 협동 정신을 되돌려야 한다고 주장했다. GNU 프로젝트는 누구나 자유롭게 “실행, 복사, 수정, 배포”할 수 있고, 누구도 그런 권리를 제한하면 안 된다는 일반 공중 허가서라는 사용 허가권 아래에서 소프트웨어를 배포한다. 1985년 스톨만이 설립한 자유 소프트웨어 재단은 GNU를 개발할 [[프로그래머]]들을 고용했지만, 실질적으로 프로그램을 개발한 사람들은 자원봉사자들이었다. 이를 주목한 다른 회사들이 GNU의 소프트웨어 개발이나 판매 및 기술 지원을 도와 성공적으로 개발한 것이 현재는 [[레드햇]]의 일부인 시그너스 솔루션(Cygnus Solutions)이다. 1990년대까지 GNU 시스템에서 확장 가능한 프로그램은 문서 편집기(이맥스), [[컴파일러]](GCC), 표준 [[유닉스]]배포판의 핵심인 [[라이브러리]]와 [[유틸리티]]가 있었지만, 주요 구성요소인 [[커널]]이 포함되지 않았다. 이에 스톨만은 기본적인 커널은 있지만, 유닉스를 흉내 내기 위해선 더 많은 기능이 필요하다고 했고, 이것은 유닉스 7번째 판과 호환되는 트릭스(TRIX)라는 원격 프로시저 호출 커널로 MIT에서 개발되어 자유롭게 배포되었다. 하지만 트릭스를 기반으로 새 커널을 만드는 것은 어렵다는 결론이 내려졌고, 1988년 [[카네기 멜런 대학]]에서 개발되던 마하 통신-전송 커널을 트릭스의 대체품으로 고려했지만, 이를 처음 개발한 개발자들이 AT&T 소유의 코드를 지우면서 지연되었다. 이 커널은 처음에 앨릭스라고 불렸지만, 이후 개발자인 [[마이클 부시넬]](Michael Busgnell)이 [[허드]](HURD)라는 이름을 선호하여, 앨릭스란 이름은 하부 구조로 옮겨지고, 결국 완전히 떨어졌다. 허드의 개발은 기술적이고 개인적인 충돌들로 인하여 지지부진해졌다. 1991년 리누스 토르발스가 유닉스 호환이 가능한 리눅스 커널을 작성하여 일반 공중 허가서 아래에 배포했다. 이후 여러 프로그래머들이 [[인터넷]]을 통해 리눅스를 발전시켰고, 19092년 리눅스가 GNU 프로그램과 통합되었고, 이로써 완전한 공개 운영 체제가 탄생했다. GNU 시스템 가운데 가장 흔한 것이, 바로 이 “GNU/리눅스”또는 “리눅스 배포판”이라고 불리는 프로그램이다.<ref>〈[https://ko.wikipedia.org/wiki/GNU_%ED%94%84%EB%A1%9C%EC%A0%9D%ED%8A%B8 GNU 프로젝트]〉, 《위키백과》</ref> | |
− | ===GNU | + | ===GNU 컴파일러 모음=== |
− | + | GNU 컴파일러 모음(GNU Compiler Collection)의 약자를 따서 GCC라고도 하며, GNU 프로젝트의 일환으로 개발되어 널리 쓰이고 있는 컴파일러이다. 1987년 리차드 스톨만이 GNU 프로젝트의 컴파일러로 작성했고, 1999년 첫 버전이 나왔다. 현재는 전 세계적으로 관리되고 있으며, 다양한 중앙 처리 장치를 처리할 수 있게 되었다. GNU 시스템의 공식 컴파일러로, 많은 컴파일러와 운영체제를 만드는 데 사용되었다. [[시스템]] 네이티브 컴파일러를 사용했을 때보다 이식성을 향상시킬 수 있고, 상용 컴파일러에 비해서 느린 코드를 생성하지만, 최근에는 많이 개선되었다.<ref>명경지수, 〈[https://m.blog.naver.com/PostView.nhn?blogId=itsw7&logNo=10028288527&proxyReferer=https:%2F%2Fwww.google.com%2F (GCC) GCC 컴파일러 모음 (펌)]〉, 《네이버 블로그》, 2008-03-03</ref> | |
− | + | 원래는 [[C]]만을 지원하여 GNU C 컴파일러의 약자였지만 불렸지만, [[C++]], [[자바]], [[포트란]], [[에이다]] 등 여러 언어를 컴파일할 수 있게 되면서, GNU 컴파일러 모음으로 바뀌게 되었다. 2013년에 구현 언어가 모두 C++로 변경이 되었고, 자바는 7.1버전부터 지원을 중단하였다. 현재 공식적으로 지원하는 언어는 C, C++, Objective-C, Fortran, Ada, Go이다. 개발된 후 오랜 시간이 흘러 컴파일러의 최적화는 잘 되어 있지만, 기존 코드의 구조가 시대적 한계로 인해 오늘날에는 잘 사용하지 않는 구조로 신규 인력의 유입이 드물다.<ref>〈[https://namu.wiki/w/GCC GCC]〉, 《나무위키》</ref> GNU 컴파일러 모음이 실행시키는 프로그램은 [[전처리기]](CPP), 컴파일러(CCL), 어셈블러(AS), [[링커]](LD) 이렇게 4가지가 있다. [[파스칼]](Pascal), [[머큐리]], OpenMP 등은 이용은 가능하지만, 표준에는 포함되지 않았다. gcc는 전처리 단계, 컴파일 단계, 어셈블 단계, 링크 단계를 거쳐 동작하고, [[파일 확장자]]에 따라서 처리를 다르게 한다. [[파일]] 확장자에 따라서 필요한 단계와 필요 없는 단계가 나뉜다. 예를 들어 전처리가 되어 있는 파일의 경우 전처리 단계가 필요 없고, 어셈블리어로 된 파일의 경우에는 컴파일 단계가 필요하지 않다.<ref>Data Engineer, 〈[https://seamless.tistory.com/2 gcc로 컴파일 하는 방법]〉, 《티스토리》, 2009-05-15</ref> | |
==라이선스== | ==라이선스== | ||
===카피레프트=== | ===카피레프트=== | ||
− | 카피레프트 자체는 라이선스라고 보기 어렵지만, 카피 레프트를 사용한다는 것은 라이선스의 조건을 정리하는 것을 의미하는 것으로, 라이선스와 밀접한 관련이 있다. 카피레프트라는 용어 자체는 저작자에게 독점적인 권리를 부여하고자 하는 의미의 저작권과 반대되는 개념으로 만들어진 용어다. 저작권에 기반을 둔 사용 제한이 아니라, 저작권을 기반으로 한 정보의 공유를 위한 조치로, 카피레프트를 주장하는 사람들을 지식과 정보는 소수에게 독점되어서는 안 되며, 모든 사람에게 열려있어야 한다고 주장한다. 정보를 사용할 권리를 2차 저작물의 저작자에게 전달하며, 권리의 전달을 막지 않을 것을 주요 요건으로 삼고 있다. 카피레프트를 사용한다는 것은 작품을 연구하고 사용하는 자유, 작품을 다른 사람들과 같이 쓰고 복사하는 자유, 작품을 수정하는 자유, 수정된 작품, 곧 2차 저작물을 배포할 자유를 제공받을 수 있다는 것을 의미한다. 저작물이 완전히 카피레프트가 되게 하려면, 라이선스는 2차 저작물의 저자가 저작물을 원래의 저작물과 동등한 라이선스 아래에서 배포할 수 있음을 보증해야 한다. 또한 권리들이 나중에 변경이나 철회될 수 없음을 보증하며, | + | 카피레프트 자체는 라이선스라고 보기 어렵지만, 카피 레프트를 사용한다는 것은 라이선스의 조건을 정리하는 것을 의미하는 것으로, 라이선스와 밀접한 관련이 있다. 카피레프트라는 용어 자체는 저작자에게 독점적인 권리를 부여하고자 하는 의미의 저작권과 반대되는 개념으로 만들어진 용어다. 저작권에 기반을 둔 사용 제한이 아니라, 저작권을 기반으로 한 정보의 공유를 위한 조치로, 카피레프트를 주장하는 사람들을 지식과 정보는 소수에게 독점되어서는 안 되며, 모든 사람에게 열려있어야 한다고 주장한다. 정보를 사용할 권리를 2차 저작물의 저작자에게 전달하며, 권리의 전달을 막지 않을 것을 주요 요건으로 삼고 있다. 카피레프트를 사용한다는 것은 작품을 연구하고 사용하는 자유, 작품을 다른 사람들과 같이 쓰고 복사하는 자유, 작품을 수정하는 자유, 수정된 작품, 곧 2차 저작물을 배포할 자유를 제공받을 수 있다는 것을 의미한다. 저작물이 완전히 카피레프트가 되게 하려면, 라이선스는 2차 저작물의 저자가 저작물을 원래의 저작물과 동등한 라이선스 아래에서 배포할 수 있음을 보증해야 한다. 또한 권리들이 나중에 변경이나 철회될 수 없음을 보증하며, 원저작물과 2차 저작물이 수정을 쉽고 가능하게 하는 형태로 제공할 것을 요구한다.<ref>〈[https://ko.wikipedia.org/wiki/%EC%B9%B4%ED%94%BC%EB%A0%88%ED%94%84%ED%8A%B8 카피레프트]〉, 《위키백과》</ref> 일반 공중 허가서와 약소 일반 공중 허가서는 카피레프트에 해당한다. |
===BSD 사용 허가서=== | ===BSD 사용 허가서=== | ||
− | BSD(Barkeley Software Distribution) 계열 소프트웨어를 포함한 많은 프로그램에서 사용되는 자유 소프트웨어 | + | [[BSD]](Barkeley Software Distribution) 계열 소프트웨어를 포함한 많은 프로그램에서 사용되는 자유 소프트웨어 [[저작권]]의 한 가지다. 해당 라이선스는 소프트웨어 라이선스라고 할 수 없을 만큼, 소프트웨어의 사용 및 배포에 최소한의 제한만을 부과한다. 해당 소프트웨어는 아무나 개작할 수 있고, 수정한 것을 제한 없이 배포할 수 있지만, 수정본의 재배포는 의무적인 사항은 아니기 때문에 BSD 라이선스를 갖는 프로그램은 공개하지 않아도 되는 상용 소프트웨어에서도 사용할 수 있다. 이것은 GNU 일반 공중 허가서와의 가장 큰 차이점인데, 일반 공중 허가서는 파생된 소프트웨어도 일반 공중 허가서와 같은 라이선스를 갖도록 의무화하여, 파생물의 경우에도 소스 코드가 반드시 배포되도록 한다. BSD 라이선스는 BSD 자체가 공공기관에서 만들어낸 것이기 때문에 공공의 몫으로 돌려주자는 의미가 강해, 라이선스 자체에는 아무런 제한 없이 누구나 자신의 용도로 한 것이다. 라이선스 자체에는 소프트웨어에 국한되지 않고 하드웨어 등에서도 아무런 제약 없이 누구나 자신의 용도로 사용할 수 있는 대신, 사용자의 사용으로 인해 발생하는 모든 발생 가능한 경우의 리스크와 손해에 대해 사전인식 가능 여부와 상관없이 사용자 본인에게 책임을 지우고 있다.<ref>〈[https://ko.wikipedia.org/wiki/%EC%9E%90%EC%9C%A0_%EC%86%8C%ED%94%84%ED%8A%B8%EC%9B%A8%EC%96%B4 BSD 허가서]〉, 《위키백과》</ref> 제한이 거의 없는 라이선스지만, 소프트웨어는 하나의 저작물이기 때문에, 사용할 때 반드시 저작권자를 표기해주어야 한다. 별도의 서면 허락 없이는 BSD 소프트웨어를 개발한 단체나 개인의 이름을 해당 소프트웨어나, 그로 인한 파생물의 광고에 사용할 수 없고, 광고를 하게 되더라도, 광고에 저작권자를 반드시 명시해야 한다. 또한 바이너리 형태로 재배포할 경우, 배포와 함께 제공되는 문서 및 기타 자료에 저작권을 고지하고, 조건 목록과 면책 조항을 복제해야 한다. BSD 사용 허가서를 갖는 프로그램에는 OpenCV 등이 있다. |
===GNU 일반 공중 허가서=== | ===GNU 일반 공중 허가서=== | ||
− | 일반 공중 허가서(General Public License)는 약자를 따 GPL이라고도 한다. 자유 소프트웨어 재단에서 만든 자유 소프트웨어 | + | 일반 공중 허가서(General Public License)는 약자를 따 GPL이라고도 한다. 자유 소프트웨어 재단에서 만든 자유 소프트웨어 라이선스로 1989년 1차 버전, 1991년 2차 버전, 2007년 3차 버전까지 발표되었다. 프로그램의 일부에 일반 공중 허가서를 가진 코드가 들어가게 되면, 그 프로그램 또한 일반 공중 허가서를 갖게 된다. 독특한 것은 일반 공중 허가서를 가진 프로그램을 유료로 판매하는 것은 가능하지만, 반드시 전체 소스 코드는 무료로 공개해야 한다. 단순히 내부적인(개인, 기관, 단체 등) 목적으로만 사용할 때에는 소스 코드를 공개할 필요가 없지만, 어떤 형태로든 외부에 공표하거나 배포할 때에는 전체 소스코드를 공개해야 한다. 일반적으로 소프트웨어 라이선스들은 소프트웨어에 대한 공유와 수정의 자유를 제한하려는 목적을 가지고 만들어졌지만, 일반 공중 허가서는 공유와 수정의 자유를 보장하기 위한 규정이다.<ref name=“라이선스)>다크 프로그래머, 〈[https://darkpgmr.tistory.com/89 공개 SW 라이센스 GPL, LGPL, BSD]〉, 《티스토리》, 2013-08-05</ref> 최신 버전인 버전 3은 대부분의 소프트웨어 패키지에 권장된다. 이전 버전인 일반 공중 허가서 버전 2와 단독으로 허가되지 않지만, 버전 2를 바탕으로 출시된 대부분의 소프트웨어에서는 버전 3도 사용할 수 있다. 이 경우 버전 3의 코드를 사용하여 원하는 조합을 만들 수 있다. 일반 공중 허가서를 갖는 프로그램에는 파이어폭스 2.0버전, 리눅스 커널, 깃, 마리아 데이터베이스 등이 있다. |
===GNU 약소 일반 공중 허가서=== | ===GNU 약소 일반 공중 허가서=== | ||
− | 약소 일반 공중 허가서(Lesser General Public License)는 이름에서부터 알 수 있듯이 완화된 조건의 일반 공중 허가서로, 자유 소프트웨어 재단의 자유 소프트웨어 라이선스다. 약자를 따서 LGPL이라 부르기도 하는데 이전에는 첫 L이 Lessor가 아닌 Library로 쓰였다. 일반 공중 허가서와 가장 큰 차이점은 약소 일반 공중 허가서를 가진 코드를 단순히 정적 또는 동적 라이브러리로 사용한 프로그램을 판매하거나 배포할 경우에는 프로그램의 | + | 약소 일반 공중 허가서(Lesser General Public License)는 이름에서부터 알 수 있듯이 완화된 조건의 일반 공중 허가서로, 자유 소프트웨어 재단의 자유 소프트웨어 라이선스다. 약자를 따서 LGPL이라 부르기도 하는데 이전에는 첫 L이 Lessor가 아닌 Library로 쓰였다. 일반 공중 허가서와 가장 큰 차이점은 약소 일반 공중 허가서를 가진 코드를 단순히 정적 또는 동적 라이브러리로 사용한 프로그램을 판매하거나 배포할 경우에는 프로그램의 소스 코드를 공개하지 않아도 된다는 것이다. 이 경우 약소 일반 공중 허가서를 가진 코드를 사용했다는 것만을 명시해주면 된다. 단순히 이용하는 것이 아닌, 약소 일반 공중 허가서를 가진 코드를 수정하거나, 이로부터 파생된 라이브러리를 개발하여 판매 또는 배포할 경우에는 전체 코드를 공개해야 한다.<ref name=“라이선스)></ref> 약소 일반 공중 허가서를 가진 코드가 단순히 사용되는 것이 아니라, 코드에 기반으로 하여 만들어졌다면, 약소 일반 공중 허가서에 따라 재배포 되어야 한다는 것이다. 이때는 실행 물을 개인적인 용도로 개작하거나, 리버스 엔지니어링 할 수 있다는 사실과, 약소 일반 공중 허가서의 라이브러리가 사용되고 있다는 사실을 고지하여야 한다.<ref>〈[https://namu.wiki/w/GNU%20%EC%95%BD%EC%86%8C%20%EC%9D%BC%EB%B0%98%20%EA%B3%B5%EC%A4%91%20%EC%82%AC%EC%9A%A9%20%ED%97%88%EA%B0%80%EC%84%9C?from=LGPL GNU 약소 일반 공중 사용 허가서]〉, 《나무위키》</ref> 카피레프트에 대한 규제를 프로그램 자체에 두고, 이 프로그램을 사용하는 다른 프로그램에 대해서는 카피레프트를 두지 않지만, 어느 정도의 규제는 있다. 소프트웨어 라이브러리에 주로 쓰이며, 간혹 독립적인 프로그램에도 쓰인다. 대표적인 예로, [[모질라]]와 [[오픈오피스]]가 있다. 일반 공중 허가서와 약소 일반 공중 허가서 모두 상업적으로 이용할 수 있고, 배포 및 수정이 가능하며, 특허를 신청하거나 사적으로 이용할 수 있다. 약소 일반 공중 허가서를 갖는 프로그램으로는 [[파이어폭스]] 2.1버전 등이 있다. |
+ | |||
+ | ===MIT=== | ||
+ | BSD 라이선스를 기초로 작성된 BSD 계열 라이선스 중의 하나로, 미국의 [[매사추세츠 공과대학교]]에서 자기 학교의 소프트웨어 공학도들을 돕기 위해 개발한 허가서이다. 누구나 무상으로 제한 없이 취급할 수 있게 허가해주기 때문에, GNU 일반 공중 허가서의 엄격함을 피하려는 사용자들에게 인기가 많다. BSD 사용 허가서를 기초로 하기 때문에 코드 및 모듈을 사용해도 되고, 소스를 오픈하는 것은 의무가 아니다.<ref>swconsulting swconsulting, 〈[https://swconsulting.tistory.com/60 (ETC) 오픈소스 라이센스 정리 (GPL, LPGL, BSD, MIT 이란?)]〉, 《티스토리》, 2015-03-09</ref> MIT 라이선스 소프트웨어를 취급할 때는 사용한 소프트웨어의 저작권 허가 표시를 2차 저작물에 기재해야 하고, 문제가 발생하더라도 저작권자가 책임지지 않는다. 이 라이선스를 따르는 소프트웨어에는 제이쿼리(jQuery), 루비 온 레일즈(Ruby on Rails), 비주얼 스튜디오(Visual Studio) 등이 있다. | ||
+ | |||
+ | ===모질라 공용 허가서=== | ||
+ | 과거 [[넷스케이프]] 웹브라우저의 소스 코드를 공개하기 위해 개발된 라이선스로, 초기의 1.0버전은 넷스케이프 커뮤니케이션의 변호사였던 밋첼 베이커가 작성하였고, 이후의 1.1버전과 2.0버전은 모질라 재단이 작성하였다. 모질라 공용 허가서의 특징은 소스 코드와 실행 파일의 저작권을 분리했다는 것이다. 소스 코드를 수정할 경우 모질라 공용 허가서에 의해 소스를 공개하고, 원작자에게 수정한 부분에 대해서 알려야 하지만, 실행 파일은 독점 라이선스로 배포할 수 있다. 모질라 공용 허가서는 소프트웨어와 수정한 소프트웨어에 대한 공개 의무만을 가지며, 별도의 소스 코드와 실행 파일은 독점 라이선스를 가질 수 있다. 모질라 공용 허가서의 적용 사례에는 모질라 파이어폭스, 모질라 [[썬더버드]] 등이 있다.<ref>장승훈, 〈[http://www.bloter.net/archives/209318 GPL·AGPL·MPL...한눈에 보는 오픈소스 SW 라이선스]〉, 《블로터》</ref> | ||
==종류== | ==종류== | ||
− | 리눅스, BSD, 모질라 파이어폭스 | + | ===GNU/리눅스=== |
+ | GNU/리눅스에서 리눅스는 커널 부분을 뜻한다. 시스템의 나머지 부분은 기타 프로그램으로 구성되고, GNU 프로젝트를 통해 상당 부분이 개발되었다. 리눅스 커널 자체만으로는 시스템을 구성할 수 없기 때문에, 우리가 흔히 리눅스라고 부르는 시스템은 GNU/리눅스라는 이름으로 사용한다. 1984년부터 개발하기 시작했고, 자유 소프트웨어 재단은 유닉스와 유사한 운영체제의 개발을 시작하면서 그 이름을 GNU라고 했다. 리눅스 커널은 리누스 토발즈라는 핀란드의 한 컴퓨터 과학을 공부하던 대학생이 1991년 유즈넷 뉴스그룹에 미닉스(Minix)를 대체하는 커널의 초기 버전을 발표하면서 처음으로 그 모습을 세상에 드러냈다.<ref> 〈[https://www.debian.org/releases/stable/s390x/index.ko.html GNU/리눅스란?]〉, 《데비안》</ref> | ||
+ | |||
+ | ===BSD=== | ||
+ | 1977년부터 1995년까지 미국 캘리포니아의 [[버클리 대학교]]의 컴퓨터 시스템 리서치 그룹(Computer System Research Group)에서 개발한 유닉스 운영체제이다. 현재 우리가 사용하는 BSD라는 용어는 유닉스 운영 체제 계열에서 분기되어 형성된 BSD 파생 판을 두루 가리키는 용어로 자리잡혀있다. 또한 오리지널 BSD 코드로부터 파생된 운영체제들이 현재까지도 활발하게 개발되고, 널리 사용되고 있다. 오리지널 AT&T 유닉스 운영 체제의 초기 코드 기반과 디자인을 공유하고 있어, 유닉스의 한 갈래로 간주하여 버클리 유닉스라고도 한다. BSD는 라이선스를 받기 쉽고, 수많은 회사들의 창립자들이 친숙하게 여겨 1980년대에 DEC ULTRIX, 썬 마이크로시스템즈 SunOS와 같은 사유 유닉스 변종의 형태로 [[워크스테이션]] 계열 시스템의 업체들에 널리 채택되었다.<ref>〈[https://ko.wikipedia.org/wiki/BSD]〉, 《위키백과》</ref> | ||
+ | |||
+ | ===모질라 파이어폭스=== | ||
+ | 모질라(Mozilla) 재단과 모질라 코퍼레이션이 개발하는 자유 소프트웨어 웹 브라우저로 윈도우, 리눅스, OS X 그리고 안드로이드에서 실행할 수 있다. 이 브라우저는 2014년 2월 기준, 전 세계 웹 브라우저 시장 점유율의 약 12~22%를 차지하고 있고, 지역에 따라 두 번째, 혹은 세 번째로 가장 많이 쓰이는 웹 브라우저이다. 파이어폭스(firefox)에서는 탭 브라우징, 맞춤법 검사, 통합 검색, 라이브 북마크, 통합된 다운로드 관리자, 단축키, 사용자가 원하는 검색 엔진을 사용할 수 있는 통합 검색 시스템이 있다. 사용자가 확장 기능 및 테마를 맞출 수도 있고, 웹 개발자들을 위한 에러 [[콘솔]] 또는 DCM 검사 또는 파이어 버그 부가 기능과 같은 개발 도구들을 제공한다. 파이어폭스의 소스 코드는 자유 소프트웨어이기 때문에 대부분의 소스가 모질라 공용 라이선스(MPL)로 배포된다. 이 라이선스는 누구나 소스 코드를 볼 수 있고, 재생산할 수 있는 자유를 보장해주어, 파이어폭스로부터 넷스케이프, Flock, Miro 등 여러 가지 프로그램이 파생되었다. 과거에는 단지 모질라 공용 라이선스 버전 1.1만 배포되어 자유 소프트웨어 재단으로부터 약한 카피레프트 허가에 대해 비판을 받았다. 또한 모질라 공용 라이선스 버전 1.1은 법적으로 GNU 일반 공용 허가서와 호환되지 않았다. 이후 모질라에서 파이어폭스의 대부분을 모질라 공용 라이선스 1.1 뿐만 아니라, GNU 일반 공용 허가서 2.0, GNU 약소 일반 공용 허가서 2.1 삼중 라이선스로 배포하여, 개발자들이 용도에 따라 라이선스를 선택할 수 있게 되었다.<ref>〈[https://ko.wikipedia.org/wiki/%EB%AA%A8%EC%A7%88%EB%9D%BC_%ED%8C%8C%EC%9D%B4%EC%96%B4%ED%8F%AD%EC%8A%A4 모질라 파이어폭스]〉, 《위키백과》</ref> | ||
{{각주}} | {{각주}} | ||
39번째 줄: | 54번째 줄: | ||
*joone, 〈[https://foss-story.blogspot.com/2016/03/blog-post.html 만화로 나누는 오픈소스 이야기]〉, 《블로거》, 2016-03-20 | *joone, 〈[https://foss-story.blogspot.com/2016/03/blog-post.html 만화로 나누는 오픈소스 이야기]〉, 《블로거》, 2016-03-20 | ||
*〈[https://ko.wikipedia.org/wiki/GNU_%ED%94%84%EB%A1%9C%EC%A0%9D%ED%8A%B8 GNU 프로젝트]〉, 《위키백과》 | *〈[https://ko.wikipedia.org/wiki/GNU_%ED%94%84%EB%A1%9C%EC%A0%9D%ED%8A%B8 GNU 프로젝트]〉, 《위키백과》 | ||
+ | *명경지수, 〈[https://m.blog.naver.com/PostView.nhn?blogId=itsw7&logNo=10028288527&proxyReferer=https:%2F%2Fwww.google.com%2F (GCC) GCC 컴파일러 모음 (펌)]〉, 《네이버 블로그》, 2008-03-03 | ||
+ | *〈[https://namu.wiki/w/GCC GCC]〉, 《나무위키》 | ||
+ | *Data Engineer, 〈[https://seamless.tistory.com/2 gcc로 컴파일 하는 방법]〉, 《티스토리》, 2009-05-15 | ||
*〈[https://ko.wikipedia.org/wiki/%EC%B9%B4%ED%94%BC%EB%A0%88%ED%94%84%ED%8A%B8 카피레프트]〉, 《위키백과》 | *〈[https://ko.wikipedia.org/wiki/%EC%B9%B4%ED%94%BC%EB%A0%88%ED%94%84%ED%8A%B8 카피레프트]〉, 《위키백과》 | ||
*〈[https://ko.wikipedia.org/wiki/%EC%9E%90%EC%9C%A0_%EC%86%8C%ED%94%84%ED%8A%B8%EC%9B%A8%EC%96%B4 BSD 허가서]〉, 《위키백과》 | *〈[https://ko.wikipedia.org/wiki/%EC%9E%90%EC%9C%A0_%EC%86%8C%ED%94%84%ED%8A%B8%EC%9B%A8%EC%96%B4 BSD 허가서]〉, 《위키백과》 | ||
*다크 프로그래머, 〈[https://darkpgmr.tistory.com/89 공개 SW 라이센스 GPL, LGPL, BSD]〉, 《티스토리》, 2013-08-05 | *다크 프로그래머, 〈[https://darkpgmr.tistory.com/89 공개 SW 라이센스 GPL, LGPL, BSD]〉, 《티스토리》, 2013-08-05 | ||
*〈[https://namu.wiki/w/GNU%20%EC%95%BD%EC%86%8C%20%EC%9D%BC%EB%B0%98%20%EA%B3%B5%EC%A4%91%20%EC%82%AC%EC%9A%A9%20%ED%97%88%EA%B0%80%EC%84%9C?from=LGPL GNU 약소 일반 공중 사용 허가서]〉, 《나무위키》 | *〈[https://namu.wiki/w/GNU%20%EC%95%BD%EC%86%8C%20%EC%9D%BC%EB%B0%98%20%EA%B3%B5%EC%A4%91%20%EC%82%AC%EC%9A%A9%20%ED%97%88%EA%B0%80%EC%84%9C?from=LGPL GNU 약소 일반 공중 사용 허가서]〉, 《나무위키》 | ||
+ | *swconsulting swconsulting, 〈[https://swconsulting.tistory.com/60 (ETC) 오픈소스 라이센스 정리 (GPL, LPGL, BSD, MIT 이란?)]〉, 《티스토리》, 2015-03-09 | ||
+ | *장승훈, 〈[http://www.bloter.net/archives/209318 GPL·AGPL·MPL...한눈에 보는 오픈소스 SW 라이선스]〉, 《블로터》 | ||
+ | *〈[https://www.debian.org/releases/stable/s390x/index.ko.html GNU/리눅스란?]〉, 《데비안》 | ||
+ | *〈[https://ko.wikipedia.org/wiki/BSD BSD]〉, 《위키백과》 | ||
+ | *〈[https://ko.wikipedia.org/wiki/%EB%AA%A8%EC%A7%88%EB%9D%BC_%ED%8C%8C%EC%9D%B4%EC%96%B4%ED%8F%AD%EC%8A%A4 모질라 파이어폭스]〉, 《위키백과》 | ||
==같이 보기== | ==같이 보기== | ||
49번째 줄: | 72번째 줄: | ||
* [[오픈소스]] | * [[오픈소스]] | ||
− | {{소프트웨어| | + | {{소프트웨어|검토 필요}} |
2021년 1월 20일 (수) 16:56 기준 최신판
자유 소프트웨어(free software)는 복사와 사용, 연구, 수정, 배포 등의 제한이 없는 소프트웨어 혹은 그 통칭이다. 프리 소프트웨어라고도 하며, 간략히 자유 S/W, 프리 S/W라고도 한다.
목차
개요[편집]
소프트웨어의 수정 및 수정본의 재배포는 인간이 해독 가능한 프로그램의 소스 코드가 있어야만 가능하며, 소스 코드는 일반 공중 허가서 등의 라이선스를 통하거나, 혹은 드물지만, 퍼블릭 도메인을 통하여 공개된다. 자유 소프트웨어를 이해하기 위해선 먼저 자유에는 일정한 책임이 따른다는 사실을 알아야 한다. 자유 소프트웨어는 자유롭게 이용할 수 있는 소프트웨어를 말하지만, 해당 소프트웨어의 사용 조건이 무엇인지, 출처는 어디인지 밝히고 사용해야 한다. 개인이 자유롭게 사용한다고 하더라도, 재생산되거나 재배포 될 가능성을 배제할 수 없기 때문이다. 즉, 남이 만든 소프트웨어를 사용하는 대신 최소한의 조건을 이행하겠다는 조건 하에 자유 소프트웨어를 사용할 수 있다. 자유 소프트웨어 개발자들은 웹 브라우저나 오피스 제품군 혹은 멀티미디어 플레이어 등 거의 대부분의 데스크톱 애플리케이션들을 자유 소프트웨어로 만들어냈다. 그러나 많은 영역에서 개인 사용자를 위한 자유 소프트웨어들은 경쟁 독점 소프트웨어들에 비해 미미한 시장 점유율을 지닌다.[1] 자유 소프트웨어가 가진 자유를 크게 4가지로 볼 수 있다. 먼저 프로그램을 어떠한 목적을 위해서도 실행할 수 있는 자유, 이웃을 돕기 위해 프로그램을 복제하고 배포할 수 있는 자유가 있다. 세 번째로, 프로그램의 작동 원리를 연구하고, 이를 자신의 필요에 맞게 변경시킬 수 있는 자유가 있어야 하는데, 이러한 자유를 위해서는 소스 코드에 대한 접근이 선행되어야 한다. 마지막으로 프로그램을 향상시키고 공동체 전체의 이익을 위해서 다시 환원시킬 수 있는 자유가 있어야 한다. 이러한 자유를 위한 조건은 앞의 조건과 동일하게, 소스 코드에 대한 접근이 선행되어야 한다는 것이다.[2]
역사[편집]
1950년대부터 1970년대까지의 컴퓨터 사용자들은 대부분의 소프트웨어를 자유롭게 이용할 수 있었다. 사람들은 종종 소프트웨어를 서로 공유했고, 하드웨어 제조사들은 하드웨어를 편리하게 사용할 수 있게 하는 소프트웨어들이 제작되는 것을 기꺼워했다. 1970년대부터 1980년대에 소프트웨어 산업이 복제권을 법적으로 적용하기 시작하여, 사용자들이 소프트웨어를 연구하거나 수정하지 못하도록 바이너리 형태로만 배포하는 기술적 방법들이 사용되곤 했다. 1983년에, 리처드 스톨만은 컴퓨터 산업의 이러한 변화에 저항해 GNU 프로젝트를 시작했다. 1984년에는 GNU 운영 체제의 개발이 시작되었으며, 1985년 10월 자유 소프트웨어 재단(FSF)이 설립되었다. 그는 카피레프트를 주장하며, 자유 소프트웨어의 정의를 모두가 자유롭게 사용할 수 있도록 디자인된 소프트웨어로 소개하였다. 1991년에는 핀란드에서 리누스 토르발스가 리눅스를 발표하였고, 이것이 GNU 프로젝트에 통합되면서, 자유 소프트웨어 커뮤니티가 활성화되기 시작했다.[1]
특징[편집]
자유 소프트웨어는 완전히 무료 혹은 최소한의 금액만을 받고 자유롭게 배포되어야 하며, 자유 소프트웨어를 통한 비즈니스 모델들은 대게 고객 지원이나 커스터마이징 등을 통한 것들이다. 대부분의 자유 소프트웨어들이 온라인에서 무료로 제공되거나, 오프라인에서 적당한 가격으로 배포되는데, 이것이 필수적인 것은 아니다. 간혹 자유 소프트웨어와 무료 소프트웨어를 같은 의미로 보는 경우가 있는데 자유 소프트웨어는 무료 소프트웨어일 수도 있고, 아닐 수도 있다. 1990년대 후반에 자유 소프트웨어 대신 오픈 소스 소프트웨어라는 용어가 많이 사용되기 시작했다. 하지만 자유 소프트웨어 재단은 자유로운 사용을 강조하는 대신 기술적인 면에 치우친 용어라는 점에서 “자유 소프트웨어”라는 용어를 사용할 것을 권장했다.[1] 자유 소프트웨어와 오픈소스 소프트웨어는 같은 소프트웨어를 지칭하기도 하지만, 바라보는 관점에서 차이가 있다. 오픈 소스는 개발 방법론으로, 오픈 소스의 철학은 실용적인 관점에서 소프트웨어를 어떻게 잘 만들 것인가를 고려하는 것이다. 이에 비해 자유 소프트웨어는 사회적 운동으로, 윤리적 명령으로서 사용자에게 주어진 자유를 기본적으로 중요하게 생각한다. 대부분의 오픈 소스 소프트웨어는 자유 소프트웨어이기도 하지만, 일부 오픈 소스 라이선스는 수정된 버전을 만들어 개인적으로 사용할 수 없게 하여, 사용자의 자유를 침해하기도 한다.[3]
GNU 프로젝트[편집]
GNU는 “GNU’s not UNIX.”의 약자로, 원래의 문장 안에 자신이 이미 들어 있는 재귀 약자이다. 스톨만은 GNU를 그누로 읽을 것을 제안했다. 1983년 9월 27일 유즈넷(usenet) net.uniw-wizard 그룹을 통해 세상에 알려졌다. 스톨만은 “GNU” 선언문을 비롯한 여러 글들을 작성하여, 초기 전산 공동체에 지배적이었던 협동 정신을 되돌려야 한다고 주장했다. GNU 프로젝트는 누구나 자유롭게 “실행, 복사, 수정, 배포”할 수 있고, 누구도 그런 권리를 제한하면 안 된다는 일반 공중 허가서라는 사용 허가권 아래에서 소프트웨어를 배포한다. 1985년 스톨만이 설립한 자유 소프트웨어 재단은 GNU를 개발할 프로그래머들을 고용했지만, 실질적으로 프로그램을 개발한 사람들은 자원봉사자들이었다. 이를 주목한 다른 회사들이 GNU의 소프트웨어 개발이나 판매 및 기술 지원을 도와 성공적으로 개발한 것이 현재는 레드햇의 일부인 시그너스 솔루션(Cygnus Solutions)이다. 1990년대까지 GNU 시스템에서 확장 가능한 프로그램은 문서 편집기(이맥스), 컴파일러(GCC), 표준 유닉스배포판의 핵심인 라이브러리와 유틸리티가 있었지만, 주요 구성요소인 커널이 포함되지 않았다. 이에 스톨만은 기본적인 커널은 있지만, 유닉스를 흉내 내기 위해선 더 많은 기능이 필요하다고 했고, 이것은 유닉스 7번째 판과 호환되는 트릭스(TRIX)라는 원격 프로시저 호출 커널로 MIT에서 개발되어 자유롭게 배포되었다. 하지만 트릭스를 기반으로 새 커널을 만드는 것은 어렵다는 결론이 내려졌고, 1988년 카네기 멜런 대학에서 개발되던 마하 통신-전송 커널을 트릭스의 대체품으로 고려했지만, 이를 처음 개발한 개발자들이 AT&T 소유의 코드를 지우면서 지연되었다. 이 커널은 처음에 앨릭스라고 불렸지만, 이후 개발자인 마이클 부시넬(Michael Busgnell)이 허드(HURD)라는 이름을 선호하여, 앨릭스란 이름은 하부 구조로 옮겨지고, 결국 완전히 떨어졌다. 허드의 개발은 기술적이고 개인적인 충돌들로 인하여 지지부진해졌다. 1991년 리누스 토르발스가 유닉스 호환이 가능한 리눅스 커널을 작성하여 일반 공중 허가서 아래에 배포했다. 이후 여러 프로그래머들이 인터넷을 통해 리눅스를 발전시켰고, 19092년 리눅스가 GNU 프로그램과 통합되었고, 이로써 완전한 공개 운영 체제가 탄생했다. GNU 시스템 가운데 가장 흔한 것이, 바로 이 “GNU/리눅스”또는 “리눅스 배포판”이라고 불리는 프로그램이다.[4]
GNU 컴파일러 모음[편집]
GNU 컴파일러 모음(GNU Compiler Collection)의 약자를 따서 GCC라고도 하며, GNU 프로젝트의 일환으로 개발되어 널리 쓰이고 있는 컴파일러이다. 1987년 리차드 스톨만이 GNU 프로젝트의 컴파일러로 작성했고, 1999년 첫 버전이 나왔다. 현재는 전 세계적으로 관리되고 있으며, 다양한 중앙 처리 장치를 처리할 수 있게 되었다. GNU 시스템의 공식 컴파일러로, 많은 컴파일러와 운영체제를 만드는 데 사용되었다. 시스템 네이티브 컴파일러를 사용했을 때보다 이식성을 향상시킬 수 있고, 상용 컴파일러에 비해서 느린 코드를 생성하지만, 최근에는 많이 개선되었다.[5]
원래는 C만을 지원하여 GNU C 컴파일러의 약자였지만 불렸지만, C++, 자바, 포트란, 에이다 등 여러 언어를 컴파일할 수 있게 되면서, GNU 컴파일러 모음으로 바뀌게 되었다. 2013년에 구현 언어가 모두 C++로 변경이 되었고, 자바는 7.1버전부터 지원을 중단하였다. 현재 공식적으로 지원하는 언어는 C, C++, Objective-C, Fortran, Ada, Go이다. 개발된 후 오랜 시간이 흘러 컴파일러의 최적화는 잘 되어 있지만, 기존 코드의 구조가 시대적 한계로 인해 오늘날에는 잘 사용하지 않는 구조로 신규 인력의 유입이 드물다.[6] GNU 컴파일러 모음이 실행시키는 프로그램은 전처리기(CPP), 컴파일러(CCL), 어셈블러(AS), 링커(LD) 이렇게 4가지가 있다. 파스칼(Pascal), 머큐리, OpenMP 등은 이용은 가능하지만, 표준에는 포함되지 않았다. gcc는 전처리 단계, 컴파일 단계, 어셈블 단계, 링크 단계를 거쳐 동작하고, 파일 확장자에 따라서 처리를 다르게 한다. 파일 확장자에 따라서 필요한 단계와 필요 없는 단계가 나뉜다. 예를 들어 전처리가 되어 있는 파일의 경우 전처리 단계가 필요 없고, 어셈블리어로 된 파일의 경우에는 컴파일 단계가 필요하지 않다.[7]
라이선스[편집]
카피레프트[편집]
카피레프트 자체는 라이선스라고 보기 어렵지만, 카피 레프트를 사용한다는 것은 라이선스의 조건을 정리하는 것을 의미하는 것으로, 라이선스와 밀접한 관련이 있다. 카피레프트라는 용어 자체는 저작자에게 독점적인 권리를 부여하고자 하는 의미의 저작권과 반대되는 개념으로 만들어진 용어다. 저작권에 기반을 둔 사용 제한이 아니라, 저작권을 기반으로 한 정보의 공유를 위한 조치로, 카피레프트를 주장하는 사람들을 지식과 정보는 소수에게 독점되어서는 안 되며, 모든 사람에게 열려있어야 한다고 주장한다. 정보를 사용할 권리를 2차 저작물의 저작자에게 전달하며, 권리의 전달을 막지 않을 것을 주요 요건으로 삼고 있다. 카피레프트를 사용한다는 것은 작품을 연구하고 사용하는 자유, 작품을 다른 사람들과 같이 쓰고 복사하는 자유, 작품을 수정하는 자유, 수정된 작품, 곧 2차 저작물을 배포할 자유를 제공받을 수 있다는 것을 의미한다. 저작물이 완전히 카피레프트가 되게 하려면, 라이선스는 2차 저작물의 저자가 저작물을 원래의 저작물과 동등한 라이선스 아래에서 배포할 수 있음을 보증해야 한다. 또한 권리들이 나중에 변경이나 철회될 수 없음을 보증하며, 원저작물과 2차 저작물이 수정을 쉽고 가능하게 하는 형태로 제공할 것을 요구한다.[8] 일반 공중 허가서와 약소 일반 공중 허가서는 카피레프트에 해당한다.
BSD 사용 허가서[편집]
BSD(Barkeley Software Distribution) 계열 소프트웨어를 포함한 많은 프로그램에서 사용되는 자유 소프트웨어 저작권의 한 가지다. 해당 라이선스는 소프트웨어 라이선스라고 할 수 없을 만큼, 소프트웨어의 사용 및 배포에 최소한의 제한만을 부과한다. 해당 소프트웨어는 아무나 개작할 수 있고, 수정한 것을 제한 없이 배포할 수 있지만, 수정본의 재배포는 의무적인 사항은 아니기 때문에 BSD 라이선스를 갖는 프로그램은 공개하지 않아도 되는 상용 소프트웨어에서도 사용할 수 있다. 이것은 GNU 일반 공중 허가서와의 가장 큰 차이점인데, 일반 공중 허가서는 파생된 소프트웨어도 일반 공중 허가서와 같은 라이선스를 갖도록 의무화하여, 파생물의 경우에도 소스 코드가 반드시 배포되도록 한다. BSD 라이선스는 BSD 자체가 공공기관에서 만들어낸 것이기 때문에 공공의 몫으로 돌려주자는 의미가 강해, 라이선스 자체에는 아무런 제한 없이 누구나 자신의 용도로 한 것이다. 라이선스 자체에는 소프트웨어에 국한되지 않고 하드웨어 등에서도 아무런 제약 없이 누구나 자신의 용도로 사용할 수 있는 대신, 사용자의 사용으로 인해 발생하는 모든 발생 가능한 경우의 리스크와 손해에 대해 사전인식 가능 여부와 상관없이 사용자 본인에게 책임을 지우고 있다.[9] 제한이 거의 없는 라이선스지만, 소프트웨어는 하나의 저작물이기 때문에, 사용할 때 반드시 저작권자를 표기해주어야 한다. 별도의 서면 허락 없이는 BSD 소프트웨어를 개발한 단체나 개인의 이름을 해당 소프트웨어나, 그로 인한 파생물의 광고에 사용할 수 없고, 광고를 하게 되더라도, 광고에 저작권자를 반드시 명시해야 한다. 또한 바이너리 형태로 재배포할 경우, 배포와 함께 제공되는 문서 및 기타 자료에 저작권을 고지하고, 조건 목록과 면책 조항을 복제해야 한다. BSD 사용 허가서를 갖는 프로그램에는 OpenCV 등이 있다.
GNU 일반 공중 허가서[편집]
일반 공중 허가서(General Public License)는 약자를 따 GPL이라고도 한다. 자유 소프트웨어 재단에서 만든 자유 소프트웨어 라이선스로 1989년 1차 버전, 1991년 2차 버전, 2007년 3차 버전까지 발표되었다. 프로그램의 일부에 일반 공중 허가서를 가진 코드가 들어가게 되면, 그 프로그램 또한 일반 공중 허가서를 갖게 된다. 독특한 것은 일반 공중 허가서를 가진 프로그램을 유료로 판매하는 것은 가능하지만, 반드시 전체 소스 코드는 무료로 공개해야 한다. 단순히 내부적인(개인, 기관, 단체 등) 목적으로만 사용할 때에는 소스 코드를 공개할 필요가 없지만, 어떤 형태로든 외부에 공표하거나 배포할 때에는 전체 소스코드를 공개해야 한다. 일반적으로 소프트웨어 라이선스들은 소프트웨어에 대한 공유와 수정의 자유를 제한하려는 목적을 가지고 만들어졌지만, 일반 공중 허가서는 공유와 수정의 자유를 보장하기 위한 규정이다.[10] 최신 버전인 버전 3은 대부분의 소프트웨어 패키지에 권장된다. 이전 버전인 일반 공중 허가서 버전 2와 단독으로 허가되지 않지만, 버전 2를 바탕으로 출시된 대부분의 소프트웨어에서는 버전 3도 사용할 수 있다. 이 경우 버전 3의 코드를 사용하여 원하는 조합을 만들 수 있다. 일반 공중 허가서를 갖는 프로그램에는 파이어폭스 2.0버전, 리눅스 커널, 깃, 마리아 데이터베이스 등이 있다.
GNU 약소 일반 공중 허가서[편집]
약소 일반 공중 허가서(Lesser General Public License)는 이름에서부터 알 수 있듯이 완화된 조건의 일반 공중 허가서로, 자유 소프트웨어 재단의 자유 소프트웨어 라이선스다. 약자를 따서 LGPL이라 부르기도 하는데 이전에는 첫 L이 Lessor가 아닌 Library로 쓰였다. 일반 공중 허가서와 가장 큰 차이점은 약소 일반 공중 허가서를 가진 코드를 단순히 정적 또는 동적 라이브러리로 사용한 프로그램을 판매하거나 배포할 경우에는 프로그램의 소스 코드를 공개하지 않아도 된다는 것이다. 이 경우 약소 일반 공중 허가서를 가진 코드를 사용했다는 것만을 명시해주면 된다. 단순히 이용하는 것이 아닌, 약소 일반 공중 허가서를 가진 코드를 수정하거나, 이로부터 파생된 라이브러리를 개발하여 판매 또는 배포할 경우에는 전체 코드를 공개해야 한다.[10] 약소 일반 공중 허가서를 가진 코드가 단순히 사용되는 것이 아니라, 코드에 기반으로 하여 만들어졌다면, 약소 일반 공중 허가서에 따라 재배포 되어야 한다는 것이다. 이때는 실행 물을 개인적인 용도로 개작하거나, 리버스 엔지니어링 할 수 있다는 사실과, 약소 일반 공중 허가서의 라이브러리가 사용되고 있다는 사실을 고지하여야 한다.[11] 카피레프트에 대한 규제를 프로그램 자체에 두고, 이 프로그램을 사용하는 다른 프로그램에 대해서는 카피레프트를 두지 않지만, 어느 정도의 규제는 있다. 소프트웨어 라이브러리에 주로 쓰이며, 간혹 독립적인 프로그램에도 쓰인다. 대표적인 예로, 모질라와 오픈오피스가 있다. 일반 공중 허가서와 약소 일반 공중 허가서 모두 상업적으로 이용할 수 있고, 배포 및 수정이 가능하며, 특허를 신청하거나 사적으로 이용할 수 있다. 약소 일반 공중 허가서를 갖는 프로그램으로는 파이어폭스 2.1버전 등이 있다.
MIT[편집]
BSD 라이선스를 기초로 작성된 BSD 계열 라이선스 중의 하나로, 미국의 매사추세츠 공과대학교에서 자기 학교의 소프트웨어 공학도들을 돕기 위해 개발한 허가서이다. 누구나 무상으로 제한 없이 취급할 수 있게 허가해주기 때문에, GNU 일반 공중 허가서의 엄격함을 피하려는 사용자들에게 인기가 많다. BSD 사용 허가서를 기초로 하기 때문에 코드 및 모듈을 사용해도 되고, 소스를 오픈하는 것은 의무가 아니다.[12] MIT 라이선스 소프트웨어를 취급할 때는 사용한 소프트웨어의 저작권 허가 표시를 2차 저작물에 기재해야 하고, 문제가 발생하더라도 저작권자가 책임지지 않는다. 이 라이선스를 따르는 소프트웨어에는 제이쿼리(jQuery), 루비 온 레일즈(Ruby on Rails), 비주얼 스튜디오(Visual Studio) 등이 있다.
모질라 공용 허가서[편집]
과거 넷스케이프 웹브라우저의 소스 코드를 공개하기 위해 개발된 라이선스로, 초기의 1.0버전은 넷스케이프 커뮤니케이션의 변호사였던 밋첼 베이커가 작성하였고, 이후의 1.1버전과 2.0버전은 모질라 재단이 작성하였다. 모질라 공용 허가서의 특징은 소스 코드와 실행 파일의 저작권을 분리했다는 것이다. 소스 코드를 수정할 경우 모질라 공용 허가서에 의해 소스를 공개하고, 원작자에게 수정한 부분에 대해서 알려야 하지만, 실행 파일은 독점 라이선스로 배포할 수 있다. 모질라 공용 허가서는 소프트웨어와 수정한 소프트웨어에 대한 공개 의무만을 가지며, 별도의 소스 코드와 실행 파일은 독점 라이선스를 가질 수 있다. 모질라 공용 허가서의 적용 사례에는 모질라 파이어폭스, 모질라 썬더버드 등이 있다.[13]
종류[편집]
GNU/리눅스[편집]
GNU/리눅스에서 리눅스는 커널 부분을 뜻한다. 시스템의 나머지 부분은 기타 프로그램으로 구성되고, GNU 프로젝트를 통해 상당 부분이 개발되었다. 리눅스 커널 자체만으로는 시스템을 구성할 수 없기 때문에, 우리가 흔히 리눅스라고 부르는 시스템은 GNU/리눅스라는 이름으로 사용한다. 1984년부터 개발하기 시작했고, 자유 소프트웨어 재단은 유닉스와 유사한 운영체제의 개발을 시작하면서 그 이름을 GNU라고 했다. 리눅스 커널은 리누스 토발즈라는 핀란드의 한 컴퓨터 과학을 공부하던 대학생이 1991년 유즈넷 뉴스그룹에 미닉스(Minix)를 대체하는 커널의 초기 버전을 발표하면서 처음으로 그 모습을 세상에 드러냈다.[14]
BSD[편집]
1977년부터 1995년까지 미국 캘리포니아의 버클리 대학교의 컴퓨터 시스템 리서치 그룹(Computer System Research Group)에서 개발한 유닉스 운영체제이다. 현재 우리가 사용하는 BSD라는 용어는 유닉스 운영 체제 계열에서 분기되어 형성된 BSD 파생 판을 두루 가리키는 용어로 자리잡혀있다. 또한 오리지널 BSD 코드로부터 파생된 운영체제들이 현재까지도 활발하게 개발되고, 널리 사용되고 있다. 오리지널 AT&T 유닉스 운영 체제의 초기 코드 기반과 디자인을 공유하고 있어, 유닉스의 한 갈래로 간주하여 버클리 유닉스라고도 한다. BSD는 라이선스를 받기 쉽고, 수많은 회사들의 창립자들이 친숙하게 여겨 1980년대에 DEC ULTRIX, 썬 마이크로시스템즈 SunOS와 같은 사유 유닉스 변종의 형태로 워크스테이션 계열 시스템의 업체들에 널리 채택되었다.[15]
모질라 파이어폭스[편집]
모질라(Mozilla) 재단과 모질라 코퍼레이션이 개발하는 자유 소프트웨어 웹 브라우저로 윈도우, 리눅스, OS X 그리고 안드로이드에서 실행할 수 있다. 이 브라우저는 2014년 2월 기준, 전 세계 웹 브라우저 시장 점유율의 약 12~22%를 차지하고 있고, 지역에 따라 두 번째, 혹은 세 번째로 가장 많이 쓰이는 웹 브라우저이다. 파이어폭스(firefox)에서는 탭 브라우징, 맞춤법 검사, 통합 검색, 라이브 북마크, 통합된 다운로드 관리자, 단축키, 사용자가 원하는 검색 엔진을 사용할 수 있는 통합 검색 시스템이 있다. 사용자가 확장 기능 및 테마를 맞출 수도 있고, 웹 개발자들을 위한 에러 콘솔 또는 DCM 검사 또는 파이어 버그 부가 기능과 같은 개발 도구들을 제공한다. 파이어폭스의 소스 코드는 자유 소프트웨어이기 때문에 대부분의 소스가 모질라 공용 라이선스(MPL)로 배포된다. 이 라이선스는 누구나 소스 코드를 볼 수 있고, 재생산할 수 있는 자유를 보장해주어, 파이어폭스로부터 넷스케이프, Flock, Miro 등 여러 가지 프로그램이 파생되었다. 과거에는 단지 모질라 공용 라이선스 버전 1.1만 배포되어 자유 소프트웨어 재단으로부터 약한 카피레프트 허가에 대해 비판을 받았다. 또한 모질라 공용 라이선스 버전 1.1은 법적으로 GNU 일반 공용 허가서와 호환되지 않았다. 이후 모질라에서 파이어폭스의 대부분을 모질라 공용 라이선스 1.1 뿐만 아니라, GNU 일반 공용 허가서 2.0, GNU 약소 일반 공용 허가서 2.1 삼중 라이선스로 배포하여, 개발자들이 용도에 따라 라이선스를 선택할 수 있게 되었다.[16]
각주[편집]
- ↑ 1.0 1.1 1.2 〈자유 소프트웨어〉, 《위키백과》
- ↑ 〈2.자유 소프트웨어〉, 《깃허브》, 2016-03-20
- ↑ joone, 〈만화로 나누는 오픈소스 이야기〉, 《블로거》, 2016-03-20
- ↑ 〈GNU 프로젝트〉, 《위키백과》
- ↑ 명경지수, 〈(GCC) GCC 컴파일러 모음 (펌)〉, 《네이버 블로그》, 2008-03-03
- ↑ 〈GCC〉, 《나무위키》
- ↑ Data Engineer, 〈gcc로 컴파일 하는 방법〉, 《티스토리》, 2009-05-15
- ↑ 〈카피레프트〉, 《위키백과》
- ↑ 〈BSD 허가서〉, 《위키백과》
- ↑ 10.0 10.1 다크 프로그래머, 〈공개 SW 라이센스 GPL, LGPL, BSD〉, 《티스토리》, 2013-08-05
- ↑ 〈GNU 약소 일반 공중 사용 허가서〉, 《나무위키》
- ↑ swconsulting swconsulting, 〈(ETC) 오픈소스 라이센스 정리 (GPL, LPGL, BSD, MIT 이란?)〉, 《티스토리》, 2015-03-09
- ↑ 장승훈, 〈GPL·AGPL·MPL...한눈에 보는 오픈소스 SW 라이선스〉, 《블로터》
- ↑ 〈GNU/리눅스란?〉, 《데비안》
- ↑ 〈[1]〉, 《위키백과》
- ↑ 〈모질라 파이어폭스〉, 《위키백과》
참고자료[편집]
- 〈자유 소프트웨어〉, 《위키백과》
- 〈2.자유 소프트웨어〉, 《깃허브》, 2016-03-20
- joone, 〈만화로 나누는 오픈소스 이야기〉, 《블로거》, 2016-03-20
- 〈GNU 프로젝트〉, 《위키백과》
- 명경지수, 〈(GCC) GCC 컴파일러 모음 (펌)〉, 《네이버 블로그》, 2008-03-03
- 〈GCC〉, 《나무위키》
- Data Engineer, 〈gcc로 컴파일 하는 방법〉, 《티스토리》, 2009-05-15
- 〈카피레프트〉, 《위키백과》
- 〈BSD 허가서〉, 《위키백과》
- 다크 프로그래머, 〈공개 SW 라이센스 GPL, LGPL, BSD〉, 《티스토리》, 2013-08-05
- 〈GNU 약소 일반 공중 사용 허가서〉, 《나무위키》
- swconsulting swconsulting, 〈(ETC) 오픈소스 라이센스 정리 (GPL, LPGL, BSD, MIT 이란?)〉, 《티스토리》, 2015-03-09
- 장승훈, 〈GPL·AGPL·MPL...한눈에 보는 오픈소스 SW 라이선스〉, 《블로터》
- 〈GNU/리눅스란?〉, 《데비안》
- 〈BSD〉, 《위키백과》
- 〈모질라 파이어폭스〉, 《위키백과》
같이 보기[편집]