본문 바로가기
프로그래밍 ( Programming )/깃허브 (GitHub)

2. 오픈 소스 (Open Source)

by Jayce_choi 2021. 11. 17.
반응형

오픈 소스란 공개된 소스 코드를 의미합니다. 

어떤 소프트웨어를 개발한 사람 또는 개발자가 권리를 지키면서 오픈 소스를 함으로써 누구나 열람과 이용이 가능하도록 할 수 있습니다. 이를 통해 지식 공유에 의미가 있으며 사회 전반적으로는 기술 개발 가속화와 소프트웨어 품질 향상을 통해서 사회공헌적인 의미를 가질 수가 있습니다.

오픈 소스의 가치 

1. 동료 평가: 소스 코드에 누구나 액세스 가능함. 동료 프로그래머에게 적극적으로 검토 및 개선 가능. 훨씬 살아있는 코드라고 간주 가능함

2. 투명성: 오픈 소스를 사용하면 해당 코드에서 어떤 부분이 이동 및 변경사항이 있었는지 추적이 가능함.

3. 안정성: 독점 코드의 경우 단일 작성자 또는 기업에 의존적이지만 오픈소스 같은 경우 오픈소스 커뮤니티를 통해서 지속적으로 업데이트가 되어서 오래 지속이 될수 있습니다.

4. 유연성: 오픈소스는 수정을 강조하므로 자신의 비즈니스 또는 커뮤니티에 적용하여 문제를 새로운 방식으로도 해결 가능합니다. 

5. 비용절감: 오픈소스 자체가 무료이기에 대표적으로 Red Hat (지원, 보안, 상호운용성 ... 다양한 방면에서 비용지출이 필요함)과는 다르게 기업이나 개인 측면에서도 물질적인 방면에서 많은 비용절감을 할수가 있습니다.

6. 벤더 종속성 없음: 사용자 중심의 자유를 언제 어디서든 가져가 사용이 가능합니다.

7. 오픈 협업: 오픈소스 커뮤니티를 통해서 다양한 지원 및 리소스 그리고 관점을 접할수가 있습니다.   


대표적인 오픈소스는 부트스트랩입니다. (부트 스트랩 - 웹 디자인 프레임워크 중 하나로써 Github에서 확인이 가능함)

또한 Linux 운영체제 또한 무료 오픈소스 운영 체제 (OS)입니다. Linux 운영 체제는 Unix의 원칙과 설계를 기반으로 했던 MINIX 운영 체제를 대체할 무료 오픈소스 버전으로 제작되었습니다. 


좋은 취지도 포함되겠지만 다만 오픈소스 라이센스 때문에 어쩔 수 없이 공개되는 경우도 존재합니다. 오픈 소스 라이선스에는 대표적으로 3가지만 말씀드려보겠습니다.

1. MIT License: 무료, 배포 가능, 소스코드 수정 가능, 2차 저작물 공개 의무 없음 
우리가 아는 MIT 대학에서 만든 라이센스로써 SW 공학도를 위해 저작권이나 보증 책임만 명시될 시 무제한 사용이 가능합니다. 때문에 최근 라이선스 통계에서도 MIT 라이선스가 압도적인 것을 볼 수 있습니다. 

2. Apache License: 무료 및 배포 가능, 소스코드 수정 가능, 2차 저작물 공개 의무 없음 
Apache 재단에서 만든 라이센스이며 Apache라는 이름에 대한 상표권을 침해하면 안 됩니다. 

3. GPL: 무료, 배포가능, 소스코드 수정 가능, 2차 저작물 공개 의무 있음 
GPL은 많은 오픈소스가 채택하고 있는데 다만 배포할 때는 소스코드 전체를 공개해야 하며 수정 및 병합 시에 소스코드를 제공해야 합니다. 


이러한 오픈소스가 많이 있는 Github에서는 누군가에게는 코드를 clone하여 도움이 되기도 하지만 거대 프로젝트 및 코드에 대해서 개선점을 발견하고 이를 제시할 수 있습니다.

이러한 행위를 Contribution이라고 말합니다. Contribution은 직역하면 '기여'라는 의미를 가지고 있습니다.

기능 추가, 보안 취약점, 오타 수정 번역, 의견 제시 등 코드가 더 좋아지는 방향으로 에 대한 모든 것을 Contribution이라고 할 수 있습니다. 그리고 Contribution 활동을 했다는 것은 거대 프로젝트의 내용을 어느 정도 알고 있으며 거기에 따른 부족한 점을 제시했다는 것을 의미함으로써 스스로의 실력 향상은 물론 커뮤니티에 대한 영향력과 이를 기반으로 구직활동에 있어서 많은 도움이 될 수가 있습니다. 

그리고 누군가가 Contribution을 하게 되면 무조건 수용하는 게 아닙니다. 당연히 모든 사람이 중요한 프로젝트에 대한 모든 권한을 가지면 안 됩니다. 때문에 누군가가 해당 내용을 리뷰하고 실제 프로젝트에 반영할지를 결정하게 되는데 해당 사람을 Committer라고 합니다. 즉 특정한 프로젝트를 오픈 소스로 만들어서 관리하는 사람이라고 생각하시면 되겠습니다. 

반응형

댓글