수달이네 기술 블로그

1. 오픈소스의 개념, 역사, 라이센스 본문

학교공부/오픈소스SW

1. 오픈소스의 개념, 역사, 라이센스

슬픈 수달이 2026. 4. 21. 15:21

오픈소스

프로그램의 소스코드를 전부 올리는 것 ↔ 독점 소프트웨어

  • 독점os: windows, MacOS, iOS등
  • 오픈소스os: 리눅스(연구 등), 안드로이드
  • 독점 LLM: chatGPT, Gemini, Claude
  • 오픈소스 LLM:LLama, deepseek(오픈소스임에도 성능이 뛰어났음), MISTRAL AI
  • 독점 이미지 생성 AI: 나노 바나나, DALL-E
  • 오픈소스 이미지 생성 AI: Stable diffusion, flux등
  • 브라우저: firefox, 웹서버: APACHE, 데이터베이스: MySQL, 머신러닝: TensorFlow, 네트워크 보안: OpenSSL
  • 대부분은 소스코드를 공개하지 않고 독점으로 사용한다.(금전적 이유)

오픈소스의 역사

1970년대: 자유롭게 SW를 공유하는 분위기

1980년대: 비자유 독점 SW들의 등장

  • 자기 기업만의 영업 기밀로 함.
  • 자유로운 SW공유 및 협력 문화를 위한 GNU프로젝트(자유 소프트웨어 운동/Copyleft 운동)시작
    • 리처드 스톨먼: SW는 공유되어야 하고 프로그래머는 SW로 돈을 벌면 안된다.

  • OS(Linux)를 포함한 모든 것을 새로 직접 구현하기 시작 > 본격적인 오픈소스 커뮤니티의 시작
    • 리누스 토르발스: Linux 커널을 개발

오픈소스의 번거로움

오픈소스 코드 개발

개발한 오픈소스 유지 관리

README 작성: 다른 사람이 잘 사용하도록 설명서 작성

다른 사람들이 원하는 기능, 함수 구현

질문 대답: 왜 이렇게 구현했나? 등…

다른 사람 코드 리뷰: 참여자가 기능을 추가해서 올리는 것(Pull request)을 리뷰, 검토

왜 오픈소스에 기여하는 걸까?

  1. 보람: 내가 다른 사람에게 받은 도움을 돌려준다.
  2. 인지도: 좋은 오픈소스를 기여해 인지도가 상승한다.
  3. 경험: 다른 사람들과의 협력으로 코딩(코드 리뷰 등)과 협력을 배움
  4. 취업: 오픈소스 코드로 면접 시 어필
  5. 프리랜서, 창업: 오픈소스로 실력이 검증되어 프리랜서, 창업에 유리함.
  6. 상업적 이익: 오픈소스 관련 비즈니스 모델 > 예) MuseScore: 오픈소스 악보제작 소프트웨어, 사용은 무료, 공유 or 다운로드 = 구독료
  7. 호환: 제품이 업데이트 되면 기존 오픈소스가 제품에 호환이 안됨. > 자기가 쓴 부분에 대해 적극 기여

좋은 오픈소스 찾기

검색어: awesome [플랫폼/언어]

ex) https://github.com/rickiepark/awesome-pytorch 파이토치 관련 좋은 오픈소스를 볼 수 있음.

오픈소스 라이센스

독점 SW(closed source SW)

소스코드에 대한 독점적인 소유권 유지

  • 소유권을 가진 자만 오류 수정, 기능 추가 가능

오픈소스 SW(Open source SW)

소스코드 공개, 누구나 검토 수정 배포 가능

라이센스

무료인데 라이센스가 왜 필요해?

돈을 내야만 라이센스가 들어가는 것이 아님.

무상 계약 일 때 라이센스에 들어가는 내용

  • 마음대로 가져다 쓰세요, 하지만 책임은 지지 않습니다.(보안 상의 문제 회피)

오픈소스 라이센스 유형1: 아무 명시 없는 코드(No license)

마음대로 가져다 쓰면 저작권 문제가 발생

  • 엄밀하게 보면 오픈소스에 해당되지 않음.

정적 링킹과 동적 링킹

