오픈소스 SW개발 (1), Open Source Software

2022. 3. 11. 10:29강의 내용 정리/오픈소스SW개발

728x90
반응형

Open Source Software

1. 오픈소스 소프트웨어 기초

1) 오픈소스 소프트웨어란?

소스코드가 공개되어있는 소프트웨어를 의미한다. 즉 소프트웨어 및 소스코드를 제한해선 안되고 어느 누구라도 확인, 재배포, 수정 및 변경할 수 있는 권한이 있어야한다.  따라서 특정 인물이나 그룹을 차별할 수 없고, 특정 os나 기술 등에 종속되어도 안된다. 한마디로 어떤 제한도 걸어서는 안된다.

 

오픈 소프트웨어는 비용이 거의 없거나 아주 적게 들 수 있다. 이에 따라 유연하고 퀄리티나 호환성이 좋아지며 초기에는 의존성이 있을 수 있더라도 차차 없어진다는 장점이 있다. 하지만 일반적인 소프트웨어와는 다르게 어느 누군가가 소프트웨어에 대해 보증해주지 않고, 어떤 기업에서 동력을 주는 것이 아니라 확장 범위와 속도가 조금 느리기에 선택의 제한이 있다. 오픈소스 소프트웨어 발전에 중요한 점은 사용자를 협업자로 대우를 해주는 것이다. 오픈소스의 중요성이 점점 대두되고 있기에 본인의 회사 방향과 이를 일치시키는 것이 점점 중요해진다.

 

ex) 오픈 소스인 리눅스를 기반으로 안드로이드가 만들어졌는데, 이를 기반으로 어플리케이션을 개발할 수 있다.

 

 

 

2. 오픈소스 소프트웨어와 라이센스

(1) 독점적인 소프트웨어는 라이센스를 통해서 확인할 수 있다.

- 소프트웨어를 소유한 사람에 대해 배타적인 권리(소스코드를 볼 수 있고, 배포할 수 있는 권리)를 준다.
- 기업이 수익을 목적으로 만드는 소프트웨어인 경우에는 안정적으로 관리할 수 있다.
- 소프트웨어를 사용했을 때 버그나 문제가 생긴다면 a/s를 보장받을 수 있다.
- 단, 소프트웨어를 구매하고 사용하는데 비용이 많이 들고 기술의 의존도가 높다.
- 어떤 기업을 통해서만 소프트웨어가 업데이트된다.
- 하나의 소프트웨어가 전체 시장을 장악하면 라이벌 소프트웨어가 시장에 들어가기 어렵다.
- 소프트웨어의 오너십이 누구한테 있냐가 문제가 될 수 있다. 이를테면 어떤 소프트웨어에 의존적인 파일을 만들었을 때 소프트웨어 회사가 망하면 오픈이 안되어있기때문에 사용할 수 없을 수 있다.
- 완전히 공개되지 않는 경우에는 다른 플랫폼에서 온전히 사용하기 어렵다.

 

 

(2) free software movement란?

- 소프트웨어 제공 초기에는 소스코드 다 공개했다. 하지만 어느 순간부터 돈 지불해야지 소스코드를 확인할 수 있게됐다. 이에 대해 자유롭게 소프트웨어를 확인할 수 있는 권리를 달라는 운동(free software movement)이 등장했다. 이후 오픈소스라는 개념이 태동했다.
- 소스코드를 공개해야하기에 비즈니스에선 다소 부정적인 운동이다.

 

 

(3) open source initiative란?

- 오픈 소스를 위한 단체다.
- 소스코드만 오픈한다고 되는게 아니라 소스코드를 재배포하거나 수정할 수 있도록 하는 것을 오픈소스로 정의했다.
- 라이선스에 따라 오픈소스가 아닐 수 있다.

 

 

(4) 오픈소스 주요 개념

i) Free Redistribution

- 라이선스는 로얄티나 판매된 부분에 대해 돈을 요구할 수 없다.

ii) Source code

- 반드시 소스코드를 포함하고, 배포를 허용한다.

iii) Derived Works
- 2차 제작에 대한 허용을 한다.

iiii) Integrity of author's source code
- 원 저작자의 소스코드의 무결성
- 누가 소스코드의 어떤 부분을 만들었는지 명시가 되어있는데 이를 가져와서 내가 만든 것처럼 이름을 바꾸면 안된다.
- 소스코드에 개선 및 변경을 위해선 패치파일이라는 형태로 해야한다.

