오픈소스(OSS)란?
Open Source Sofrware의 준말. 누구나 자유롭게 접근하여 활용, 수정, 배포할 수 있는 코드.
개발자들이 모인 커뮤니티에서 자유롭게 개발하고 보완하며 누구나 사용할 수 있도록 만든 소프트웨어.
오픈소스의 역사
초기 영리 소프트웨어 기업들은 소스 코드를 공개하지 않았으며, 보호했다. 소프트웨어 저작권에 관한 치열한 논쟁이 벌어졌으며, 해커와 연구자들로 이루어진 그룹은 소프트 웨어는 무료로 배포되어야 한다고 주장했고, 소프트웨어 기업들은 소유권이 보호되어야 한다고 주장했다.
하지만 리눅스(Linux)가 등장하게 되면서, 상황은 많이 달라진다.
리누스 토르발스는 소프트웨어 엔지니어이자 리눅스 커널과 깃을 최초로 개발한 사람이다.
설명하기 앞서, MINIX부터 알아보자. MINIX 는 유닉스 계열 운영 체제 중 하나인데, 그는 MINIX를 이용해 리눅스 커널을 만드는 일을 시작했다. 커널이란, "알맹이, 핵심" 이란 뜻을 가진 영단어인데, 운영체제의 핵심부를 뜻한다. 즉, 리누스 토르발스는 리눅스의 핵심부를 만든 것이다.
자신의 시스템으로 MINIX 운영체제를 사용한 뒤, 스스로 만든 운영체제로 바꿨다. 여기에 리눅스(Linux, Linus's Minix) 라는 작업명이 붙여지게 된다.
이후, 리누스 토르발스는 리눅스를 GPL라이센스로 공개한다. 누구든지 소스에 접근이 가능하게 된 것이다.
개발자들은 이후 기여자가 되기 위해 돈을 받지 않고 커널 버그 수정과 기능 추가에 매달렸다. 점점 더 많은 사람들이 참가하게 되면서, 리눅스는 서버와 모바일에서 가장 많이 쓰이는 운영체제가 됐다.
오픈소스의 특징
- 자유로운 배포
- 오픈소스 프로그램을 수집하여 배포판을 만들어 판매, 또는 무상 배포하는 것을 제한해선 안된다.
- 소스코드 공개
- 프로그램에는 소스코드가 포함되어야한다.
- 2차 저작물 허용
- 프로그램의 개작과 2차적 프로그램의 창작을 허용해야한다.
- 원저작자의 소스코드 원형 유지(수정제한)
- 배포 도중 소스코드가 개작된 형태로 배포하는 것을 제한할 수 있다. 프로그램 최초 저작자와 패치를 제작한 유지관리자의 권리와 명성을 지키기 위한 조치이다.
- 개인 및 단체에 대한 차별 금지
- 특정 개인이나 단체를 차별해서는 안된다.오픈소스 라이선스는 경고 및 법률을 준수할 것을 권고할 수 있지만, 라이선스 자체에 포함되어선 안된다.
- 사용 분야에 대한 차별 금지
- 특정 분야, 특정인이 사용하는 걸 제한할 수 없다. 오픈소스 소프트웨어는 상업적으로 사용이 가능하며 이를 금지해서는 안된다.
- 라이선스 배포
- 프로그램에 대한 사용 권리는 배포자에 의한 별도의 허락 없이도 프로그램을 재배포받은 모든 사람에게 동일하게 인정되어야 한다.
- 라이선스 적용상의 동일성 유지
- 프로그램에 대한 라이선스는 특정한 배포판에 한정되어선 안된다.
- 다른 라이선스의 포괄적 수용
- 오픈소스 소프트웨어와 함께 배포되는 소프트웨어에 대해 라이선스 제한을 포함하면 안된다.
- 기술 중립적인 라이선스 제공
- 라이선스 조항이 어떤 개별 기술이나 인터페이스 형태를 단정해서는 안된다.
오픈소스의 장점과 단점
먼저 장점부터 살펴보자.
- 오픈소스 소프트웨어는 일반적으로 무료로 제공된다. 이는 소프트웨어 비용을 크게 절감시킨다.
- 기업과 개인 사용자는 라이선스 비용없이 소프트웨어를 사용할 수 있으며, 이는 초기 도입 비용을 줄이는데 큰 도움이 된다.
- 자유로운 사용과 수정이 가능하며, 소프트 웨어를 사용자의 특정 요구에 맞게 맞춤화 할 수 있는 유연성을 제공한다.
- 다양한 환경에 맞게 소프트웨어를 최적화시킨다.
- 커스터마이즈가 가능하며, 사용자가 직접 코드를 수정하고 자신의 필요에 맞게 조정할 수 있다.
- 전 세계 개발자 커뮤니티에 의해 지원된다. 이런 커뮤니티는 소프트 웨어의 개선과 유지보수에 적극적으로 참여하며, 도움또한 받을 수 있다.
허나, 이런 오픈소스에도 단점은 있다.
- 상업 소프트웨어와 달리 공식적인 기술 지원이 부족할 수 있다. 사용자는 커뮤니티를 통해 지원 받을 수 있지만, 전문 지원 서비스에 비해 제한적일 수 있다.
- 유지보수가 어렵다. 오픈 소스의 유지보수는 사용자의 책임이 될 수 있다.
- 보안 문제가 있다. 악의적인 사용자가 공개된 소스 코드를 분석하여 취약점을 악용할 가능성이 있다.
- 기능이 제한적일 수 있다. 사용자가 특정 기능을 원할때, 소프트웨어가 이를 충족 시키지 못할 가능성또한 있다.
참고 사이트
https://www.elancer.co.kr/blog/detail/191
https://brunch.co.kr/@bumgeunsong/15
https://ko.wikipedia.org/wiki/%EB%A6%AC%EB%88%84%EC%8A%A4_%ED%86%A0%EB%A5%B4%EB%B0%9C%EC%8A%A4
https://ko.wikipedia.org/wiki/%EC%98%A4%ED%94%88_%EC%86%8C%EC%8A%A4
https://blog.naver.com/brickbot/220440698612
'C# > 관련 글' 카테고리의 다른 글
2024.11.22 IDE에 대해서 (1) | 2024.11.22 |
---|---|
2024.11.22 폰 노이만 구조 (0) | 2024.11.22 |
2024.11.21 칸반과 에자일을 분석하다 (0) | 2024.11.21 |