OSS 교과목 내용(Git & GitHub)의 정리 오픈소스소프트웨어(OSS) 보고서
- OSS 개요
- 오픈소스소프트웨어(OSS)의 정의
오픈소스소프트웨어(Open Source Software, OSS)는 소스코드를 공개하여 누구나 자유롭게 사용·복제·수정·배포할 수 있도록 허용한 소프트웨어를 의미한다. 보통 다음과 같은 조건을 충족해야 OSS로 인정된다.
소스코드 공개
재배포 자유 보장
파생 저작물 생성 및 배포 허용
특정 개인이나 단체에 대한 차별 금지
기술·분야 제한 금지
이 기준은 **오픈소스 이니셔티브(OSI)**에서 제정한 *오픈소스 정의(Open Source Definition)*을 기반으로 한다.
- OSS의 특징
개방성: 누구나 코드 확인 및 개선 가능
투명성: 개발 과정과 변경 내역이 공개됨
협업 구조: 전 세계 커뮤니티 기반 개발
비용 절감: 대부분 무료로 사용 가능
유연성: 필요에 따라 자유로운 커스터마이징 가능
- OSS의 역사
- 초기 배경 (1960~1980년대)
초기 컴퓨팅 시대에는 소프트웨어가 하드웨어 구매자에게 자연스럽게 공개되었고, 연구자들 사이에서 자유롭게 공유되었다. 그러나 1980년대 들어 기업들이 소프트웨어를 상품화하면서 소스코드 공개 문화가 약화되었다.
- 자유소프트웨어 운동(FSF) 탄생 (1983년~)
리처드 스톨먼(Richard Stallman)은 소프트웨어 자유를 지키기 위해 **GNU 프로젝트(1983)**와 **FSF(1985)**를 설립했다. 이 시기 GNU GPL 라이선스가 등장하며 ‘자유소프트웨어(Free Software)’ 개념이 확립된다.
- 오픈소스 개념 등장 (1998년)
1998년 넷스케이프(Netscape)가 브라우저 소스를 공개한 것을 계기로 ‘오픈소스’라는 용어가 등장했다. OSI(Open Source Initiative)가 설립되며 자유소프트웨어 운동과 구분되는 실용적·산업친화적 OSS 운동이 확산되었다.
- 2000년대 이후
리눅스, 아파치, 파이썬 등 오픈소스 기술이 인터넷·모바일·클라우드 혁신의 중심이 되었고 대기업(구글, 메타, 마이크로소프트 등)도 대규모 OSS 프로젝트에 참여하며 생태계가 폭발적으로 성장했다.
- 대표적 OSS 소개
- Linux (리눅스)
리누스 토르발스가 1991년 시작한 오픈소스 운영체제
서버, IoT, 슈퍼컴퓨터의 표준 OS
GNU 도구들과 결합해 Linux 배포판(Ubuntu, CentOS 등)으로 발전
- Apache HTTP Server
가장 널리 사용되는 웹 서버 소프트웨어
모듈 기반 구조로 확장성 우수
아파치 소프트웨어 재단에서 관리
- Git
리누스 토르발스가 개발한 분산 버전관리 시스템
GitHub, GitLab 등 협업 플랫폼의 기반 기술
- Python
범용 고수준 프로그래밍 언어
데이터 분석, AI, 웹개발 등 다양한 분야에서 사용
수많은 오픈소스 라이브러리 생태계를 보유
- MySQL / PostgreSQL
대표적인 오픈소스 관계형 데이터베이스 관리시스템(RDBMS)
웹 서비스, 금융, 공공 분야에 폭넓게 활용
- OSS 저작권
- OSS도 ‘저작권법’의 보호 대상
오픈소스라고 해서 저작권이 없는 것이 아니다. 모든 OSS는 저작권자가 존재하며, 라이선스 조건에 따라 사용 권한이 부여되는 형태를 갖는다.
- OSS 라이선스의 주요 유형 (1) Copyleft(강한 공유저작권) 계열
파생 소프트웨어를 배포할 때 동일한 라이선스로 공개하도록 요구하는 방식.
GPL (GNU General Public License)
가장 대표적인 Copyleft 라이선스
프로그램 또는 수정본을 배포할 경우 반드시 GPL로 공개해야 함
LGPL
라이브러리용 완화된 GPL
동적 링크 시에는 전체를 오픈하지 않아도 됨
(2) Permissive(관대) 라이선스
OSS를 수정·배포해도 소스 공개 의무가 약한 라이선스.
MIT License
짧고 단순, 상업적 사용 자유
Apache License 2.0
특허 보호 조항 포함
BSD License
매우 자유로운 조건, 변경사항 공개 의무 거의 없음
- OSS 사용 시 주의해야 할 법적 사항
라이선스 조건 준수 필수
저작권 고지(license notice) 유지
사용한 OSS·버전 관리
코드 혼합 사용 시 충돌되는 라이선스 분석 필요
기업 배포 시 법무·컴플라이언스 점검 필요
- OSS의 저작권과 기여자 권리
기여자(committer)도 저작권자가 될 수 있으며, 프로젝트는 저작권 집합체를 이루게 된다.
일부 프로젝트는 “CLA(Contributor License Agreement)”를 요구해 기여 코드의 사용 권한을 명확히 한다.