cf) 패치파일: 원파일에서 어느 부분을 수정해야하는지 명시해놓은 파일로 패치파일과 원파일을 병합시켜서 수정할 수 있도록 도와준다.

 

 

(5) 기타 내용

i) Don't reinvent the wheel

- 기존에 만들어진 것을 바탕으로 개선하고 발전시키는 것이 중요하다.

 

ii) Fetchpop -> Popclient

- 오픈소스 소프트웨어에 대한 흥미가 떨어지면 다른 사람들에게 넘겨줘야지 발전할 수 있다.

- 사용자를 공동 개발자로 대우해줘야지 지속적인 발전을 이룰 수 있다.

 

 

 

3. 소프트웨어 개발 방법

1) Cathedral approach

- top-down 방식으로 대기업에서 많이 사용하는 방식

- command and control

- 개발자는 성당에서 건축하는 건축가로 비유가 되곤 한다.

 

 

2) Bazaar Approach

- Bottom-up 방식으로 분산되고 협력하는 방식

- 자율적으로 참여하여 개발하는 방식

- 배포 후 문제를 리포팅 받으면 이를 수정한다.

 

 

4. 오픈소스 소프트웨어 라이센스

1) 오픈소스 소프트웨어 라이센스를 나누는 방식

(1) 오픈소스 라이센스의 성격

i) Restrictive

- 제한적인 사용이 가능하다.

- 수정은 가능하지만 원 소스에서 수정한 내용도 공개해야한다.

 

ii) Permissive

- 자유롭게 사용 가능해 독점적인 형태로도 사용 가능하다.

 

 

2) 오픈소스 라이센스 종류

(1) General Public License

- 파생 저작물에 대해 동일한 라이센스를 사용하길 강제하는 라이센스다.

- 수정된 부분을 공개해야하기 때문에 기업 입장에서는 부담이 될 수 있다.

- 무임승차에 대한 부분을 방지할 수 있다.

- 특허 공개를 방지하기 위한 방식이다.

- GPL로 되어있는 소프트웨어의 라이브러리를 활용한 경우(링크)에도 모두 공개해야한다.

 

 

(2) Lesser GPL License(LGPL)

- GPL로 되어있는 라이센스이지만 링크만 한 경우에는 배포하지 않고 사용가능한 라이센스다.

 

 

(3) Apache License

- Permissive 라이센스이기에 하고싶은대로 해도 되는 라이센스다.

- 도의적인 관점에선 문제가 있을 순 있지만 돈을 주고 팔아도 가능하다.

- 무임승차를 고려해 이를 막기보단 자유롭게 사용할 수 있도록 허락한다.

 

 

(4) Dual License

- 여러개의 라이센스를 가지고 있는 것을 의미한다.

- 돈을 내는 경우에는 Commercial로 사용해 공개하지 않아도 된다.

- 돈을 내지 않는 경우에는 GPL로 코드를 공개해야한다.

cf) Mysql

 

 

 

5. 오픈소스 비즈니스

1) 독점적인 소프트웨어를 사용하다가 문제가 발생한 경우

- 컴퓨터를 쓰다가 교체하는데 이전에 쓰던 윈도우를 사용하고자 하지만 윈도우의 라이센스는 컴퓨터에 귀속되었기 때문에 이전에 구매한 윈도우를 새로운 컴퓨터에서 사용할 수 없다.

 

2) 오픈소스를 활용한 비즈니스 모델

- 전통적인 비즈니스 모델과는 다르다.

- Open source + Service: 오픈소스 소프트웨어를 사용하다가 문제가 생기면 이를 해결해주는 서비스 제공 ex) redhat

- Open source + Proprietary: 수준 높은 기술인 경우 돈을 주고 팖

- Open source + Buy off: 돈을 주고 라이센스를 사서 GPL로 공개 x ex) MySQL, Gluecode 등등

- Open source + Aggregation: 다양한 오픈소스 소프트웨어를 합쳐서 부가기능을 만듦 ex) Navica

- Open source + Hardware: 오픈소스 소프트웨어를 하드웨어에 탑재해서 판매

728x90
반응형