Day 45 - 개발 문화, 오픈소스, 라이선스

이유승·2025년 2월 9일

* 프로그래머스, 타입스크립트로 함께하는 웹 풀 사이클 개발(React, Node.js) 5기 강의 수강 내용을 정리하는 포스팅.

* 원활한 내용 이해를 위해 수업에서 제시된 자료 이외에, 개인적으로 조사한 자료 등을 덧붙이고 있음.



1. 개발 문화

  • 소프트웨어 개발에서 협업 방식과 개발 철학을 의미.

주요 개념:

  • 애자일(Agile): 유연하고 빠른 피드백 기반 개발 방법론.
  • DevOps: 개발(Development)과 운영(Operations)을 통합하여 자동화 및 협업 강조.
  • 버전 관리(Git & GitHub): 코드 변경 사항을 효율적으로 관리하는 시스템.
  • 코드 리뷰: 코드 품질을 높이기 위해 동료 개발자가 검토하는 과정.
  • 테스트 주도 개발(TDD, Test-Driven Development): 테스트 코드를 먼저 작성하고 구현하는 개발 방식.



2. 오픈소스란

  • 누구나 자유롭게 사용, 수정, 배포할 수 있도록 공개된 소프트웨어.
  • 단순히 무료(Freeware)와는 다르며, 일정한 라이선스 규칙을 따라야 함.

주요 오픈소스 예시:

  • 운영체제: Linux, Android
  • 웹 브라우저: Firefox, Chromium
  • 개발 도구: VS Code, Eclipse
  • 데이터베이스: MySQL, PostgreSQL
  • 프로그래밍 언어 및 프레임워크: Python, React.js, Node.js



3. 깃허브의 모든 Public 프로젝트는 오픈소스일까?

  • Public 프로젝트: 깃허브에서 누구나 볼 수 있는 프로젝트.
  • 그러나 모든 Public 프로젝트가 오픈소스는 아니다.

Public은 Public이고, 오픈소스는 다른 이야기

  • Public 프로젝트는 개발자가 소스 코드를 공개하겠다만 한 것.
  • 오픈소스라는건 소스 코드를 가져다가 '사용'하겠다는 이야기이다.
  • 공개된 소스 코드라고 해도 그 권리는 프로젝트 소유자에게 있다.
    - 소유자가 적법하게 소유권을 가질 수 있는 경우 한정.
    - 다른 곳에서 오픈소스를 가져왔다던지 하는 것들은 당연히 권리가 소유자에게 없다.

오픈소스가 되려면:

  • 반드시 오픈소스 라이선스(MIT, GPL 등)가 포함되어야 함.
  • 명확한 사용 및 배포 규칙이 정의되어야 함.
  • 라이선스가 없는 경우 저작권 보호가 기본 원칙 → 자유롭게 사용할 수 없음.



4. 오픈소스 라이선스란

  • 오픈소스 소프트웨어를 사용할 때 지켜야 하는 법적 규칙을 정의.
  • 코드 사용, 수정, 배포 가능 여부를 명확히 함.

라이선스에 따라:

  • 완전한 자유를 허용하는 경우도 있고,
  • 특정 조건을 요구하는 경우도 있음.



5. 라이선스의 유래, OSI (Open Source Initiative)

  • 오픈소스 소프트웨어의 개념과 라이선스를 체계화하기 위해 OSI (Open Source Initiative) 설립.

OSI의 오픈소스 정의(OSS Principles):

  • 재배포 가능해야 함.
  • 소스 코드가 공개되어야 함.
  • 파생 저작물 허용(수정 후 재배포 가능).
  • 특정 개인이나 그룹을 차별하면 안 됨.
  • 특정 기술을 제한하면 안 됨.



6. 대표적인 라이선스 종류, OLIS (Open License Information System)

라이선스 종류 및 특징

MIT License

  • 가장 자유로운 라이선스 중 하나.
  • 코드 사용, 수정, 배포 가능.
  • 단, 저작권 표기 필수.

GNU GPL (General Public License)

  • 소스를 공개해야 함(배포 시 원본 및 수정본 제공 필요).
  • 수정한 코드도 같은 라이선스 유지해야 함(= 강한 Copyleft).

Apache License

  • 특허 보호 조항 포함.
  • 상업적 사용 가능, 저작권 명시 필요.

BSD License

  • MIT와 비슷하지만 저작권 표시 문구를 유지해야 함.

Creative Commons (CC)

  • 문서, 이미지, 영상 콘텐츠 공유 목적.
  • 다양한 조건(저작자 표시, 비영리, 변경 가능 여부 등) 선택 가능.



7. 라이선스 적용 사례, 안드로이드

  • 안드로이드는 오픈소스 기반(AOSP - Android Open Source Project).

그러나:

  • 안드로이드 OS 자체는 Apache 2.0 라이선스(자유로운 수정 및 배포 가능).
  • 구글 서비스(Google Play, Gmail 등)는 독점 소프트웨어.
  • 오픈소스지만 일부 기능은 구글의 통제 아래 있음.



8. 라이선스 적용 사례, 오픈소스 가이드

오픈소스 프로젝트에서 라이선스를 적용하는 방법:

README에 라이선스 명시:

  • 프로젝트에서 어떤 라이선스를 따르는지 명확히 함.

LICENSE 파일 추가:

  • 해당 라이선스의 세부 내용 포함.

패키지 매니저(npm, pip 등)에서도 명시:

  • 오픈소스 패키지를 배포할 때 필수.



9. 쿠키 영상 - Beerware

  • Beerware License: "이 소프트웨어가 유용하면, 개발자에게 맥주 한 잔 사주라!"

    개발자의 유머 감각을 반영한 자유로운 라이선스.



10. 라이선스 적용 사례, npm

  • npm 패키지 사용 시 라이선스 확인 필수:
  • npm init 시 기본적으로 package.json에 라이선스 포함 가능.
  • npm install 시 설치하는 패키지의 라이선스 확인 가능.

예제:

npm view express license
  • 기업 환경에서는 GPL 등 강한 Copyleft 라이선스를 주의해야 함.



11. 오픈소스 라이선스 분쟁 사례, 한컴

한글과컴퓨터(한컴)와 오픈소스 라이선스 위반 사례.

  • 리눅스 기반의 오픈소스 코드를 사용했지만, 소스코드를 공개하지 않아 논란 발생.
  • 결과적으로 GPL 라이선스를 준수해야 한다는 판결이 내려짐.
  • 교훈: 기업이 오픈소스를 사용할 때 반드시 라이선스를 준수해야 함.



12. 오픈소스 라이선스 표기법

오픈소스 프로젝트에서 라이선스를 표시하는 방법:

  • 여러가지 방법들이 존재한다.

소스 코드에 명시

/*
 * Copyright (c) 2024, 개발자 이름
 * MIT License
 */

LICENSE 파일 포함

프로젝트 루트 폴더에 LICENSE.txt 추가.

깃허브에서 라이선스 선택 가능

Add a License 옵션 사용.

profile
프론트엔드 개발자를 준비하고 있습니다.

0개의 댓글