Open Source Overview
Computer Science/OpenSource+Git

Open Source Overview

1. Trivia About Open Source

 #백과사전 vs 오픈위키

    1) Britannica, Encarta 등의 백과사전 : 비용도 상대적으로 많이 들고, 중간 수정이나 추가가 어렵다

    2) 오픈위키 : 일반 사용자의 참여, 리뷰가 가능하며 비용도 상대적으로 덜 든다. 문서도 5백만 건 정도로 훨씬 많으며, 사용자들 간의 심의, 공유, 협업이 가능한 점이 장점이다.

 # 상업 소프트웨어에서 오픈소스의 비율

   : 각 분야에서 오픈소스의 비율은 50~60%를 넘어갈 정도로 상당히 높다.

 

 

2. Software의 구성 요소

 -> 소프트웨어의 이해, 수정, 관리를 위해 소스코드를 반드시 필요로 한다.  

  1) Source Code: human-readable programming language

  2) Binary Code: 컴파일러나 인터프리터등을 통해 컴퓨터가 이해할수 있도록 변환된 언어  

-> 따라서 소프트웨어 엔지니어가 SW를 수정과 유지보수를 할수 있으려면 소스코드를 필요로 한다.

 

3. Proprietary Software

   : 이는 소유자가 소프트웨어 사용, 수정, 공유에 대한 권리를 갖는 소프트웨어를 의미한다. 

   = 다른 말로 non-free software, closed-source software라고 한다. (open source와 반대)

    - 전형적인 proprietary software는 binary code를 사용할 라이센스를 갖고 있는 것을 의미한다. (소유권을 산게 아니므로 배포 불가)

   - 소스에 대한 접근 권한이 없으므로 추가, 버그 수정, 보안 감사 등이 불가능하다.

    -1980년대에는 거의 모든 소프트웨어가 proprietary 했고, 따라서 소유자들은 유저와의 협업을 지양했다는 것을 의미한다-> 이는 GNU project의 필요성을 대두시켰다.

 

 

4. Free Software 

  - proprietary code 의 제한성 때문에 free software mevement가 시작되었다. 

  - 여기서 freedom은 가격에 대한 것이 아니고, 배포에 대한 자유를 의미한다.

  -> 이 free software movement를 GNU project라고 명명했다.

 

  # Free software의 definition

   -> program을 run, study, share, modify 할 수 있는 자유

   1) 프로그램을 어떤 목적으로든 사용할 수 있는 자유

   2) 프로그램 소스코드 수정의 자유

   3) 프로그램을 재배포할 수 있는 자유

   4) 프로그램의 copy를 만들어서 새로운 수정 버전의 software를 만들 수 있는 자유

   -> 이러한 자유가 없으면 user가 프로그램을 control할 수 없다.

 

  - FSF(Free software Foundation)의 GNU general public license : GNU GPL

  - GNU의  창시자 스탈만은 free software를 퍼뜨리기 위해 copyleft의 개념을 대중화 시켰다.

 

 

# GNU / Linux

 - Gnu project는 free software이며, mass collaboration project이다.

 - 리눅스의 창시자 리누스는 Linux Kernel은 GNU CPL license아래에 1992년에 공개했다.

 - FSF는 GNU software의 중요성을 강조하기 위해 GNU/Linux라는 네이밍을 강조했다.

 - 리눅스 커널과 다른 프로그램과 함께 존재하는 GNU Tool의 패키지를 Linux Distribution이라고 한다 ( including Debian, Fedora, Ubuntu..)

 

5. Open Source Software

  - 몇몇 회사에서는 free software의 개념을 배척했다. 이유는 주로 아래 두 가지 이다.

  1) free가 cost free의 개념으로 잘못 퍼져서

  2) Strict GPL이 상업회사의 참여를 주저하게 했다. ( 한 프리웨어를 변동해 B를 만들었을 때, A,B를 모두 공개해야 할 의무가 생겨서 B회사가 거부감이 생긴다.)

 

-> 이 때문에 Open Source Initiative (OSI)가 1998년에 출범하게 되었다.

 - open source movement는 더 실용적인 스탠스를 갖고 있다. 

 - open source라는 용어는 경제적인 측면의 free의 의미를 제거하기 위해 제기되었다.

 - free software movement는 뿌리는 user의 freedom에 관한 것이지만, Open Source는 코드를 공개하여 소프트웨어를 더 실용적인 관점에서 제작할 수 있도록 하는 것에 중점을 두었다.

 - 두 진영은 철학이 다르며, 오픈소스 진영이 좀 더 느슨하고 포용적인 측면이 존재한다.

 

 

 # Cathedral Model vs Bazaar Model

 1. Cathedral Model

  : Source code가 release 전까지 개발 단계에서는 몇몇의 exclusive group에게만 제한되어이쓴ㄴ 모델을 의미한다. GNU Emacs와 GCC가 예시이다.

  

 2. Bazaar Model

 : 코드가 개발 과정에서도 계속 대중에게 소스코드가 공개되어있는 모델을 의미한다. 예시로 리눅스 커널이 있다.

 +) Linus의 말을 인용하자면, "Given Enough Eyeballs, all bugs are shallow" -> OSI 설립의 큰 동기가 됨

 

 

