오픈소스

Yongjun Park·2022년 9월 15일
0

2022 OSAM 해커톤

목록 보기
9/11

2022 OSAM 해커톤 사전 온라인 교육에서 배운 내용입니다.
모르는 내용만 발췌하여 정리한 것이기 때문에 내용의 연결성이 부족한 점 양해 부탁드립니다.

공유와 협업을 통한 '혁신' 오픈소스

MS '백과사전' 덮는다

  • 리처드 스톨만
    • Free Software Foundation 창립자(1985)
    • 소프트웨어는 팔 수 있는 것이 아니라, 지식의 영역이다.
  • 리누스 토발즈
    • 리눅스 제작자(1991)
  • 에릭 레이먼드
    • Open Source Initiative 창립자(1998)
    • 오픈소스 라이선스 구분 → 상업적으로 활발히 이용되기 시작

Permissive 라이선스는 동작을 할까?

노마드코더 - 개발을 시작한 당신에게 해주고 싶은 이야기

오픈소스 라이선스

  • 정리하자면, 오픈소스는 상업적 이용 목적으로 사용이 가능하지만 반드시 라이선스 및 저작권을 명시해주어야 한다.
    • MPL(Mozila Public License), EPL(Eclipse~), LGPL(Lesser General~; 라이브러리로만 사용하는 경우에는 공개 안해도 됨), GPL(General~) 등 오픈소스를 이용해놓고 코드를 공개 안 하면 안됨.
    • MPL, EPL은 특허권 포기 조항(=특허 보복 조항)이 있음
      다른사람이 이 오픈소스로 다른 걸 만들어도 특허권을 주장할 수 없음

GPL에 관한 재미있는 사실

나무위키, GPL

  1. 애초에 돈을 내지 않으면 소프트웨어의 '사용자'가 될 수조차 없기 때문에 소스 코드를 제공받을 권리가 발생하지 않는다. 물론 돈을 내고 소프트웨어를 구입한 '사용자'에게는 소스 코드를 제공받을 권리가 있으며, 사용자가 유료로 소프트웨어와 함께 구입한 소스 코드를 사용해 제 3의 소프트웨어를 새로 만들어도 개발자는 어떠한 제약도 가할 수 없다. 이 때문에 사용자 임의의 Fork에 취약하다 보니 GPL로 상용 소프트웨어를 개발하려는 시도는 매우 드물다.

    1. 대표적인 사례가 바로 RHEL과 CentOS다. RHEL을 구입한 자가 누구든 간에 그는 레드햇에 소스를 요청할 권리가 있으며 그것을 자신의 맘대로 기존 RHEL보다 더 싸게, 혹은 무료로도 재배포할 수 있다. CentOS는 바로 이 점을 이용한 리눅스로, RHEL의 소스를 기반으로 만들어지며 철저하게 최신 버전의 RHEL을 포킹하는데 중점을 두어 RHEL에서 최대한 추가나 제거를 자제하는 것을 원칙으로 했다. 단, 상표권은 공개되지 않는 GPL의 특성상 RHEL의 것을 그대로 쓸 경우 상표권 분쟁이 있을 수 있기 때문에 레드햇이 소유하고 있는 레드햇 트레이드마크와 로고는 제거, 그리고 그 자리에 CentOS 고유의 로고를 대신 넣어서 완성했다.
  2. 2007년에 개정된 GPL v3은 하드웨어가 수정된 GPL 소프트웨어를 거부할 수 없도록 했다. (조항 6번) 하드웨어 기기에 GPL v3 라이선스가 적용된 소프트웨어가 포함되는 경우 이용자가 해당 소프트웨어를 변경하여 구동시켰을 때 하드웨어가 실행을 거부할수 있는 DRM을 적용 한다면 위반이라는 조항이다. LGPL v3도 같은 내용이 추가된 것이다.

    이처럼 수정된 GPL 소프트웨어의 하드웨어 구동을 막는 것을 GNU에서는 Tivoization이라 한다. 리눅스를 사용하는 TiVo 라는 DVR 업체가 서드파티의 모디파이된 바이너리 GPL 소프트웨어를 실행하지 못 하도록 했던게 어원이다. 리눅스 진영의 리누스 토르발스 가 이러한 DRM 금지 라이선스 개정에 대해 반발했다. 이 때문에 리눅스 커널은 GPL v2로의 배포만 허용한다.

    1. GPL v3의 Tivoization 방지 조항때문에 GCC 4.2.2 버전부터 BSD 라이선스와 호환이 불가능한 GPL v3가 적용되자 FreeBSD와 애플은 GCC를 버리고 LLVM/Clang으로 컴파일러를 교체하였다. 기업이 관리하는 OpenJDK와 같은 소프트웨어도 Classpath exception이라는 예외 조항으로 GPL의 “파생 저작물”에 해당하지 않도록 한 것들이 있다.

GPL 2.0 적용의 예외

  1. GPL 프로그램과 통신 하는 것으로는 파생 저작물 조항에 해당되지 않는다. 명시적인 예외가 포함되어 있긴 하지만 리눅스처럼 GPL이 적용된 운영체제에서 제공하는 API 를 사용하는 것은 무방하다. 엔비디아의 그래픽 드라이버와 같이 리눅스 커널부에서 동작하는 드라이버 소프트웨어 경우에도 모듈 기반을 사용하여 커뮤니케이션하게 만들면 파생 저작물 조항에 해당되지 않는 것이 그 예이다. 다만 이처럼 커널 레벨의 모듈로 제공시 리눅스 소스코드 관리자 쪽에서 특정 회사의 드라이버만을 위한 커널의 코드 패치를 거절하므로 커널에 포함시키지 않고 리눅스 배포자가 별도 패키지로 제공하고 있다.
  2. GPL 프로그램 소프트웨어의 출력물은 GPL 라이센스의 영향을 받지 않는다. GCC 컴파일러 프로그램 소스코드에 GPL v3 라이선스가 적용되어 있다고 해서 GCC로 컴파일한 출력파일은 GPL을 따를 필요가 없으며 stdio.h, iostream 등의 GCC 헤더 파일과 GCC 런타임 라이브러리를 사용하는 소프트웨어를 위한 예외가 추가되어 있어 GPL이 적용되지 않는다 (GPL Runtime Library Exception)
  3. 리눅스 커널에는 유저 공간에 제공하는 API에 대한 예외 조항이 추가되어있는데 안드로이드는 이를 활용한 예이다. 리눅스 커널과 구글이 작성한 안드로이드 프레임워크는 다른 공간에서 동작하며, 안드로이드 쪽은 아파치 라이선스를 따르기 때문에 제조사들은 코드 공개의 필요 없이 안드로이드 기기를 개발할 수 있다. 심지어 커널부에 수정이 필요한 경우에도 커널엔 단순히 값을 받아오게만 구현하고 실제 계산은 윗단에서 다 해서 커널로 내려주는 식으로 구현하여 핵심 코드 공개를 피하는 꼼수를 쓰는 기업들도 많다.
profile
추상화되었던 기술을 밑단까지 이해했을 때의 쾌감을 잊지 못합니다

0개의 댓글