포스트

2024.06.28 프로그래머스 - 오픈소스 알아보기

오픈소스, 개발 문화 1

  • 참여형 지식 공유 플랫폼
    • StackOverFlow
    • Github

오픈소스

오픈소스란

  • 공개 되어 있는 소스코드
  • 누구나 특별한 제한 없이 공개 되어 있는 소스코드
  • 검사(+리뷰), 수정 등 개입할 수 있는 소스 코드
  • 오픈소스는 일부 유료인 것도 있으며 대부분이 무료이다.

오픈 소스의 가치

개발문화 자체가 서로서로 좋은 기술은 공유하고, 이에 대해 더 발전 시킬 방법을 서로 공유하고 피드백을 통해 발전하는

문화이기 때문에 오픈소스 문화가 크게 발전했다.

자유로운 평가

  • 소스코드에 누구나 액세스 가능
  • 동료 프로그래머에 의해 나의 오픈소스의 취약점 및 개선 가능한 점을 받을 수 있음

투명성

  • 오픈소스는 이름 그대로 공개 되어있기 떄문에 사용자가 저수준의 (깊은) 단계까지 확인할 수 있다.
  • 코어 부분을 공개 하지않는 오픈소스도 존재한다고 한다.

안정성

  • 활발한 오픈소스 커뮤니티 생태계에 의해, 지속적으로 보안 취약점이나, 다른 문제점에 대한 피드백이 진행되고 이에 대한 보완도 같이 진행된다.
  • 이런 예로 Linux가 있다.
    • Linux는 오픈소스 OS 로써, 활발한 커뮤니티가 운영 되고 있고, 개발자들이 실제로 많이 사용하기도 해서, 보안 취약점 같은 것들이 발견되면, Issue나 피드백을 통해 빠르게 보완 된다고 한다.

오픈소스 라이센스

오픈소스 또한 저작권, 특허권, 상표권 등의 지식재산권에 의해 보호된다.

오픈소스 라이센스란 오픈소스 개발자와 이용자간에 이용방법 및 조건의 범위를 명시한 계약이다.

이용자는 오픈소스 개발자가 규정한 라이선스를 지켜야 하며, 이에 대한 위반시 라이선스 위반 및 저작권 침해가 발생하여 책임을 지게 될 수 있다.

오픈소스 라이센스가 생긴 이유

위의 설명 대로라면 오픈소스는 완전한 공개의 형태로 느껴지지 않을 수 있다.

하지만, 이런 오픈소스의 라이센스는, 최소한의 오픈소스 개발자에게 법의 테두리안에서 보호를 받게 하려는 장치일 뿐

실제 사용에는 큰 제약이 없다.

또한 이로인해 법의 테두리 안에서 소스코드를 공개하도록 하기 위함이기도 하다.

라이센스의 공통적인 준수 사항

  • 저작권 관련 문구 유지
    • 개발자의 연락처, 이메일 등 개발자 정보
  • 제품명 중복 방지
    • 오픈소스또한 SW의 한 부분으로 상표권 의 보호를 받는다.
  • 라이센스 조합
    • 서로 다른 라이센스를 가진 오픈소스를 결합하는 경우에는 해당 라이센스들이 서로에게 호환되는지 (위배되지 않는지) 확인해야 한다.

오픈소스 라이센스의 종류

  • https://opensource.guide/ko/ : 오픈소스 가이드
  • 카피 레프트 (CopyLeft) : 저작권자가 정보를 사용할 권리를 2차 저작물의 저작자에게 전달하며 이러한권리의 전달을 막지 않을 것에 대한 성격이다.

1.BSD 형

  • Copyleft 조항을 포함하지 않고 소스코드 제공 의무도 없다.
  • 의무사항이 비교적 간단한 라이선스이다.

1-1 BSD 라이센스

  • 버클리의 캘리포니아 대학에서 배포하는 공개 SW라이센스
  • 라이센스 자체에는아무런 제한없이 누가나 자신의 용도로 용할 수 있다.
  • 엄청 자유로운 라이선스 중 하나이다.
  • 적용사례 : Nginx

1-2 Apache 라이센스

  • 아파치 재단이 자회사의 SW에 적용하기 위해 만든 라이센스
  • 마찬가지로 소스코드 공개 의무는 없다.
  • 라이선스 소스코드를 수정해 배포한느 경우 아파치 라이선스 버전 2.0을 꼭 포함시켜야 한다.
    • 아파치 재단에서 만든 소프트웨어임을 밝혀야 한다.
  • 적용 사례 : 안드로이드, Hadoop

1-3 MIT 라이센스

  • 미국 매사추세츠공과대학교 (MIT) 에서 해당 대학 SW공하고들을 위해 개발한 라이선스
  • 라이선스와 저작권 고나련 명시만 지켜주면 된다.
  • 가장 느슨한 조건을 가진 라이선스 ⇒ 인기가 많다.
  • 적용사례 : BootStrap, Backbone.js, jQuery, React 등

2. GPL 형

2-1 GPL

  • 가장 강력한 제약 조건을 포함하고 있는 Copyleft 조항을 포함하고 있다.
  • GPL 프로그램은 어떤 목적, 형태로든 사용할 수 있지만, 사용하거나 변경된 프로그램을 배포하는 경우 무조건 동일한 라이센스인 GPL로 공개해야한다.
  • 적용 사례 : Firefox, Linux, Git, MariaDB, WordPress 등

2-2 LGPL

  • 라이브러리-모듈 링크를 허용한 라이선스
  • 적용 사례 : Firefox

2-3 AGPL

  • 서버에서 프로그램을 실행해 다른 사용자들과 통신하면 실행되고 있는 프로그램의 소스코드를 사용자들이 다운로드 할 수 있게 해야한다는 조항 존재
  • 적용사례 : MongoDB
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.