* 프로그래머스, 타입스크립트로 함께하는 웹 풀 사이클 개발(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):
- 재배포 가능해야 함.
- 소스 코드가 공개되어야 함.
- 파생 저작물 허용(수정 후 재배포 가능).
- 특정 개인이나 그룹을 차별하면 안 됨.
- 특정 기술을 제한하면 안 됨.
라이선스 종류 및 특징
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. 오픈소스 라이선스 표기법
오픈소스 프로젝트에서 라이선스를 표시하는 방법:
소스 코드에 명시
LICENSE 파일 포함
프로젝트 루트 폴더에 LICENSE.txt 추가.
깃허브에서 라이선스 선택 가능
Add a License 옵션 사용.