# Open Source Definition

  1. Free Redistribution

  2. Program must include source code

  3. Derived Works are allowed

  4. Integrity of the Author's Source code

  5. No discrimination against persons or groups

  6. No discrimination Against Fields of Endeavor

  7. Distribution of License

  8. License Must not be specific to a product (소프트웨어에서 파생된 특정 제품에만 유효한 라이센스 부여 금지)

  9. License must not restrict other software

 10. License must be technology-Neutral

 

 

# Open Source Foundation

  - FSF / OSI가 비슷하지만 다른 철학을 갖고 있다

  - 또, 기술 중심으로 세분화 된 foundation이 존재하며, 관련된 기술/ 커뮤니티를 지원하는 역할을 한다. 예로 linux foundation, apache software foundation, mozilla, eclipse, openjs foundation..등이 존재한다.

 

# Shareware, FreeWare, Foss

   1. FOSS (Free and Open Source Software)

   2. Freeware : 재배포를 허용하지만, 소스코드가 이용 불가하기 때문에 수정은 안됨.

   3. Shareware : 소프트웨어의 trial use가 무료 혹은 적은 비용으로 가능하다. 기능이 몇가지 제한되거나 불완전한 문서 등이 제공될 수 있으며, 이후 결제를 통해 업그레이드가 가능하다. 이 역시 소스코드는 제공하지 않는다.

  

  - 대부분의 Freeware와 Shareware는 FOSS가 아니다. 

   : 오직 binary code의 이용만 가능하며, proprietary rights를 강조한다. ( 대부분의 proprietary software와 비슷)

 

  

 # Open source Demand

 -> 오픈 소스의 수요는 갈수록 늘고 있으며, 가상화 서비스에서 가장 높은 비율을 차지하고 있다. 그 이유는 가상화 서비스는 물리적인 하드웨어 자원을 논리적인 차원에서 효율적으로 제공해야 하는 것이다. 매우 다양한 SW 계층과 workload가 존재하며, 그 때문에 기존에 존재하는 오픈 소스의 역할이 매우 커졌다.

 

 # OSS의 장점

   - Lower Cost : license fee를 줄일 수 있다. 

   - Reduced development time and expense : 기존에 존재하는 오픈소스를 통합하거나 재사용 가능하다

   - Reliability & Quality : 공개 소프트웨어이고, 보는 눈이 많기 때문에 공개적으로 테스트가 많이 이뤄짐 (품질보장)

   - Availability of External Support : 다양한 외부 커뮤니티의 도움

   - Reduces "vendor Lock-in" : vendor 종속성을 줄일 수 있다.

 

# OSS 단점 

 -> 오픈소스에서 발생할 수 있는 이슈이므로 필수적으로 체크해야 한다.

  - User-Friendly 하지 않을 수 있다 : 오픈소스의 개발 과정에선 대다수의 전문가가 사용하므로 유저가 사용하긴 어려울수도..

 - Risk to Intellectual Property: 지적 재산권과 밀접한 관련이 있어 저작권과 특허권을 침해할 여지가 있다.

 - Hidden cost가 발생할 수도 있다 : 다른 프로그램을 가져와서 사용할 때 적응 시간, 기존 시스템과 통합시에 비용 발생, 소프트웨어를 수정할 때 시간 비용 등이 발생할 수 있다.

 

Q1) 오픈소스가 free인가? no, 숨겨진 비용이 존재하므로 잘 생각을 해야 한다.

Q2) 오픈소스의 퀄리티가 더 낮다? no, 보는눈이 많고 테스트가 자주 이루어지기 때문에 애초에 낮은 퀄리티의 코드는 적용이 안된다.

Q3) 오픈소스가 proprietary software보다 보안성이 좋지 않다? no, 오픈소스는 여러 커뮤니티에서 다양한 관점으로 참여되는것이 장점이기 때문에 취약점은 훨씬 빨리 패치될 수 있다.

 

 

# 과학에서 오픈소스의 역할 

 -> 직접 관찰한 데이터를 바탕으로한 이론을 내놓으면, 동료들의 많은 리뷰를 통해 새로운 연구를 양산할 수도 있으며, 존재할 수도 있는 오류를 고칠 수 있는 순기능이 존재한다.

'Computer Science > OpenSource+Git' 카테고리의 다른 글

Git Branch Command  (0) 2021.10.24
Git Version Control Command  (0) 2021.10.24
Git Overview/ Linux Basic Command  (0) 2021.10.24
OSS Tools  (0) 2021.10.24
OSS Licenses  (0) 2021.10.23