정적 라이브러리(정적 링킹)

  • 소스코드와 라이브러리가 컴파일 시간에 연결됨.
  • LGPL의 사용 여부와 내 코드도 같이 공개해야한다.

동적 연결 라이브러리(DLL)

  • 소스코드만 따로 컴파일 되어, 프로그램 실행 중 라이브러리에 동적으로 연결됨.
  • LGPL을 사용여부는 말해야 하지만, 내 코드는 공개할 필요 없다.

오픈소스 라이센스 유형2: GPL(General Public License)

오픈 소스를 사용하고 수정하여 공개하는 순간, 자신의 코드를 모두 공개해야 함.

  • GPL오픈소스를 사용했다면, 원래 내 코드까지 파생물로 취급, 공개해야한다는 뜻.
  • 초기 오픈소스 정신
  1. 라이브러리 수정 시: 전체 공개
  2. GPL 라이브러리를 이용(정적, 동적) 시: 전체 공개(내 프로그램도 GPL로 전파)

오픈소스 라이센스 유형3: LGPL(Lesser GPL)

GPL은 모든 소스코드를 공개해야하므로 기업이 참여하기 어려운 문제가 있음.

  • LGPL은 GPL의 완화된 버전
  1. 라이브러리 수정 시: 전체 공개
  2. LGPL라이브러리를 정적으로 이용 시: 전체 공개(GPL로 전파)
  3. LGPL라이브러리를 동적으로 이용시: 공개 의무 없음

오픈소스 라이센스 유형4: AGPL(Affero GPL)

LGPL 라이브러리를 수정 후 웹서버에 놓고 사용하는 방식으로 배포에 해당 안되도록 하여 회피하는 편법을 사용

  • 기본적으로 배포를 안했기 때문에 서비스를 이용할 뿐이므로 GPL의무가 발생하지 않음.
    • 정확히는 실행만 해서 네트워크를 통해 결과만 받는 방식임
  • 해당 편법을 방지하는 AGPL
    • 즉, 서버에서 수정된 LGPL프로그램을 돌려도 배포로 친다.

오픈소스 라이센스 유형5: MIT, Apache, BSD

마음대로 사용/수정 가능하며 이 라이센스를 사용했다는 것만 고지

  • 대기업에서도 많은 공헌함.
  • 수정 가능
  • 상업적 이용 가능
  • 소스 공개 의무 없음

오픈소스 성립 조건

  1. 무료 재배포
  2. 소스코드 공개
  3. 수정 / 파생 저작물 허용
  4. 저자 소스 코드의 무결성(원래 개발자의 의도를 따라야 함)
  5. 개인, 집단에 대한 차별 금지
  6. 노력 분야에 대한 차별 금지
  7. 라이센스 배포해야함
  8. 라이센스는 제품에 한정되면 안됨
  9. 라이센스는 다른 SW제한에 제한되면 안됨
  10. 라이센스는 기술에 중립적이어야함

소프트웨어 유형

Freeware: 무료로 사용/배포 가능, 소스 코드 공개 X

Shareware: 평가판으로 무료 배포, 제한 시간이 지나면 비용 지불 필요, 체험판

독점 소프트웨어: 배포, 사용에 제한이 있는 SW(비용 등)

오픈소스 소프트웨어: 오픈소스 SW의 10가지조건을 만족하는 SW

라이센스 양립성 문제

둘 이상의 오픈소스 SW를 사용해 새 프로그램을 개발할 때 두 라이센스 요구사항 상충 여부 문제

  • 라이센스들이 양립 가능한지 미리 조사
  • 예를들어 GPL과 MPL은 양립 불가하다. → MPL = 파일단위 공개, GPL = 전체공개 →따라서 양립불가

옵소 검증 도구

Code Eye

  • 오픈소스 포함 여부 알려주고 비교/분석하는 서비스

Fossology

  • 라이센스 및 저작권 사용 여부 스캔

www.oss.kr

  • 오픈소스 라이센스 검증 서비스 신청

'학교공부 > 오픈소스SW' 카테고리의 다른 글

5. 깃 브랜치 전략  (0) 2026.04.23
4. 브랜치 병합과 충돌  (0) 2026.04.22
3. 소스트리(GUI버전관리) + 깃허브 상세  (0) 2026.04.22
2. Git, Github 개념  (1) 2026.04.21